mirror of
https://github.com/zint/zint
synced 2024-11-16 20:57:25 +13:00
Convert bwipp_dump.ps patch to append (.diff -> .cat)
This commit is contained in:
parent
ac421144c9
commit
c790f36815
@ -1,5 +1,5 @@
|
|||||||
# Copyright (C) 2008 by BogDan Vatra < bogdan@licentia.eu >
|
# Copyright (C) 2008 by BogDan Vatra < bogdan@licentia.eu >
|
||||||
# Copyright (C) 2009-2021 Robin Stuart <rstuart114@gmail.com>
|
# Copyright (C) 2009-2022 Robin Stuart <rstuart114@gmail.com>
|
||||||
# vim: set ts=4 sw=4 et :
|
# vim: set ts=4 sw=4 et :
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
190
backend/tests/tools/bwipp_dump-barcode.ps.cat
Normal file
190
backend/tests/tools/bwipp_dump-barcode.ps.cat
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
%!PS
|
||||||
|
|
||||||
|
% Append to BWIPP barcode.ps: cat <bwipp-dir>/build/monolithic/barcode.ps bwipp_dump-barcode.ps.cat > bwipp_dump.ps
|
||||||
|
%
|
||||||
|
% To compress: tar cv bwipp_dump.ps | xz -e9 > bwipp_dump.ps.tar.xz
|
||||||
|
|
||||||
|
% Dumps BWIPP barcode binary to stdout. If `-sn` given, appends a newline after each symbol row, otherwise doesn't.
|
||||||
|
%
|
||||||
|
% To run e.g. gs -dNOPAUSE -dBATCH -dNODISPLAY -q -sb=databarexpanded -sd='(01)98898765432106' -so='includetext segments=6' bwipp_dump.ps
|
||||||
|
% where
|
||||||
|
% `-sb=` is the BWIPP barcode routine name
|
||||||
|
% `-sd=` is the data (`sd2=` is also available for overspill data > 2K to get around Ghostscript arg_str_max)
|
||||||
|
% `-so=` are options (as space separated key=val pairs (or just key if boolean true))
|
||||||
|
|
||||||
|
% For debugging the barcode can be rendered by leaving out `-dBATCH -dNODISPLAY`. Scaling can be specified by `-ss=` (default 2).
|
||||||
|
|
||||||
|
% Command line "-s" options put into system dictionary as strings
|
||||||
|
/n systemdict /n known def
|
||||||
|
|
||||||
|
% Append d2 to d if given
|
||||||
|
systemdict /d2 known {
|
||||||
|
/d d length d2 length add string dup dup 0 d putinterval d length d2 putinterval def
|
||||||
|
} if
|
||||||
|
|
||||||
|
% Strip start/end parens from data if any
|
||||||
|
d 0 1 getinterval (\() eq d d length 1 sub 1 getinterval (\)) eq and {
|
||||||
|
/d d 1 d length 2 sub getinterval d length 2 sub string copy def
|
||||||
|
} if
|
||||||
|
|
||||||
|
% Options
|
||||||
|
systemdict /o known {
|
||||||
|
o type /stringtype eq o length 0 gt and {
|
||||||
|
o length 2 ge {
|
||||||
|
% Strip start/end parens from options if any
|
||||||
|
o 0 1 getinterval (\() eq o o length 1 sub 1 getinterval (\)) eq and {
|
||||||
|
/o o 1 o length 2 sub getinterval o length 2 sub string copy def
|
||||||
|
} if
|
||||||
|
} if
|
||||||
|
3 dict begin
|
||||||
|
o {
|
||||||
|
token not {exit} if
|
||||||
|
dup length string cvs (=) search {
|
||||||
|
cvlit exch pop exch def
|
||||||
|
} {
|
||||||
|
cvlit true def
|
||||||
|
} ifelse
|
||||||
|
} loop
|
||||||
|
currentdict end /o exch def
|
||||||
|
} {
|
||||||
|
/o 1 dict def
|
||||||
|
} ifelse
|
||||||
|
} {
|
||||||
|
/o 1 dict def
|
||||||
|
} ifelse
|
||||||
|
|
||||||
|
o (dontdraw) true put
|
||||||
|
|
||||||
|
/ret d o b cvn /uk.co.terryburton.bwipp findresource exec def
|
||||||
|
|
||||||
|
% pixs is renmatrix input
|
||||||
|
ret /pixs known {
|
||||||
|
b (maxicode) eq {
|
||||||
|
/pixs 990 array def
|
||||||
|
0 1 989 { pixs exch 0 put } for
|
||||||
|
ret /pixs get { pixs exch 1 put } forall
|
||||||
|
} {
|
||||||
|
/pixs ret /pixs get def
|
||||||
|
} ifelse
|
||||||
|
|
||||||
|
/xs systemdict /xs known { systemdict /xs get cvi } { 0 } ifelse def
|
||||||
|
/xe systemdict /xe known { systemdict /xe get cvi } { 0 } ifelse def
|
||||||
|
|
||||||
|
n xs 0 ne or xe 0 ne or ret /pixx known and { % If newlines or start/end indexes requested and have row width
|
||||||
|
/pixx ret /pixx get def
|
||||||
|
xs pixx pixs length 1 sub xe sub { % For i = xs; i < pixs length - xe; i += pixx
|
||||||
|
pixs exch pixx xs sub xe sub getinterval { % For j = i; j < i + pixx - xs -xe; j++
|
||||||
|
1 string cvs print
|
||||||
|
} forall
|
||||||
|
n { (\n) print } if
|
||||||
|
} for
|
||||||
|
} { % Else dump the whole thing, no newlines
|
||||||
|
pixs { 1 string cvs print } forall
|
||||||
|
} ifelse
|
||||||
|
} {
|
||||||
|
% sbs is renlinear input
|
||||||
|
ret /sbs known {
|
||||||
|
/sbs ret /sbs get def
|
||||||
|
|
||||||
|
% Check if given preprocessor override
|
||||||
|
systemdict /p known {
|
||||||
|
/p systemdict /p get cvx def
|
||||||
|
} {
|
||||||
|
/p { false } def
|
||||||
|
} ifelse
|
||||||
|
|
||||||
|
% Check if given ratio arg to adjust width of bars/spaces (e.g. "0.6" reduces 3 -> 2, "1.3" increases 2 -> 3)
|
||||||
|
systemdict /r known {
|
||||||
|
/r systemdict /r get cvr def
|
||||||
|
systemdict /c known { % Apply ceiling ratio beforehand
|
||||||
|
/c systemdict /c get cvr def
|
||||||
|
/f { c mul ceiling cvi r mul round cvi } def
|
||||||
|
} {
|
||||||
|
/f { r mul round cvi } def
|
||||||
|
} ifelse
|
||||||
|
} {
|
||||||
|
/f {} def
|
||||||
|
} ifelse
|
||||||
|
|
||||||
|
% If should begin with space
|
||||||
|
systemdict /bs known { (0) print } if
|
||||||
|
|
||||||
|
% If should end sbs loop on bar (i.e. ignore last index of even-length sbs)
|
||||||
|
/limit systemdict /elb known {
|
||||||
|
sbs length 1 add 2 idiv 2 mul 2 sub
|
||||||
|
} {
|
||||||
|
sbs length 1 sub
|
||||||
|
} ifelse def
|
||||||
|
|
||||||
|
% If should use bhs/bbs to emulate rows (DAFT/pharmacode2) (hacky)
|
||||||
|
/nosbs false def
|
||||||
|
/minh 999999 def
|
||||||
|
/midh 0 def
|
||||||
|
/maxh 0 def
|
||||||
|
/maxb 0 def
|
||||||
|
systemdict /hs known ret /bhs known and ret /bbs known and {
|
||||||
|
/bhs ret /bhs get def
|
||||||
|
/bbs ret /bbs get def
|
||||||
|
0 1 bhs length 1 sub {
|
||||||
|
/i exch def
|
||||||
|
/h bhs i get def
|
||||||
|
/b bbs i get def
|
||||||
|
h minh lt { /minh h def } if
|
||||||
|
h maxh gt { /maxh h def } if
|
||||||
|
h minh ne h maxh ne and { /midh h def } if
|
||||||
|
b maxb gt { /maxb b def } if
|
||||||
|
} for
|
||||||
|
0 1 limit {
|
||||||
|
/i exch def
|
||||||
|
i 2 mod 0 eq { % i is even
|
||||||
|
/h bhs i 2 idiv get def
|
||||||
|
/b bbs i 2 idiv get def
|
||||||
|
h maxh eq h midh eq b maxb eq and or maxb 0 ne b maxb eq and midh 0 eq and h minh eq and or { (1) } { (0) } ifelse print % Yeah, me too
|
||||||
|
} {
|
||||||
|
(0) print
|
||||||
|
} ifelse
|
||||||
|
} for
|
||||||
|
n { (\n) print } if
|
||||||
|
maxb 0 ne midh 0 eq and maxb 0 eq minh maxh eq and or { /nosbs true def } if % No tracker (pharmacode2)
|
||||||
|
} if
|
||||||
|
|
||||||
|
% Process sbs
|
||||||
|
nosbs not {
|
||||||
|
0 1 limit {
|
||||||
|
/i exch def
|
||||||
|
p not { % If not preprocessed
|
||||||
|
i 2 mod 0 eq { % i is even
|
||||||
|
sbs i get f cvi { (1) print } repeat
|
||||||
|
} {
|
||||||
|
sbs i get f cvi { (0) print } repeat
|
||||||
|
} ifelse
|
||||||
|
} if
|
||||||
|
} for
|
||||||
|
n { (\n) print } if
|
||||||
|
} if
|
||||||
|
|
||||||
|
% Third row if DAFT, second row if no tracker (pharmacode2)
|
||||||
|
maxb 0 ne midh 0 ne or minh maxh eq or {
|
||||||
|
0 1 limit {
|
||||||
|
/i exch def
|
||||||
|
i 2 mod 0 eq { % i is even
|
||||||
|
/b bbs i 2 idiv get def
|
||||||
|
b 0 eq { (1) } { (0) } ifelse print
|
||||||
|
} {
|
||||||
|
(0) print
|
||||||
|
} ifelse
|
||||||
|
} for
|
||||||
|
n { (\n) print } if
|
||||||
|
} if
|
||||||
|
} if
|
||||||
|
} ifelse
|
||||||
|
|
||||||
|
% If have renderer
|
||||||
|
ret /ren known {
|
||||||
|
% Scale
|
||||||
|
/s systemdict /s known { systemdict /s get cvi } { 2 } ifelse def
|
||||||
|
% If not -dNODISPLAY then render for debugging
|
||||||
|
currentpagedevice /Name get (nullpage) ne { s s scale 10 10 moveto ret ret /ren get exec } if
|
||||||
|
} if
|
||||||
|
|
||||||
|
% vim: set ts=4 sw=4 et :
|
@ -1,839 +0,0 @@
|
|||||||
--- /home/mburke/code/gitlost/postscriptbarcode/build/monolithic/barcode.ps 2022-08-21 02:09:58.212358116 +0100
|
|
||||||
+++ backend/tests/tools/bwipp_dump.ps 2022-08-21 02:18:52.142394720 +0100
|
|
||||||
@@ -29000,7 +29000,7 @@
|
|
||||||
pop
|
|
||||||
} ifelse
|
|
||||||
|
|
||||||
- gsave
|
|
||||||
+ dontdraw not { gsave } if
|
|
||||||
|
|
||||||
options (lintype) (databaromni) put
|
|
||||||
options (linkage) true put
|
|
||||||
@@ -29018,7 +29018,7 @@
|
|
||||||
linear options //databaromni exec
|
|
||||||
dup (sbs) get /linsbs exch def
|
|
||||||
dup (bhs) get 0 get 72 mul /linheight exch def
|
|
||||||
- //renlinear exec
|
|
||||||
+ dontdraw not { //renlinear exec } { pop } ifelse
|
|
||||||
|
|
||||||
% Plot the separator
|
|
||||||
/sepfinder {
|
|
||||||
@@ -29049,20 +29049,66 @@
|
|
||||||
sep 0 [0 0 0] putinterval
|
|
||||||
sep sep length 4 sub [0 0 0 0] putinterval
|
|
||||||
18 sepfinder 64 sepfinder
|
|
||||||
- 0 linheight rmoveto <<
|
|
||||||
- /ren //renmatrix
|
|
||||||
- /pixs sep
|
|
||||||
- /pixx sep length
|
|
||||||
- /pixy 1
|
|
||||||
- /height 1 72 div
|
|
||||||
- /width sep length 72 div
|
|
||||||
- /opt options
|
|
||||||
- >> //renmatrix exec
|
|
||||||
+ dontdraw not {
|
|
||||||
+ 0 linheight rmoveto <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs sep
|
|
||||||
+ /pixx sep length
|
|
||||||
+ /pixy 1
|
|
||||||
+ /height 1 72 div
|
|
||||||
+ /width sep length 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >> //renmatrix exec
|
|
||||||
|
|
||||||
- % Plot the 2D part
|
|
||||||
- -5 1 rmoveto comp options //gs1-cc exec //renmatrix exec
|
|
||||||
+ % Plot the 2D part
|
|
||||||
+ -5 1 rmoveto comp options //gs1-cc exec //renmatrix exec
|
|
||||||
|
|
||||||
- grestore
|
|
||||||
+ grestore
|
|
||||||
+ } {
|
|
||||||
+ /compsym comp options //gs1-cc exec def
|
|
||||||
+ /ccpixs compsym /pixs get def
|
|
||||||
+ /ccpixx compsym /pixx get def
|
|
||||||
+
|
|
||||||
+ /linpixs [ 0 % Begin with left guard space
|
|
||||||
+ linsbs { cvi 1 index 0 eq {{1}} {{0}} ifelse repeat } forall % Alternates x 1/0's
|
|
||||||
+ ] def
|
|
||||||
+ /sep [ 0 sep aload pop ] def % Pad with left guard space
|
|
||||||
+
|
|
||||||
+ /linheight linheight cvi def
|
|
||||||
+ /diff linpixs length ccpixx sub def
|
|
||||||
+ diff 0 gt { % Centre align composite, doubling up rows
|
|
||||||
+ /ccpad [ diff 2 idiv {0} repeat ] def
|
|
||||||
+ /pixs [
|
|
||||||
+ 0 ccpixx ccpixs length 1 sub {
|
|
||||||
+ /i exch def
|
|
||||||
+ 2 { ccpad aload pop ccpixs i ccpixx getinterval aload pop ccpad aload pop } repeat
|
|
||||||
+ } for
|
|
||||||
+ sep aload pop linheight { linpixs aload pop } repeat
|
|
||||||
+ ] def
|
|
||||||
+ /pixx linpixs length def
|
|
||||||
+ } { % Right pad composite, doubling up rows, and left pad (right align) separator/linear
|
|
||||||
+ /linpad [ diff neg 1 add {0} repeat ] def
|
|
||||||
+ /pixs [
|
|
||||||
+ 0 ccpixx ccpixs length 1 sub { % Right pad composite with 1 space
|
|
||||||
+ /i exch def
|
|
||||||
+ 2 { ccpixs i ccpixx getinterval aload pop 0 } repeat
|
|
||||||
+ } for
|
|
||||||
+ linpad aload pop sep aload pop linheight { linpad aload pop linpixs aload pop } repeat
|
|
||||||
+ ] def
|
|
||||||
+ /pixx ccpixx 1 add def
|
|
||||||
+ } ifelse
|
|
||||||
+
|
|
||||||
+ /pixy pixs length pixx idiv def
|
|
||||||
+ <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs pixs
|
|
||||||
+ /pixx pixx
|
|
||||||
+ /pixy pixy
|
|
||||||
+ /height pixy 72 div
|
|
||||||
+ /width pixx 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >>
|
|
||||||
+ } ifelse
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
@@ -29125,7 +29171,7 @@
|
|
||||||
pop
|
|
||||||
} ifelse
|
|
||||||
|
|
||||||
- gsave
|
|
||||||
+ dontdraw not { gsave } if
|
|
||||||
|
|
||||||
options (lintype) (databarstacked) put
|
|
||||||
options (linkage) true put
|
|
||||||
@@ -29143,7 +29189,7 @@
|
|
||||||
linear options //databarstacked exec
|
|
||||||
dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def
|
|
||||||
dup (pixy) get /linheight exch def
|
|
||||||
- //renmatrix exec
|
|
||||||
+ dontdraw not { //renmatrix exec } { /pixs get /linpixs exch def } ifelse
|
|
||||||
|
|
||||||
% Plot the separator
|
|
||||||
/sepfinder {
|
|
||||||
@@ -29171,20 +29217,52 @@
|
|
||||||
sep 0 [ 0 0 0 0 ] putinterval
|
|
||||||
sep sep length 4 sub [ 0 0 0 0 ] putinterval
|
|
||||||
18 sepfinder
|
|
||||||
- 0 linheight rmoveto <<
|
|
||||||
- /ren //renmatrix
|
|
||||||
- /pixs sep
|
|
||||||
- /pixx sep length
|
|
||||||
- /pixy 1
|
|
||||||
- /height 1 72 div
|
|
||||||
- /width sep length 72 div
|
|
||||||
- /opt options
|
|
||||||
- >> //renmatrix exec
|
|
||||||
+ dontdraw not {
|
|
||||||
+ 0 linheight rmoveto <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs sep
|
|
||||||
+ /pixx sep length
|
|
||||||
+ /pixy 1
|
|
||||||
+ /height 1 72 div
|
|
||||||
+ /width sep length 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >> //renmatrix exec
|
|
||||||
|
|
||||||
- % Plot the 2D part
|
|
||||||
- 1 1 rmoveto comp options //gs1-cc exec //renmatrix exec
|
|
||||||
+ % Plot the 2D part
|
|
||||||
+ 1 1 rmoveto comp options //gs1-cc exec //renmatrix exec
|
|
||||||
|
|
||||||
- grestore
|
|
||||||
+ grestore
|
|
||||||
+ } {
|
|
||||||
+ /compsym comp options //gs1-cc exec def
|
|
||||||
+ /ccpixs compsym /pixs get def
|
|
||||||
+ /ccpixx compsym /pixx get def
|
|
||||||
+
|
|
||||||
+ /linwidth sep length def
|
|
||||||
+ /pixx ccpixx 1 add def
|
|
||||||
+ /linpad [ pixx linwidth sub {0} repeat ] def
|
|
||||||
+ /pixs [
|
|
||||||
+ 0 ccpixx ccpixs length 1 sub { % Left pad composite with 1 space, doubling up rows
|
|
||||||
+ /i exch def
|
|
||||||
+ 2 { 0 ccpixs i ccpixx getinterval aload pop } repeat
|
|
||||||
+ } for
|
|
||||||
+ sep aload pop linpad aload pop
|
|
||||||
+ 0 linwidth linpixs length 1 sub { % Right pad linear
|
|
||||||
+ /i exch def
|
|
||||||
+ linpixs i linwidth getinterval aload pop linpad aload pop
|
|
||||||
+ } for
|
|
||||||
+ ] def
|
|
||||||
+
|
|
||||||
+ /pixy pixs length pixx idiv def
|
|
||||||
+ <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs pixs
|
|
||||||
+ /pixx pixx
|
|
||||||
+ /pixy pixy
|
|
||||||
+ /height pixy 72 div
|
|
||||||
+ /width pixx 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >>
|
|
||||||
+ } ifelse
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
@@ -29247,7 +29325,7 @@
|
|
||||||
pop
|
|
||||||
} ifelse
|
|
||||||
|
|
||||||
- gsave
|
|
||||||
+ dontdraw not { gsave } if
|
|
||||||
|
|
||||||
options (lintype) (databarstackedomni) put
|
|
||||||
options (linkage) true put
|
|
||||||
@@ -29265,7 +29343,7 @@
|
|
||||||
linear options //databarstackedomni exec
|
|
||||||
dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def
|
|
||||||
dup (pixy) get /linheight exch def
|
|
||||||
- //renmatrix exec
|
|
||||||
+ dontdraw not { //renmatrix exec } { /pixs get /linpixs exch def } ifelse
|
|
||||||
|
|
||||||
% Plot the separator
|
|
||||||
/sepfinder {
|
|
||||||
@@ -29293,20 +29371,52 @@
|
|
||||||
sep 0 [ 0 0 0 0 ] putinterval
|
|
||||||
sep sep length 4 sub [ 0 0 0 0 ] putinterval
|
|
||||||
18 sepfinder
|
|
||||||
- 0 linheight rmoveto <<
|
|
||||||
- /ren //renmatrix
|
|
||||||
- /pixs sep
|
|
||||||
- /pixx sep length
|
|
||||||
- /pixy 1
|
|
||||||
- /height 1 72 div
|
|
||||||
- /width sep length 72 div
|
|
||||||
- /opt options
|
|
||||||
- >> //renmatrix exec
|
|
||||||
+ dontdraw not {
|
|
||||||
+ 0 linheight rmoveto <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs sep
|
|
||||||
+ /pixx sep length
|
|
||||||
+ /pixy 1
|
|
||||||
+ /height 1 72 div
|
|
||||||
+ /width sep length 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >> //renmatrix exec
|
|
||||||
|
|
||||||
- % Plot the 2D part
|
|
||||||
- 1 1 rmoveto comp options //gs1-cc exec //renmatrix exec
|
|
||||||
+ % Plot the 2D part
|
|
||||||
+ 1 1 rmoveto comp options //gs1-cc exec //renmatrix exec
|
|
||||||
|
|
||||||
- grestore
|
|
||||||
+ grestore
|
|
||||||
+ } {
|
|
||||||
+ /compsym comp options //gs1-cc exec def
|
|
||||||
+ /ccpixs compsym /pixs get def
|
|
||||||
+ /ccpixx compsym /pixx get def
|
|
||||||
+
|
|
||||||
+ /linwidth sep length def
|
|
||||||
+ /pixx ccpixx 1 add def
|
|
||||||
+ /linpad [ pixx linwidth sub {0} repeat ] def
|
|
||||||
+ /pixs [
|
|
||||||
+ 0 ccpixx ccpixs length 1 sub { % Left pad composite with 1 space, doubling up rows
|
|
||||||
+ /i exch def
|
|
||||||
+ 2 { 0 ccpixs i ccpixx getinterval aload pop } repeat
|
|
||||||
+ } for
|
|
||||||
+ sep aload pop linpad aload pop
|
|
||||||
+ 0 linwidth linpixs length 1 sub { % Right pad linear
|
|
||||||
+ /i exch def
|
|
||||||
+ linpixs i linwidth getinterval aload pop linpad aload pop
|
|
||||||
+ } for
|
|
||||||
+ ] def
|
|
||||||
+
|
|
||||||
+ /pixy pixs length pixx idiv def
|
|
||||||
+ <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs pixs
|
|
||||||
+ /pixx pixx
|
|
||||||
+ /pixy pixy
|
|
||||||
+ /height pixy 72 div
|
|
||||||
+ /width pixx 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >>
|
|
||||||
+ } ifelse
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
@@ -29496,7 +29606,7 @@
|
|
||||||
pop
|
|
||||||
} ifelse
|
|
||||||
|
|
||||||
- gsave
|
|
||||||
+ dontdraw not { gsave } if
|
|
||||||
|
|
||||||
options (lintype) (databarlimited) put
|
|
||||||
options (linkage) true put
|
|
||||||
@@ -29514,7 +29624,7 @@
|
|
||||||
linear options //databarlimited exec
|
|
||||||
dup (sbs) get /linsbs exch def
|
|
||||||
dup (bhs) get 0 get 72 mul /linheight exch def
|
|
||||||
- //renlinear exec
|
|
||||||
+ dontdraw not { //renlinear exec } { pop } ifelse
|
|
||||||
|
|
||||||
% Plot the separator
|
|
||||||
mark
|
|
||||||
@@ -29522,22 +29632,68 @@
|
|
||||||
counttomark 1 sub array astore /sep exch def pop pop
|
|
||||||
sep 0 [0 0 0] putinterval
|
|
||||||
sep sep length 9 sub [0 0 0 0 0 0 0 0 0] putinterval % 4 + 5 right guard spaces
|
|
||||||
- 0 linheight rmoveto <<
|
|
||||||
- /ren //renmatrix
|
|
||||||
- /pixs sep
|
|
||||||
- /pixx sep length
|
|
||||||
- /pixy 1
|
|
||||||
- /height 1 72 div
|
|
||||||
- /width sep length 72 div
|
|
||||||
- /opt options
|
|
||||||
- >> //renmatrix exec
|
|
||||||
+ dontdraw not {
|
|
||||||
+ 0 linheight rmoveto <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs sep
|
|
||||||
+ /pixx sep length
|
|
||||||
+ /pixy 1
|
|
||||||
+ /height 1 72 div
|
|
||||||
+ /width sep length 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >> //renmatrix exec
|
|
||||||
+
|
|
||||||
+ % Plot the 2D part
|
|
||||||
+ comp options //gs1-cc exec
|
|
||||||
+ dup (pixx) get 72 exch sub 1 rmoveto
|
|
||||||
+ //renmatrix exec
|
|
||||||
|
|
||||||
- % Plot the 2D part
|
|
||||||
- comp options //gs1-cc exec
|
|
||||||
- dup (pixx) get 72 exch sub 1 rmoveto
|
|
||||||
- //renmatrix exec
|
|
||||||
+ grestore
|
|
||||||
+ } {
|
|
||||||
+ /compsym comp options //gs1-cc exec def
|
|
||||||
+ /ccpixs compsym /pixs get def
|
|
||||||
+ /ccpixx compsym /pixx get def
|
|
||||||
+
|
|
||||||
+ /linpixs [ 0 % Begin with left guard space
|
|
||||||
+ linsbs { cvi 1 index 0 eq {{1}} {{0}} ifelse repeat } forall % Alternates x 1/0's
|
|
||||||
+ ] def
|
|
||||||
+ /sep [ 0 sep aload pop ] def % Offset by 1
|
|
||||||
+
|
|
||||||
+ /linheight linheight cvi def
|
|
||||||
+ /diff linpixs length 5 sub ccpixx sub def % Adding 5 right guard spaces below so subtract 5
|
|
||||||
+ diff 0 gt { % 2 column - centre align
|
|
||||||
+ /ccpad [ diff 2 idiv {0} repeat ] def
|
|
||||||
+ /pixs [
|
|
||||||
+ 0 ccpixx ccpixs length 1 sub {
|
|
||||||
+ /i exch def
|
|
||||||
+ 2 { ccpad aload pop ccpixs i ccpixx getinterval aload pop 0 0 0 0 0 ccpad aload pop } repeat
|
|
||||||
+ } for
|
|
||||||
+ sep aload pop linheight { linpixs aload pop } repeat
|
|
||||||
+ ] def
|
|
||||||
+ /pixx linpixs length def
|
|
||||||
+ } { % 3/4 column - right pad 1 and right align separator/linear
|
|
||||||
+ /linpad [ diff neg 1 add {0} repeat ] def
|
|
||||||
+ /pixs [
|
|
||||||
+ 0 ccpixx ccpixs length 1 sub { % Right pad composite with 1 space + 5 right guard spaces
|
|
||||||
+ /i exch def
|
|
||||||
+ 2 { ccpixs i ccpixx getinterval aload pop 0 0 0 0 0 0 } repeat
|
|
||||||
+ } for
|
|
||||||
+ linpad aload pop sep aload pop linheight { linpad aload pop linpixs aload pop } repeat
|
|
||||||
+ ] def
|
|
||||||
+ /pixx ccpixx 1 add def
|
|
||||||
+ } ifelse
|
|
||||||
|
|
||||||
- grestore
|
|
||||||
+ /pixy pixs length pixx idiv def
|
|
||||||
+ <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs pixs
|
|
||||||
+ /pixx pixx
|
|
||||||
+ /pixy pixy
|
|
||||||
+ /height pixy 72 div
|
|
||||||
+ /width pixx 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >>
|
|
||||||
+ } ifelse
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
@@ -29601,7 +29757,7 @@
|
|
||||||
pop
|
|
||||||
} ifelse
|
|
||||||
|
|
||||||
- gsave
|
|
||||||
+ dontdraw not { gsave } if
|
|
||||||
|
|
||||||
options (lintype) (databarexpanded) put
|
|
||||||
options (linkage) true put
|
|
||||||
@@ -29619,7 +29775,7 @@
|
|
||||||
linear options //databarexpanded exec
|
|
||||||
dup (sbs) get /linsbs exch def
|
|
||||||
dup (bhs) get 0 get 72 mul /linheight exch def
|
|
||||||
- //renlinear exec
|
|
||||||
+ dontdraw not { //renlinear exec } { pop } ifelse
|
|
||||||
|
|
||||||
% Plot the separator
|
|
||||||
/sepfinder {
|
|
||||||
@@ -29648,20 +29804,60 @@
|
|
||||||
18 98 bot length 13 sub {} for
|
|
||||||
69 98 bot length 13 sub {} for
|
|
||||||
] {sepfinder} forall
|
|
||||||
- 0 linheight rmoveto <<
|
|
||||||
- /ren //renmatrix
|
|
||||||
- /pixs sep
|
|
||||||
- /pixx sep length
|
|
||||||
- /pixy 1
|
|
||||||
- /height 1 72 div
|
|
||||||
- /width sep length 72 div
|
|
||||||
- /opt options
|
|
||||||
- >> //renmatrix exec
|
|
||||||
+ dontdraw not {
|
|
||||||
+ 0 linheight rmoveto <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs sep
|
|
||||||
+ /pixx sep length
|
|
||||||
+ /pixy 1
|
|
||||||
+ /height 1 72 div
|
|
||||||
+ /width sep length 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >> //renmatrix exec
|
|
||||||
|
|
||||||
- % Plot the 2D part
|
|
||||||
- 1 1 rmoveto comp options //gs1-cc exec //renmatrix exec
|
|
||||||
+ % Plot the 2D part
|
|
||||||
+ 1 1 rmoveto comp options //gs1-cc exec //renmatrix exec
|
|
||||||
|
|
||||||
- grestore
|
|
||||||
+ grestore
|
|
||||||
+ } {
|
|
||||||
+ /compsym comp options //gs1-cc exec def
|
|
||||||
+ /ccpixs compsym /pixs get def
|
|
||||||
+ /ccpixx compsym /pixx get def
|
|
||||||
+
|
|
||||||
+ /linpixs [ 0 % Begin with left guard space
|
|
||||||
+ linsbs { cvi 1 index 0 eq {{1}} {{0}} ifelse repeat } forall % Alternates x 1/0's
|
|
||||||
+ ] def
|
|
||||||
+ /sep [ 0 sep aload pop ] def % Offset by 1
|
|
||||||
+
|
|
||||||
+ /linheight linheight cvi def
|
|
||||||
+ /diff linpixs length ccpixx sub def
|
|
||||||
+ diff 2 ge {
|
|
||||||
+ /cclpad [ 0 0 ] def
|
|
||||||
+ /ccrpad [ diff 2 sub {0} repeat ] def
|
|
||||||
+ } {
|
|
||||||
+ /cclpad [ diff {0} repeat ] def
|
|
||||||
+ /ccrpad 0 array def
|
|
||||||
+ } ifelse
|
|
||||||
+ /pixs [
|
|
||||||
+ 0 ccpixx ccpixs length 1 sub {
|
|
||||||
+ /i exch def
|
|
||||||
+ 2 { cclpad aload pop ccpixs i ccpixx getinterval aload pop ccrpad aload pop } repeat
|
|
||||||
+ } for
|
|
||||||
+ sep aload pop linheight { linpixs aload pop } repeat
|
|
||||||
+ ] def
|
|
||||||
+
|
|
||||||
+ /pixx linpixs length def
|
|
||||||
+ /pixy pixs length pixx idiv def
|
|
||||||
+ <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs pixs
|
|
||||||
+ /pixx pixx
|
|
||||||
+ /pixy pixy
|
|
||||||
+ /height pixy 72 div
|
|
||||||
+ /width pixx 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >>
|
|
||||||
+ } ifelse
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
@@ -29724,7 +29920,7 @@
|
|
||||||
pop
|
|
||||||
} ifelse
|
|
||||||
|
|
||||||
- gsave
|
|
||||||
+ dontdraw not { gsave } if
|
|
||||||
|
|
||||||
options (lintype) (databarexpandedstacked) put
|
|
||||||
options (linkage) true put
|
|
||||||
@@ -29742,7 +29938,7 @@
|
|
||||||
linear options //databarexpandedstacked exec
|
|
||||||
dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def
|
|
||||||
dup (pixy) get /linheight exch def
|
|
||||||
- //renmatrix exec
|
|
||||||
+ dontdraw not { //renmatrix exec } { /pixs get /linpixs exch def } ifelse
|
|
||||||
|
|
||||||
% Plot the separator
|
|
||||||
/sepfinder {
|
|
||||||
@@ -29768,21 +29964,49 @@
|
|
||||||
19 98 bot length 13 sub {} for
|
|
||||||
70 98 bot length 13 sub {} for
|
|
||||||
] {sepfinder} forall
|
|
||||||
- 0 linheight rmoveto <<
|
|
||||||
- /ren //renmatrix
|
|
||||||
- /pixs sep
|
|
||||||
- /pixx sep length
|
|
||||||
- /pixy 1
|
|
||||||
- /height 1 72 div
|
|
||||||
- /width sep length 72 div
|
|
||||||
- /opt options
|
|
||||||
- >> //renmatrix exec
|
|
||||||
+ dontdraw not {
|
|
||||||
+ 0 linheight rmoveto <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs sep
|
|
||||||
+ /pixx sep length
|
|
||||||
+ /pixy 1
|
|
||||||
+ /height 1 72 div
|
|
||||||
+ /width sep length 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >> //renmatrix exec
|
|
||||||
+
|
|
||||||
+ % Plot the 2D part
|
|
||||||
+ bot 0 get 0 eq {2} {0} ifelse 1 rmoveto
|
|
||||||
+ comp options //gs1-cc exec //renmatrix exec
|
|
||||||
|
|
||||||
- % Plot the 2D part
|
|
||||||
- bot 0 get 0 eq {2} {0} ifelse 1 rmoveto
|
|
||||||
- comp options //gs1-cc exec //renmatrix exec
|
|
||||||
+ grestore
|
|
||||||
+ } {
|
|
||||||
+ /compsym comp options //gs1-cc exec def
|
|
||||||
+ /ccpixs compsym /pixs get def
|
|
||||||
+ /ccpixx compsym /pixx get def
|
|
||||||
+
|
|
||||||
+ /pixx sep length def
|
|
||||||
+ /cclpad [ pixx ccpixx sub 1 add 2 idiv {0} repeat ] def % Add 1 to allow for odd difference
|
|
||||||
+ /ccrpad [ pixx ccpixx sub 2 idiv {0} repeat ] def
|
|
||||||
+ /pixs [
|
|
||||||
+ 0 ccpixx ccpixs length 1 sub { % Centre align composite
|
|
||||||
+ /i exch def
|
|
||||||
+ 2 { cclpad aload pop ccpixs i ccpixx getinterval aload pop ccrpad aload pop } repeat
|
|
||||||
+ } for
|
|
||||||
+ sep aload pop linpixs aload pop
|
|
||||||
+ ] def
|
|
||||||
|
|
||||||
- grestore
|
|
||||||
+ /pixy pixs length pixx idiv def
|
|
||||||
+ <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs pixs
|
|
||||||
+ /pixx pixx
|
|
||||||
+ /pixy pixy
|
|
||||||
+ /height pixy 72 div
|
|
||||||
+ /width pixx 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >>
|
|
||||||
+ } ifelse
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
@@ -29846,7 +30070,7 @@
|
|
||||||
pop
|
|
||||||
} ifelse
|
|
||||||
|
|
||||||
- gsave
|
|
||||||
+ dontdraw not { gsave } if
|
|
||||||
|
|
||||||
options (inkspread) (0) put
|
|
||||||
options (dontdraw) true put
|
|
||||||
@@ -29880,35 +30104,87 @@
|
|
||||||
linear << options {} forall >> //gs1-128 exec
|
|
||||||
dup (sbs) get /linsbs exch def
|
|
||||||
dup (bhs) get 0 get 72 mul /linheight exch def
|
|
||||||
- //renlinear exec
|
|
||||||
+ dontdraw not { //renlinear exec } { pop } ifelse
|
|
||||||
|
|
||||||
% Plot the separator
|
|
||||||
mark
|
|
||||||
1 linsbs {1 index 0 eq {{1}} {{0}} ifelse repeat} forall
|
|
||||||
counttomark 1 sub array astore /sep exch def pop pop
|
|
||||||
- 0 linheight rmoveto <<
|
|
||||||
- /ren //renmatrix
|
|
||||||
- /pixs sep
|
|
||||||
- /pixx sep length
|
|
||||||
- /pixy 1
|
|
||||||
- /height 1 72 div
|
|
||||||
- /width sep length 72 div
|
|
||||||
- /opt options
|
|
||||||
- >> //renmatrix exec
|
|
||||||
+ dontdraw not {
|
|
||||||
+ 0 linheight rmoveto <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs sep
|
|
||||||
+ /pixx sep length
|
|
||||||
+ /pixy 1
|
|
||||||
+ /height 1 72 div
|
|
||||||
+ /width sep length 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >> //renmatrix exec
|
|
||||||
+ } if
|
|
||||||
|
|
||||||
% Plot the 2D part
|
|
||||||
linktype (a) eq {
|
|
||||||
/s linwidth 2 sub 11 idiv def
|
|
||||||
/p s 9 sub 2 idiv def
|
|
||||||
/x s p sub 1 sub 11 mul 10 add p 0 eq {2 add} if 99 sub def
|
|
||||||
- x 1 rmoveto
|
|
||||||
+ dontdraw not { x 1 rmoveto } if
|
|
||||||
} {
|
|
||||||
- -7 1 rmoveto
|
|
||||||
+ dontdraw not { -7 1 rmoveto } { /x -7 def } ifelse
|
|
||||||
} ifelse
|
|
||||||
|
|
||||||
- compsym //renmatrix exec
|
|
||||||
+ dontdraw not {
|
|
||||||
+ compsym //renmatrix exec
|
|
||||||
|
|
||||||
- grestore
|
|
||||||
+ grestore
|
|
||||||
+ } {
|
|
||||||
+ /ccpixs compsym /pixs get def
|
|
||||||
+ /ccpixx compsym /pixx get def
|
|
||||||
+
|
|
||||||
+ /linpixs [
|
|
||||||
+ linsbs { cvi 1 index 1 eq {{0}} {{1}} ifelse repeat } forall % Alternates x 1/0's
|
|
||||||
+ ] def
|
|
||||||
+
|
|
||||||
+ x 0 gt { % Left pad composite
|
|
||||||
+ /cclpad [ x {0} repeat ] def
|
|
||||||
+ /linlpad 0 array def
|
|
||||||
+ /diff linwidth ccpixx x add sub def
|
|
||||||
+ } { % Left pad linear
|
|
||||||
+ /cclpad 0 array def
|
|
||||||
+ /linlpad [ x neg {0} repeat ] def
|
|
||||||
+ /diff linwidth x sub ccpixx sub def
|
|
||||||
+ } ifelse
|
|
||||||
+
|
|
||||||
+ diff 0 gt { % Right pad composite
|
|
||||||
+ /ccrpad [ diff {0} repeat ] def
|
|
||||||
+ /linrpad 0 array def
|
|
||||||
+ } { % Right pad linear
|
|
||||||
+ /ccrpad 0 array def
|
|
||||||
+ /linrpad [ diff neg {0} repeat ] def
|
|
||||||
+ } ifelse
|
|
||||||
+
|
|
||||||
+ /linheight linheight cvi def
|
|
||||||
+ /ccrepeat linktype (a) eq {2} {3} ifelse def
|
|
||||||
+ /pixs [
|
|
||||||
+ 0 ccpixx ccpixs length 1 sub {
|
|
||||||
+ /i exch def
|
|
||||||
+ ccrepeat { cclpad aload pop ccpixs i ccpixx getinterval aload pop ccrpad aload pop } repeat
|
|
||||||
+ } for
|
|
||||||
+ linlpad aload pop sep aload pop linrpad aload pop
|
|
||||||
+ linheight { linlpad aload pop linpixs aload pop linrpad aload pop } repeat
|
|
||||||
+ ] def
|
|
||||||
+
|
|
||||||
+ /pixx cclpad length ccpixx add ccrpad length add def
|
|
||||||
+ /pixy pixs length pixx idiv def
|
|
||||||
+ <<
|
|
||||||
+ /ren //renmatrix
|
|
||||||
+ /pixs pixs
|
|
||||||
+ /pixx pixx
|
|
||||||
+ /pixy pixy
|
|
||||||
+ /height pixy 72 div
|
|
||||||
+ /width pixx 72 div
|
|
||||||
+ /opt options
|
|
||||||
+ >>
|
|
||||||
+ } ifelse
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
@@ -31392,3 +31668,189 @@
|
|
||||||
% --END ENCODER hibcazteccode--
|
|
||||||
|
|
||||||
% --END TEMPLATE--
|
|
||||||
+%!PS
|
|
||||||
+
|
|
||||||
+% To compress: tar cv bwipp_dump.ps | xz -e9 > bwipp_dump.ps.tar.xz
|
|
||||||
+
|
|
||||||
+% Dumps bwipp barcode binary to stdout. If `-sn` given, appends a newline after each symbol row, otherwise doesn't.
|
|
||||||
+%
|
|
||||||
+% To run e.g. gs -dNOPAUSE -dBATCH -dNODISPLAY -q -sb=databarexpanded -sd='(01)98898765432106' -so='includetext segments=6' bwipp_dump.ps
|
|
||||||
+% where
|
|
||||||
+% `-sb=` is the bwipp barcode routine name
|
|
||||||
+% `-sd=` is the data (`sd2=` is also available for overspill data > 2K to get around Ghostscript arg_str_max)
|
|
||||||
+% `-so=` are options (as space separated key=val pairs (or just key if boolean true))
|
|
||||||
+
|
|
||||||
+% Command line "-s" options put into system dictionary as strings
|
|
||||||
+/n systemdict /n known def
|
|
||||||
+
|
|
||||||
+% Append d2 to d if given
|
|
||||||
+systemdict /d2 known {
|
|
||||||
+ /d d length d2 length add string dup dup 0 d putinterval d length d2 putinterval def
|
|
||||||
+} if
|
|
||||||
+
|
|
||||||
+% Strip start/end parens from data if any
|
|
||||||
+d 0 1 getinterval (\() eq d d length 1 sub 1 getinterval (\)) eq and {
|
|
||||||
+ /d d 1 d length 2 sub getinterval d length 2 sub string copy def
|
|
||||||
+} if
|
|
||||||
+
|
|
||||||
+% Options
|
|
||||||
+systemdict /o known {
|
|
||||||
+ o type /stringtype eq o length 0 gt and {
|
|
||||||
+ o length 2 ge {
|
|
||||||
+ % Strip start/end parens from options if any
|
|
||||||
+ o 0 1 getinterval (\() eq o o length 1 sub 1 getinterval (\)) eq and {
|
|
||||||
+ /o o 1 o length 2 sub getinterval o length 2 sub string copy def
|
|
||||||
+ } if
|
|
||||||
+ } if
|
|
||||||
+ 3 dict begin
|
|
||||||
+ o {
|
|
||||||
+ token not {exit} if
|
|
||||||
+ dup length string cvs (=) search {
|
|
||||||
+ cvlit exch pop exch def
|
|
||||||
+ } {
|
|
||||||
+ cvlit true def
|
|
||||||
+ } ifelse
|
|
||||||
+ } loop
|
|
||||||
+ currentdict end /o exch def
|
|
||||||
+ } {
|
|
||||||
+ /o 1 dict def
|
|
||||||
+ } ifelse
|
|
||||||
+} {
|
|
||||||
+ /o 1 dict def
|
|
||||||
+} ifelse
|
|
||||||
+
|
|
||||||
+o (dontdraw) true put
|
|
||||||
+
|
|
||||||
+/ret d o b cvn /uk.co.terryburton.bwipp findresource exec def
|
|
||||||
+
|
|
||||||
+% pixs is renmatrix input
|
|
||||||
+ret /pixs known {
|
|
||||||
+ b (maxicode) eq {
|
|
||||||
+ /pixs 990 array def
|
|
||||||
+ 0 1 989 { pixs exch 0 put } for
|
|
||||||
+ ret /pixs get { pixs exch 1 put } forall
|
|
||||||
+ } {
|
|
||||||
+ /pixs ret /pixs get def
|
|
||||||
+ } ifelse
|
|
||||||
+
|
|
||||||
+ /xs systemdict /xs known { systemdict /xs get cvi } { 0 } ifelse def
|
|
||||||
+ /xe systemdict /xe known { systemdict /xe get cvi } { 0 } ifelse def
|
|
||||||
+
|
|
||||||
+ n xs 0 ne or xe 0 ne or ret /pixx known and { % If newlines or start/end indexes requested and have row width
|
|
||||||
+ /pixx ret /pixx get def
|
|
||||||
+ xs pixx pixs length 1 sub xe sub { % For i = xs; i < pixs length - xe; i += pixx
|
|
||||||
+ pixs exch pixx xs sub xe sub getinterval { % For j = i; j < i + pixx - xs -xe; j++
|
|
||||||
+ 1 string cvs print
|
|
||||||
+ } forall
|
|
||||||
+ n { (\n) print } if
|
|
||||||
+ } for
|
|
||||||
+ } { % Else dump the whole thing, no newlines
|
|
||||||
+ pixs { 1 string cvs print } forall
|
|
||||||
+ } ifelse
|
|
||||||
+} {
|
|
||||||
+ % sbs is renlinear input
|
|
||||||
+ ret /sbs known {
|
|
||||||
+ /sbs ret /sbs get def
|
|
||||||
+
|
|
||||||
+ % Check if given preprocessor override
|
|
||||||
+ systemdict /p known {
|
|
||||||
+ /p systemdict /p get cvx def
|
|
||||||
+ } {
|
|
||||||
+ /p { false } def
|
|
||||||
+ } ifelse
|
|
||||||
+
|
|
||||||
+ % Check if given ratio arg to adjust width of bars/spaces (e.g. "0.6" reduces 3 -> 2, "1.3" increases 2 -> 3)
|
|
||||||
+ systemdict /r known {
|
|
||||||
+ /r systemdict /r get cvr def
|
|
||||||
+ systemdict /c known { % Apply ceiling ratio beforehand
|
|
||||||
+ /c systemdict /c get cvr def
|
|
||||||
+ /f { c mul ceiling cvi r mul round cvi } def
|
|
||||||
+ } {
|
|
||||||
+ /f { r mul round cvi } def
|
|
||||||
+ } ifelse
|
|
||||||
+ } {
|
|
||||||
+ /f {} def
|
|
||||||
+ } ifelse
|
|
||||||
+
|
|
||||||
+ % If should begin with space
|
|
||||||
+ systemdict /bs known { (0) print } if
|
|
||||||
+
|
|
||||||
+ % If should end sbs loop on bar (i.e. ignore last index of even-length sbs)
|
|
||||||
+ /limit systemdict /elb known {
|
|
||||||
+ sbs length 1 add 2 idiv 2 mul 2 sub
|
|
||||||
+ } {
|
|
||||||
+ sbs length 1 sub
|
|
||||||
+ } ifelse def
|
|
||||||
+
|
|
||||||
+ % If should use bhs/bbs to emulate rows (DAFT/pharmacode2) (hacky)
|
|
||||||
+ /nosbs false def
|
|
||||||
+ /minh 999999 def
|
|
||||||
+ /midh 0 def
|
|
||||||
+ /maxh 0 def
|
|
||||||
+ /maxb 0 def
|
|
||||||
+ systemdict /hs known ret /bhs known and ret /bbs known and {
|
|
||||||
+ /bhs ret /bhs get def
|
|
||||||
+ /bbs ret /bbs get def
|
|
||||||
+ 0 1 bhs length 1 sub {
|
|
||||||
+ /i exch def
|
|
||||||
+ /h bhs i get def
|
|
||||||
+ /b bbs i get def
|
|
||||||
+ h minh lt { /minh h def } if
|
|
||||||
+ h maxh gt { /maxh h def } if
|
|
||||||
+ h minh ne h maxh ne and { /midh h def } if
|
|
||||||
+ b maxb gt { /maxb b def } if
|
|
||||||
+ } for
|
|
||||||
+ 0 1 limit {
|
|
||||||
+ /i exch def
|
|
||||||
+ i 2 mod 0 eq { % i is even
|
|
||||||
+ /h bhs i 2 idiv get def
|
|
||||||
+ /b bbs i 2 idiv get def
|
|
||||||
+ h maxh eq h midh eq b maxb eq and or maxb 0 ne b maxb eq and midh 0 eq and h minh eq and or { (1) } { (0) } ifelse print % Yeah, me too
|
|
||||||
+ } {
|
|
||||||
+ (0) print
|
|
||||||
+ } ifelse
|
|
||||||
+ } for
|
|
||||||
+ n { (\n) print } if
|
|
||||||
+ maxb 0 ne midh 0 eq and maxb 0 eq minh maxh eq and or { /nosbs true def } if % No tracker (pharmacode2)
|
|
||||||
+ } if
|
|
||||||
+
|
|
||||||
+ % Process sbs
|
|
||||||
+ nosbs not {
|
|
||||||
+ 0 1 limit {
|
|
||||||
+ /i exch def
|
|
||||||
+ p not { % If not preprocessed
|
|
||||||
+ i 2 mod 0 eq { % i is even
|
|
||||||
+ sbs i get f cvi { (1) print } repeat
|
|
||||||
+ } {
|
|
||||||
+ sbs i get f cvi { (0) print } repeat
|
|
||||||
+ } ifelse
|
|
||||||
+ } if
|
|
||||||
+ } for
|
|
||||||
+ n { (\n) print } if
|
|
||||||
+ } if
|
|
||||||
+
|
|
||||||
+ % Third row if DAFT, second row if no tracker (pharmacode2)
|
|
||||||
+ maxb 0 ne midh 0 ne or minh maxh eq or {
|
|
||||||
+ 0 1 limit {
|
|
||||||
+ /i exch def
|
|
||||||
+ i 2 mod 0 eq { % i is even
|
|
||||||
+ /b bbs i 2 idiv get def
|
|
||||||
+ b 0 eq { (1) } { (0) } ifelse print
|
|
||||||
+ } {
|
|
||||||
+ (0) print
|
|
||||||
+ } ifelse
|
|
||||||
+ } for
|
|
||||||
+ n { (\n) print } if
|
|
||||||
+ } if
|
|
||||||
+ } if
|
|
||||||
+} ifelse
|
|
||||||
+
|
|
||||||
+% If have renderer
|
|
||||||
+ret /ren known {
|
|
||||||
+ % Scale
|
|
||||||
+ /s systemdict /s known { systemdict /s get cvi } { 2 } ifelse def
|
|
||||||
+ % If not -dNODISPLAY then render for debugging
|
|
||||||
+ currentpagedevice /Name get (nullpage) ne { s s scale 10 10 moveto ret ret /ren get exec } if
|
|
||||||
+} if
|
|
||||||
+
|
|
||||||
+% vim: set ts=4 sw=4 et :
|
|
Binary file not shown.
@ -869,8 +869,8 @@ zint -r -d "This Text"
|
|||||||
```
|
```
|
||||||
|
|
||||||
gives an inverted Code 128 symbol. This is not practical for most symbologies
|
gives an inverted Code 128 symbol. This is not practical for most symbologies
|
||||||
but white-on-black is allowed by the Aztec Code, Data Matrix, Han Xin Code, Grid
|
but white-on-black is allowed by the Aztec Code, Data Matrix, DotCode, Han Xin
|
||||||
Matrix and QR Code symbology specifications.
|
Code, Grid Matrix and QR Code symbology specifications.
|
||||||
|
|
||||||
For more specific needs the foreground (ink) and background (paper) colours can
|
For more specific needs the foreground (ink) and background (paper) colours can
|
||||||
be specified using the `--fg` and `--bg` options followed by a number in RRGGBB
|
be specified using the `--fg` and `--bg` options followed by a number in RRGGBB
|
||||||
|
@ -980,8 +980,8 @@ to be inverted so that a white symbol is shown on a black background (known as
|
|||||||
zint -r -d "This Text"
|
zint -r -d "This Text"
|
||||||
|
|
||||||
gives an inverted Code 128 symbol. This is not practical for most symbologies
|
gives an inverted Code 128 symbol. This is not practical for most symbologies
|
||||||
but white-on-black is allowed by the Aztec Code, Data Matrix, Han Xin Code, Grid
|
but white-on-black is allowed by the Aztec Code, Data Matrix, DotCode, Han Xin
|
||||||
Matrix and QR Code symbology specifications.
|
Code, Grid Matrix and QR Code symbology specifications.
|
||||||
|
|
||||||
For more specific needs the foreground (ink) and background (paper) colours can
|
For more specific needs the foreground (ink) and background (paper) colours can
|
||||||
be specified using the --fg and --bg options followed by a number in RRGGBB
|
be specified using the --fg and --bg options followed by a number in RRGGBB
|
||||||
|
Loading…
Reference in New Issue
Block a user