drawcontext/derived/PSFormBundle.m3


MODULE PSFormBundle;
Generated by m3bundle; see its manpage.

IMPORT Bundle, BundleRep, Text;
IMPORT Thread, Wr, TextWr;

TYPE T = Bundle.T OBJECT OVERRIDES
           get      := LookUp;
           getNames := GetNames;
         END;

TYPE Texts = REF ARRAY OF TEXT;

VAR
  bundle: T     := NIL;
  names : Texts := NIL;

PROCEDURE Get(): Bundle.T =
  BEGIN
    IF (bundle = NIL) THEN bundle := NEW (T) END;
    RETURN bundle;
  END Get;

PROCEDURE GetNames (<*UNUSED*> self: T): Texts =
  BEGIN
    IF names = NIL THEN
      names := NEW (Texts, NUMBER (Names));
      names^ := Names;
    END;
    RETURN names;
  END GetNames;

PROCEDURE LookUp (<*UNUSED*> self: T;  element: TEXT): TEXT =
  BEGIN
    FOR i := 0 TO LAST (Names)-1 DO
      IF Text.Equal (Names[i], element) THEN
        IF Elements[i] = NIL THEN Elements[i] := GetElt (i) END;
        RETURN Elements[i];
      END;
    END;
    RETURN NIL;
  END LookUp;

CONST Names = ARRAY [0..2] OF TEXT {
  "times.afm",
  "form.ps",
  NIL
};

VAR Elements := ARRAY [0..2] OF TEXT {
  NIL (* E0 .. E0_1 *),
  E1,
  NIL
};

PROCEDURE GetElt (n: INTEGER): TEXT =
  <*FATAL Thread.Alerted, Wr.Failure *>
  VAR wr := TextWr.New ();
  BEGIN
    CASE n OF
    | 0 =>
        Wr.PutText (wr, E0);
        Wr.PutText (wr, E0_0);
        Wr.PutText (wr, E0_1);
    ELSE (*skip*)
    END;
    RETURN TextWr.ToText (wr);
  END GetElt;

CONST E0 =
   "C 32 ; WX 250 ; N space ; B 0 0 0 0 ;\nC 33 ; WX 333 ; N exclam ; B 130"
 & " -9 238 676 ;\nC 34 ; WX 408 ; N quotedbl ; B 77 431 331 676 ;\nC 35 ; "
 & "WX 500 ; N numbersign ; B 5 0 496 662 ;\nC 36 ; WX 500 ; N dollar ; B 4"
 & "4 -87 457 727 ;\nC 37 ; WX 833 ; N percent ; B 61 -13 772 676 ;\nC 38 ;"
 & " WX 778 ; N ampersand ; B 42 -13 750 676 ;\nC 39 ; WX 333 ; N quoterigh"
 & "t ; B 79 433 218 676 ;\nC 40 ; WX 333 ; N parenleft ; B 48 -177 304 676"
 & " ;\nC 41 ; WX 333 ; N parenright ; B 29 -177 285 676 ;\nC 42 ; WX 500 ;"
 & " N asterisk ; B 69 265 432 676 ;\nC 43 ; WX 564 ; N plus ; B 30 0 534 5"
 & "06 ;\nC 44 ; WX 250 ; N comma ; B 56 -141 195 102 ;\nC 45 ; WX 333 ; N "
 & "hyphen ; B 39 194 285 257 ;\nC 46 ; WX 250 ; N period ; B 70 -11 181 10"
 & "0 ;\nC 47 ; WX 278 ; N slash ; B -9 -14 287 676 ;\nC 48 ; WX 500 ; N ze"
 & "ro ; B 24 -14 476 676 ;\nC 49 ; WX 500 ; N one ; B 111 0 394 676 ;\nC 5"
 & "0 ; WX 500 ; N two ; B 30 0 475 676 ;\nC 51 ; WX 500 ; N three ; B 43 -"
 & "14 431 676 ;\nC 52 ; WX 500 ; N four ; B 12 0 472 676 ;\nC 53 ; WX 500 "
 & "; N five ; B 32 -14 438 688 ;\nC 54 ; WX 500 ; N six ; B 34 -14 468 684"
 & " ;\nC 55 ; WX 500 ; N seven ; B 20 -8 449 662 ;\nC 56 ; WX 500 ; N eigh"
 & "t ; B 56 -14 445 676 ;\nC 57 ; WX 500 ; N nine ; B 30 -22 459 676 ;\nC "
 & "58 ; WX 278 ; N colon ; B 81 -11 192 459 ;\nC 59 ; WX 278 ; N semicolon"
 & " ; B 80 -141 219 459 ;\nC 60 ; WX 564 ; N less ; B 28 -8 536 514 ;\nC 6"
 & "1 ; WX 564 ; N equal ; B 30 120 534 386 ;\nC 62 ; WX 564 ; N greater ; "
 & "B 28 -8 536 514 ;\nC 63 ; WX 444 ; N question ; B 68 -8 414 676 ;\nC 64"
 & " ; WX 921 ; N at ; B 116 -14 809 676 ;\nC 65 ; WX 722 ; N A ; B 15 0 70"
 & "6 674 ;\nC 66 ; WX 667 ; N B ; B 17 0 593 662 ;\nC 67 ; WX 667 ; N C ; "
 & "B 28 -14 633 676 ;\nC 68 ; WX 722 ; N D ; B 16 0 685 662 ;\nC 69 ; WX 6"
 & "11 ; N E ; B 12 0 597 662 ;\nC 70 ; WX 556 ; N F ; B 12 0 546 662 ;\nC "
 & "71 ; WX 722 ; N G ; B 32 -14 709 676 ;\nC 72 ; WX 722 ; N H ; B 19 0 70"
 & "2 662 ;\nC 73 ; WX 333 ; N I ; B 18 0 315 662 ;\nC 74 ; WX 389 ; N J ; "
 & "B 10 -14 370 662 ;\nC 75 ; WX 722 ; N K ; B 34 0 723 662 ;\nC 76 ; WX 6"
 & "11 ; N L ; B 12 0 598 662 ;\nC 77 ; WX 889 ; N M ; B 12 0";

