(jamimager.jam).run (ImagerTester.jam) = (February 20, 1984 12:50:14 pm PST) = (mercPath) ( .flushpath 192.0 413.353 .moveto 237.5415 425.809 255.3458 401.7666 288.0 399.5085 .curveto 297.9937 398.8174 308.0844 403.6591 318.0 404.5501 .curveto 331.9086 405.7998 448.1434 401.3464 450.8684 396.0001 .curveto 453.3393 391.1521 435.2951 383.4805 431.9999 383.0218 .curveto 428.5259 382.538 410.233 382.6307 409.5 378.0 .curveto 409.8045 379.9238 421.3876 370.5168 402.0001 363.6874 .curveto 386.3301 358.1678 345.4535 362.3779 345.5 359.9999 .curveto 345.4942 360.2959 368.3762 359.2238 372.0 358.0435 .curveto 389.1935 352.4433 364.4147 343.7253 364.875 336.0 .curveto 365.5193 325.1856 382.3762 294.0994 390.0 285.675 .curveto 408.286 265.4687 417.344 272.0564 438.0001 263.8696 .curveto 454.6547 257.2686 417.2523 242.3468 408.0 243.5193 .curveto 383.1711 246.6655 383.3985 232.3274 366.0 219.439 .curveto 352.0869 209.1325 366.6143 208.1149 372.0 208.9024 .curveto 374.2727 209.2348 386.2989 214.7218 380.8284 204.0 .curveto 378.6221 199.6753 364.5704 185.5353 360.0 184.8125 .curveto 351.8828 183.5287 332.7219 196.0891 329.1539 192.0 .curveto 321.1773 182.8585 343.6019 183.1676 340.0227 174.0 .curveto 335.0409 161.2398 311.5035 158.2857 310.4737 126.0 .curveto 310.1649 116.3195 313.5754 76.22575 312.75 72.0 .curveto 310.7936 61.98325 261.8854 53.60412 252.0 52.62712 .curveto 238.5165 51.29451 155.6176 53.91593 152.55 65.99998 .curveto 146.1258 91.30679 146.1964 75.57425 114.0 83.08163 .curveto 101.5249 85.9905 85.49357 98.83845 93.0 114.0 .curveto 96.9852 122.0493 101.4202 118.0211 96.0 128.775 .curveto 92.91811 134.8897 92.05819 140.964 90.00001 147.577 .curveto 85.48869 162.0718 88.40478 162.2188 86.83928 168.0 .curveto 84.31547 177.3202 68.65387 174.0181 70.27779 186.0 .curveto 71.84946 197.5966 93.93316 251.462 87.75 258.0 .curveto 83.8855 262.0863 74.20536 262.4716 73.98215 270.0 .curveto 73.80345 276.027 80.97349 281.9097 79.26 288.0 .curveto 76.91487 296.3353 44.77308 305.2533 60.08572 324.0 .curveto 64.14451 328.969 78.96831 335.1704 67.77274 342.0 .curveto 60.79922 346.254 -5.558746 358.62 30.00002 372.3488 .curveto 45.19923 378.2171 84.23178 361.5336 114.0 376.1087 .curveto 140.1327 388.9037 163.6664 405.2124 192.0 413.3529 .curveto ) .cvx .def (xxx) {}.cvx .def (grey3) 0.3 .makegray .def (rotmerc) { mercPath xxx { 0.333 0.333 .scale xxx { 5 { .maskfill {.black .setcolor .maskstrokeclosed}.cvx .dosave -20 .rotate {.black .setcolor .maskfill}.cvx .dosave -20 .rotate }.cvx .rept }.cvx .dosaveall xxx { 2 { .clipxarea -20 .rotate }.cvx .rept -160 .rotate 5 { .maskfill {.black .setcolor .maskstrokeclosed}.cvx .dosave -20 .rotate {.black .setcolor .maskfill}.cvx .dosave -20 .rotate }.cvx .rept }.cvx .dosaveall }.cvx .dosaveall }.cvx .def (resetmouse) ( (.track) ( .pop .pop ) .cvx .def (.reddown) ( .pop .pop ) .cvx .def (.bluedown) ( .pop .pop ) .cvx .def ) .cvx .def (foxes) ( (.reddown) ((timesroman) 10 .setfont).cvx .def (.bluedown) ((helvetica) 10 .setfont).cvx .def (.track) (.setpos fox .drawtext) .cvx .def ) .cvx .def (mfoxes) ( (.reddown) ((timesroman) 10 .setfont .setpos .move .black .setcolor fox .drawtext).cvx .def (.bluedown) ((helvetica) 10 .setfont .setpos .move .black .setcolor fox .drawtext).cvx .def (.track) (0 0 .setpos .white .setcolor fox .drawtext .setpos .move .black .setcolor fox .drawtext) .cvx .def ) .cvx .def (cfoxes) ( (.reddown) ((.track) ( .pop .pop ) .cvx .def (timesroman) 10 .setfont .setpos .move .black .setcolor fox .drawtext).cvx .def (.bluedown) ((.track) (.setcorrectmeasure (0 0 .setpos fox .drawtext).cvx .correct) .cvx .def .track).cvx .def ) .cvx .def (boxes) ( (.track) (.translate -25 -25 25 25 .drawbox) .cvx .def ) .cvx .def (e) (.erase) .cvx .def (correctTest) (.initdc 5.0e-4 0 .setcorrecttolerance (timesroman) 18 .setfont 30 30 .translate 30 .rotate 0 0 .setxy fox .drawtext (0 0 .setxy .mouse 2 .copy 2 .copy .dup .mul .exch .dup .mul .add 10 .lt (.exit).cvx .if .setcorrectmeasure e (fox .drawtext).cvx .correct .pop .pop).cvx .loop).cvx .def (fattext) { (txt) .exch .def 1 0 .setcorrecttolerance .true .setpriorityimportant {.move .true .setnoimage txt .drawtext .getcp .setcorrectmeasure 0 0 .setxy}.cvx .dosave {1.2 1 .scale txt .drawtext}.cvx .correct }.cvx .def (monkytext) { (txt) .exch .def .05 .05 .scale 30 .rotate (/indigo/ais/monk.ais) .setsampledcolor -30 .rotate 20 20 .scale {5 -5 .setxyrel .black .setcolor txt fattext}.cvx .dosaveall txt fattext }.cvx .def (CorrectRotatedText) { 2 .copy .setcorrectmeasure .exch .atan 5 .div .round 5 .mul (angle) .exch .store (txt) .exch .store 0 0 .setxy {e angle .rotate txt .drawtext}.cvx .correct }.cvx .def (correctufox) { .touch 20 .exch .setxy 20 .sub 0 .setcorrectmeasure 1 1 .setcorrecttolerance {ufox}.cvx .correct }.cvx .def (correctufoxmouse) { .mouse 20 .exch .setxy 20 .sub 0 .setcorrectmeasure 1 1 .setcorrecttolerance {ufox}.cvx .correct }.cvx .def (correctufoxes) { {correctufoxmouse}.cvx .loop }.cvx .def (rotFox) { resetmouse .initdc 1 0 .setcorrecttolerance (timesroman) 18 .setfont 100 200 .translate 0 0 .setxy fox .drawtext {fox .mouse CorrectRotatedText}.cvx .loop }.cvx .def (spinFox) { .initdc 1 0 .setcorrecttolerance (timesroman) 18 .setfont 200 300 .translate 0 0 .setxy fox .drawtext .getcp .pop (radius) .exch .store (theta) 0 .store {fox theta .cos radius .mul theta .sin radius .mul CorrectRotatedText (theta) theta 1 .add .store}.cvx .loop }.cvx .def (mercmonk) {40 10 .translate .5 .5 .scale (/indigo/ais/monk.ais) .setsampledcolor 2 2 .scale -40 -10 .translate mercPath .maskfill .black .setcolor 7 .setstrokewidth .maskstrokeclosed}.cvx .def (thisisafancyexample) { .true .setpriorityimportant (TimesRoman) 175 .setfont 10 472 .setxy (This is) monkytext 10 472 150 .sub .setxy (a fancy) monkytext 10 472 300 .sub .setxy (example) monkytext }.cvx .def (ufox) { (The ) .drawtext .startunderline (quick brown fox) .drawtext 3 1 .maskunderline ( jumped over the ) .drawtext .startunderline (lazy) .drawtext 3 1 .maskunderline ( dogs.) .drawtext }.cvx .def (stip) 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 5 5 .makebitarray .def (setstip) {stip 0 .setsampledblack}.cvx .def (paintchecks) {.initdc 2 .setstrokeend 4 .setstrokewidth 5 5 .scale 30 .rotate 1 0 0 1 2 2 .makebitarray 1 .setsampledblack 3 1 .scale .erase .touch .setcp {.mouse 2 .copy .getcp .maskvector .setcp}.cvx .loop}.cvx .def (shade) { 2 .setstrokeend 20 .setstrokewidth (.track) {.dup 700.0 .div .makegray .setcolor .drawto}.cvx .def (.reddown) {.setcp} .cvx .def }.cvx .def (dist) {.exch 4 1 .roll .sub .dup .mul 3 1 .roll .sub .dup .mul .add .sqrt}.cvx .def (max) {2 .copy .gt {.exch}.cvx .if .exch .pop}.cvx .def (speedshade) { (maxspeed) 1 .store (findmaxspeed) {(maxspeed) maxspeed 0.95 .mul .store .dup maxspeed .exch .gt {.pop maxspeed}.cvx .if (maxspeed) .exch .store}.cvx .def 2 .setstrokeend 20 .setstrokewidth (.track) {2 .copy .getcp dist .dup findmaxspeed maxspeed .div .makegray .setcolor .drawto}.cvx .def (.reddown) {.setcp} .cvx .def }.cvx .def (bic) { (tot) 700 .store 2 .setstrokeend 20 .setstrokewidth (.track) {2 .copy .getcp dist tot .exch .sub (tot) .exch .store tot 0 max 700 .div .makegray .setcolor .drawto}.cvx .def (.reddown) {.setcp (tot) 700 .store} .cvx .def }.cvx .def (aca) {(/ivy/plass/Fonts/TimesRoman10.ac) (a) .pixelarrayfromac t .maskpixel}.cvx .def (acy) {(/ivy/plass/hacks/CMR30.ac) (y) .pixelarrayfromac t .maskpixel}.cvx .def (rotatedStrike) { (_ ImagerJaM.deviceType _ $Screen).print .touch .setxy (Xerox/PressFonts/Tioga/MIR) 10 45 .nsrsetfont (Hello) .show }.cvx .def (x) {100 100 .setxy (xerox/pressfonts/timesroman/mrr) 30 0 .nsrsetfont (X) .show}.cvx .def (xxxx) {{ 72.27 .dup .scale (xerox/pressfonts/timesroman/mrr) 0.5 0 .nsrsetfont 0.1 0 .setcorrecttolerance 6.5 0 .setcorrectmeasure 1 1 .setxy 18 {{{(xxxxxxxxxxxxxxxx) .show}.cvx .correct}.cvx .dosaveall 0 0.5 .setxyrel}.cvx .rept }.cvx .dosave}.cvx .def (ImagerJaM).callinit ÊM˜J˜Jšœ˜J˜%J™˜ J˜ Jšœ˜Jšœ:˜:Jšœ;˜;Jšœ>˜>Jšœ>˜>Jšœ6˜6Jšœ>˜>Jšœ;˜;Jšœ;˜;Jšœ:˜:Jšœ:˜:Jšœ<˜