transfig/fig2dev-3.2.6-genps_oldpatterns.patch

1624 lines
39 KiB
Diff

Author: Roland Rosenfeld <roland@debian.org>
Description: Reinvent the old genps.oldpatterns.[ch] (removed from 3.2.5a),
because the new version does not write the patterns correctly into PS and EPS
files (Bug #348034).
Bug-Debian: http://bugs.debian.org/348034
diff --git a/fig2dev-3.2.6a/fig2dev/dev/genps.c b/fig2dev-3.2.6a/fig2dev/dev/genps.c
--- a/fig2dev-3.2.6a/fig2dev/dev/genps.c
+++ b/fig2dev-3.2.6a/fig2dev/dev/genps.c
@@ -140,7 +140,6 @@ static void convert_xpm_colors(unsigned
static void genps_itp_spline(F_spline *s);
static void genps_ctl_spline(F_spline *s);
-static int removestr(char *buf, char *str, int *len);
#define SHADEVAL(F) 1.0*(F)/(NUMSHADES-1)
#define TINTVAL(F) 1.0*(F-NUMSHADES+1)/NUMTINTS
@@ -204,6 +203,31 @@ char *fill_def[NUMPATTERNS] = {
FILL_PAT21,FILL_PAT22,
};
+int patmat[NUMPATTERNS][2] = {
+ {16, -8},
+ {16, -8},
+ {16, -8},
+ {16, -16},
+ {16, -16},
+ {16, -16},
+ {16, 16},
+ {16, -16},
+ {16, -8},
+ { 8, -16},
+ {16, -16},
+ {24, -24},
+ {24, -24},
+ {24, -24},
+ {24, -24},
+ {16, -8},
+ { 8, -8},
+ {16, -16},
+ {30, -18},
+ {16, -16},
+ {16, -8},
+ { 8, -16},
+ };
+
static double scalex, scaley;
static double origx, origy;
static double userorigx, userorigy;
@@ -786,6 +810,10 @@ genps_start(F_compound *objects)
/* (rotation and y flipping is done in %%BeginPageSetup area */
if (pats_used) {
int i;
+ fprintf(tfp, "\n%s%s%s", FILL_PROLOG1,FILL_PROLOG2,FILL_PROLOG3);
+ fprintf(tfp, "\n%s%s%s", FILL_PROLOG4,FILL_PROLOG5,FILL_PROLOG6);
+ fprintf(tfp, "\n%s%s%s", FILL_PROLOG7,FILL_PROLOG8,FILL_PROLOG9);
+ fprintf(tfp, "\n%s%s", FILL_PROLOG10,FILL_PROLOG11);
/* only define the patterns that are used */
for (i=0; i<NUMPATTERNS; i++)
if (pattern_used[i])
@@ -947,9 +975,6 @@ genps_grid(float major, float minor)
fprintf(tfp,"%% Grid\n");
fprintf(tfp,"0.5 setgray\n");
- /* adjust scale for difference in xfig/actual scale in metric mode */
- if (metric)
- fprintf(tfp,"gs 450 472 div dup scale\n");
/* first the vertical lines */
fprintf(tfp,"%% Vertical\n");
for (x = lx; x <= ux; x += m) {
@@ -998,9 +1023,6 @@ genps_grid(float major, float minor)
}
draw_gridline(lx, y, ux, y);
}
- /* restore original scale */
- if (metric)
- fprintf(tfp,"gr\n");
}
static void
@@ -1290,22 +1312,6 @@ set_linewidth(double w)
}
}
-static int
-removestr(char *buf, char *str, int *len)
-{
- int slen = strlen(str)-1;
- int found=0;
- char *cp = buf;
-
- while (cp=strstr(buf,str)) {
- *len = *len - slen;
- memmove(cp, cp+slen, *len-(cp-buf));
- *(buf+*len) = '\0';
- found = 1;
- }
- return found;
-}
-
void
genps_line(F_line *l)
{
@@ -1686,11 +1692,6 @@ genps_line(F_line *l)
/* but flush buffer first */
fflush(tfp);
while ((len = read(fileno(picf),buf,sizeof(buf))) > 0) {
- /* remove any %EOF or %%EOF in file */
- while (removestr(buf,"\n%EOF\n",&len) != 0)
- ;
- while (removestr(buf,"\n%%EOF\n",&len) != 0)
- ;
write(fileno(tfp),buf,len);
}
close_picfile(picf,filtype);
@@ -2422,27 +2423,22 @@ fill_area(int fill, int pen_color, int f
else {
/* one of the patterns */
int patnum = fill-NUMSHADES-NUMTINTS+1;
- char colorspace[13], pencolor[25], fillcolor[25];
if (grayonly) {
float grayfill, graypen;
grayfill = rgb2luminance(fill_r, fill_g, fill_b);
graypen = rgb2luminance(pen_r, pen_g, pen_b);
- sprintf(colorspace, "/DeviceGray");
- sprintf(fillcolor, "%.2f", grayfill);
- sprintf(pencolor, "%.2f", graypen);
+ fprintf(tfp, "gs /PC [[%.2f %.2f %.2f] [%.2f %.2f %.2f]] def\n",
+ grayfill, grayfill, grayfill, graypen, graypen, graypen);
} else {
- sprintf(colorspace, "/DeviceRGB");
- sprintf(fillcolor, "%.2f %.2f %.2f", fill_r, fill_g, fill_b);
- sprintf(pencolor, "%.2f %.2f %.2f", pen_r, pen_g, pen_b);
+ fprintf(tfp, "gs /PC [[%.2f %.2f %.2f] [%.2f %.2f %.2f]] def\n",
+ fill_r, fill_g, fill_b, pen_r, pen_g, pen_b);
}
- fprintf(tfp, "\n%% Fill with pattern background color\n");
- fprintf(tfp, "gs %s setcolorspace %s setcolor fill gr\n",
- colorspace, fillcolor);
- fprintf(tfp, "\n%% Fill with pattern pen color\n");
- fprintf(tfp, "gs %s setcolorspace %s P%d setpattern fill gr\n\n",
- colorspace, pencolor, patnum);
+ fprintf(tfp, "%.2f %.2f sc P%d [%d 0 0 %d %.2f %.2f] PATmp PATsp ef gr PATusp ",
+ THICK_SCALE, THICK_SCALE, patnum,
+ patmat[patnum-1][0],patmat[patnum-1][1],
+ (float)ulx/THICK_SCALE, (float)uly/THICK_SCALE);
}
}
diff --git a/fig2dev-3.2.6a/fig2dev/dev/psprolog.h b/fig2dev-3.2.6a/fig2dev/dev/psprolog.h
--- a/fig2dev-3.2.6a/fig2dev/dev/psprolog.h
+++ b/fig2dev-3.2.6a/fig2dev/dev/psprolog.h
@@ -39,553 +39,1003 @@ $F2psDict /mtrx matrix put\n\
4 -2 roll mul srgb} bind def\n\
"
+
+#define FILL_PROLOG1 "\
+% This junk string is used by the show operators\n\
+/PATsstr 1 string def\n\
+/PATawidthshow { % cx cy cchar rx ry string\n\
+ % Loop over each character in the string\n\
+ { % cx cy cchar rx ry char\n\
+ % Show the character\n\
+ dup % cx cy cchar rx ry char char\n\
+ PATsstr dup 0 4 -1 roll put % cx cy cchar rx ry char (char)\n\
+ false charpath % cx cy cchar rx ry char\n\
+ /clip load PATdraw\n\
+ % Move past the character (charpath modified the\n\
+ % current point)\n\
+ currentpoint % cx cy cchar rx ry char x y\n\
+ newpath\n\
+ moveto % cx cy cchar rx ry char\n\
+ % Reposition by cx,cy if the character in the string is cchar\n\
+ 3 index eq { % cx cy cchar rx ry\n\
+ 4 index 4 index rmoveto\n\
+ } if\n\
+ % Reposition all characters by rx ry\n\
+ 2 copy rmoveto % cx cy cchar rx ry\n\
+ } forall\n\
+ pop pop pop pop pop % -\n\
+ currentpoint\n\
+ newpath\n\
+ moveto\n\
+} bind def\n\
+"
+#define FILL_PROLOG2 "\
+/PATcg {\n\
+ 7 dict dup begin\n\
+ /lw currentlinewidth def\n\
+ /lc currentlinecap def\n\
+ /lj currentlinejoin def\n\
+ /ml currentmiterlimit def\n\
+ /ds [ currentdash ] def\n\
+ /cc [ currentrgbcolor ] def\n\
+ /cm matrix currentmatrix def\n\
+ end\n\
+} bind def\n\
+% PATdraw - calculates the boundaries of the object and\n\
+% fills it with the current pattern\n\
+/PATdraw { % proc\n\
+ save exch\n\
+ PATpcalc % proc nw nh px py\n\
+ 5 -1 roll exec % nw nh px py\n\
+ newpath\n\
+ PATfill % -\n\
+ restore\n\
+} bind def\n\
+"
+#define FILL_PROLOG3 "\
+% PATfill - performs the tiling for the shape\n\
+/PATfill { % nw nh px py PATfill -\n\
+ PATDict /CurrentPattern get dup begin\n\
+ setfont\n\
+ % Set the coordinate system to Pattern Space\n\
+ PatternGState PATsg\n\
+ % Set the color for uncolored pattezns\n\
+ PaintType 2 eq { PATDict /PColor get PATsc } if\n\
+ % Create the string for showing\n\
+ 3 index string % nw nh px py str\n\
+ % Loop for each of the pattern sources\n\
+ 0 1 Multi 1 sub { % nw nh px py str source\n\
+ % Move to the starting location\n\
+ 3 index 3 index % nw nh px py str source px py\n\
+ moveto % nw nh px py str source\n\
+ % For multiple sources, set the appropriate color\n\
+ Multi 1 ne { dup PC exch get PATsc } if\n\
+ % Set the appropriate string for the source\n\
+ 0 1 7 index 1 sub { 2 index exch 2 index put } for pop\n\
+ % Loop over the number of vertical cells\n\
+ 3 index % nw nh px py str nh\n\
+ { % nw nh px py str\n\
+ currentpoint % nw nh px py str cx cy\n\
+ 2 index oldshow % nw nh px py str cx cy\n\
+ YStep add moveto % nw nh px py str\n\
+ } repeat % nw nh px py str\n\
+ } for\n\
+ 5 { pop } repeat\n\
+ end\n\
+} bind def\n\
+"
+#define FILL_PROLOG4 "\
+% PATkshow - kshow with the current pattezn\n\
+/PATkshow { % proc string\n\
+ exch bind % string proc\n\
+ 1 index 0 get % string proc char\n\
+ % Loop over all but the last character in the string\n\
+ 0 1 4 index length 2 sub {\n\
+ % string proc char idx\n\
+ % Find the n+1th character in the string\n\
+ 3 index exch 1 add get % string proc char char+1\n\
+ exch 2 copy % strinq proc char+1 char char+1 char\n\
+ % Now show the nth character\n\
+ PATsstr dup 0 4 -1 roll put % string proc chr+1 chr chr+1 (chr)\n\
+ false charpath % string proc char+1 char char+1\n\
+ /clip load PATdraw\n\
+ % Move past the character (charpath modified the current point)\n\
+ currentpoint newpath moveto\n\
+ % Execute the user proc (should consume char and char+1)\n\
+ mark 3 1 roll % string proc char+1 mark char char+1\n\
+ 4 index exec % string proc char+1 mark...\n\
+ cleartomark % string proc char+1\n\
+ } for\n\
+ % Now display the last character\n\
+ PATsstr dup 0 4 -1 roll put % string proc (char+1)\n\
+ false charpath % string proc\n\
+ /clip load PATdraw\n\
+ neewath\n\
+ pop pop % -\n\
+} bind def\n\
+"
+#define FILL_PROLOG5 "\
+% PATmp - the makepattern equivalent\n\
+/PATmp { % patdict patmtx PATmp patinstance\n\
+ exch dup length 7 add % We will add 6 new entries plus 1 FID\n\
+ dict copy % Create a new dictionary\n\
+ begin\n\
+ % Matrix to install when painting the pattern\n\
+ TilingType PATtcalc\n\
+ /PatternGState PATcg def\n\
+ PatternGState /cm 3 -1 roll put\n\
+ % Check for multi pattern sources (Level 1 fast color patterns)\n\
+ currentdict /Multi known not { /Multi 1 def } if\n\
+ % Font dictionary definitions\n\
+ /FontType 3 def\n\
+ % Create a dummy encoding vector\n\
+ /Encoding 256 array def\n\
+ 3 string 0 1 255 {\n\
+ Encoding exch dup 3 index cvs cvn put } for pop\n\
+ /FontMatrix matrix def\n\
+ /FontBBox BBox def\n\
+ /BuildChar {\n\
+ mark 3 1 roll % mark dict char\n\
+ exch begin\n\
+ Multi 1 ne {PaintData exch get}{pop} ifelse % mark [paintdata]\n\
+ PaintType 2 eq Multi 1 ne or\n\
+ { XStep 0 FontBBox aload pop setcachedevice }\n\
+ { XStep 0 setcharwidth } ifelse\n\
+ currentdict % mark [paintdata] dict\n\
+ /PaintProc load % mark [paintdata] dict paintproc\n\
+ end\n\
+ gsave\n\
+ false PATredef exec true PATredef\n\
+ grestore\n\
+ cleartomark % -\n\
+ } bind def\n\
+ currentdict\n\
+ end % newdict\n\
+ /foo exch % /foo newlict\n\
+ definefont % newfont\n\
+} bind def\n\
+"
+#define FILL_PROLOG6 "\
+% PATpcalc - calculates the starting point and width/height\n\
+% of the tile fill for the shape\n\
+/PATpcalc { % - PATpcalc nw nh px py\n\
+ PATDict /CurrentPattern get begin\n\
+ gsave\n\
+ % Set up the coordinate system to Pattern Space\n\
+ % and lock down pattern\n\
+ PatternGState /cm get setmatrix\n\
+ BBox aload pop pop pop translate\n\
+ % Determine the bounding box of the shape\n\
+ pathbbox % llx lly urx ury\n\
+ grestore\n\
+ % Determine (nw, nh) the # of cells to paint width and height\n\
+ PatHeight div ceiling % llx lly urx qh\n\
+ 4 1 roll % qh llx lly urx\n\
+ PatWidth div ceiling % qh llx lly qw\n\
+ 4 1 roll % qw qh llx lly\n\
+ PatHeight div floor % qw qh llx ph\n\
+ 4 1 roll % ph qw qh llx\n\
+ PatWidth div floor % ph qw qh pw\n\
+ 4 1 roll % pw ph qw qh\n\
+ 2 index sub cvi abs % pw ph qs qh-ph\n\
+ exch 3 index sub cvi abs exch % pw ph nw=qw-pw nh=qh-ph\n\
+ % Determine the starting point of the pattern fill\n\
+ %(px, py)\n\
+ 4 2 roll % nw nh pw ph\n\
+ PatHeight mul % nw nh pw py\n\
+ exch % nw nh py pw\n\
+ PatWidth mul exch % nw nh px py\n\
+ end\n\
+} bind def\n\
+"
+#define FILL_PROLOG7 "\
+% Save the original routines so that we can use them later on\n\
+/oldfill /fill load def\n\
+/oldeofill /eofill load def\n\
+/oldstroke /stroke load def\n\
+/oldshow /show load def\n\
+/oldashow /ashow load def\n\
+/oldwidthshow /widthshow load def\n\
+/oldawidthshow /awidthshow load def\n\
+/oldkshow /kshow load def\n\
+\n\
+% These defs are necessary so that subsequent procs don't bind in\n\
+% the originals\n\
+/fill { oldfill } bind def\n\
+/eofill { oldeofill } bind def\n\
+/stroke { oldstroke } bind def\n\
+/show { oldshow } bind def\n\
+/ashow { oldashow } bind def\n\
+/widthshow { oldwidthshow } bind def\n\
+/awidthshow { oldawidthshow } bind def\n\
+/kshow { oldkshow } bind def\n\
+"
+#define FILL_PROLOG8 "\
+/PATredef {\n\
+ MyAppDict begin\n\
+ {\n\
+ /fill { /clip load PATdraw newpath } bind def\n\
+ /eofill { /eoclip load PATdraw newpath } bind def\n\
+ /stroke { PATstroke } bind def\n\
+ /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def\n\
+ /ashow { 0 0 null 6 3 roll PATawidthshow }\n\
+ bind def\n\
+ /widthshow { 0 0 3 -1 roll PATawidthshow }\n\
+ bind def\n\
+ /awidthshow { PATawidthshow } bind def\n\
+ /kshow { PATkshow } bind def\n\
+ } {\n\
+ /fill { oldfill } bind def\n\
+ /eofill { oldeofill } bind def\n\
+ /stroke { oldstroke } bind def\n\
+ /show { oldshow } bind def\n\
+ /ashow { oldashow } bind def\n\
+ /widthshow { oldwidthshow } bind def\n\
+ /awidthshow { oldawidthshow } bind def\n\
+ /kshow { oldkshow } bind def\n\
+ } ifelse\n\
+ end\n\
+} bind def\n\
+false PATredef\n\
+"
+#define FILL_PROLOG9 "\
+% Conditionally define setcmykcolor if not available\n\
+/setcmykcolor where { pop } {\n\
+ /setcmykcolor {\n\
+ 1 sub 4 1 roll\n\
+ 3 {\n\
+ 3 index add neg dup 0 lt { pop 0 } if 3 1 roll\n\
+ } repeat\n\
+ setrgbcolor - pop\n\
+ } bind def\n\
+} ifelse\n\
+/PATsc { % colorarray\n\
+ aload length % c1 ... cn length\n\
+ dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor\n\
+ } ifelse } ifelse\n\
+} bind def\n\
+/PATsg { % dict\n\
+ begin\n\
+ lw setlinewidth\n\
+ lc setlinecap\n\
+ lj setlinejoin\n\
+ ml setmiterlimit\n\
+ ds aload pop setdash\n\
+ cc aload pop setrgbcolor\n\
+ cm setmatrix\n\
+ end\n\
+} bind def\n\
+"
+#define FILL_PROLOG10 "\
+/PATDict 3 dict def\n\
+/PATsp {\n\
+ true PATredef\n\
+ PATDict begin\n\
+ /CurrentPattern exch def\n\
+ % If it's an uncolored pattern, save the color\n\
+ CurrentPattern /PaintType get 2 eq {\n\
+ /PColor exch def\n\
+ } if\n\
+ /CColor [ currentrgbcolor ] def\n\
+ end\n\
+} bind def\n\
+% PATstroke - stroke with the current pattern\n\
+/PATstroke {\n\
+ countdictstack\n\
+ save\n\
+ mark\n\
+ {\n\
+ currentpoint strokepath moveto\n\
+ PATpcalc % proc nw nh px py\n\
+ clip newpath PATfill\n\
+ } stopped {\n\
+ (*** PATstroke Warning: Path is too complex, stroking\n\
+ with gray) =\n\
+ cleartomark\n\
+ restore\n\
+ countdictstack exch sub dup 0 gt\n\
+ { { end } repeat } { pop } ifelse\n\
+ gsave 0.5 setgray oldstroke grestore\n\
+ } { pop restore pop } ifelse\n\
+ newpath\n\
+} bind def\n\
+"
+#define FILL_PROLOG11 "\
+/PATtcalc { % modmtx tilingtype PATtcalc tilematrix\n\
+ % Note: tiling types 2 and 3 are not supported\n\
+ gsave\n\
+ exch concat % tilingtype\n\
+ matrix currentmatrix exch % cmtx tilingtype\n\
+ % Tiling type 1 and 3: constant spacing\n\
+ 2 ne {\n\
+ % Distort the pattern so that it occupies\n\
+ % an integral number of device pixels\n\
+ dup 4 get exch dup 5 get exch % tx ty cmtx\n\
+ XStep 0 dtransform\n\
+ round exch round exch % tx ty cmtx dx.x dx.y\n\
+ XStep div exch XStep div exch % tx ty cmtx a b\n\
+ 0 YStep dtransform\n\
+ round exch round exch % tx ty cmtx a b dy.x dy.y\n\
+ YStep div exch YStep div exch % tx ty cmtx a b c d\n\
+ 7 -3 roll astore % { a b c d tx ty }\n\
+ } if\n\
+ grestore\n\
+} bind def\n\
+/PATusp {\n\
+ false PATredef\n\
+ PATDict begin\n\
+ CColor PATsc\n\
+ end\n\
+} bind def\n\
+"
#define FILL_PAT01 "\
+% this is the pattern fill program from the Second edition Reference Manual\n\
+% with changes to call the above pattern fill\n\
% left30\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [-2 -4 10 5]\n\
- /XStep 8\n\
- /YStep 4\n\
- /PaintProc\n\
- {\n\
- pop\n\
- newpath\n\
- -2 5 moveto\n\
- .7 setlinewidth\n\
- 12 -6 rlineto\n\
- stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 32 16 true [ 32 0 0 -16 0 16 ]\n\
+ {<c000c000300030000c000c000300030000c000c000300030\n\
+ 000c000c00030003c000c000300030000c000c0003000300\n\
+ 00c000c000300030000c000c00030003>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P1 exch def\n\
"
#define FILL_PAT02 "\
% right30\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [-2 -4 10 5]\n\
- /XStep 8\n\
- /YStep 4\n\
- /PaintProc\n\
- {\n\
- pop\n\
- newpath\n\
- .7 setlinewidth\n\
- -2 -1 moveto\n\
- 12 6 rlineto\n\
- stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 32 16 true [ 32 0 0 -16 0 16 ]\n\
+ {<00030003000c000c0030003000c000c0030003000c000c00\n\
+ 30003000c000c00000030003000c000c0030003000c000c0\n\
+ 030003000c000c0030003000c000c000>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P2 exch def\n\
"
#define FILL_PAT03 "\
% crosshatch30\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [-2 -4 10 5]\n\
- /XStep 8\n\
- /YStep 4\n\
- /PaintProc\n\
- {\n\
- pop\n\
- newpath\n\
- .7 setlinewidth\n\
- -2 5 moveto\n\
- 12 -6 rlineto\n\
- stroke\n\
- newpath\n\
- .7 setlinewidth\n\
- -2 -1 moveto\n\
- 12 6 rlineto\n\
- stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 32 16 true [ 32 0 0 -16 0 16 ]\n\
+ {<033003300c0c0c0c30033003c000c000300330030c0c0c0c\n\
+ 0330033000c000c0033003300c0c0c0c30033003c000c000\n\
+ 300330030c0c0c0c0330033000c000c0>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P3 exch def\n\
"
#define FILL_PAT04 "\
% left45\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [-1 -1 9 9]\n\
- /XStep 8\n\
- /YStep 8\n\
- /PaintProc\n\
- {\n\
- pop\n\
- newpath\n\
- 1 setlinewidth\n\
- -1 9 moveto\n\
- 9 -1 lineto\n\
- stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 20 20 true [ 20 0 0 -20 0 20 ]\n\
+ {<8020004010002008001004000802000401000200\n\
+ 8001004000802000401080200040100020080010\n\
+ 0400080200040100020080010040008020004010>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P4 exch def\n\
"
#define FILL_PAT05 "\
% right45\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [-1 -1 9 9]\n\
- /XStep 8\n\
- /YStep 8\n\
- /PaintProc\n\
- {\n\
- pop\n\
- newpath\n\
- 1 setlinewidth\n\
- -1 -1 moveto\n\
- 9 9 lineto\n\
- stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 20 20 true [ 20 0 0 -20 0 20 ]\n\
+ {<0040100080200100400200800401000802001004\n\
+ 0020080040100080200000401000802001004002\n\
+ 0080040100080200100400200800401000802000>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P5 exch def\n\
"
#define FILL_PAT06 "\
% crosshatch45\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [-1 -1 9 9] \n\
- /XStep 8\n\
- /YStep 8\n\
- /PaintProc\n\
- {\n\
- pop\n\
- newpath\n\
- 1 setlinewidth\n\
- -1 9 moveto\n\
- 9 -1 lineto\n\
- stroke\n\
- -1 -1 moveto\n\
- 9 9 lineto\n\
- stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 20 20 true [ 20 0 0 -20 0 20 ]\n\
+ {<8020004050102088201104400a02800401000a02\n\
+ 8011044020882040501080200040501020882011\n\
+ 04400a02800401000a0280110440208820405010>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P6 exch def\n\
"
#define FILL_PAT07 "\
% bricks\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [-1 0 17 17] % At least linewidth bigger than Xstep and Ystep\n\
- /XStep 16 % These numbers mimic old Xfig bitmaps\n\
- /YStep 16\n\
- /PaintProc\n\
- {\n\
- pop\n\
- 1 setlinewidth 0 setlinecap\n\
- newpath 0 0 moveto 0 8 lineto stroke\n\
- newpath 8 8 moveto 8 16 lineto stroke\n\
- newpath 0 8 moveto 16 8 lineto stroke\n\
- newpath 0 16 moveto 16 16 lineto stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 16 16 true [ 16 0 0 -16 0 16 ]\n\
+ {<008000800080008000800080\n\
+ 0080ffff8000800080008000\n\
+ 800080008000ffff>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P7 exch def\n\
"
#define FILL_PAT08 "\
% vertical bricks\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [0 -1 17 17] % At least linewidth bigger than Xstep and Ystep\n\
- /XStep 16\n\
- /YStep 16\n\
- /PaintProc\n\
- {\n\
- pop\n\
- 1 setlinewidth 0 setlinecap\n\
- newpath 0 0 moveto 8 0 lineto stroke\n\
- newpath 8 8 moveto 16 8 lineto stroke\n\
- newpath 8 0 moveto 8 16 lineto stroke\n\
- newpath 16 0 moveto 16 16 lineto stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 16 16 true [ 16 0 0 -16 0 16 ]\n\
+ {<ff8080808080808080808080\n\
+ 8080808080ff808080808080\n\
+ 8080808080808080> }\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P8 exch def\n\
"
#define FILL_PAT09 "\
% horizontal lines\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [0 0 4 4] % At least linewidth bigger than Xstep and Ystep\n\
- /XStep 4\n\
- /YStep 4\n\
- /PaintProc\n\
- {\n\
- pop\n\
- 1 setlinewidth 0 setlinecap\n\
- newpath 0 3.5 moveto 4 3.5 lineto stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 16 8 true [ 16 0 0 -8 0 8 ]\n\
+ {< ffff000000000000ffff000000000000>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P9 exch def\n\
"
#define FILL_PAT10 "\
% vertical lines\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [0 0 4 4]\n\
- /XStep 4\n\
- /YStep 4\n\
- /PaintProc\n\
- {\n\
- pop\n\
- 1 setlinewidth 0 setlinecap\n\
- newpath 3.5 0 moveto 3.5 4 lineto stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 8 16 true [ 8 0 0 -16 0 16 ]\n\
+ {<11111111111111111111111111111111>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P10 exch def\n\
"
#define FILL_PAT11 "\
% crosshatch lines\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [0 0 4 4]\n\
- /XStep 4\n\
- /YStep 4\n\
- /PaintProc\n\
- {\n\
- pop\n\
- 1 setlinewidth 0 setlinecap\n\
- newpath 3.5 0 moveto 3.5 4 lineto stroke\n\
- newpath 0 3.5 moveto 4 3.5 lineto stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 16 16 true [ 16 0 0 -16 0 16 ]\n\
+ {<ffff111111111111ffff111111111111ffff111111111111\n\
+ ffff111111111111>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P11 exch def\n\
"
#define FILL_PAT12 "\
% left-shingles\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [0 0 25 24]\n\
- /XStep 24\n\
- /YStep 24\n\
- /PaintProc\n\
- {\n\
- pop\n\
- 1 setlinewidth 0 setlinecap\n\
- newpath 0 0.5 moveto 24 0.5 lineto stroke\n\
- newpath 0 8.5 moveto 24 8.5 lineto stroke\n\
- newpath 0 16.5 moveto 24 16.5 lineto stroke\n\
- newpath 4 8.5 moveto 8 16.5 lineto stroke\n\
- newpath 12 0.5 moveto 16 8.5 lineto stroke\n\
- newpath 20 16.5 moveto 24 24.5 lineto stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 48 48 true [ 48 0 0 -48 0 48 ]\n\
+ {<000000000001000000000001000000000002000000000002\n\
+ 000000000004000000000004000000000008000000000008\n\
+ 000000000010000000000010000000000020000000000020\n\
+ 000000000040000000000040000000000080ffffffffffff\n\
+ 000000010000000000010000000000020000000000020000\n\
+ 000000040000000000040000000000080000000000080000\n\
+ 000000100000000000100000000000200000000000200000\n\
+ 000000400000000000400000000000800000ffffffffffff\n\
+ 000100000000000100000000000200000000000200000000\n\
+ 000400000000000400000000000800000000000800000000\n\
+ 001000000000001000000000002000000000002000000000\n\
+ 004000000000004000000000008000000000ffffffffffff>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P12 exch def\n\
"
#define FILL_PAT13 "\
% right-shingles\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [0 0 25 24]\n\
- /XStep 24\n\
- /YStep 24\n\
- /PaintProc\n\
- {\n\
- pop\n\
- 1 setlinewidth 0 setlinecap\n\
- newpath 0 0.5 moveto 24 0.5 lineto stroke\n\
- newpath 0 8.5 moveto 24 8.5 lineto stroke\n\
- newpath 0 16.5 moveto 24 16.5 lineto stroke\n\
- newpath 4 24.5 moveto 8 16.5 lineto stroke\n\
- newpath 16 0.5 moveto 12 8.5 lineto stroke\n\
- newpath 20 16.5 moveto 24 8.5 lineto stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 48 48 true [ 48 0 0 -48 0 48 ]\n\
+ {<000000000080000000000080000000000040000000000040\n\
+ 000000000020000000000020000000000010000000000010\n\
+ 000000000008000000000008000000000004000000000004\n\
+ 000000000002000000000002000000000001ffffffffffff\n\
+ 008000000000008000000000004000000000004000000000\n\
+ 002000000000002000000000001000000000001000000000\n\
+ 000800000000000800000000000400000000000400000000\n\
+ 000200000000000200000000000100000000ffffffffffff\n\
+ 000000800000000000800000000000400000000000400000\n\
+ 000000200000000000200000000000100000000000100000\n\
+ 000000080000000000080000000000040000000000040000\n\
+ 000000020000000000020000000000010000ffffffffffff>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P13 exch def\n\
"
#define FILL_PAT14 "\
% vertical left-shingles\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [0 0 25 25]\n\
- /XStep 24\n\
- /YStep 24\n\
- /PaintProc\n\
- {\n\
- pop\n\
- 1 setlinewidth 0 setlinecap\n\
- newpath 0.5 0 moveto 0.5 24 lineto stroke\n\
- newpath 8.5 0 moveto 8.5 24 lineto stroke\n\
- newpath 16.5 0 moveto 16.5 24 lineto stroke\n\
- newpath 24.5 4 moveto 16.5 8 lineto stroke\n\
- newpath 0.5 16 moveto 8.5 12 lineto stroke\n\
- newpath 16.5 20 moveto 8.5 24 lineto stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 48 48 true [ 48 0 0 -48 0 48 ]\n\
+ {<000100010001000100010001000100010001000100010001\n\
+ 000100010001000100010001000100010001000100010001\n\
+ 000180010001000160010001000118010001000106010001\n\
+ 000101810001000100610001000100190001000100070001\n\
+ 000100010001000100010001000100010001000100010001\n\
+ 000100010001000100010001000100010001000100010001\n\
+ 000100018001000100016001000100011801000100010601\n\
+ 000100010181000100010061000100010019000100010007\n\
+ 000100010001000100010001000100010001000100010001\n\
+ 000100010001000100010001000100010001000100010001\n\
+ 800100010001600100010001180100010001060100010001\n\
+ 018100010001006100010001001900010001000700010001>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P14 exch def\n\
"
#define FILL_PAT15 "\
% vertical right-shingles\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [0 0 24 25]\n\
- /XStep 24\n\
- /YStep 24\n\
- /PaintProc\n\
- {\n\
- pop\n\
- 1 setlinewidth 0 setlinecap\n\
- newpath 0.5 0 moveto 0.5 24 lineto stroke\n\
- newpath 8.5 0 moveto 8.5 24 lineto stroke\n\
- newpath 16.5 0 moveto 16.5 24 lineto stroke\n\
- newpath 8.5 4 moveto 16.5 8 lineto stroke\n\
- newpath 0.5 12 moveto 8.5 16 lineto stroke\n\
- newpath 16.5 20 moveto 24.5 24 lineto stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 48 48 true [ 48 0 0 -48 0 48 ]\n\
+ {<000100010001000100010001000100010001000100010001\n\
+ 000100010001000100010001000100010001000100010001\n\
+ 000100010007000100010019000100010061000100010181\n\
+ 000100010601000100011801000100016001000100018001\n\
+ 000100010001000100010001000100010001000100010001\n\
+ 000100010001000100010001000100010001000100010001\n\
+ 000100070001000100190001000100610001000101810001\n\
+ 000106010001000118010001000160010001000180010001\n\
+ 000100010001000100010001000100010001000100010001\n\
+ 000100010001000100010001000100010001000100010001\n\
+ 000700010001001900010001006100010001018100010001\n\
+ 060100010001180100010001600100010001800100010001>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P15 exch def\n\
"
#define FILL_PAT16 "\
% fishscales\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [0 -1 17 9]\n\
- /XStep 16\n\
- /YStep 8\n\
- /PaintProc\n\
- {\n\
- pop\n\
- 0.7 setlinewidth 0 setlinecap\n\
- newpath 8 15 11 223 317 arc stroke\n\
- newpath 0 11 11 223 317 arc stroke\n\
- newpath 16 11 11 223 317 arc stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 32 16 true [ 32 0 0 -16 0 16 ]\n\
+ {<0007e000000c30000018180000700e0001c003800f0000f0\n\
+ 7800001ec0000003600000063000000c180000180e000070\n\
+ 038001c000f00f00001e78000003c000>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P16 exch def\n\
"
#define FILL_PAT17 "\
% small fishscales\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [0 -0.5 8 8.5]\n\
- /XStep 8\n\
- /YStep 8\n\
- /PaintProc\n\
- {\n\
- pop\n\
- 0.7 setlinewidth 0 setlinecap\n\
- newpath 4 8 4 180 360 arc stroke\n\
- newpath 0 4 4 180 360 arc stroke\n\
- newpath 8 4 4 180 360 arc stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 16 16 true [ 16 0 0 -16 0 16 ]\n\
+ {<008000800080014001400220\n\
+ 0c187007c001800080004001\n\
+ 40012002180c0770>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P17 exch def\n\
"
#define FILL_PAT18 "\
% circles\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [-0.35 -0.35 16.35 16.35] % (0, 16) plus 1/2 linewidth\n\
- /XStep 16\n\
- /YStep 16\n\
- /PaintProc\n\
- {\n\
- pop\n\
- 0.7 setlinewidth 0 setlinecap\n\
- newpath 8 8 8 0 360 arc stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 48 48 true [ 48 0 0 -48 0 48 ]\n\
+ {<000007f000000000780f000000038000e000000c00001800\n\
+ 001000000400006000000300008000000080010000000040\n\
+ 020000000020040000000010040000000010080000000008\n\
+ 100000000004100000000004200000000002200000000002\n\
+ 200000000002400000000001400000000001400000000001\n\
+ 400000000001800000000000800000000000800000000000\n\
+ 800000000000800000000000800000000000800000000000\n\
+ 400000000001400000000001400000000001400000000001\n\
+ 200000000002200000000002200000000002100000000004\n\
+ 100000000004080000000008040000000010040000000010\n\
+ 020000000020010000000040008000000080006000000300\n\
+ 001000000400000c0000180000038000e0000000780f0000>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P18 exch def\n\
"
#define FILL_PAT19 "\
% hexagons\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 1\n\
- /BBox [-0.5 -0.35 27 17]\n\
- /XStep 26\n\
- /YStep 16\n\
- /PaintProc\n\
- {\n\
- pop\n\
- 0.7 setlinewidth 0 setlinejoin newpath\n\
- 4 0 moveto\n\
- 9 0 rlineto % right\n\
- 4 8 rlineto % up-right\n\
- -4 8 rlineto % up-left\n\
- -9 0 rmoveto % back\n\
- -4 -8 rlineto % down-left\n\
- 4 -8 rlineto 1 0 rlineto stroke % down-right\n\
- newpath 17 8 moveto 9 0 rlineto stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 60 36 true [ 60 0 0 -36 0 36 ]\n\
+ {<008000040000000001000002000000000100000200000000\n\
+ 020000010000000002000001000000000400000080000000\n\
+ 040000008000000008000000400000000800000040000000\n\
+ 100000002000000010000000200000002000000010000000\n\
+ 200000001000000040000000080000004000000008000000\n\
+ 800000000400000080000000040000000000000003fffff0\n\
+ 800000000400000080000000040000004000000008000000\n\
+ 400000000800000020000000100000002000000010000000\n\
+ 100000002000000010000000200000000800000040000000\n\
+ 080000004000000004000000800000000400000080000000\n\
+ 020000010000000002000001000000000100000200000000\n\
+ 0100000200000000008000040000000000fffffc00000000>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P19 exch def\n\
"
#define FILL_PAT20 "\
% octagons\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 2\n\
- /BBox [0 0 16 16]\n\
- /XStep 16\n\
- /YStep 16\n\
- /PaintProc\n\
- {\n\
- pop\n\
- .8 setlinewidth 0 setlinejoin newpath\n\
- 5 0 moveto 6 0 rlineto 5 5 rlineto 0 6 rlineto\n\
- -5 5 rlineto -6 0 rlineto -5 -5 rlineto 0 -6 rlineto closepath stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 32 32 true [ 32 0 0 -32 0 32 ]\n\
+ {<003fff000040008000800040010000200200001004000008\n\
+ 080000041000000220000001400000008000000080000000\n\
+ 800000008000000080000000800000008000000080000000\n\
+ 800000008000000080000000800000008000000080000000\n\
+ 400000012000000210000004080000080400001002000020\n\
+ 0100004000800080>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P20 exch def\n\
"
#define FILL_PAT21 "\
% horizontal sawtooth lines\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 1\n\
- /BBox [0 0 8 8]\n\
- /XStep 8\n\
- /YStep 8\n\
- /PaintProc\n\
- {\n\
- pop\n\
- .8 setlinewidth 0 setlinejoin newpath\n\
- -1 3 moveto 1 -1 rlineto 4 4 rlineto 4 -4 rlineto 1 1 rlineto stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 32 16 true [ 32 0 0 -16 0 16 ]\n\
+ {<000000000000000000000000000000000000000000000000\n\
+ 000000000100010002800280044004400820082010101010\n\
+ 20082008400440048002800200010001>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P21 exch def\n\
"
#define FILL_PAT22 "\
% vertical sawtooth lines\n\
-<<\n\
- /PatternType 1\n\
- /PaintType 2\n\
- /TilingType 1\n\
- /BBox [0 0 8.5 8]\n\
- /XStep 8\n\
- /YStep 8\n\
- /PaintProc\n\
- {\n\
- pop\n\
- .8 setlinewidth 0 setlinejoin newpath\n\
- 3 -1 moveto -1 1 rlineto 4 4 rlineto -4 4 rlineto 1 1 rlineto stroke\n\
- } bind\n\
-\n\
->>\n\
-\n\
-matrix\n\
-makepattern\n\
+11 dict begin\n\
+/PaintType 1 def\n\
+/PatternType 1 def\n\
+/TilingType 1 def\n\
+/BBox [0 0 1 1] def\n\
+/XStep 1 def\n\
+/YStep 1 def\n\
+/PatWidth 1 def\n\
+/PatHeight 1 def\n\
+/Multi 2 def\n\
+/PaintData [\n\
+ { clippath } bind\n\
+ { 16 32 true [ 16 0 0 -32 0 32 ]\n\
+ {<400020001000080004000200010000800100020004000800\n\
+ 100020004000800040002000100008000400020001000080\n\
+ 01000200040008001000200040008000>}\n\
+ imagemask } bind\n\
+] def\n\
+/PaintProc {\n\
+ pop\n\
+ exec fill\n\
+} def\n\
+currentdict\n\
+end\n\
/P22 exch def\n\
"