CONST E0_0 =
   " 863 662 ;\nC 78 ; WX 722 ; N N ; B 12 -11 707 662 ;\nC 79 ; WX 722 ; N"
 & " O ; B 34 -14 688 676 ;\nC 80 ; WX 556 ; N P ; B 16 0 542 662 ;\nC 81 ;"
 & " WX 722 ; N Q ; B 34 -178 701 676 ;\nC 82 ; WX 667 ; N R ; B 17 0 659 6"
 & "62 ;\nC 83 ; WX 556 ; N S ; B 42 -14 491 676 ;\nC 84 ; WX 611 ; N T ; B"
 & " 17 0 593 662 ;\nC 85 ; WX 722 ; N U ; B 14 -14 705 662 ;\nC 86 ; WX 72"
 & "2 ; N V ; B 16 -11 697 662 ;\nC 87 ; WX 944 ; N W ; B 5 -11 932 662 ;\n"
 & "C 88 ; WX 722 ; N X ; B 10 0 704 662 ;\nC 89 ; WX 722 ; N Y ; B 22 0 70"
 & "3 662 ;\nC 90 ; WX 611 ; N Z ; B 9 0 597 662 ;\nC 91 ; WX 333 ; N brack"
 & "etleft ; B 88 -156 299 662 ;\nC 92 ; WX 278 ; N backslash ; B -9 -14 28"
 & "7 676 ;\nC 93 ; WX 333 ; N bracketright ; B 34 -156 245 662 ;\nC 94 ; W"
 & "X 469 ; N asciicircum ; B 24 297 446 662 ;\nC 95 ; WX 500 ; N underscor"
 & "e ; B 0 -125 500 -75 ;\nC 96 ; WX 333 ; N quoteleft ; B 115 433 254 676"
 & " ;\nC 97 ; WX 444 ; N a ; B 37 -10 442 460 ;\nC 98 ; WX 500 ; N b ; B 3"
 & " -10 468 683 ;\nC 99 ; WX 444 ; N c ; B 25 -10 412 460 ;\nC 100 ; WX 50"
 & "0 ; N d ; B 27 -10 491 683 ;\nC 101 ; WX 444 ; N e ; B 25 -10 424 460 ;"
 & "\nC 102 ; WX 333 ; N f ; B 20 0 383 683 ; L i fi ; L l fl ;\nC 103 ; WX"
 & " 500 ; N g ; B 28 -218 470 460 ;\nC 104 ; WX 500 ; N h ; B 9 0 487 683 "
 & ";\nC 105 ; WX 278 ; N i ; B 16 0 253 683 ;\nC 106 ; WX 278 ; N j ; B -7"
 & "0 -218 194 683 ;\nC 107 ; WX 500 ; N k ; B 7 0 505 683 ;\nC 108 ; WX 27"
 & "8 ; N l ; B 19 0 257 683 ;\nC 109 ; WX 778 ; N m ; B 16 0 775 460 ;\nC "
 & "110 ; WX 500 ; N n ; B 16 0 485 460 ;\nC 111 ; WX 500 ; N o ; B 29 -10 "
 & "470 460 ;\nC 112 ; WX 500 ; N p ; B 5 -217 470 460 ;\nC 113 ; WX 500 ; "
 & "N q ; B 24 -217 488 460 ;\nC 114 ; WX 333 ; N r ; B 5 0 335 460 ;\nC 11"
 & "5 ; WX 389 ; N s ; B 51 -10 348 460 ;\nC 116 ; WX 278 ; N t ; B 13 -10 "
 & "279 579 ;\nC 117 ; WX 500 ; N u ; B 9 -10 479 450 ;\nC 118 ; WX 500 ; N"
 & " v ; B 19 -14 477 450 ;\nC 119 ; WX 722 ; N w ; B 21 -14 694 450 ;\nC 1"
 & "20 ; WX 500 ; N x ; B 17 0 479 450 ;\nC 121 ; WX 500 ; N y ; B 14 -218 "
 & "475 450 ;\nC 122 ; WX 444 ; N z ; B 27 0 418 450 ;\nC 123 ; WX 480 ; N "
 & "braceleft ; B 100 -181 350 680 ;\nC 124 ; WX 200 ; N bar ; ";

