zint-barcode-generator/backend/tests/tools/bwipp_dump-barcode.ps.diff

1154 lines
32 KiB
Diff

--- ../../../../postscriptbarcode/build/monolithic/barcode.ps 2020-07-10 13:08:57.215118693 +0100
+++ ../tools/bwipp_dump.ps 2020-07-10 13:44:00.892056648 +0100
@@ -29,6 +29,8 @@
% CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
% IN THE SOFTWARE.
+% vim: set ts=4 sw=4 et :
+
% --BEGIN TEMPLATE--
% --BEGIN RESOURCE preamble--
@@ -24484,34 +24486,72 @@
pop
} ifelse
- gsave
+ dontdraw not { gsave } if
options (lintype) (ean13) put
options (inkspread) (0) put
options (dontdraw) true put
% Plot the linear part
- linear options //ean13 exec //renlinear exec
+ linear options //ean13 exec
+ dontdraw not {
+ //renlinear exec
+
+ % Plot the separator
+ -1 72 rmoveto <<
+ /ren //renmatrix
+ /pixs [
+ 0 1 93 {0} repeat 1 0
+ 1 0 93 {0} repeat 0 1
+ 0 1 93 {0} repeat 1 0
+ ]
+ /pixx 97
+ /pixy 3
+ /height 6 72 div
+ /width 97 72 div
+ /opt options
+ >> //renmatrix exec
- % Plot the separator
- -1 72 rmoveto <<
- /ren //renmatrix
- /pixs [
- 0 1 93 {0} repeat 1 0
- 1 0 93 {0} repeat 0 1
- 0 1 93 {0} repeat 1 0
- ]
- /pixx 97
- /pixy 3
- /height 6 72 div
- /width 97 72 div
- /opt options
- >> //renmatrix exec
+ % Plot the 2D part
+ -2 6 rmoveto comp options //gs1-cc exec //renmatrix exec
- % Plot the 2D part
- -2 6 rmoveto comp options //gs1-cc exec //renmatrix exec
+ grestore
+ } {
+ /linsym exch def
+ /linpixs [
+ linsym /sbs get { 1 index 1 eq {{0}} {{1}} ifelse repeat } forall % Alternates x 1/0's
+ ] def
+ /linheight linsym /bhs get 0 get 72 mul cvi def
- grestore
+ /compsym comp options //gs1-cc exec def
+ /ccpixs compsym /pixs get def
+ /ccpixx compsym /pixx get def
+
+ /linpad [ ccpixx 97 sub {0} repeat ] def
+
+ /pixs [
+ 0 ccpixx ccpixs length 1 sub {
+ /i exch def
+ 2 { ccpixs i ccpixx getinterval aload pop } repeat
+ } for
+ 2 { linpad aload pop 0 1 93 {0} repeat 1 0 } repeat
+ 2 { linpad aload pop 1 0 93 {0} repeat 0 1 } repeat
+ 2 { linpad aload pop 0 1 93 {0} repeat 1 0 } repeat
+ linheight { linpad aload pop 0 linpixs aload pop 0 } repeat
+ ] def
+
+ /pixx ccpixx 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
@@ -24570,7 +24610,7 @@
pop
} ifelse
- gsave
+ dontdraw not { gsave } if
% Get the result of encoding with ean8 and gs1-cc
options (lintype) (ean8) put
@@ -24578,29 +24618,67 @@
options (dontdraw) true put
% Plot the linear part
- linear options //ean8 exec //renlinear exec
+ linear options //ean8 exec
+ dontdraw not {
+ //renlinear exec
+
+ % Plot the separator
+ -1 72 rmoveto <<
+ /ren //renmatrix
+ /pixs [
+ 0 1 65 {0} repeat 1 0
+ 1 0 65 {0} repeat 0 1
+ 0 1 65 {0} repeat 1 0
+ ]
+ /pixx 69
+ /pixy 3
+ /height 6 72 div
+ /width 69 72 div
+ /opt options
+ >> //renmatrix exec
+
+ % Plot the 2D part
+ comp options //gs1-cc exec
+ dup (pixx) get 69 exch sub 6 rmoveto
+ //renmatrix exec
- % Plot the separator
- -1 72 rmoveto <<
- /ren //renmatrix
- /pixs [
- 0 1 65 {0} repeat 1 0
- 1 0 65 {0} repeat 0 1
- 0 1 65 {0} repeat 1 0
- ]
- /pixx 69
- /pixy 3
- /height 6 72 div
- /width 69 72 div
- /opt options
- >> //renmatrix exec
+ grestore
+ } {
+ /linsym exch def
+ /linpixs [
+ linsym /sbs get { 1 index 1 eq {{0}} {{1}} ifelse repeat } forall % Alternates x 1/0's
+ ] def
+ /linheight linsym /bhs get 0 get 72 mul cvi def
- % Plot the 2D part
- comp options //gs1-cc exec
- dup (pixx) get 69 exch sub 6 rmoveto
- //renmatrix exec
+ /compsym comp options //gs1-cc exec def
+ /ccpixs compsym /pixs get def
+ /ccpixx compsym /pixx get def
- grestore
+ /linpad [ ccpixx 69 sub {0} repeat ] def
+
+ /pixs [
+ 0 ccpixx ccpixs length 1 sub {
+ /i exch def
+ 2 { ccpixs i ccpixx getinterval aload pop } repeat
+ } for
+ 2 { linpad aload pop 0 1 65 {0} repeat 1 0 } repeat
+ 2 { linpad aload pop 1 0 65 {0} repeat 0 1 } repeat
+ 2 { linpad aload pop 0 1 65 {0} repeat 1 0 } repeat
+ linheight { linpad aload pop 0 linpixs aload pop 0 } repeat
+ ] def
+
+ /pixx ccpixx 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
@@ -24659,34 +24737,72 @@
pop
} ifelse
- gsave
+ dontdraw not { gsave } if
options (lintype) (ean13) put
options (inkspread) (0) put
options (dontdraw) true put
% Plot the linear part
- linear options //upca exec //renlinear exec
+ linear options //upca exec
+ dontdraw not {
+ //renlinear exec
+
+ % Plot the separator
+ -1 72 rmoveto <<
+ /ren //renmatrix
+ /pixs [
+ 0 1 93 {0} repeat 1 0
+ 1 0 93 {0} repeat 0 1
+ 0 1 93 {0} repeat 1 0
+ ]
+ /pixx 97
+ /pixy 3
+ /height 6 72 div
+ /width 97 72 div
+ /opt options
+ >> //renmatrix exec
- % Plot the separator
- -1 72 rmoveto <<
- /ren //renmatrix
- /pixs [
- 0 1 93 {0} repeat 1 0
- 1 0 93 {0} repeat 0 1
- 0 1 93 {0} repeat 1 0
- ]
- /pixx 97
- /pixy 3
- /height 6 72 div
- /width 97 72 div
- /opt options
- >> //renmatrix exec
+ % Plot the 2D part
+ -2 6 rmoveto comp options //gs1-cc exec //renmatrix exec
- % Plot the 2D part
- -2 6 rmoveto comp options //gs1-cc exec //renmatrix exec
+ grestore
+ } {
+ /linsym exch def
+ /linpixs [
+ linsym /sbs get { 1 index 1 eq {{0}} {{1}} ifelse repeat } forall % Alternates x 1/0's
+ ] def
+ /linheight linsym /bhs get 0 get 72 mul cvi def
- grestore
+ /compsym comp options //gs1-cc exec def
+ /ccpixs compsym /pixs get def
+ /ccpixx compsym /pixx get def
+
+ /linpad [ ccpixx 97 sub {0} repeat ] def
+
+ /pixs [
+ 0 ccpixx ccpixs length 1 sub {
+ /i exch def
+ 2 { ccpixs i ccpixx getinterval aload pop } repeat
+ } for
+ 2 { linpad aload pop 0 1 93 {0} repeat 1 0 } repeat
+ 2 { linpad aload pop 1 0 93 {0} repeat 0 1 } repeat
+ 2 { linpad aload pop 0 1 93 {0} repeat 1 0 } repeat
+ linheight { linpad aload pop 0 linpixs aload pop 0 } repeat
+ ] def
+
+ /pixx ccpixx 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
@@ -24760,34 +24876,72 @@
/opt options
>> def
- gsave
+ dontdraw not { gsave } if
options (lintype) (upce) put
options (inkspread) (0) put
options (dontdraw) true put
% Plot the linear part
- linear options //upce exec //renlinear exec
+ linear options //upce exec
+ dontdraw not {
+ //renlinear exec
+
+ % Plot the separator
+ -1 72 rmoveto <<
+ /ren //renmatrix
+ /pixs [
+ 0 1 49 {0} repeat 1 0
+ 1 0 49 {0} repeat 0 1
+ 0 1 49 {0} repeat 1 0
+ ]
+ /pixx 53
+ /pixy 3
+ /height 6 72 div
+ /width 53 72 div
+ /opt options
+ >> //renmatrix exec
- % Plot the separator
- -1 72 rmoveto <<
- /ren //renmatrix
- /pixs [
- 0 1 49 {0} repeat 1 0
- 1 0 49 {0} repeat 0 1
- 0 1 49 {0} repeat 1 0
- ]
- /pixx 53
- /pixy 3
- /height 6 72 div
- /width 53 72 div
- /opt options
- >> //renmatrix exec
+ % Plot the 2D part
+ -2 6 rmoveto comp options //gs1-cc exec //renmatrix exec
- % Plot the 2D part
- -2 6 rmoveto comp options //gs1-cc exec //renmatrix exec
+ grestore
+ } {
+ /linsym exch def
+ /linpixs [
+ linsym /sbs get { 1 index 1 eq {{0}} {{1}} ifelse repeat } forall % Alternates x 1/0's
+ ] def
+ /linheight linsym /bhs get 0 get 72 mul cvi def
- grestore
+ /compsym comp options //gs1-cc exec def
+ /ccpixs compsym /pixs get def
+ /ccpixx compsym /pixx get def
+
+ /linpad [ ccpixx 53 sub {0} repeat ] def
+
+ /pixs [
+ 0 ccpixx ccpixs length 1 sub {
+ /i exch def
+ 2 { ccpixs i ccpixx getinterval aload pop } repeat
+ } for
+ 2 { linpad aload pop 0 1 49 {0} repeat 1 0 } repeat
+ 2 { linpad aload pop 1 0 49 {0} repeat 0 1 } repeat
+ 2 { linpad aload pop 0 1 49 {0} repeat 1 0 } repeat
+ linheight { linpad aload pop 0 linpixs aload pop 0 } repeat
+ ] def
+
+ /pixx ccpixx 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
@@ -24846,7 +25000,7 @@
pop
} ifelse
- gsave
+ dontdraw not { gsave } if
options (lintype) (databaromni) put
options (linkage) true put
@@ -24857,7 +25011,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 {
@@ -24888,20 +25042,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 { 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
@@ -24959,7 +25159,7 @@
pop
} ifelse
- gsave
+ dontdraw not { gsave } if
options (lintype) (databarstacked) put
options (linkage) true put
@@ -24970,7 +25170,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 {
@@ -24998,20 +25198,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
@@ -25069,7 +25301,7 @@
pop
} ifelse
- gsave
+ dontdraw not { gsave } if
options (lintype) (databarstackedomni) put
options (linkage) true put
@@ -25080,7 +25312,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 {
@@ -25108,20 +25340,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
@@ -25294,7 +25558,7 @@
pop
} ifelse
- gsave
+ dontdraw not { gsave } if
options (lintype) (databarlimited) put
options (linkage) true put
@@ -25305,7 +25569,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
@@ -25313,22 +25577,68 @@
counttomark 1 sub array astore /sep exch def pop pop
sep 0 [0 0 0] putinterval
sep sep length 4 sub [0 0 0 0] putinterval
- 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
- grestore
+ /linpixs [ 0 % Begin with left guard space
+ linsbs { 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 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 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
+ /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
@@ -25387,7 +25697,7 @@
pop
} ifelse
- gsave
+ dontdraw not { gsave } if
options (lintype) (databarexpanded) put
options (linkage) true put
@@ -25398,7 +25708,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 {
@@ -25427,20 +25737,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 { 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
@@ -25498,7 +25848,7 @@
pop
} ifelse
- gsave
+ dontdraw not { gsave } if
options (lintype) (databarexpandedstacked) put
options (linkage) true put
@@ -25509,7 +25859,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 {
@@ -25529,27 +25879,55 @@
} for
} bind def
/sep [ bot {1 exch sub} forall ] def
- sep 0 [ 0 0 0 ] putinterval
+ sep 0 [ 0 0 0 0 ] putinterval
sep sep length 4 sub [ 0 0 0 0 ] putinterval
[ % Finder pattern module positions
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
@@ -25608,7 +25986,7 @@
pop
} ifelse
- gsave
+ dontdraw not { gsave } if
options (inkspread) (0) put
options (dontdraw) true put
@@ -25635,35 +26013,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 { 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
@@ -26961,3 +27391,115 @@
% --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 {
+ /pixs ret /pixs get def
+
+ n ret /pixx known and { % If newlines requested and have row width
+ /pixx ret /pixx get def
+ 0 pixx pixs length 1 sub { % For i = 0; i < pixs length; i += pixx
+ pixs exch pixx getinterval { % For j = i; j < i + pixx; j++
+ 1 string cvs print
+ } forall
+ (\n) print
+ } 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 ratio arg to adjust width of bars/spaces (eg "0.6" reduces 3 -> 2)
+ systemdict /r known {
+ /r systemdict /r get cvr def
+ /f { r mul ceiling cvi } def
+ } {
+ /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
+
+ 0 1 limit {
+ /i exch def
+ i 2 mod 0 eq { % i is even
+ sbs i get f { (1) print } repeat
+ } {
+ sbs i get f { (0) print } repeat
+ } ifelse
+ } for
+ n { (\n) print } 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