CONST E0_1 =
   "B 67 -14 133 676 ;\nC 125 ; WX 480 ; N braceright ; B 130 -181 380 680 "
 & ";\nC 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ;\n";

CONST E1 =
   "%!PS-Adobe-2.0 EPSF-2.0\n%%Title: #title#\n%%Creator: PSDrawContext.m3\n"
 & "%%CreationDate: #date#\n%%BoundingBox: 0 0 #width# #height#\n%%Magnific"
 & "ation: 1.0000\n%%EndComments\n/$F2psDict 200 dict def\n$F2psDict begin\n"
 & "$F2psDict /mtrx matrix put\n/col0 {0.000 0.000 0.000 srgb} bind def\nen"
 & "d\nsave\nnewpath 0 #height# moveto\n0 0 lineto #width# 0 lineto #width#"
 & " #height# lineto\nclosepath clip newpath\n#xoff# #yoff# translate\n1 -1"
 & " scale\n\n/gr {grestore} bind def\n/gs {gsave} bind def\n/rs {restore} "
 & "bind def\n/l {lineto} bind def\n/m {moveto} bind def\n/n {newpath} bind"
 & " def\n/s {stroke} bind def\n/sh {show} bind def\n/slw {setlinewidth} bi"
 & "nd def\n/srgb {setrgbcolor} bind def\n/sc {scale} bind def\n/tff {/Time"
 & "s-Roman findfont} bind def\n/tx {m gs 1 -1 sc} bind def\n/sf {setfont} "
 & "bind def\n/scf {scalefont} bind def\n/$F2psBegin {$F2psDict begin /$F2p"
 & "sEnteredState save def} def\n/$F2psEnd {$F2psEnteredState restore end} "
 & "def\n\n$F2psBegin\n%%Page: 1 1\n10 setmiterlimit\n #cpt# #cpt# sc\n\n#l"
 & "ines#\n#texts#\n$F2psEnd\nrs\n";

BEGIN
END PSFormBundle.