%!PS-Adobe-1.0 %%Creator: okeeffe.Berkeley.EDU:sam (& Leffler,461E,7780,5485270) %%Title: stdin (ditroff) %%CreationDate: Fri Jan 6 08:59:53 1989 %%EndComments % @(#)psdit.pro 1.3 4/15/88 % lib/psdit.pro -- prolog for psdit (ditroff) files % Copyright (c) 1984, 1985 Adobe Systems Incorporated. All Rights Reserved. % last edit: shore Sat Nov 23 20:28:03 1985 % RCSID: $Header: psdit.pro,v 2.1 85/11/24 12:19:43 shore Rel $ % Changed by Edward Wang (edward@ucbarpa.berkeley.edu) to handle graphics, % 17 Feb, 87. /$DITroff 140 dict def $DITroff begin /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi{0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /arctoobig 90 def /arctoosmall .05 def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}def /point{resolution 72 div mul}def /dround {transform round exch round exch itransform}def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}def /xS{/fontslant exch def F}def /s{/fontsize exch def /fontheight fontsize def F}def /f{/fontnum exch def F}def /F{fontheight 0 le{/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}def /X{exch currentpoint exch pop moveto show}def /N{3 1 roll moveto show}def /Y{exch currentpoint pop exch moveto show}def /S{show}def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}def /AN{4 2 roll moveto 0 exch ashow}def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}def /AS{0 exch ashow}def /MX{currentpoint exch pop moveto}def /MY{currentpoint pop exch moveto}def /MXY{moveto}def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /Dt{/Dlinewidth exch def}def 1 Dt /Ds{/Ddash exch def}def -1 Ds /Di{/Dstipple exch def}def 1 Di /Dsetlinewidth{2 Dlinewidth mul setlinewidth}def /Dsetdash{Ddash 4 eq{[8 12]}{Ddash 16 eq{[32 36]} {Ddash 20 eq{[32 12 8 12]}{[]}ifelse}ifelse}ifelse 0 setdash}def /Dstroke{gsave Dsetlinewidth Dsetdash 1 setlinecap stroke grestore currentpoint newpath moveto}def /Dl{rlineto Dstroke}def /arcellipse{/diamv exch def /diamh exch def oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def currentpoint exch rad add exch rad -180 180 arc oldmat setmatrix}def /Dc{dup arcellipse Dstroke}def /De{arcellipse Dstroke}def /Da{/endv exch def /endh exch def /centerv exch def /centerh exch def /cradius centerv centerv mul centerh centerh mul add sqrt def /eradius endv endv mul endh endh mul add sqrt def /endang endv endh atan def /startang centerv neg centerh neg atan def /sweep startang endang sub dup 0 lt{360 add}if def sweep arctoobig gt {/midang startang sweep 2 div sub def /midrad cradius eradius add 2 div def /midh midang cos midrad mul def /midv midang sin midrad mul def midh neg midv neg endh endv centerh centerv midh midv Da Da} {sweep arctoosmall ge {/controldelt 1 sweep 2 div cos sub 3 sweep 2 div sin mul div 4 mul def centerv neg controldelt mul centerh controldelt mul endv neg controldelt mul centerh add endh add endh controldelt mul centerv add endv add centerh endh add centerv endv add rcurveto Dstroke} {centerh endh add centerv endv add rlineto Dstroke} ifelse} ifelse}def /Dpatterns[ [%cf[widthbits] [8<0000000000000010>] [8<0411040040114000>] [8<0204081020408001>] [8<0000103810000000>] [8<6699996666999966>] [8<0000800100001008>] [8<81c36666c3810000>] [8<0f0e0c0800000000>] [8<0000000000000010>] [8<0411040040114000>] [8<0204081020408001>] [8<0000001038100000>] [8<6699996666999966>] [8<0000800100001008>] [8<81c36666c3810000>] [8<0f0e0c0800000000>] [8<0042660000246600>] [8<0000990000990000>] [8<0804020180402010>] [8<2418814242811824>] [8<6699996666999966>] [8<8000000008000000>] [8<00001c3e363e1c00>] [8<0000000000000000>] [32<00000040000000c00000004000000040000000e0000000000000000000000000>] [32<00000000000060000000900000002000000040000000f0000000000000000000>] [32<000000000000000000e0000000100000006000000010000000e0000000000000>] [32<00000000000000002000000060000000a0000000f00000002000000000000000>] [32<0000000e0000000000000000000000000000000f000000080000000e00000001>] [32<0000090000000600000000000000000000000000000007000000080000000e00>] [32<00010000000200000004000000040000000000000000000000000000000f0000>] [32<0900000006000000090000000600000000000000000000000000000006000000>]] [%ug [8<0000020000000000>] [8<0000020000002000>] [8<0004020000002000>] [8<0004020000402000>] [8<0004060000402000>] [8<0004060000406000>] [8<0006060000406000>] [8<0006060000606000>] [8<00060e0000606000>] [8<00060e000060e000>] [8<00070e000060e000>] [8<00070e000070e000>] [8<00070e020070e000>] [8<00070e020070e020>] [8<04070e020070e020>] [8<04070e024070e020>] [8<04070e064070e020>] [8<04070e064070e060>] [8<06070e064070e060>] [8<06070e066070e060>] [8<06070f066070e060>] [8<06070f066070f060>] [8<060f0f066070f060>] [8<060f0f0660f0f060>] [8<060f0f0760f0f060>] [8<060f0f0760f0f070>] [8<0e0f0f0760f0f070>] [8<0e0f0f07e0f0f070>] [8<0e0f0f0fe0f0f070>] [8<0e0f0f0fe0f0f0f0>] [8<0f0f0f0fe0f0f0f0>] [8<0f0f0f0ff0f0f0f0>] [8<1f0f0f0ff0f0f0f0>] [8<1f0f0f0ff1f0f0f0>] [8<1f0f0f8ff1f0f0f0>] [8<1f0f0f8ff1f0f0f8>] [8<9f0f0f8ff1f0f0f8>] [8<9f0f0f8ff9f0f0f8>] [8<9f0f0f9ff9f0f0f8>] [8<9f0f0f9ff9f0f0f9>] [8<9f8f0f9ff9f0f0f9>] [8<9f8f0f9ff9f8f0f9>] [8<9f8f1f9ff9f8f0f9>] [8<9f8f1f9ff9f8f1f9>] [8] [8] [8] [8] [8] [8] [8] [8] [8] [8] [8] [8] [8] [8] [8] [8] [8] [8] [8] [8]] [%mg [8<8000000000000000>] [8<0822080080228000>] [8<0204081020408001>] [8<40e0400000000000>] [8<66999966>] [8<8001000010080000>] [8<81c36666c3810000>] [8] [16<07c00f801f003e007c00f800f001e003c007800f001f003e007c00f801f003e0>] [16<1f000f8007c003e001f000f8007c003e001f800fc007e003f001f8007c003e00>] [8] [16<0040008001000200040008001000200040008000000100020004000800100020>] [16<0040002000100008000400020001800040002000100008000400020001000080>] [16<1fc03fe07df0f8f8f07de03fc01f800fc01fe03ff07df8f87df03fe01fc00f80>] [8<80>] [8<8040201000000000>] [8<84cc000048cc0000>] [8<9900009900000000>] [8<08040201804020100800020180002010>] [8<2418814242811824>] [8<66999966>] [8<8000000008000000>] [8<70f8d8f870000000>] [8<0814224180402010>] [8] [8<018245aa45820100>] [8<221c224180808041>] [8<88000000>] [8<0855800080550800>] [8<2844004482440044>] [8<0810204080412214>] [8<00>]]]def /Dfill{ transform /maxy exch def /maxx exch def transform /miny exch def /minx exch def minx maxx gt{/minx maxx /maxx minx def def}if miny maxy gt{/miny maxy /maxy miny def def}if Dpatterns Dstipple 1 sub get exch 1 sub get aload pop /stip exch def /stipw exch def /stiph 128 def /imatrix[stipw 0 0 stiph 0 0]def /tmatrix[stipw 0 0 stiph 0 0]def /minx minx cvi stiph idiv stiph mul def /miny miny cvi stipw idiv stipw mul def gsave eoclip 0 setgray miny stiph maxy{ tmatrix exch 5 exch put minx stipw maxx{ tmatrix exch 4 exch put tmatrix setmatrix stipw stiph true imatrix {stip} imagemask }for }for grestore }def /Dp{Dfill Dstroke}def /DP{Dfill currentpoint newpath moveto}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc{ /pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb}ifelse }def /fractm [.65 0 0 .6 0 0] def /fraction{ /fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto }def /oce{grestore ditwid 0 rmoveto}def /dm{ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave 0 .06 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def (uc){gsave currentpoint 400 .009 dm mul add translate 8 -8 scale ucseal oce}def end % an attempt at a PostScript FONT to implement ditroff special chars % this will enable us to % cache the little buggers % generate faster, more compact PS out of psdit % confuse everyone (including myself)! 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0 0 .001 0 0] def /FontBBox [-260 -260 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 2 setlinejoin 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 840 moveto 500 0 rls}def /vr{0 800 moveto 0 -770 rls}def /bv{0 800 moveto 0 -1000 rls}def /br{0 840 moveto 0 -1000 rls}def /ul{0 -140 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{500 360 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{0 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{0 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{0 800 moveto 0 300 -300 300 s4 arcto pop pop 1000 sub 0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def /rk{0 800 moveto 0 300 s2 300 s4 arcto pop pop 1000 sub 0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def /lf{0 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{0 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{0 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{0 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 416 def /lb 416 def /rt 416 def /rb 416 def /lk 416 def /rk 416 def /rc 416 def /lc 416 def /rf 416 def /lf 416 def /bv 416 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 10 xH 0 xS 1 f 8 s 3 f 12 s 1330 1128(A)N 1423(Comparison)X 1953(of)X 5 f 2060(D)X 10 s 2129(ISPLAY)X 12 s 2434(P)X 10 s 2498(OST)X 12 s 2662(S)X 10 s 2726(CRIPT)X 3 f 12 s 9 f (\324)S 3 f 3075(and)X 11 s 3251(Ne)X 3343(WS)X 12 s 9 f 3480(\324)X 3 f 1892 1368(DRAFT)N 2246(of)X 2350(January)X 2715(5,)X 2811(1989)X 2 f 10 s 2177 1560(Samuel)N 2433(J.)X 2509(Lef\257er)X 1 f 2189 1704(1612)N 2369(Oxford)X 2621(St.)X 2107 1800(Berkeley,)N 2437(CA)X 2588(94709)X 2 f 2259 2088(ABSTRACT)N 1 f 11 s 1328 2288(This)N 1523(document)X 1909(compares)X 2285(the)X 5 f 2435(D)X 9 s 2498(ISPLAY)X 11 s 2792(P)X 9 s 2851(OST)X 11 s (S)S 9 s 3058(CRIPT)X 1 f 11 s 3313(system)X 3597(from)X 1128 2392(Adobe)N 1412(with)X 1619(Sun)X 1806(Microsystems')X 2378(Network)X 2734(Extensible)X 3156(Window)X 3508(System)X 1128 2496(\()N 10 s 1157(Ne)X 1241(WS)X 11 s (\).)S 1497(Both)X 1733(systems)X 2076(provide)X 2409(display)X 2728(functionality)X 3244(based)X 3508(on)X 3660(the)X 5 f 1128 2600(P)N 9 s 1187(OST)X 11 s (S)S 9 s 1394(CRIPT)X 1 f 11 s 1652(language.)X 2056(However,)X 2441(while)X 10 s 2677(Ne)X 2761(WS)X 11 s 2923(provides)X 3268(an)X 3393(integrated,)X 1128 2704(window-oriented)N 1762(framework)X 2180(that)X 2347(includes)X 2675(support)X 2973(for)X 3109(overlapping)X 3564(draw-)X 1128 2808(ing)N 1269(surfaces)X 1584(and)X 1739(input)X 1949(events;)X 5 f 2230(D)X 9 s 2293(ISPLAY)X 11 s 2576(P)X 9 s 2635(OST)X 11 s (S)S 9 s 2842(CRIPT)X 1 f 11 s 3086(limits)X 3317(its)X 3429(de\256nition)X 1128 2912(mainly)N 1421(to)X 1537(display)X 1840(capabilities.)X 2335(Nonetheless,)X 2835(both)X 3040(systems)X 3367(incorporate)X 1128 3016(signi\256cant)N 1542(extensions)X 1960(to)X 2075(the)X 5 f 2231(P)X 9 s 2290(OST)X 11 s (S)S 9 s 2497(CRIPT)X 1 f 11 s 2758(language)X 3121(for)X 3268(common)X 3622(pur-)X 1128 3120(poses.)N 1401(These)X 1645(extensions)X 2052(are)X 2194(discussed,)X 2588(and)X 2750(the)X 2893(different)X 3231(approaches)X 3661(are)X 1128 3224(compared.)N 1128 3356(The)N 1287(reader)X 1528(is)X 1609(presumed)X 1973(to)X 2064(be)X 2169(familiar)X 2471(with)X 2650(C,)X 5 f 2756(P)X 9 s 2815(OST)X 11 s (S)S 9 s 3022(CRIPT)X 1 f 11 s (,)S 3282(and)X 10 s 3429(Ne)X 3513(WS)X 11 s (.)S 3 f 864 3660(1.)N 974(Introduction)X 1 f 864 3792(The)N 5 f 1034(P)X 9 s 1093(OST)X 11 s (S)S 9 s 1300(CRIPT)X 1 f 11 s 1546(programming)X 2056(language)X 2404(is)X 2493(used)X 2684(to)X 2783(describe)X 3106(the)X 3244(makeup)X 3553(and)X 3710(presenta-)X 864 3896(tion)N 1034(of)X 1138(2-D)X 1305(images.)X 1630(The)X 1798(most)X 2001(common)X 2341(application)X 2765(of)X 2869(the)X 5 f 3011(P)X 9 s 3070(OST)X 11 s (S)S 9 s 3277(CRIPT)X 1 f 11 s 3524(language)X 3873(is)X 3963(in)X 864 4000(page)N 1066(markup)X 1371(and)X 1534(printing;)X 1875(e.g.)X 2038(as)X 2147(the)X 2291(page)X 2493(description)X 2921(language)X 3275(for)X 3413(the)X 3557(Apple)X 3808(Laser-)X 864 4104(Writer)N 9 f 1094(\324)X 1 f 1194(printer.)X 864 4236(The)N 5 f 1042(P)X 9 s 1101(OST)X 11 s (S)S 9 s 1308(CRIPT)X 1 f 11 s 1562(language,)X 1940(with)X 2135(extensions,)X 2567(is)X 2664(the)X 2810(basis)X 3025(for)X 3166(the)X 3313(Network)X 3659(Extensible)X 864 4340(Window)N 1196(System)X 1485(\()X 10 s 1514(Ne)X 1598(WS)X 11 s 9 f (\324)S 1 f 1796(\),)X 1876(a)X 1944(server-based)X 2416(window)X 2728(system)X 3002(developed)X 3393(by)X 3510(Sun)X 3676(Microsys-)X 864 4444(tems)N 9 s 1031 4416(1)N 11 s 4444(.)Y 10 s 1134(Ne)X 1218(WS)X 11 s 1365(differs)X 1621(from)X 1819(other)X 2027(network-based)X 2571(window)X 2881(systems,)X 3209(in)X 3305(that)X 3465(it)X 3543(allows)X 3801(clients)X 864 4548(to)N 959(transparently)X 1445(extend)X 1705(the)X 1838(services)X 2146(provided)X 2484(by)X 2597(the)X 2730(window)X 3038(server)X 3277(simply)X 3543(by)X 3656(download-)X 864 4652(ing)N 5 f 1006(P)X 9 s 1065(OST)X 11 s (S)S 9 s 1272(CRIPT)X 1 f 11 s 1514(code)X 1707(into)X 1872(the)X 2007(server.)X 2292(This)X 2476(extension)X 2841(mechanism,)X 3292(combined)X 3667(with)X 3851(addi-)X 864 4756(tions)N 1067(to)X 1167(the)X 5 f 1309(P)X 9 s 1368(OST)X 11 s (S)S 9 s 1575(CRIPT)X 1 f 11 s 1822(language)X 2171(to)X 2271(support)X 2566(multiple)X 2893(threads)X 3178(of)X 3282(execution)X 3655(and)X 3812(event-)X 864 4860(based)N 1087(input,)X 1314(make)X 10 s 1526(Ne)X 1610(WS)X 11 s 1754(more)X 1959(a)X 2022(graphics-oriented)X 2662(programming)X 3166(environment)X 3636(than)X 3812(a)X 3875(sim-)X 864 4964(ple)N 1005(window)X 1321(system.)X 1642(In)X 1747(fact,)X 1933(the)X 2073(basic)X 10 s 2284(Ne)X 2368(WS)X 11 s 2520(server)X 2766(provides)X 3101(no)X 3221(support)X 3517(for)X 3651(the)X 3791(typical)X 864 5068(window)N 1206(management)X 1716(functions)X 2103(normally)X 2481(expected)X 2854(of)X 2987(a)X 3086(window)X 3429(system.)X 3778(Instead)X 5 f 864 5172(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1372(code)X 1564(loaded)X 1825(into)X 1989(the)X 2122(server)X 2361(at)X 2450(the)X 2583(time)X 2766(it)X 2841(is)X 2925(started)X 3185(up)X 3298(de\256nes)X 3572(a)X 3636(windowing)X 864 5276(environment)N 1334(in)X 1427(which)X 1666(applications)X 2117(execute.)X 2455(Client)X 2697(applications)X 3149(operate)X 3433(by)X 3546(establishing)X 3993(a)X 864 5380(network)N 1188(connection)X 1611(to)X 1716(the)X 1860(server)X 2110(and)X 2273(communicating)X 5 f 2862(P)X 9 s 2921(OST)X 11 s (S)S 9 s 3128(CRIPT)X 1 f 11 s 3380(code)X 3582(that)X 3751(is)X 3845(to)X 3949(be)X 9 s 10 f 864 5468(hhhhhhhhhhhhhhhh)N 7 s 1 f 944 5548(1)N 9 s 1008 5570(In)N 1086(this)X 1208(document)X 8 s 1508(Ne)X 1572(WS)X 9 s 1686(refers)X 1868(to)X 1942(the)X 2048(1.1)X 2156(release)X 2374(unless)X 2572(explicitly)X 2862(stated.)X 11 s 3461 6152(Lef\257er)N 3988(1)X 2 p %%Page: 2 2 11 s 11 xH 0 xS 1 f 864 464(Introduction)N 864 824(executed.)N 1262(The)X 1440(execution)X 1824(of)X 1939(client)X 2178(supplied)X 5 f 2522(P)X 9 s 2581(OST)X 11 s (S)S 9 s 2788(CRIPT)X 1 f 11 s 3046(code)X 3254(can)X 3418(be)X 3543(used)X 3746(to)X 3857(draw)X 864 928(images)N 1138(on)X 1250(the)X 1382(display,)X 1683(alter)X 1864(the)X 1996(operating)X 2353(environment)X 2823(within)X 3073(the)X 3204(server,)X 3463(or)X 3559(provide)X 3851(auxi-)X 864 1032(liary)N 1057(services)X 1371(such)X 1564(as)X 1669(debugging.)X 10 s 2113(Ne)X 2197(WS)X 11 s 2349(consists)X 2660(of)X 2765(a)X 2836(server)X 3082(program,)X 3434(client)X 3663(library)X 3930(for)X 864 1136(C-based)N 1179(applications,)X 1655(and)X 1809(the)X 3 f 1944(cps)X 1 f 2093(program,)X 2440(a)X 2506(utility)X 2746(used)X 2934(in)X 3029(the)X 3163(development)X 3645(of)X 3744(C-based)X 864 1240(client)N 1083(applications.)X 864 1372(The)N 5 f 1032(D)X 9 s 1095(ISPLAY)X 11 s 1378(P)X 9 s 1437(OST)X 11 s (S)S 9 s 1644(CRIPT)X 1 f 11 s 9 f (\324)S 1 f 1966(system)X 2239(from)X 2438(Adobe)X 2700(provides)X 3031(`)X 3050(`a)X 3147(standard)X 3474(level)X 3675(of)X 3777(display)X 864 1476(functionality)N 1350(that)X 1517(is)X 1610(fully)X 1811(compatible)X 2239(with)X 5 f 2434(P)X 9 s 2493(OST)X 11 s (S)S 9 s 2700(CRIPT)X 1 f 11 s 2951(language)X 3304(printers.')X 3614(')X 9 s 3643 1448(2)N 5 f 11 s 3717 1476(D)N 9 s 3780(ISPLAY)X 11 s 864 1580(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1376(includes)X 1700(a)X 5 f 1772(P)X 9 s 1831(OST)X 11 s (S)S 9 s 2038(CRIPT)X 1 f 11 s 2283(language)X 2630(interpreter,)X 3048(client)X 3274(library)X 3538(for)X 3669(communi-)X 864 1684(cating)N 1105(with)X 1287(the)X 1420(interpreter,)X 1834(and)X 1986(the)X 3 f 2119(pswrap)X 1 f 2422(program)X 2745(that)X 2903(can)X 3051(be)X 3160(used)X 3347(in)X 3442(the)X 3576(development)X 864 1788(of)N 964(C-based)X 1279(client)X 1503(applications.)X 2001(The)X 5 f 2168(P)X 9 s 2227(OST)X 11 s (S)S 9 s 2434(CRIPT)X 1 f 11 s 2677(interpreter)X 3071(that)X 3231(is)X 3317(part)X 3481(of)X 3580(the)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 1892(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1374(system)X 1647(includes)X 1969(extensions)X 2369(to)X 2466(the)X 5 f 2605(P)X 9 s 2664(OST)X 11 s (S)S 9 s 2871(CRIPT)X 1 f 11 s 3115(language)X 3461(that)X 3623(were)X 3822(added)X 864 1996(explicitly)N 1225(for)X 1353(raster-based)X 1803(display)X 2083(devices.)X 2416(These)X 2651(extensions,)X 3070(together)X 3384(with)X 3566(extensions)X 3963(to)X 864 2100(support)N 1172(multiple)X 1512(cooperating)X 1972(users)X 2196(of)X 2313(a)X 2396(display,)X 2717(are)X 2868(designed)X 3225(to)X 3338(be)X 2 f 3465(embedded)X 1 f 3879(in)X 3993(a)X 864 2204(window-oriented)N 1498(environment.)X 2021(That)X 2215(is,)X 2328(the)X 5 f 2471(D)X 9 s 2534(ISPLAY)X 11 s 2821(P)X 9 s 2880(OST)X 11 s (S)S 9 s 3087(CRIPT)X 1 f 11 s 3335(interpreter)X 3734(supports)X 864 2308(only)N 1049(the)X 1185(imaging)X 1503(requirements)X 1991(of)X 2092(a)X 2159(window)X 2470(system;)X 2768(the)X 2905(other)X 3115(facilities)X 3449(typically)X 3788(associ-)X 864 2412(ated)N 1039(with)X 1224(a)X 1291(window)X 1602(system)X 1875(\(input)X 2113(handling,)X 2471(communication)X 3048(services,)X 3380(overlapping)X 3828(draw-)X 864 2516(ing)N 1004(surfaces,)X 1340(etc.\))X 1521(are)X 1656(explicitly)X 2019(not)X 2160(de\256ned)X 2447(within)X 5 f 2704(D)X 9 s 2767(ISPLAY)X 11 s 3050(P)X 9 s 3109(OST)X 11 s (S)S 9 s 3316(CRIPT)X 1 f 11 s (.)S 3604(This)X 3789(is)X 3876(con-)X 864 2620(trasted)N 1136(with)X 10 s 1328(Ne)X 1412(WS)X 11 s 1569(which)X 1821(contains)X 2152(extensions)X 2561(that)X 2731(make)X 2959(it)X 3046(a)X 3122(fully-functional)X 3713(and)X 3876(self-)X 864 2724(suf\256cient)N 1222(window)X 1535(system.)X 1854(Because)X 5 f 2180(D)X 9 s 2243(ISPLAY)X 11 s 2528(P)X 9 s 2587(OST)X 11 s (S)S 9 s 2794(CRIPT)X 1 f 11 s 3040(limits)X 3274(its)X 3389(de\256nition,)X 3781(a)X 3851(com-)X 864 2828(parison)N 1148(of)X 1246(it)X 1321(with)X 10 s 1501(Ne)X 1585(WS)X 11 s 1730(is)X 1814(necessarily)X 2230(limited)X 2507(to)X 2601(those)X 2812(areas)X 3017(where)X 3256(they)X 3432(overlap.)X 3764(A)X 3851(com-)X 864 2932(parison)N 1153(of)X 1256(the)X 1394(window-system)X 1981(related)X 2251(extensions)X 2653(present)X 2937(in)X 10 s 3034(Ne)X 3118(WS)X 11 s 3268(must)X 3470(be)X 3583(made)X 3805(with)X 3993(a)X 864 3036(system)N 1150(derived)X 1455(from)X 5 f 1670(D)X 9 s 1733(ISPLAY)X 11 s 2029(P)X 9 s 2088(OST)X 11 s (S)S 9 s 2295(CRIPT)X 1 f 11 s 2552(\(such)X 2783(as)X 2897(the)X 3045(system)X 3330(being)X 3566(developed)X 3968(at)X 864 3140(NeXT\).)N 864 3272(The)N 1024(remainder)X 1404(of)X 1500(this)X 1651(document)X 2022(describes)X 2373(the)X 2505(important)X 2873(concepts)X 3205(and)X 3356(facilities)X 3685(present)X 3963(in)X 5 f 864 3376(D)N 9 s 927(ISPLAY)X 11 s 1218(P)X 9 s 1277(OST)X 11 s (S)S 9 s 1484(CRIPT)X 1 f 11 s (,)S 1758(and)X 1921(compares)X 2294(them)X 2507(with)X 2700(the)X 2843(similar)X 3124(facilities)X 3464(found)X 3704(in)X 10 s 3806(Ne)X 3890(WS)X 11 s (.)S 864 3480(Section)N 1151(2)X 1217(describes)X 1566(the)X 5 f 1699(P)X 9 s 1758(OST)X 11 s (S)S 9 s 1965(CRIPT)X 1 f 11 s 2203(extensions)X 2597(present)X 2873(in)X 5 f 2968(D)X 9 s 3031(ISPLAY)X 11 s 3309(P)X 9 s 3368(OST)X 11 s (S)S 9 s 3575(CRIPT)X 1 f 11 s (,)S 3836(while)X 864 3584(section)N 1138(3)X 1206(gives)X 1416(an)X 1523(overview)X 1874(of)X 1971(the)X 2103(tools)X 2299(provided)X 2636(for)X 2762(programming)X 3266(in)X 3359(C.)X 3486(Finally,)X 3782(section)X 864 3688(4)N 944(summarizes)X 1401(our)X 1555(results)X 1822(and)X 1986(suggests)X 2321(areas)X 2538(where)X 10 s 2787(Ne)X 2871(WS)X 11 s 3028(and)X 5 f 3195(D)X 9 s 3258(ISPLAY)X 11 s 3550(P)X 9 s 3609(OST)X 11 s (S)S 9 s 3816(CRIPT)X 1 f 11 s 864 3792(would)N 1106(bene\256t)X 1368(from)X 1561(a)X 1622(consolidation)X 2120(of)X 2215(facilities.)X 864 3924(In)N 962(this)X 1115(document,)X 1510(program)X 1833(names)X 2083(appear)X 3 f 2343(emboldened)X 1 f 2798(,)X 2846(C)X 2931(code)X 3123(appears)X 3417(in)X 3512(a)X 7 f 3608(constant)X 864 4028(width)N 1188(font)X 1 f 1400(,)X 1450(and)X 5 f 1608(P)X 9 s 1667(OST)X 11 s (S)S 9 s 1874(CRIPT)X 1 f 11 s 2118(code)X 2312(appears)X 2608(in)X 2705(a)X 5 f 2775(Helvetica)X 3167(font)X 1 f 3315(,)X 3365(or)X 3466(when)X 3683(in-line,)X 3963(in)X 6 f 10 s 864 4132(Helvetica)N 1235(Bold)X 1 f 11 s 1413(.)X 3 f 864 4340(2.)N 5 f 980(P)X 9 s 1039(OST)X 11 s (S)S 9 s 1246(CRIPT)X 3 f 11 s 1484(Language)X 1878(Extensions)X 1 f 864 4472(The)N 1030(extensions)X 1431(to)X 1530(the)X 5 f 1671(P)X 9 s 1730(OST)X 11 s (S)S 9 s 1937(CRIPT)X 1 f 11 s 2183(language)X 2531(that)X 2694(have)X 2890(been)X 3086(de\256ned)X 3375(to)X 3474(create)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 4576(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1377(are)X 1515(very)X 1702(similar)X 1978(to)X 2077(the)X 2215(extensions)X 2617(made)X 2838(to)X 2937(create)X 10 s 3175(Ne)X 3259(WS)X 11 s (.)S 3453(In)X 3556(particular)X 3924(the)X 864 4680(following)N 1229(additions)X 1575(exist)X 1764(in)X 1855(each,)X 2060(albeit)X 2279(in)X 2370(different)X 2695(forms:)X 10 f 864 4812(g)N 1 f 996(support)X 1282(for)X 1406(multiple)X 1724(threads)X 2000(of)X 2095(execution)X 2460(in)X 2551(the)X 5 f 2684(P)X 9 s 2743(OST)X 11 s (S)S 9 s 2950(CRIPT)X 1 f 11 s 3188(interpreter,)X 10 f 864 4944(g)N 1 f 996(synchronization)X 1581(mechanisms)X 2039(for)X 2163(threads)X 2439(running)X 2735(in)X 2826(the)X 2956(interpreter,)X 10 f 864 5076(g)N 1 f 996(extensions)X 1390(to)X 1481(the)X 1611(virtual)X 1864(memory)X 2180(model)X 2423(to)X 2514(support)X 2800(garbage)X 3100(collection,)X 10 f 864 5208(g)N 1 f 996(an)X 1101(alternative)X 1496(binary)X 1743(encoding)X 2088(for)X 2212(the)X 2342(input)X 2546(stream,)X 9 s 10 f 864 5322(hhhhhhhhhhhhhhhh)N 7 s 1 f 944 5402(2)N 9 s 1008 5424(``The)N 5 f 1201(D)X 7 s (ISPLAY)S 9 s 1481(P)X 7 s (OST)S 9 s 1644(S)X 7 s (CRIPT)S 1 f 9 s 1890(System)X 2133(Reference,)X 2474(Alpha)X 2681(Version.'')X 3024(Adobe)X 3247(Systems)X 3518(Inc.)X 3678(October)X 3942(10,)X 864 5512(1988.)N 11 s 864 6152(2)N 5 f 1196(D)X 9 s 1259(ISPLAY)X 1 f 11 s 5 f 1533(P)X 9 s 1592(OST)X 11 s (S)S 9 s 1799(CRIPT)X 1 f 11 s 2037(and)X 10 s 2186(Ne)X 2270(WS)X 3 p %%Page: 3 3 10 s 10 xH 0 xS 1 f 11 s 5 f 2772 464(P)N 9 s 2831(OST)X 11 s (S)S 9 s 3038(CRIPT)X 1 f 11 s 3276(Language)X 3645(Extensions)X 10 f 864 824(g)N 1 f 996(an)X 1101(additional)X 1477(clipping)X 1789(facility)X 2062(above)X 2294(the)X 2 f 2424(clip)X 2579(path)X 1 f 2736(,)X 10 f 864 956(g)N 1 f 996(support)X 1282(for)X 1406(bitmap)X 1674(fonts,)X 1894(and)X 10 f 864 1088(g)N 1 f 996(the)X 1126(ability)X 1375(to)X 1466(manage)X 1762(graphics)X 2082(contexts)X 2398(as)X 2493(objects.)X 864 1220(In)N 962(addition,)X 1300(Adobe)X 1560(has)X 1703(taken)X 1920(the)X 2054(opportunity)X 2492(to)X 2587(add)X 2740(some)X 2 f 2952(optimization)X 1 f 3434(operators.)X 3831(Some)X 864 1324(of)N 978(these)X 1200(operators)X 1568(can)X 1731(be)X 1854(easily)X 2100(emulated)X 2464(in)X 2573(old)X 2726(interpreters,)X 3189(while)X 3425(others)X 3680(are)X 3827(rather)X 864 1428(dif\256cult)N 1202(to)X 1329(completely)X 1780(emulate.)X 2162(The)X 2357 0.2954(optimization)AX 2863(operators)X 3248(fall)X 3424(into)X 3620(three)X 3855(main)X 864 1532(categories:)N 10 f 864 1664(g)N 1 f 996(rectangle)X 1341(operators,)X 10 f 864 1796(g)N 1 f 996(user)X 1164(paths,)X 1394(and)X 10 f 864 1928(g)N 1 f 996(additional)X 1372(text)X 1527(support.)X 864 2060(It)N 944(should)X 1205(be)X 1314(noted)X 1536(that)X 10 s 1693(Ne)X 1777(WS)X 11 s 1923(also)X 2091(includes)X 2412(extensions)X 2811(to)X 2907(the)X 5 f 3045(P)X 9 s 3104(OST)X 11 s (S)S 9 s 3311(CRIPT)X 1 f 11 s 3554(language)X 3899(that)X 864 2164(are)N 997(not)X 1136(found)X 1366(in)X 1460(printers.)X 1798(Most)X 2004(of)X 2102(these)X 2308(extensions,)X 2727(however,)X 3076(were)X 3271(not)X 3409(added)X 3644(for)X 3771(optimi-)X 864 2268(zation)N 1105(purposes,)X 1464(but)X 1602(rather)X 1833(to)X 1928(support)X 2218(new)X 2390(facilities)X 2721(such)X 2908(as)X 3007(canvases,)X 3367(processes,)X 3751(or)X 3850(input)X 864 2372(handling.)N 5 f 864 2504(D)N 9 s 927(ISPLAY)X 11 s 1208(P)X 9 s 1267(OST)X 11 s (S)S 9 s 1474(CRIPT)X 1 f 11 s 1716(also)X 1884(incorporates)X 2345(several)X 2620(additions)X 2971(to)X 3067(the)X 5 f 3205(P)X 9 s 3264(OST)X 11 s (S)S 9 s 3471(CRIPT)X 1 f 11 s 3714(language)X 864 2608(that)N 1028(have)X 1225(been)X 1421(made)X 1642(in)X 1741(the)X 1879(past)X 2051(few)X 2212(years,)X 2449(but)X 2592(which)X 2837(have)X 3033(not)X 3176(been)X 3372(widely)X 3642(publicized.)X 864 2712(These)N 1096(facilities)X 1423(are)X 1552(intended)X 1878(to)X 1969(be)X 2074(a)X 2135(standard)X 2455(part)X 2614(of)X 2709(all)X 5 f 2823(P)X 9 s 2882(OST)X 11 s (S)S 9 s 3089(CRIPT)X 1 f 11 s 3327(interpreters:)X 10 f 864 2844(g)N 1 f 996(packed)X 1267(arrays,)X 10 f 864 2976(g)N 1 f 996 0.3187(immediately)AX 1461(evaluated)X 1821(names,)X 2090(and)X 10 f 864 3108(g)N 1 f 996(better)X 1219(font)X 1383(cache)X 1605(control.)X 864 3240(Finally,)N 1185(somewhere)X 1633(between)X 1974(these)X 2203(standard)X 2549(features)X 2875(and)X 3050(the)X 3206(de\256nition)X 3593(of)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 3344(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s (,)S 1390(Adobe)X 1646(also)X 1810(added)X 2042(in)X 2133(support)X 2419(for)X 2543(color)X 2746(printers.)X 3 f 864 3552(2.1.)N 1040(Binary)X 1322(Stream)X 1617(Encoding)X 1 f 864 3684(The)N 1025(original)X 5 f 1327(P)X 9 s 1386(OST)X 11 s (S)S 9 s 1593(CRIPT)X 1 f 11 s 1833(de\256nition)X 2196(de\256nes)X 2469(only)X 2650(an)X 10 s 2755(ASCII)X 11 s 2989(encoding)X 3337(of)X 3435(the)X 3568(input)X 3775(stream.)X 864 3788(Numbers)N 1233(are)X 1387(presented)X 1771(as)X 10 s 1889(ASCII)X 11 s 2145(strings)X 2427(that)X 2607(the)X 2761(interpreter)X 3174(converts)X 3518(to)X 3633(an)X 3762(internal)X 864 3892(machine)N 1185(representation.)X 10 s 864 4024(Ne)N 948(WS)X 11 s 1092(extended)X 1434(the)X 10 s 1564(ASCII)X 11 s 1797(encoding)X 2144(to)X 2237(support)X 2525(a)X 2588(more)X 2793(compact)X 3116(encoding)X 3464(based)X 3689(on)X 2 f 3802(binary)X 864 4128(tokens)N 1 f 1089(.)X 1164(With)X 1372(this)X 1531(scheme,)X 1848(whenever)X 2220(a)X 2290(byte)X 2473(with)X 2661(the)X 2799(top-most)X 3143(bit)X 3267(set)X 3395(is)X 3484(encountered)X 3944(by)X 864 4232(the)N 5 f 999(P)X 9 s 1058(OST)X 11 s (S)S 9 s 1265(CRIPT)X 1 f 11 s 1505(scanner,)X 1819(a)X 1882(token)X 2102(is)X 2185(scanned)X 2492(by)X 2604(interpreting)X 3040(some)X 3250(number)X 3543(of)X 3641(subsequent)X 864 4336(bytes)N 1085(according)X 1467(to)X 1571(a)X 1645(binary)X 1905(encoding)X 2262(scheme.)X 2604(The)X 2775(encoding)X 3132(scheme)X 3430(directly)X 3734(supports)X 864 4440(binary)N 1126(transmission)X 1610(of)X 1721(numbers)X 2062(\(integer,)X 2396(\256xed)X 2610(point,)X 2852(and)X 3017(single)X 3266(and)X 3431(double)X 3709(precision)X 864 4544(\257oating)N 1162(point\))X 1401(and)X 1556(strings.)X 1862(In)X 1962(addition,)X 5 f 2304(P)X 9 s 2363(OST)X 11 s (S)S 9 s 2570(CRIPT)X 1 f 11 s 2813(objects)X 3090(may)X 3269(be)X 3379(placed)X 3636(in)X 3732(a)X 2 f 3798(system)X 864 4648(object)N 1109(table)X 1 f 1329(or)X 1431(in)X 1529(a)X 1597(per-connection)X 2 f 2155(user)X 2336(object)X 2582(table)X 1 f 2803(and)X 2960(subsequently)X 3450(referenced)X 3850(in)X 3949(an)X 864 4752(ef\256cient)N 1175(manner.)X 5 f 864 4884(D)N 9 s 927(ISPLAY)X 11 s 1205(P)X 9 s 1264(OST)X 11 s (S)S 9 s 1471(CRIPT)X 1 f 11 s 1710(de\256nes)X 1983(two)X 2139(encoding)X 2486(forms,)X 2737(a)X 2 f 2800(tokenized)X 1 f 3171(form)X 3366(that)X 3523(is)X 3606(very)X 3786(similar)X 864 4988(to)N 962(the)X 1099(encoding)X 1451(used)X 1641(by)X 10 s 1755(Ne)X 1839(WS)X 11 s (,)S 2009(and)X 2164(a)X 2231(less)X 2391(space)X 2614(ef\256cient)X 2 f 2931(binary)X 3189(object)X 3433(sequence)X 1 f 3797(format)X 864 5092(that)N 1024(is)X 1110(designed)X 1450(to)X 1546(be)X 1656(very)X 1839(ef\256cient)X 2155(to)X 2252(interpret.)X 2623(\(The)X 2817(latter)X 3027(form)X 3226(is)X 3313(used)X 3502(by)X 3618(the)X 3 f 3754(pswrap)X 1 f 864 5196(program)N 1219(to)X 1345(encode)X 1651(executable)X 2085(arrays\320see)X 2556(Section)X 2878(3.\))X 3052(Like)X 10 s 3268(Ne)X 3352(WS)X 11 s (,)S 3550(the)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 5300(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1368(encoding)X 1713(supports)X 2033(the)X 2163(mixing)X 2436(of)X 10 s 2529(ASCII)X 11 s 2760(and)X 2909(binary)X 3156(encoded)X 3471(data.)X 864 5432(The)N 1023(important)X 1389(differences)X 1801(between)X 2116(the)X 2246(two)X 2400(encoding)X 2745(schemes)X 3065(are:)X 10 f 864 5564(g)N 5 f 996(D)X 9 s 1059(ISPLAY)X 11 s 1339(P)X 9 s 1398(OST)X 11 s (S)S 9 s 1605(CRIPT)X 1 f 11 s 1846(supports)X 2169(both)X 2351(little-)X 2569(and)X 2722(big-endian)X 3125(byte)X 3303(orderings)X 3661(in)X 3756(a)X 3821(single)X 996 5668(stream)N 1253(while)X 10 s 1469(Ne)X 1553(WS)X 11 s 1695(ordains)X 1976(a)X 2037(single)X 2270(\(big-endian\))X 2727(byte)X 2901(ordering,)X 3461 6152(Lef\257er)N 3988(3)X 4 p %%Page: 4 4 11 s 11 xH 0 xS 1 f 5 f 864 464(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1368(Language)X 1737(Extensions)X 10 f 864 824(g)N 5 f 996(D)X 9 s 1059(ISPLAY)X 11 s 1347(P)X 9 s 1406(OST)X 11 s (S)S 9 s 1613(CRIPT)X 1 f 11 s 1862(supports)X 2193(both)X 10 s 2381(IEEE)X 11 s 2588(and)X 2 f 2749(native)X 1 f 3013(\257oating)X 3317(point)X 3533(formats)X 3836(while)X 10 s 996 928(Ne)N 1080(WS)X 11 s 1222(requires)X 1527(that)X 1682(all)X 1793(\257oating)X 2085(point)X 2289(data)X 2458(be)X 2563(transmitted)X 2983(in)X 10 s 3072(IEEE)X 11 s 3268(format,)X 10 f 864 1060(g)N 5 f 996(D)X 9 s 1059(ISPLAY)X 11 s 1361(P)X 9 s 1420(OST)X 11 s (S)S 9 s 1627(CRIPT)X 1 f 11 s 1890(supports)X 2235(a)X 2321(compact)X 2668(encoding)X 3039(of)X 3160(homogeneous)X 3697(arrays)X 3959(of)X 996 1164(numbers,)N 10 f 864 1296(g)N 5 f 996(D)X 9 s 1059(ISPLAY)X 11 s 1348(P)X 9 s 1407(OST)X 11 s (S)S 9 s 1614(CRIPT)X 1 f 11 s 1864(encodes)X 2181(the)X 2323 0.1875(literal/executable)AX 2966(attribute)X 3296(of)X 3404(an)X 3522(object)X 3773(fetched)X 996 1400(from)N 1189(a)X 1250(system)X 1517(or)X 1612(user)X 1780(name)X 1993(table)X 2187(in)X 2278(an)X 2383(encoded)X 2698(token,)X 10 f 864 1532(g)N 5 f 996(D)X 9 s 1059(ISPLAY)X 11 s 1336(P)X 9 s 1395(OST)X 11 s (S)S 9 s 1602(CRIPT)X 1 f 11 s 1840(does)X 2 f 2023(not)X 1 f 2172(support)X 2458(double)X 2720(precision)X 3065(\257oating)X 3357(point)X 3561(values,)X 3830(and)X 10 f 864 1664(g)N 5 f 996(D)X 9 s 1059(ISPLAY)X 11 s 1336(P)X 9 s 1395(OST)X 11 s (S)S 9 s 1602(CRIPT)X 1 f 11 s 1840(limits)X 2065(encoded)X 2380(strings)X 2637(to)X 2728(at)X 2814(most)X 3008(64)X 3118(kilobytes.)X 864 1796(Having)N 1145(the)X 1275(server)X 1511(handle)X 1768(various)X 2049(byte)X 2223(orderings)X 2577(and)X 2726(\257oating)X 3018(point)X 3222(formats)X 3513(shifts)X 3726(a)X 3788(burden)X 864 1900(from)N 1065(the)X 1203(client)X 1430(to)X 1529(the)X 1667(server.)X 1955(That)X 2146(is,)X 2256(clients)X 2516(can)X 2667(usually)X 2951(encode)X 3229(data)X 3405(using)X 3625(their)X 3816(native)X 864 2004(machine)N 1191(formats)X 1488(and)X 1643(expect)X 1901(the)X 2037(server)X 2279(to)X 2376(handle)X 2639(the)X 2775(decoding.)X 3170(This)X 3355(is)X 3442(preferable)X 3826(to)X 3924(the)X 864 2108(scheme)N 1152(used)X 1337(by)X 10 s 1447(Ne)X 1531(WS)X 11 s (,)S 1697(particularly)X 2128(when)X 2342(a)X 2405(machine)X 2728(does)X 2913(not)X 3050(support)X 10 s 3336(IEEE)X 11 s 3534(\257oating)X 3828(point,)X 864 2212(or)N 960(when)X 1173(the)X 1304(client)X 1524(and)X 1674(server)X 1911(machines)X 2267(use)X 2407(a)X 2469(little-endian)X 2920(byte)X 3095(ordering.)X 3461(It)X 3539(would)X 3783(be)X 3890(best)X 864 2316(to)N 961(use)X 1106(a)X 1173(onetime)X 1486(negotiation)X 1911(phase)X 2138(to)X 2234(de\256ne)X 2476(the)X 2611(byte)X 2790(ordering)X 3115(and)X 3269(\257oating)X 3566(point)X 3775(format,)X 864 2420(but)N 1022(this)X 1195(would)X 1460(disallow)X 1804(the)X 1957(transparent)X 2393(concatenation)X 2929(of)X 3048(data)X 3241(generated)X 3629(on)X 3763(varying)X 864 2524(machine)N 1185(architectures.)X 864 2656(Encoding)N 1235(the)X 1376 0.1875(literal/executable)AX 2018(attribute)X 2346(in)X 2448(an)X 2564(encoded)X 2890(token)X 3120(permits)X 3419(an)X 3536(application)X 3963(to)X 864 2760(reference)N 1220(an)X 1333(entry)X 1544(in)X 1643(a)X 1712(name)X 1933(table)X 2135(as)X 2237(either)X 2467(an)X 2579(executable)X 2985(name)X 3205(or)X 3307(a)X 3375(literal)X 3611(name.)X 3875(This)X 864 2864(avoids)N 1124(having)X 1394(to)X 1493(de\256ne)X 1738(two)X 1900(entries)X 2165(in)X 2264(a)X 2333(table,)X 2558(one)X 2716(for)X 2849(the)X 2988(executable)X 3396(form)X 3598(of)X 3702(the)X 3841(name)X 864 2968(and)N 1013(one)X 1162(for)X 1286(the)X 1416(literal)X 1645(form.)X 864 3100(The)N 1024(lack)X 1194(of)X 1290(a)X 1352(double)X 1615(precision)X 1962(\257oating)X 2256(point)X 2462(encoding)X 2809(in)X 5 f 2905(D)X 9 s 2968(ISPLAY)X 11 s 3247(P)X 9 s 3306(OST)X 11 s (S)S 9 s 3513(CRIPT)X 1 f 11 s 3753(restricts)X 864 3204(the)N 1003(encoding's)X 1420 0.2656(applicability)AX 1894(to)X 1994(systems)X 2304(that)X 2467(want)X 2668(to)X 2767(add)X 2924(extensions,)X 3348(such)X 3539(as)X 3642(3-D)X 3808(opera-)X 864 3308(tors,)N 1040(that)X 1195(are)X 1324(embedded)X 1708(in)X 1799(the)X 1929(same)X 2132(stream.)X 864 3440(In)N 968(both)X 5 f 1159(D)X 9 s 1222(ISPLAY)X 11 s 1508(P)X 9 s 1567(OST)X 11 s (S)S 9 s 1774(CRIPT)X 1 f 11 s 2022(and)X 10 s 2179(Ne)X 2263(WS)X 11 s (,)S 2437(the)X 2577(encoding)X 2932(scheme)X 3228(can)X 3382(also)X 3556(be)X 3671(applied)X 3963(to)X 864 3544(output)N 1129(from)X 1339(the)X 1486(interpreter)X 1892(to)X 2000(clients.)X 2314(In)X 5 f 2429(D)X 9 s 2492(ISPLAY)X 11 s 2786(P)X 9 s 2845(OST)X 11 s (S)S 9 s 3052(CRIPT)X 1 f 11 s (,)S 3329(two)X 3499(new)X 3683(operators,)X 6 f 10 s 864 3648(printobject)N 1 f 11 s 1313(and)X 6 f 10 s 1476(writeobject)X 1 f 11 s 1897(,)X 1955(write)X 2172(an)X 2291(object's)X 2606(value)X 2834(to)X 2940(a)X 3016(\256le.)X 3210(An)X 3354(accompanying)X 2 f 3905(tag)X 1 f 864 3752(\(supplied)N 1217(as)X 1315(an)X 1423(argument\))X 1810(precedes)X 2142(the)X 2275(data)X 2447(to)X 2541(identify)X 2841(the)X 2973(intended)X 3301(recipient)X 3634(of)X 3731(the)X 3863(data.)X 864 3856(Several)N 1150(tags)X 1314(are)X 1443(reserved)X 1762(for)X 1886(transmitting)X 2336(errors)X 2562(from)X 2755(the)X 2885(interpreter)X 3274(to)X 3366(a)X 3428(client.)X 10 s 3688(Ne)X 3772(WS)X 11 s 3915(has)X 864 3960(similar)N 1143(facilities)X 1481(in)X 1582(the)X 6 f 10 s 1722(tagprint)X 1 f 11 s 2052(and)X 6 f 10 s 2211(typedprint)X 1 f 11 s 2634(operators,)X 3015(although)X 3356(errors)X 3592(are)X 3731(not)X 3876(han-)X 864 4064(dled)N 1038(for)X 1162(a)X 1223(client.)X 3 f 864 4272(2.2.)N 1040(Encoded)X 1390(Number)X 1724(Strings)X 5 f 864 4404(D)N 9 s 927(ISPLAY)X 11 s 1219(P)X 9 s 1278(OST)X 11 s (S)S 9 s 1485(CRIPT)X 1 f 11 s 1738(includes)X 2069(the)X 2214(notion)X 2477(of)X 2587(an)X 2 f 2707(encoded)X 3037(number)X 3342(string)X 1 f 3548(.)X 3629(This)X 3823(is)X 3919(not)X 864 4508(strictly)N 1136(related)X 1402(to)X 1497(the)X 1631(binary)X 1882(encoding)X 2230(of)X 2328(the)X 2461(input)X 2668(stream,)X 2950(although)X 3284(its)X 3393(addition)X 3708(is)X 3792(clearly)X 864 4612(based)N 1091(on)X 1206(similar)X 1479(requirements.)X 2011(An)X 2146(encoded)X 2467(number)X 2764(string)X 2993(is)X 3080(a)X 3147(compact)X 3474(way)X 3648(of)X 3749(specify-)X 864 4716(ing)N 1020(a)X 1102(homogeneous)X 1633(array)X 1855(of)X 1970(numbers;)X 2340(e.g.)X 2509(the)X 2659(following)X 3044(are)X 3193(equivalent)X 3603(in)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 4820(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s (:)S 5 f 1304 4965([)N 0(Helvetica-Oblique)xf 0 f 10 s 1343(ASCII)X 11 s 1551(-encoded)X 1943(numbers)X 5 f 2299(])X 2349(rect\256ll)X 0 f 1304 5069(homogeneous)N 1887(number)X 2210(array)X 5 f 2435(rect\256ll)X 0 f 1304 5173(string)N 5 f 1544(rect\256ll)X 1880(%)X 1983(encoded)X 2346(number)X 2669(string)X 1 f 864 5318(The)N 1024(representation)X 1546(is)X 1628(both)X 1808(syntactically)X 2278(compact)X 2600(and)X 2750(compact)X 3072(in)X 3164(terms)X 3384(of)X 3481(space.)X 3744(Further-)X 864 5422(more,)N 1098(because)X 1407(its)X 1522(contents)X 1846(do)X 1964(not)X 2107(need)X 2303(to)X 2402(be)X 2515(processed)X 2891(by)X 3009(the)X 5 f 3150(P)X 9 s 3209(OST)X 11 s (S)S 9 s 3416(CRIPT)X 1 f 11 s 3662(scanner,)X 3982(it)X 864 5526(can)N 1010(be)X 1117(processed)X 1487(very)X 1667(ef\256ciently.)X 2093(The)X 2254(down)X 2473(side)X 2639(is)X 2722(that)X 2879(it)X 2953(is)X 3036(supported)X 3407(by)X 3519(only)X 3700(a)X 3763(handful)X 864 5630(of)N 998(operators)X 1385(\(all)X 1563(added)X 1833(in)X 5 f 1965(D)X 9 s 2028(ISPLAY)X 11 s 2343(P)X 9 s 2402(OST)X 11 s (S)S 9 s 2609(CRIPT)X 1 f 11 s (\):)S 6 f 10 s 2939(rect\256ll)X 1 f 11 s 3178(,)X 6 f 10 s 3260(rectstroke)X 1 f 11 s 3645(,)X 6 f 10 s 3727(rectclip)X 1 f 11 s 4010(,)X 864 6152(4)N 5 f 1196(D)X 9 s 1259(ISPLAY)X 1 f 11 s 5 f 1533(P)X 9 s 1592(OST)X 11 s (S)S 9 s 1799(CRIPT)X 1 f 11 s 2037(and)X 10 s 2186(Ne)X 2270(WS)X 5 p %%Page: 5 5 0(Helvetica-Oblique)xf 0 f 10 s 10 xH 0 xS 0 f 11 s 1 f 3142 464(Encoded)N 3472(Number)X 3782(Strings)X 6 f 10 s 864 824 -0.2840(rectviewclip)AN 1 f 11 s 1319(,)X 6 f 10 s 1367(xshow)X 1 f 11 s 1615(,)X 6 f 10 s 1663(yshow)X 1 f 11 s 1911(,)X 1959(and)X 6 f 10 s 2112(xyshow)X 1 f 11 s 2404(.)X 2475(In)X 2575(addition,)X 2914(encoded)X 3234(user)X 3407(paths)X 3620(\(see)X 3788(below\))X 864 928(represent)N 1208(their)X 1392(numeric)X 1703(operands)X 2042(as)X 2137(encoded)X 2452(strings.)X 3 f 864 1136(2.3.)N 1040(Multiplexing)X 1548(Execution)X 1 f 864 1268(The)N 1029(original)X 5 f 1335(P)X 9 s 1394(OST)X 11 s (S)S 9 s 1601(CRIPT)X 1 f 11 s 1845(de\256nition)X 2213(speci\256es)X 2545(that)X 2707(the)X 2844(interpreter)X 3240(supports)X 3567(only)X 3753(a)X 3821(single)X 864 1372(execution)N 1234(context)X 1521(that)X 1681(is)X 1766(scheduled)X 2144(to)X 2239(users)X 2445(in)X 2540(a)X 2605(serial)X 2822(fashion.)X 3151(Associated)X 3563(with)X 3746(this)X 3900(sin-)X 864 1476(gle)N 994(context)X 1276(is)X 1357(a)X 1418(global)X 1661(uniform)X 1967(virtual)X 2220(memory)X 2536(environment)X 3004(in)X 3095(which)X 3332(objects)X 3604(are)X 3733(stored.)X 5 f 864 1608(D)N 9 s 927(ISPLAY)X 11 s 1238(P)X 9 s 1297(OST)X 11 s (S)S 9 s 1504(CRIPT)X 1 f 11 s 1776(and)X 10 s 1957(Ne)X 2041(WS)X 11 s 2217(support)X 2537(multiple)X 2890(execution)X 3290(contexts)X 3641(within)X 3924(the)X 5 f 864 1712(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1376(interpreter.)X 10 s 1813(Ne)X 1897(WS)X 11 s 2047(calls)X 2239(such)X 2430(an)X 2543(object)X 2789(a)X 2 f 2858 0.3062(lightweight)AX 3287(process)X 1 f 3598(\(or)X 3729(just)X 3886(pro-)X 864 1816(cess\),)N 1095(while)X 5 f 1328(D)X 9 s 1391(ISPLAY)X 11 s 1680(P)X 9 s 1739(OST)X 11 s (S)S 9 s 1946(CRIPT)X 1 f 11 s 2196(identi\256es)X 2554(this)X 2716(object)X 2966(as)X 3073(a)X 2 f 3146(context)X 1 f 3401(.)X 3479(Each)X 3689(execution)X 864 1920(context)N 1146(has:)X 10 f 864 2052(g)N 1 f 996(an)X 1101(independent)X 1554(thread)X 1796(of)X 1891(control,)X 10 f 864 2184(g)N 1 f 996(a)X 1057(set)X 1177(of)X 1272(stacks:)X 1534(operand,)X 1861(dictionary,)X 2263(execution,)X 2650(and)X 2799(graphics)X 3119(state)X 3303(stacks;)X 10 f 864 2316(g)N 1 f 996(standard)X 1316(input,)X 1542(output,)X 1812(and)X 1961(error)X 2153(\256les,)X 2344(and)X 10 f 864 2448(g)N 1 f 996(miscellaneous)X 1518(state)X 1702(variables.)X 864 2580(In)N 10 s 959(Ne)X 1043(WS)X 11 s 1187(all)X 1300(contexts)X 1618(share)X 1828(a)X 1892(single)X 2128(virtual)X 2384(memory)X 2703(while)X 2924(in)X 5 f 3021(D)X 9 s 3084(ISPLAY)X 11 s 3364(P)X 9 s 3423(OST)X 11 s (S)S 9 s 3630(CRIPT)X 1 f 11 s 3871(each)X 864 2684(context)N 1151(has)X 1295(a)X 1361(private)X 1633(memory)X 1954(and)X 2108(access)X 2359(to)X 2455(a)X 2521(global)X 2769(shared)X 3025(memory)X 3346(\(see)X 3513(below\).)X 3827(Addi-)X 864 2788(tionally,)N 10 s 1177(Ne)X 1261(WS)X 11 s 1403(organizes)X 1762(process/contexts)X 2367(into)X 2528(groups)X 2790(for)X 2915(the)X 3046(purpose)X 3347(of)X 3443(process)X 3729(manage-)X 864 2892(ment.)N 5 f 1121(D)X 9 s 1184(ISPLAY)X 11 s 1469(P)X 9 s 1528(OST)X 11 s (S)S 9 s 1735(CRIPT)X 1 f 11 s 1981(has)X 2128(no)X 2246(similar)X 2522(notion.)X 2822(Table)X 3053(1)X 3126(shows)X 3374(the)X 3511(set)X 3638(of)X 3740(process-)X 864 2996(related)N 1127(operators)X 1477(de\256ned)X 1760(in)X 5 f 1856(D)X 9 s 1919(ISPLAY)X 11 s 2198(P)X 9 s 2257(OST)X 11 s (S)S 9 s 2464(CRIPT)X 1 f 11 s 2704(and)X 10 s 2853(Ne)X 2937(WS)X 11 s 3081(\(we)X 3236(use)X 3377(the)X 3509(term)X 2 f 3695(thread)X 1 f 3963(to)X 864 3100(signify)N 1131(either)X 1354(a)X 1415(context)X 1697(or)X 1792(process\).)X 10 f 942 3168(i)N 961(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X 10 s 1 f 986 3272(DPS)N 1677(Ne)X 1761(WS)X 11 s 2503(Description)X 10 f 942 3280(i)N 961(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X 942 3296(i)N 961(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X 5 f 986 3392(fork)N 1677(fork)X 1 f 2503(create)X 2735(new)X 2903(thread)X 3145(of)X 3240(execution)X 5 f 986 3496(join)N 1677(waitprocess)X 1 f 2503(wait)X 2677(until)X 2862(speci\256c)X 3153(thread)X 3395(terminates)X 5 f 986 3600(currentcontext)N 1677(currentprocess)X 1 f 2503(return)X 2735(handle)X 2992(for)X 3116(current)X 3387(thread)X 5 f 9 f 986 3704(-)N 5 f 1677(killprocess)X 1 f 2503(terminate)X 2859(thread)X 3101(of)X 3196(execution)X 5 f 9 f 986 3808(-)N 5 f 1677(killprocessgroup)X 1 f 2503(terminate)X 2859(group)X 3086(of)X 3181(threads)X 5 f 986 3912(detach)N 1677(newprocessgroup)X 1 f 2503(detach)X 2755(current)X 3026(thread)X 3268(from)X 3461(group)X 5 f 986 4016(yield)N 1677(pause)X 1 f 2503(suspend)X 2808(current)X 3079(thread)X 3321(momentarily)X 5 f 9 f 986 4120(-)N 5 f 1677(breakpoint)X 1 f 2503(suspend)X 2808(current)X 3079(thread)X 5 f 9 f 986 4224(-)N 5 f 1677(continueprocess)X 1 f 2503(resume)X 2779(suspended)X 3167(thread)X 5 f 9 f 986 4328(-)N 5 f 1677(suspendprocess)X 1 f 2503(suspend)X 2808(speci\256c)X 3099(thread)X 10 f 942 4344(i)N 961(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X 5 f 986 4448(lock)N 1677(createmonitor)X 1 f 2503(create)X 2735(synchronization)X 3320(object)X 5 f 986 4552(monitor)N 1677(monitor)X 1 f 2503(execute)X 2794(procedure)X 3167(with)X 3346(synchronization)X 10 f 942 4568(i)N 961(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X 5 f 986 4672(condition)N 9 f 1677(-)X 1 f 2503(create)X 2735(condition)X 3091(object)X 5 f 986 4776(wait)N 9 f 1677(-)X 1 f 2503(wait)X 2677(for)X 2801(condition)X 3157(to)X 3248(occur)X 5 f 986 4880(notify)N 9 f 1677(-)X 1 f 2503(resume)X 2779(threads)X 3055(waiting)X 3342(for)X 3466(a)X 3527(condition)X 10 f 942 4896(i)N 961(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X 942(c)X 4840(c)Y 4752(c)Y 4664(c)Y 4576(c)Y 4488(c)Y 4400(c)Y 4312(c)Y 4224(c)Y 4136(c)Y 4048(c)Y 3960(c)Y 3872(c)Y 3784(c)Y 3696(c)Y 3608(c)Y 3520(c)Y 3432(c)Y 3344(c)Y 3256(c)Y 3953 4896(c)N 4840(c)Y 4752(c)Y 4664(c)Y 4576(c)Y 4488(c)Y 4400(c)Y 4312(c)Y 4224(c)Y 4136(c)Y 4048(c)Y 3960(c)Y 3872(c)Y 3784(c)Y 3696(c)Y 3608(c)Y 3520(c)Y 3432(c)Y 3344(c)Y 3256(c)Y 1 f 1848 5100(Table)N 2071(1.)X 2159(Thread-related)X 2699(operators.)X 864 5232(There)N 1103(are)X 1244(signi\256cant)X 1646(similarities)X 2074(between)X 2401(the)X 2543(two)X 2709(systems,)X 3044(as)X 3151(well)X 3337(as)X 3445(annoying)X 3808(differ-)X 864 5336(ences.)N 1133(For)X 1285(example,)X 1636(the)X 6 f 10 s 1774(fork)X 1 f 11 s 1955(operator)X 2278(in)X 5 f 2380(D)X 9 s 2443(ISPLAY)X 11 s 2727(P)X 9 s 2786(OST)X 11 s (S)S 9 s 2993(CRIPT)X 1 f 11 s 3238(initializes)X 3612(the)X 3749(operand)X 864 5440(stack)N 1073(of)X 1174(the)X 1310(new)X 1484(context)X 1772(by)X 1888(popping)X 2205(a)X 2273(collection)X 2651(of)X 2753(objects)X 3032(off)X 3163(the)X 3300(operand)X 3612(stack)X 3822(of)X 3924(the)X 864 5544(parent)N 1107(context.)X 1434(In)X 10 s 1528(Ne)X 1612(WS)X 11 s (,)S 1777(on)X 1888(the)X 2019(other)X 2223(hand,)X 2439(the)X 6 f 10 s 2570(fork)X 1 f 11 s 2744(operator)X 3060(simply)X 3324(duplicates)X 3705(the)X 3836(exist-)X 864 5648(ing)N 1025(operand)X 1356(stack.)X 10 s 1625(Ne)X 1709(WS)X 11 s 1877(provides)X 2228(more)X 2457(control)X 2755(over)X 2959(processes.)X 3388(Processes)X 3778(can)X 3949(be)X 3461 6152(Lef\257er)N 3988(5)X 6 p %%Page: 6 6 0(Helvetica-Oblique)xf 0 f 11 s 11 xH 0 xS 0 f 1 f 5 f 864 464(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1368(Language)X 1737(Extensions)X 864 824(suspended)N 1261(and)X 1419(killed,)X 1674(although)X 2014(in)X 2114(practice)X 2423(the)X 6 f 10 s 2561(breakpoint)X 1 f 11 s 2969(,)X 6 f 10 s 3021(suspendprocess)X 1 f 11 s 3654(,)X 3706(and)X 6 f 10 s 3863(con-)X 864 928(tinueprocess)N 1 f 11 s 1383(operators)X 1733(are)X 1863(not)X 1999(used)X 2183(for)X 2308(their)X 2494(intended)X 2822(purpose)X 3124(of)X 3221(debugging)X 3617(because)X 3919(too)X 864 1032(much)N 1082(of)X 1177(a)X 1238(process)X 1523(state)X 1707(is)X 1788(inaccessible)X 2236(outside)X 2513(the)X 2643(context)X 2925(of)X 3020(a)X 3081(process)X 9 s 3344 1004(3)N 11 s 1032(.)Y 864 1164(The)N 5 f 1032(D)X 9 s 1095(ISPLAY)X 11 s 1378(P)X 9 s 1437(OST)X 11 s (S)S 9 s 1644(CRIPT)X 2 f 11 s 1888(condition)X 1 f 2264(objects)X 2542(are)X 2677(used)X 2866(in)X 2963(conjunction)X 3408(with)X 2 f 3593(lock)X 1 f 3782(objects)X 864 1268(for)N 994(intercontext)X 1444(synchronization)X 2035(and)X 2190(communication.)X 10 s 2808(Ne)X 2892(WS)X 11 s 3040(has)X 3184(a)X 2 f 3250(monitor)X 1 f 3570(object)X 3813(that)X 3973(is)X 864 1372(virtually)N 1198(identical)X 1537(to)X 1640(a)X 1713(lock,)X 1921(and)X 2082(a)X 2155(more)X 2370(general)X 2663(event)X 2888(mechanism)X 3324(that)X 3492(can)X 3649(be)X 3767(used)X 3963(to)X 864 1476(emulate)N 1166(locks.)X 864 1608(The)N 5 f 1038(D)X 9 s 1101(ISPLAY)X 11 s 1390(P)X 9 s 1449(OST)X 11 s (S)S 9 s 1656(CRIPT)X 1 f 11 s 1907(documentation)X 2467(does)X 2663(not)X 2811(specify)X 3100(how)X 3286(context)X 3581(management)X 864 1712(relates)N 1136(to)X 1247(connection)X 1676(management.)X 2213(This)X 2411(lack)X 2599(of)X 2713(speci\256cation)X 3200(is)X 3300(deliberate;)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 1816(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1377(is)X 1468(designed)X 1813(to)X 1914(be)X 2029(used)X 2222(on)X 2342(systems)X 2653(that)X 2818(do)X 2938(not)X 3083(support)X 3379(multi-tasking,)X 3905(e.g.)X 864 1920(the)N 1012(Apple)X 1267(Macintosh)X 9 f 1639(\324)X 1 f 1717(.)X 1801(In)X 10 s 1912(Ne)X 1996(WS)X 11 s (,)S 2178(the)X 2325(relationship)X 2781(between)X 3113(process)X 3415(management)X 3905(and)X 864 2024(connection)N 1274(management)X 1748(is)X 1830(de\256ned)X 2112(by)X 2223(a)X 5 f 2288(P)X 9 s 2347(OST)X 11 s (S)S 9 s 2554(CRIPT)X 1 f 11 s 2793(server)X 3031(process)X 3318(that)X 3475(is)X 3558(created)X 3836(at)X 3924(the)X 864 2128(time)N 1062(the)X 10 s 1208(Ne)X 1292(WS)X 11 s 1452(server)X 1706(is)X 1805(started)X 2080(up.)X 2252(For)X 2414(each)X 2615(client)X 2852(connection)X 3278(to)X 3386(the)X 3533(server,)X 3808(a)X 3886(new)X 5 f 864 2232(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1371(process)X 1659(in)X 1753(a)X 1817(new)X 1988(process)X 2276(group)X 2506(is)X 2591(created)X 2871(to)X 2966(service)X 3241(client)X 3464(requests.)X 3822(When)X 864 2336(a)N 936(client-server)X 1409(connection)X 1829(terminates,)X 2252(the)X 5 f 2396(P)X 9 s 2455(OST)X 11 s (S)S 9 s 2662(CRIPT)X 1 f 11 s 2911(code)X 3109(that)X 3274(accepted)X 3614(the)X 3754(connec-)X 864 2440(tion)N 1036(kills)X 1223(off)X 1359(all)X 1482(the)X 1624(processes)X 1994(associated)X 2390(with)X 2581(the)X 2723(process)X 3020(group)X 3259(and)X 3420(then)X 3606(terminates)X 9 s 3974 2412(4)N 11 s 2440(.)Y 864 2544(With)N 5 f 1069(D)X 9 s 1132(ISPLAY)X 11 s 1412(P)X 9 s 1471(OST)X 11 s (S)S 9 s 1678(CRIPT)X 1 f 11 s 1919(however,)X 2268(this)X 2420(scheme)X 2708(is)X 2791(not)X 2928(possible)X 3241(because)X 3543(the)X 3675(notions)X 3959(of)X 864 2648(connection)N 1278(management,)X 1778(context)X 2065(groups,)X 2353(and)X 2507(terminating)X 2942(contexts)X 3263(do)X 3378(not)X 3518(exist.)X 3756(Instead,)X 864 2752(the)N 1002(lifetime)X 1308(of)X 1411(a)X 1480(context)X 1770(\(whether)X 2112(or)X 2215(not)X 2358(it)X 2438(is)X 2527(terminated)X 2934(when)X 3153(a)X 3221(client-server)X 3690(session)X 3973(is)X 864 2856(terminated\))N 1294(is)X 1376(determined)X 1796(by)X 1907(the)X 2038(environment)X 2507(in)X 2599(which)X 5 f 2840(D)X 9 s 2903(ISPLAY)X 11 s 3181(P)X 9 s 3240(OST)X 11 s (S)S 9 s 3447(CRIPT)X 1 f 11 s 3686(is)X 3768(embed-)X 864 2960(ded.)N 1062(Since)X 5 f 1288(D)X 9 s 1351(ISPLAY)X 11 s 1632(P)X 9 s 1691(OST)X 11 s (S)S 9 s 1898(CRIPT)X 1 f 11 s 2140(does)X 2327(not)X 2466(support)X 2756(a)X 2821(mechanism)X 3249(for)X 3377(terminating)X 3811(a)X 3876(con-)X 864 3064(text,)N 1041(one)X 1190(must)X 1384(assume)X 1665(that)X 1820(contexts)X 2136(are)X 2265 0.2604(automatically)AX 2769(reclaimed)X 3139(when)X 3351(a)X 3413(client-server)X 3876(con-)X 864 3168(nection)N 1147(closes.)X 1429(This)X 1609(may)X 1784(have)X 1973(rami\256cations)X 2457(to)X 2549(applications)X 2999(that)X 3155(use)X 3295(shared)X 3546(resources)X 3899(that)X 864 3272(need)N 1054(to)X 1147(be)X 1254(reclaimed.)X 1670(For)X 1816(example,)X 2161(in)X 10 s 2252(Ne)X 2336(WS)X 11 s 2480(a)X 2543(`)X 2562(`watchdog')X 2952(')X 5 f 3008(P)X 9 s 3067(OST)X 11 s (S)S 9 s 3274(CRIPT)X 1 f 11 s 3514(process)X 3802(can)X 3949(be)X 864 3376(used)N 1066(to)X 1176 0.2604(automatically)AX 1699(cleanup)X 2014(global)X 2276(resources)X 2648(when)X 2879(a)X 2959(connection)X 3387(is)X 3487(closed.)X 3797(A)X 3900(less)X 864 3480(important)N 1236(effect)X 1464(of)X 5 f 1568(D)X 9 s 1631(ISPLAY)X 11 s 1914(P)X 9 s 1973(OST)X 11 s (S)S 9 s 2180(CRIPT)X 1 f 11 s ('s)S 2487(context/connection)X 3187(management)X 3666(strategy)X 3973(is)X 864 3584(that,)N 1057(unlike)X 10 s 1314(Ne)X 1398(WS)X 11 s (,)S 1578(it)X 1666(is)X 1762(not)X 1912(possible)X 2238(to)X 2344(write)X 2562(an)X 2682(application)X 3112(entirely)X 3419(in)X 5 f 3528(P)X 9 s 3587(OST)X 11 s (S)S 9 s 3794(CRIPT)X 1 f 11 s (.)S 864 3688(Without)N 5 f 1186(P)X 9 s 1245(OST)X 11 s (S)S 9 s 1452(CRIPT)X 1 f 11 s (-based)S 1926(support)X 2219(for)X 2350(input,)X 2583(however,)X 2936(applications)X 3392(of)X 3494(this)X 3651(sort)X 3812(would)X 864 3792(have)N 1052(less)X 1206(utility.)X 864 3924(As)N 1002(an)X 1126(independent)X 1598(matter,)X 5 f 1890(D)X 9 s 1953(ISPLAY)X 11 s 2249(P)X 9 s 2308(OST)X 11 s (S)S 9 s 2515(CRIPT)X 1 f 11 s 2773(does)X 2976(not)X 3131(treat)X 3330(a)X 3411(context)X 3713(as)X 3828(a)X 3909(full)X 864 4028(\257edged)N 5 f 1161(P)X 9 s 1220(OST)X 11 s (S)S 9 s 1427(CRIPT)X 1 f 11 s 1678(object.)X 1973(That)X 2170(is,)X 2286(it)X 2371(is)X 2465(not)X 2613(possible)X 2937(access)X 3196(the)X 3338(state)X 3534(of)X 3641(a)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 4132(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1371(context)X 1656(given)X 1878(a)X 1943(reference)X 2295(to)X 2390(the)X 2524(context.)X 10 s 2850(Ne)X 2934(WS)X 11 s (,)S 3102(on)X 3216(the)X 3350(other)X 3557(hand,)X 3776(treats)X 3993(a)X 864 4236(process)N 1158(as)X 1262(a)X 1332(full-\257edged)X 5 f 1777(P)X 9 s 1836(OST)X 11 s (S)S 9 s 2043(CRIPT)X 1 f 11 s 2290(object)X 2536(that)X 2699(is)X 2788(accessible)X 3175(in)X 3274(other)X 3485(processes.)X 3895(The)X 10 s 864 4340(Ne)N 948(WS)X 11 s 1092(approach)X 1438(permits)X 1727(the)X 1859(state)X 2045(of)X 2142(a)X 5 f 2208(P)X 9 s 2267(OST)X 11 s (S)S 9 s 2474(CRIPT)X 1 f 11 s 2714(process)X 3002(to)X 3096(be)X 3204(interrogated)X 3655(by)X 3768(another)X 5 f 864 4444(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1368(process.)X 1697(This)X 1876(is)X 1957(particularly)X 2386(useful)X 2623(when)X 2835(debugging.)X 3 f 864 4652(2.4.)N 1040(Memory)X 1384(Management)X 1 f 864 4784(The)N 1037(original)X 5 f 1351(P)X 9 s 1410(OST)X 11 s (S)S 9 s 1617(CRIPT)X 1 f 11 s 1869(de\256nition)X 2244(speci\256es)X 2583(a)X 2659(single)X 2907(uniform)X 3228(virtual)X 3496(memory.)X 3871(Two)X 864 4888(operators,)N 6 f 10 s 1240(save)X 1 f 11 s 1443(and)X 6 f 10 s 1596(restore)X 1 f 11 s 1892(are)X 2025(used)X 2212(for)X 2340(memory)X 2660(management.)X 3181(The)X 6 f 10 s 3344(save)X 1 f 11 s 3546(operator)X 3865(logi-)X 864 4992(cally)N 1065(checkpoints)X 1515(the)X 1652(state)X 1844(of)X 1947(virtual)X 2208(memory,)X 2554(while)X 2780(the)X 6 f 10 s 2918(restore)X 1 f 11 s 3218(operator)X 3541(rolls)X 3728(back)X 3924(the)X 864 5096(state)N 1051(of)X 1149(virtual)X 1405(memory)X 1724(to)X 1817(the)X 1949(point)X 2155(at)X 2243(which)X 2482(a)X 2545(previous)X 6 f 10 s 2872(save)X 1 f 11 s 3072(was)X 3232(done.)X 3471(These)X 3705(operators)X 9 s 10 f 864 5184(hhhhhhhhhhhhhhhh)N 7 s 1 f 944 5264(3)N 9 s 1008 5286(Instead)N 1234(a)X 1284(process)X 1518(is)X 1584(debugged)X 1882(with)X 2028(the)X 2134(assistance)X 2440(of)X 2519(a)X 2570(debugging)X 2893(procedure)X 3200(that)X 3327(executes)X 3594(within)X 3797(the)X 3904(con-)X 864 5374(text)N 990(of)X 1068(the)X 1174(stopped)X 1416(process.)X 7 s 944 5454(4)N 9 s 1008 5476(These)N 1207(actions)X 1438(are)X 1553(de\256ned)X 1792(by)X 1891(a)X 5 f 1952(P)X 7 s (OST)S 9 s 2115(S)X 7 s (CRIPT)S 1 f 9 s 2357(procedure)X 2672(contained)X 2979(in)X 3062(a)X 3121(\256le)X 3240(that)X 3375(the)X 8 s 3488(Ne)X 3552(WS)X 9 s 3676(server)X 3880(reads)X 864 5564(when)N 1038(it)X 1096(is)X 1162(started)X 1372(up.)X 1498(Other)X 1680(actions)X 1902(can)X 2020(be)X 2106(de\256ned)X 2336(by)X 2426(rewriting)X 2708(this)X 5 f 2832(P)X 7 s (OST)S 9 s 2995(S)X 7 s (CRIPT)S 1 f 9 s 3228(procedure.)X 11 s 864 6152(6)N 5 f 1196(D)X 9 s 1259(ISPLAY)X 1 f 11 s 5 f 1533(P)X 9 s 1592(OST)X 11 s (S)S 9 s 1799(CRIPT)X 1 f 11 s 2037(and)X 10 s 2186(Ne)X 2270(WS)X 7 p %%Page: 7 7 0(Helvetica-Oblique)xf 0 f 10 s 10 xH 0 xS 0 f 11 s 1 f 3247 464(Memory)N 3572(Management)X 864 824(must)N 1067(be)X 1181(matched.)X 1555(They)X 1767(are)X 1905(intended)X 2240(mainly)X 2517(to)X 2617(be)X 2731(used)X 2923(in)X 3023(a)X 3093(bracketing)X 3497(fashion)X 3788(around)X 864 928(each)N 1050(page)X 1241(of)X 1339(a)X 1403(multi-page)X 1811(printout,)X 2138(or)X 2236(to)X 2330(create)X 2565(an)X 2673(encapsulated)X 3153(environment,)X 3646(such)X 3832(as)X 3930(for)X 864 1032(including)N 1220(illustrations.)X 864 1164(In)N 10 s 968(Ne)X 1052(WS)X 11 s 1206(the)X 6 f 10 s 1348(save)X 1 f 11 s 1558(and)X 6 f 10 s 1719(restore)X 1 f 11 s 2023(operators)X 2384(are)X 2525(ignored.)X 2872(Instead)X 3160(memory)X 3488(management)X 3973(is)X 864 1268(done)N 1077(entirely)X 1389(with)X 1588(a)X 1669(reference)X 2037(counting)X 2388(garbage)X 2708(collection)X 3099(scheme.)X 3448(A)X 3552(new)X 3739(operator)X 6 f 10 s 864 1372(undef)N 1 f 11 s 1122(was)X 1299(added)X 1550(to)X 1660(explicitly)X 2036(delete)X 2288(a)X 2368(dictionary)X 2767(entry.)X 3033(Ignoring)X 6 f 10 s 3377(save)X 1 f 11 s 3594(and)X 6 f 10 s 3762(restore)X 1 f 11 s 864 1476(makes)N 1130(it)X 1221(dif\256cult)X 1542(to)X 1652(provide)X 1962(an)X 2086(encapsulated)X 2582(environment)X 3068(for)X 3210(subdocuments)X 3754(because)X 864 1580(storage)N 1140(for)X 1264(objects)X 1536(such)X 1719(as)X 1814(user-de\256ned)X 2270(fonts)X 2468(is)X 2549(not)X 2684(reclaimed.)X 5 f 864 1712(D)N 9 s 927(ISPLAY)X 11 s 1209(P)X 9 s 1268(OST)X 11 s (S)S 9 s 1475(CRIPT)X 1 f 11 s 1718(also)X 1887(includes)X 2208(a)X 2274(garbage)X 2579(collection)X 2955(facility,)X 3255(but)X 3395(rather)X 3627(than)X 3807(ignore)X 6 f 10 s 864 1816(save)N 1 f 11 s 1063(and)X 6 f 10 s 1213(restore)X 1 f 11 s 1506(they)X 1681(have)X 1870(been)X 2058(rede\256ned)X 2407(to)X 2498(work)X 2700(in)X 2791(as)X 2886(`)X 2905(`compatible)X 3349(a)X 3410(way)X 3578(as)X 3673(possible.')X 4003(')X 864 1920(This)N 1058(can)X 1217(result)X 1450(in)X 1556(some)X 1779(confusion;)X 2188(for)X 2327(example,)X 2685(when)X 2912(multiple)X 3246(contexts)X 3578(share)X 3801(virtual)X 864 2024(memory)N 1203(and)X 1375(one)X 1546(executes)X 1893(a)X 6 f 10 s 1976(restore)X 1 f 11 s 2290(operation.)X 2711(Like)X 10 s 2915(Ne)X 2999(WS)X 11 s (,)S 5 f 3188(D)X 9 s 3251(ISPLAY)X 11 s 3550(P)X 9 s 3609(OST)X 11 s (S)S 9 s 3816(CRIPT)X 1 f 11 s 864 2128(includes)N 6 f 10 s 1193(undef)X 1 f 11 s 1411(;)X 1471(in)X 1576(addition,)X 1924(an)X 6 f 10 s 2043(unde\256nefont)X 1 f 11 s 2564(operator)X 2893(is)X 2988(available)X 3343(to)X 3448(delete)X 3695(read-only)X 864 2232(fonts)N 1062(that)X 1217(reside)X 1449(in)X 1540(the)X 6 f 10 s 1670(FontDirectory)X 1 f 11 s 2194(.)X 864 2364(In)N 5 f 968(D)X 9 s 1031(ISPLAY)X 11 s 1314(P)X 9 s 1373(OST)X 11 s (S)S 9 s 1580(CRIPT)X 1 f 11 s (,)S 1846(the)X 1982(virtual)X 2242(memory)X 2565(model)X 2815(has)X 2961(also)X 3132(been)X 3327(extended)X 3674(to)X 3772(include)X 864 2468(multiple,)N 1222(potentially)X 1641(independent,)X 2134(virtual)X 2405(memories,)X 2815(each)X 3016(with)X 3213(different)X 3556(lifetimes)X 3905(and)X 864 2572 0.2812(visibilities.)AN 1305(Each)X 1508(execution)X 1878(context)X 2165(has)X 2310(a)X 2 f 2377(private)X 1 f 2669(virtual)X 2928(memory)X 3250(and)X 3405(access)X 3657(to)X 3754(a)X 3821(single)X 2 f 864 2676(shared)N 1 f 1142(virtual)X 1398(memory)X 1717(that)X 1875(is)X 1959(visible)X 2220(to)X 2314(all)X 2428(contexts)X 2747(and)X 2899(that)X 3057(can)X 3203(be)X 3310(updated)X 3613(by)X 3725(any)X 3876(con-)X 864 2780(text)N 1034(under)X 1271(`)X 1290(`suitable)X 1632(conditions.')X 2041(')X 2108(Typically,)X 2507(a)X 5 f 2587(D)X 9 s 2650(ISPLAY)X 11 s 2943(P)X 9 s 3002(OST)X 11 s (S)S 9 s 3209(CRIPT)X 1 f 11 s 3463(application)X 3894(will)X 864 2884(make)N 1083(use)X 1228(of)X 1329(several)X 1605(execution)X 1975(contexts)X 2296(that)X 2456(all)X 2572(share)X 2784(a)X 2850(common)X 3186(private)X 3458(virtual)X 3716(memory.)X 864 2988(Separate)N 1195(applications)X 1650(however,)X 2002(typically)X 2340(do)X 2456(not)X 2597(share)X 2810(storage,)X 3114(except)X 3372(through)X 3674(the)X 3811(global)X 864 3092(shared)N 1115(memory.)X 864 3224(The)N 1027(virtual)X 1284(memory)X 1604(scheme)X 1894(de\256ned)X 2179(in)X 5 f 2277(D)X 9 s 2340(ISPLAY)X 11 s 2621(P)X 9 s 2680(OST)X 11 s (S)S 9 s 2887(CRIPT)X 1 f 11 s 3130(can)X 3279(be)X 3389(useful)X 3631(in)X 3727(isolating)X 864 3328(execution)N 1233(contexts)X 1553(from)X 1750(each)X 1937(other)X 2144(in)X 2239(the)X 2373(same)X 2580(way)X 2752(that)X 2911(hardware)X 3262(memory)X 3581(management)X 864 3432(facilities)N 1204(isolate)X 1470(executing)X 1848(processes.)X 2264(It)X 2354(can)X 2512(also)X 2690(be)X 2809(applied)X 3105(well)X 3293(in)X 3398(a)X 3473(shared)X 3738(memory)X 864 3536(multiprocessor)N 1438(environment)X 1934(where)X 2198(a)X 2287(distinction)X 2711(between)X 3053(shared)X 3331(and)X 3507(private)X 3801(virtual)X 864 3640(memory)N 1200(can)X 1364(make)X 1597(it)X 1689(possible)X 2020(to)X 2131(use)X 2290(local)X 2504(memory)X 2840(for)X 2985(private)X 5 f 3276(P)X 9 s 3335(OST)X 11 s (S)S 9 s 3542(CRIPT)X 1 f 11 s 3801(virtual)X 864 3744(memory.)N 1230(However,)X 1601(the)X 1737(scheme)X 2029(complicates)X 2479(many)X 2703(common)X 3040(operations)X 3434(by)X 3549(requiring)X 3899(that)X 864 3848(applications)N 1321(be)X 1434(cognizant)X 1807(of)X 1910(the)X 2048(location)X 2363(of)X 2466(an)X 2580(object's)X 2890(storage.)X 3219(Furthermore,)X 3712(since)X 3924(the)X 5 f 864 3952(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1375(operand)X 1687(and)X 1843(dictionary)X 2230(stacks)X 2474(are)X 2609(private)X 2882(to)X 2979(a)X 3046(context)X 3334(anyway,)X 3657(the)X 3793(advan-)X 864 4056(tages)N 1085(identi\256ed)X 1460(in)X 1570(typical)X 1852(programming)X 2373(languages)X 2766(are)X 2914(not)X 3068(as)X 3182(clear.)X 3438(Experience)X 3875(with)X 10 s 864 4160(Ne)N 948(WS)X 11 s 1115(suggests)X 1460(that)X 1639(collisions)X 2024(in)X 2139(storage)X 2439(between)X 2778(execution)X 3167(contexts)X 3507(are)X 3660(rare)X 3842(when)X 864 4264(language-based)N 1433(schemes,)X 1775(such)X 1958(as)X 2053(the)X 2183(class)X 2377(support)X 2664(provided)X 3000(in)X 10 s 3090(Ne)X 3174(WS)X 11 s (,)S 3339(are)X 3469(used.)X 3697(There)X 3925(are)X 864 4368(no)N 982(reported)X 1305(experiences)X 1750(of)X 10 s 1851(Ne)X 1935(WS)X 11 s 2085(being)X 2310(integrated)X 2692(into)X 2859(a)X 2927(shared)X 3185(memory)X 3508(multiprocessor)X 864 4472(environment.)N 1376(Thus,)X 1596(it)X 1668(is)X 1749(too)X 1884(early)X 2082(to)X 2173(draw)X 2370(any)X 2519(conclusions)X 2957(regarding)X 3316(the)X 3446(the)X 3577(cost)X 3742(of)X 3838(a)X 3900(sin-)X 864 4576(gle)N 994(shared)X 1245(virtual)X 1498(memory)X 1814(in)X 1905(such)X 2088(an)X 2193(environment.)X 3 f 864 4784(2.5.)N 1040(View)X 1252(Clipping)X 5 f 864 4916(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1368(de\256nes)X 1639(a)X 2 f 1700(clip)X 1856(path)X 1 f 2050(against)X 2323(which)X 2561(all)X 2673(imaging)X 2986(operators)X 3336(are)X 3466(clipped.)X 3793(This)X 3973(is)X 864 5020(insuf\256cient)N 1290(in)X 1388(a)X 1456(window-oriented)X 2086(environment)X 2561(where)X 2804(imaging)X 3123(must)X 3324(also)X 3495(be)X 3607(clipped)X 3896(to)X 3993(a)X 864 5124(window)N 1169(boundary)X 1523(and,)X 1694(at)X 1780(times,)X 2016(to)X 2107(a)X 2168(subregion)X 2537(of)X 2632(a)X 2693(window.)X 5 f 864 5256(D)N 9 s 927(ISPLAY)X 11 s 1211(P)X 9 s 1270(OST)X 11 s (S)S 9 s 1477(CRIPT)X 1 f 11 s 1723(introduces)X 2120(an)X 2233(additional)X 2617(level)X 2819(of)X 2922(clipping)X 3242(with)X 3429(a)X 2 f 3498(view)X 3690(clip)X 3853(path)X 1 f 4010(.)X 864 5360(This)N 1049(path)X 1229(is)X 1316(designed)X 1657(to)X 1754(be)X 1865(used)X 2054(during)X 2312(damage)X 2614(repair.)X 2891(Clipping)X 3228(to)X 3324(a)X 3390(window)X 3700(boundary)X 864 5464(is)N 958(not)X 1106(explicitly)X 1476(supported)X 1858(in)X 5 f 1965(D)X 9 s 2028(ISPLAY)X 11 s 2318(P)X 9 s 2377(OST)X 11 s (S)S 9 s 2584(CRIPT)X 1 f 11 s (;)S 2860(derived)X 3159(systems)X 3473(are)X 3615(expected)X 3963(to)X 864 5568(provide)N 1159(this.)X 1357(It)X 1436(is)X 1520(unclear)X 1804(from)X 2000(the)X 2133(documentation)X 2683(where)X 2922(the)X 3055(view)X 3251(clip)X 3409(path)X 3586(comes)X 3836(from;)X 864 5672(presumably)N 1297(it)X 1369(is)X 1450(provided)X 1785(by)X 1895(the)X 2025(window)X 2330(system)X 2597(as)X 2692(a)X 2753(result)X 2971(of)X 3066(damage)X 3362(to)X 3453(a)X 3514(window.)X 3461 6152(Lef\257er)N 3988(7)X 8 p %%Page: 8 8 0(Helvetica-Oblique)xf 0 f 11 s 11 xH 0 xS 0 f 1 f 5 f 864 464(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1368(Language)X 1737(Extensions)X 864 824(In)N 10 s 958(Ne)X 1042(WS)X 11 s 1185(clipping)X 1498(to)X 1591(the)X 1723(window)X 2030(boundary)X 2386(is)X 2469(part)X 2630(of)X 2727(the)X 2 f 2859(canvas)X 1 f 3141(object)X 3381(in)X 3474(which)X 3713(all)X 3826(imag-)X 864 928(ing)N 1005(operations)X 1400(are)X 1535(de\256ned)X 1822(to)X 1919(take)X 2094(place.)X 2352(Damage)X 2673(repair)X 2906(is)X 2993(effected)X 3304(with)X 3489(a)X 2 f 3556(damage)X 3861(path)X 1 f 864 1032(that)N 1025(is)X 1112 0.2604(automatically)AX 1622(provided)X 1963(to)X 2061(each)X 2251(damaged)X 2598(canvas)X 2866(along)X 3091(with)X 3277(an)X 3389(appropriate)X 3819(event.)X 10 s 864 1136(Ne)N 948(WS)X 11 s 1109(also)X 1292(allows)X 1563(applications)X 2031(to)X 2141(extend)X 2417(the)X 2566(damage)X 2881(path)X 3074(to)X 3184(force)X 3404(damage)X 3718(repair)X 3963(in)X 864 1240(regions)N 1145(the)X 1275(window)X 1580(system)X 1847(can)X 1991(not)X 2126(know)X 2343(about.)X 3 f 864 1448(2.6.)N 1040(Font)X 1238(Related)X 1548(Extensions)X 1 f 864 1580(The)N 1027(font)X 1195(machinery)X 1593(de\256ned)X 1878(in)X 5 f 1977(P)X 9 s 2036(OST)X 11 s (S)S 9 s 2243(CRIPT)X 1 f 11 s 2486(is)X 2572(probably)X 2912(the)X 3047(main)X 3251(reason)X 3507(for)X 3636(its)X 3747(success.)X 864 1684(Fonts)N 1083(are)X 1213(de\256ned)X 1495(in)X 1587(terms)X 1806(of)X 1902(curve)X 2120(outlines)X 2423(that)X 2579(may)X 2754(be)X 2860(stroked)X 3142(or)X 3238(\256lled)X 3443(to)X 3535(image)X 3774(charac-)X 864 1788(ters.)N 1057(Individual)X 1442(characters)X 1820(or)X 1916(entire)X 2140(fonts)X 2339(can)X 2484(be)X 2590(scaled)X 2833(and)X 2983(rotated)X 3251(as)X 3347(required.)X 3707(For)X 3852(users)X 864 1892(of)N 974(interactive)X 1384(display)X 1676(technology,)X 2127(these)X 2345(capabilities)X 2785(are)X 2929(a)X 3004(signi\256cant)X 3408(advance)X 3732(over)X 3924(the)X 864 1996(usual)N 1072(\256xed)X 1270(size,)X 1451(hand)X 1644(tuned,)X 1884(bitmap)X 2152(fonts)X 2350(that)X 2505(cannot)X 2762(be)X 2867(scaled)X 3109(or)X 3204(rotated.)X 10 s 864 2128(Ne)N 948(WS)X 11 s 1109(\(in)X 1248(its)X 1373(current)X 1663(incarnation\))X 2130(provides)X 2474(only)X 2672(a)X 2753(subset)X 3015(of)X 3130(the)X 3280(full)X 3445(font)X 3629(capabilities)X 864 2232(de\256ned)N 1145(in)X 5 f 1239(P)X 9 s 1298(OST)X 11 s (S)S 9 s 1505(CRIPT)X 1 f 11 s (.)S 1787(All)X 1922(the)X 2052(standard)X 2372(operators)X 2721(are)X 2850(supported,)X 3241(including)X 3597(stroke)X 3834(fonts,)X 864 2336(but)N 1014(the)X 1159(fonts)X 1372(are)X 1516(not)X 1666(developed)X 2065(enough)X 2361(to)X 2467(make)X 2695(them)X 2909(useful.)X 3205(In)X 3315(particular,)X 3712(there)X 3925(are)X 864 2440(problems)N 1244(with)X 1453(rotating)X 1780(fonts,)X 2030(and)X 2209(most)X 2433(fonts)X 2660(do)X 2799(not)X 2963(scale)X 3190(well)X 3393(because)X 3722(they)X 3925(are)X 864 2544(represented)N 1291(internally)X 1652(not)X 1787(as)X 1882(outlines,)X 2206(but)X 2341(instead)X 2613(as)X 2708(bitmaps)X 9 s 2988 2516(5)N 11 s 2544(.)Y 5 f 864 2676(D)N 9 s 927(ISPLAY)X 11 s 1205(P)X 9 s 1264(OST)X 11 s (S)S 9 s 1471(CRIPT)X 1 f 11 s 1710(builds)X 1949(on)X 2061(the)X 2193(basic)X 2398(font)X 2564(machinery)X 2960(available)X 3303(in)X 5 f 3399(P)X 9 s 3458(OST)X 11 s (S)S 9 s 3665(CRIPT)X 1 f 11 s 3905(and)X 864 2780(so)N 965(supports)X 1286(all)X 1398(the)X 1528(facilities)X 1855(de\256ned)X 2136(in)X 5 f 2230(P)X 9 s 2289(OST)X 11 s (S)S 9 s 2496(CRIPT)X 1 f 11 s (.)S 2778(In)X 2873(addition,)X 5 f 3210(D)X 9 s 3273(ISPLAY)X 11 s 3550(P)X 9 s 3609(OST)X 11 s (S)S 9 s 3816(CRIPT)X 1 f 11 s 864 2884(de\256nes)N 1137(a)X 1200(collection)X 1573(of)X 1670(new)X 1840(operators)X 2191(for)X 2317(explicitly)X 2677(positioning)X 3100(text)X 3258(and)X 3410(for)X 3537(more)X 3743(ef\256cient)X 864 2988(font)N 1032(switching.)X 1445(Bitmap)X 1731(fonts)X 1932(have)X 2123(also)X 2290(been)X 2481(added)X 2716(to)X 2810(the)X 2943(the)X 3076(standard)X 3399(font)X 3566(machinery)X 3963(in)X 864 3092(a)N 925(transparent)X 1338(fashion)X 1619(that)X 1774(is)X 1855(similar)X 2123(to)X 10 s 2212(Ne)X 2296(WS)X 11 s (.)S 864 3224(The)N 1029(new)X 1203(text)X 1364(operators)X 1719(are)X 6 f 10 s 1854(xshow)X 1 f 11 s 2102(,)X 6 f 10 s 2152(yshow)X 1 f 11 s 2400(,)X 2450(and)X 6 f 10 s 2605(xyshow)X 1 f 11 s 2897(.)X 2969(These)X 3207(allow)X 3431(an)X 3542(application)X 3963(to)X 864 3328(specify)N 1156(explicit)X 1460(x-y)X 1615(positioning)X 2051(information)X 2505(on)X 2630(a)X 2706(character)X 3065(by)X 3190(character)X 3549(basis)X 3762(without)X 864 3432(using)N 1077(explicit)X 1365(combinations)X 1863(of)X 6 f 10 s 1958(moveto)X 1 f 11 s 2264(and)X 6 f 10 s 2413(show)X 1 f 11 s 2617(.)X 864 3564(The)N 1028(font)X 1197(switching)X 1568(mechanism)X 1998(added)X 2236(in)X 5 f 2336(D)X 9 s 2399(ISPLAY)X 11 s 2682(P)X 9 s 2741(OST)X 11 s (S)S 9 s 2948(CRIPT)X 1 f 11 s 3192(combines)X 3558(the)X 3694(canonical)X 6 f 10 s 864 3668(\256ndfont)N 1 f 11 s 1163(,)X 6 f 10 s 1232(scalefont)X 1 f 11 s 1629(\(or)X 6 f 10 s 1778(makefont)X 1 f 11 s 2133(\),)X 2230(and)X 6 f 10 s 2403(setfont)X 1 f 11 s 2716(operations)X 3129(into)X 3313(a)X 3398(single)X 6 f 10 s 3655(selectfont)X 1 f 11 s 864 3772(operator.)N 1227(This)X 1410(operator)X 1729(also)X 1897(takes)X 2104(advantage)X 2487(of)X 2586(information)X 3029(in)X 3124(the)X 3259(font)X 3428(cache)X 3655(in)X 3751(order)X 3963(to)X 864 3876(avoid)N 1082(doing)X 1305(a)X 6 f 10 s 1366(\256ndfont)X 1 f 11 s 1687(whenever)X 2050(possible.)X 864 4008(The)N 5 f 1031(D)X 9 s 1094(ISPLAY)X 11 s 1376(P)X 9 s 1435(OST)X 11 s (S)S 9 s 1642(CRIPT)X 1 f 11 s 1885(support)X 2176(for)X 2305(bitmap)X 2578(fonts)X 2781(consists)X 3088(mainly)X 3362(of)X 3463(two)X 3623(new)X 3797(entries)X 864 4112(in)N 959(font)X 1127(dictionaries:)X 6 f 10 s 1590(BitmapWidths)X 1 f 11 s 2154(and)X 6 f 10 s 2307(BitmapTransform)X 1 f 11 s 2973(.)X 6 f 10 s 3042(BitmapWidths)X 1 f 11 s 3605(is)X 3689(a)X 3753(boolean)X 864 4216(value)N 1079(that)X 1236(indicates)X 1574(if)X 1652(bitmap)X 1922(widths)X 2181(are)X 2312(to)X 2405(be)X 2512(used)X 2697(when)X 2911(the)X 3043(device)X 3297(provides)X 3625(bitmaps)X 3930(for)X 864 4320(the)N 1001(font,)X 1194(or)X 1296(whether)X 1608(scalable)X 1921(widths)X 2185(are)X 2321(to)X 2419(be)X 2531(used.)X 2765(For)X 2916(backwards)X 3319 0.2932(compatibility,)AX 3842(if)X 3924(the)X 864 4424(entry)N 1077(is)X 1168(not)X 1313(present,)X 1621(the)X 1761(scalable)X 2078(widths)X 2346(are)X 2486(used.)X 6 f 10 s 2724(BitmapTransform)X 1 f 11 s 3423(is)X 3515(a)X 3587(boolean)X 3899(that)X 864 4528(speci\256es)N 1200(if)X 1287(a)X 1359(font's)X 1597(bitmaps)X 1910(should)X 2178(be)X 2294(rotated,)X 2594(or)X 2700(whether)X 3016(rotated)X 3294(characters)X 3682(should)X 3949(be)X 864 4632(derived)N 1150(from)X 1343(the)X 1473(scalable)X 1779(versions)X 9 s 2072 4604(6)N 11 s 4632(.)Y 2174(These)X 2406(entries)X 2663(are)X 2792(not)X 2927(present)X 3203(in)X 10 s 3292(Ne)X 3376(WS)X 11 s 3518(bitmap)X 3786(fonts.)X 864 4764(Noticeably)N 1293(missing)X 1610(from)X 1823(the)X 1973(font)X 2157(additions)X 2523(in)X 5 f 2637(D)X 9 s 2700(ISPLAY)X 11 s 2997(P)X 9 s 3056(OST)X 11 s (S)S 9 s 3263(CRIPT)X 1 f 11 s 3521(is)X 3623(support)X 3930(for)X 864 4868(returning)N 1211(an)X 1318(application)X 1735(font)X 1901(metric)X 2151(information.)X 2636(With)X 2837(the)X 2969(current)X 3242(system,)X 3533(an)X 3639(application)X 864 4972(can)N 1012(reliably)X 1308(obtain)X 1555(font)X 1723(metric)X 1975(information)X 2418(only)X 2601(by)X 2715(applying)X 3050(the)X 6 f 10 s 3185(stringwidth)X 1 f 11 s 3643(operator)X 3963(to)X 864 5076(each)N 1058(glyph)X 1292(in)X 1394(a)X 1466(font.)X 10 s 1681(Ne)X 1765(WS)X 11 s 1918(addresses)X 2287(half)X 2457(the)X 2598(problem)X 2924(by)X 3044(de\256ning)X 3365(a)X 6 f 10 s 3436(WidthArray)X 1 f 11 s 3899(that)X 864 5180(contains)N 1180(the)X 1310(width)X 1533(of)X 1628(each)X 1811(character)X 2155(in)X 2247(a)X 2309(font,)X 2496(but)X 2632(does)X 2816(not)X 2952(provide)X 3244(a)X 3306(similar)X 6 f 10 s 3575(HeightArray)X 1 f 9 s 10 f 864 5268(hhhhhhhhhhhhhhhh)N 7 s 1 f 944 5348(5)N 9 s 1008 5370(The)N 1138(X11/)X 8 s (Ne)S 1346(WS)X 9 s 1460(server)X 1654(appears)X 1892(to)X 1966(have)X 2120(signi\256cantly)X 2494(better)X 2676(font)X 2810(machinery.)X 7 s 944 5450(6)N 9 s 1008 5472(This)N 1160(is)X 1232(supposed)X 1524(to)X 1604(change)X 1832(in)X 1912(a)X 1968(future)X 2164(release)X 2388(to)X 2468(provide)X 2712(\256ner-grained)X 3108(control)X 3336(\(Hourvitz,)X 3659(private)X 3884(com-)X 864 5560(munication;)N 1226(1988\).)X 11 s 864 6152(8)N 5 f 1196(D)X 9 s 1259(ISPLAY)X 1 f 11 s 5 f 1533(P)X 9 s 1592(OST)X 11 s (S)S 9 s 1799(CRIPT)X 1 f 11 s 2037(and)X 10 s 2186(Ne)X 2270(WS)X 9 p %%Page: 9 9 0(Helvetica-Oblique)xf 0 f 10 s 10 xH 0 xS 0 f 11 s 1 f 3169 464(Font)N 3353(Related)X 3645(Extensions)X 864 824(for)N 994(the)X 1130(character)X 1480(heights.)X 5 f 1813(D)X 9 s 1876(ISPLAY)X 11 s 2160(P)X 9 s 2219(OST)X 11 s (S)S 9 s 2426(CRIPT)X 1 f 11 s 2671(explicitly)X 3035(refrains)X 3332(from)X 3532(providing)X 3904(this)X 864 928(information)N 1310(through)X 1613(the)X 1750(server;)X 2018(expecting)X 2390(instead)X 2669(that)X 2831(applications)X 3286(will)X 3452(get)X 3588(the)X 3724(informa-)X 864 1032(tion)N 1034(directly)X 1336(from)X 1539(Adobe)X 1806(Font)X 2001(Metric)X 2269(\(AFM\))X 2550(\256les)X 2730(in)X 2832(the)X 2973(\256lesystem.)X 3408(Relying)X 3721(on)X 3842(AFM)X 864 1136(\256les,)N 1055(however,)X 1401(presumes)X 1755(that)X 1910(applications)X 2359(are)X 2488(able)X 2657(to)X 2748(access)X 2994(and)X 3143(parse)X 3350(these)X 3553(\256les.)X 3 f 864 1344(2.7.)N 1040(Graphics)X 1410(States)X 1 f 864 1476(A)N 952(graphics)X 1275(state)X 1462(in)X 5 f 1560(P)X 9 s 1619(OST)X 11 s (S)S 9 s 1826(CRIPT)X 1 f 11 s 2068(is)X 2153(made)X 2370(up)X 2484(of)X 2583(a)X 2648(large)X 2850(number)X 3145(of)X 3244(items)X 3462(that)X 3621(are)X 3754(accessi-)X 864 1580(ble)N 1000(only)X 1185(through)X 1487(special)X 1760(purpose)X 2066(operators.)X 2465(11)X 2581(pairs)X 2780(of)X 2881(`)X 2900(`get')X 3056(')X 3113(and)X 3268(`)X 3287(`set')X 3433(')X 3489(operators)X 3843(exist,)X 864 1684(one)N 1021(for)X 1153(each)X 1344(accessible)X 1731(element)X 2041(in)X 2140(the)X 2278(graphics)X 2606(state,)X 2820(and)X 2977(there)X 3183(are)X 3320(additional)X 3705(operators)X 864 1788(for)N 993(manipulating)X 1487(the)X 1622(current)X 1898(transformation)X 2444(matrix,)X 2724(current)X 3000(path,)X 3201(clipping)X 3517(path,)X 3717(font,)X 3907(etc.)X 864 1892(The)N 6 f 10 s 1029(gsave)X 1 f 11 s 1282(and)X 6 f 10 s 1437(grestore)X 1 f 11 s 1784(operators)X 2139(allow)X 2363(an)X 2474(application)X 2895(to)X 2992(save)X 3176(and)X 3331(restore)X 3598(the)X 3734(graphics)X 864 1996(state,)N 1089(but)X 1243(there)X 1460(is)X 1560(no)X 1689(mechanism)X 2132(for)X 2275(manipulating)X 2783(the)X 2932(graphics)X 3271(state)X 3473(in)X 3582(a)X 3661(non-stack-)X 864 2100(oriented)N 1175(fashion.)X 864 2232(In)N 10 s 961(Ne)X 1045(WS)X 11 s (,)S 1214(graphics)X 1539(states)X 1762(and)X 1916(paths)X 2129(were)X 2326(made)X 5 f 2547(P)X 9 s 2606(OST)X 11 s (S)S 9 s 2813(CRIPT)X 1 f 11 s 3056(objects)X 3333(that)X 3493(could)X 3716(be)X 3826(mani-)X 864 2336(pulated.)N 1208(The)X 1385(current)X 1674(graphics)X 2012(state)X 2214(and)X 2381(paths)X 2607(can)X 2769(be)X 2891(saved)X 3130(in)X 3238(virtual)X 3508(memory)X 3841(to)X 3949(be)X 864 2440(restored)N 1186(at)X 1289(a)X 1367(later)X 1563(time.)X 1804(This)X 2000(facility)X 2290(is)X 2388(independent)X 2858(of)X 2971(the)X 3119(ordering)X 3457(imposed)X 3796(by)X 3924(the)X 864 2544(graphics)N 1195(state)X 1390(stack)X 1604(and)X 1764(the)X 6 f 10 s 1905(gsave)X 1 f 11 s 9 f 2130(-)X 6 f 10 s 2178(grestore)X 1 f 11 s 2529(operators.)X 2932(In)X 3037(addition,)X 3381(the)X 6 f 10 s 3521(copy)X 1 f 11 s 3739(operator)X 864 2648(was)N 1029(extended)X 1376(to)X 1474(operate)X 1762(on)X 1879(the)X 2017(new)X 2 f 2193(graphicsstate)X 1 f 2712(and)X 2 f 2869(shape)X 1 f 3118(types.)X 3378(Unfortunately,)X 3924(the)X 864 2752(paths)N 1076(that)X 1235(can)X 1383(be)X 1492(saved)X 1718(and)X 1871(restored)X 2180(are)X 2313(the)X 2 f 2447(transformed)X 1 f 2917(paths;)X 3154(there)X 3356(are)X 3488(many)X 3709(instances)X 864 2856(where)N 1100(an)X 1205(untransformed)X 1740(path)X 1914(is)X 1995(desired.)X 5 f 864 2988(D)N 9 s 927(ISPLAY)X 11 s 1226(P)X 9 s 1285(OST)X 11 s (S)S 9 s 1492(CRIPT)X 1 f 11 s 1752(also)X 1938(promotes)X 2310(the)X 2462(notion)X 2732(of)X 2849(the)X 3002(graphics)X 3345(state)X 3552(to)X 3666(an)X 3794(object,)X 864 3092(de\256nes)N 1136(new)X 1305(operators)X 1655(to)X 1747(set)X 1868(and)X 2018(get)X 2149(the)X 2280(entire)X 2504(graphics)X 2824(state,)X 3030(and)X 3179(extends)X 3470(the)X 6 f 10 s 3600(copy)X 1 f 11 s 3808(opera-)X 864 3196(tor)N 989(to)X 1085(handle)X 1347(graphics)X 1673(states.)X 1941(Additionally,)X 5 f 2441(D)X 9 s 2504(ISPLAY)X 11 s 2787(P)X 9 s 2846(OST)X 11 s (S)S 9 s 3053(CRIPT)X 1 f 11 s 3297(provides)X 3628(an)X 3739(operator)X 864 3300(that)N 1043(overwrites)X 1460(an)X 1589(existing)X 1915(graphics)X 2258(state)X 2465(object)X 2726(with)X 2928(the)X 3081(current)X 3375(graphics)X 3718(state.)X 3969(A)X 864 3404(separate)N 1178(facility)X 1455(called)X 2 f 1692(user)X 1869(paths)X 1 f 2100(is)X 2185(de\256ned)X 2470(to)X 2565(address)X 2854(the)X 2988(manipulation)X 3481(of)X 3580(paths;)X 3818(this)X 3973(is)X 864 3508(described)N 1223(later.)X 864 3640(I)N 918(personally)X 1310(wish)X 1501(that)X 1659(graphics)X 1982(state)X 2170(objects)X 2446(were)X 2642(treated)X 2908(as)X 3007(dictionary-like)X 3553(objects)X 3829(in)X 3924(the)X 864 3744(same)N 1077(way)X 1255(that)X 10 s 1417(Ne)X 1501(WS)X 11 s 1652(treats)X 1874(other)X 2086(objects)X 2367(such)X 2559(as)X 2663(processes,)X 3052(canvases,)X 3417(and)X 3575(events.)X 3875(This)X 864 3848(would)N 1106(allow)X 1324(almost)X 1582(two)X 1736(dozen)X 1968(special)X 2235(purpose)X 2535(operators)X 2884(to)X 2975(be)X 3080(replaced)X 3400(by)X 3510(the)X 3640(normal)X 6 f 10 s 3912(get)X 1 f 11 s 864 3952(and)N 6 f 10 s 1019(put)X 1 f 11 s 1172(operators,)X 1549(or)X 1650(an)X 1761(equivalent)X 2157(\(such)X 2375(as)X 2476(pushing)X 2783(the)X 2919(object)X 3163(on)X 3279(the)X 3415(dictionary)X 3800(stack\).)X 864 4056(Making)N 1176(the)X 1322(graphics)X 1658(state)X 1858(stack)X 2077(accessible)X 2472(through)X 2785(the)X 2932(process)X 3234(dictionary)X 3631(would)X 3890(also)X 864 4160(improve)N 1190(the)X 1330(debugging)X 1734(facilities)X 2071(in)X 10 s 2169(Ne)X 2253(WS)X 11 s (.)S 2426(Currently)X 2795(it)X 2876(is)X 2966(necessary)X 3338(to)X 3438(have)X 3635(a)X 3705(surrogate)X 864 4264(procedure)N 1241(executing)X 1610(inside)X 1847(a)X 1912(process)X 2201(in)X 2296(order)X 2508(to)X 2604(access)X 2855(the)X 2990(graphics)X 3315(state)X 3504(\(and)X 3687(even)X 3880(then)X 864 4368(it)N 936(is)X 1017(rather)X 1244(painful\).)X 3 f 864 4576(2.8.)N 1040(Line)X 1234(Quality)X 1 f 864 4708(The)N 1033(scan)X 1221(conversion)X 1639(process)X 1934(associated)X 2328(with)X 2517(stroking)X 2838(a)X 2909(path)X 3094(can)X 3249(produce)X 3565(lines)X 3765(of)X 3871(non-)X 864 4812(uniform)N 1177(thickness)X 1534(due)X 1690(to)X 1788(rasterization)X 2253(effects.)X 2560(This)X 2746(is)X 2834(caused)X 3101(by)X 3217(quantization)X 3682(effects)X 3944(on)X 864 4916(path)N 1041(coordinates)X 1472(and)X 1624(line)X 1782(widths.)X 2086(Producing)X 2473(high)X 2655(quality)X 2927(lines)X 3120(on)X 3234(a)X 3299(raster)X 3520(display)X 3801(can)X 3949(be)X 864 5020(rather)N 1091(expensive)X 1465(and,)X 1636(in)X 1727(an)X 1832(interactive)X 2227(setting,)X 2507(must)X 2701(be)X 2806(controllable)X 3250(by)X 3360(an)X 3465(application.)X 5 f 864 5152(D)N 9 s 927(ISPLAY)X 11 s 1209(P)X 9 s 1268(OST)X 11 s (S)S 9 s 1475(CRIPT)X 1 f 11 s 1718(de\256nes)X 1994(the)X 2129(notion)X 2382(of)X 2 f 2482(automatic)X 2863(stroke)X 3106(adjustment)X 1 f 3507(.)X 3579(When)X 3817(this)X 3973(is)X 864 5256(enabled,)N 1190(the)X 1328(line)X 1491(width)X 1722(and)X 1879(coordinates)X 2315(of)X 2418(a)X 2487(stroke)X 2732(are)X 2869 0.2604(automatically)AX 3381(adjusted)X 3705(as)X 3808(neces-)X 864 5360(sary)N 1038(to)X 1136(produced)X 1492(lines)X 1688(of)X 1790(uniform)X 2103(thickness.)X 2504(Furthermore,)X 2995(the)X 3132(line)X 3294(thickness)X 3651(is)X 3739(made)X 3959(as)X 864 5464(near)N 1047(as)X 1152(possible)X 1473(to)X 1574(the)X 1714(requested)X 2083(line)X 2248(width)X 2480(\(i.e.)X 2648(no)X 2767(more)X 2979(than)X 3162(a)X 3232(half)X 3400(a)X 3470(pixel)X 3678(different\).)X 864 5568(When)N 1101(this)X 1256(is)X 1342(not)X 1482(enabled,)X 1805(lines)X 1999(are)X 2133(rendered)X 2467(without)X 2764(concern)X 3069(for)X 3198(uniformity)X 3603(or)X 3704(quantiza-)X 864 5672(tion)N 1031(effects.)X 1338(Automatic)X 1739(stroke)X 1982(adjustment)X 2398(is)X 2485(a)X 2552(new)X 2726(component)X 3146(of)X 3247(the)X 3383(graphics)X 3709(state)X 3899(that)X 3461 6152(Lef\257er)N 3988(9)X 10 p %%Page: 10 10 0(Helvetica-Oblique)xf 0 f 11 s 11 xH 0 xS 0 f 1 f 5 f 864 464(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1368(Language)X 1737(Extensions)X 864 824(is)N 945(manipulated)X 1404(with)X 1583(the)X 1713(new)X 6 f 10 s 1881(setstrokadjust)X 1 f 11 s 2448(and)X 6 f 10 s 2597(currentstrokeadjust)X 1 f 11 s 3368(operators.)X 10 s 864 956(Ne)N 948(WS)X 11 s 1103(is)X 1197(less)X 1364(precise)X 1648(in)X 1752(de\256ning)X 2076(how)X 2262(it)X 2347(handles)X 2651(the)X 2794(rasterization)X 3265(process.)X 3608(There)X 3849(is)X 3944(no)X 864 1060(equivalent)N 1268(to)X 5 f 1376(D)X 9 s 1439(ISPLAY)X 11 s 1730(P)X 9 s 1789(OST)X 11 s (S)S 9 s 1996(CRIPT)X 1 f 11 s ('s)S 2310(stroke)X 2560(adjustment)X 2983(control.)X 10 s 3308(Ne)X 3392(WS)X 11 s 3547(does)X 3743(de\256ne)X 3993(a)X 864 1164(graphics)N 1192(state)X 1384(item,)X 2 f 1594(line)X 1757(quality)X 1 f 2017(,)X 2069(which)X 2314(is)X 2403(a)X 2472(number)X 2771(between)X 3094(0)X 3168(and)X 3325(1)X 3399(that)X 3562(`)X 3581(`controls)X 3924(the)X 864 1268(quality)N 1133(of)X 1229(lines)X 1419(rendered)X 1749(by)X 1860(the)X 6 f 10 s 1991(stroke)X 1 f 11 s 2253(primitive.')X 2619(')X 2671(Increasing)X 3060(this)X 3211(value)X 3425(increases)X 3769(the)X 3899(line)X 864 1372(quality)N 1141(at)X 1236(the)X 1375(expense)X 1689(of)X 1793(rendering)X 2161(time.)X 2394(A)X 2488(value)X 2710(of)X 2814(0)X 2889(renders)X 3178(lines)X 3376(as)X 3480(fast)X 3638(as)X 3743(possible)X 864 1476(with)N 1047(the)X 1181(least)X 1369(attention)X 1705(paid)X 1882(to)X 1976(quality.)X 2291(A)X 2379(value)X 2595(of)X 2693(1)X 2762(causes)X 3016(lines)X 3208(to)X 3302(be)X 3410(rendered)X 3742(with)X 3924(the)X 864 1580(highest)N 1146(possible)X 1462(quality:)X 1760(they)X 1939(will)X 2104(have)X 2297(the)X 2433(correct)X 2705(width,)X 2956(and)X 3111(all)X 3228(endcaps)X 3539(and)X 3694(joins)X 3894(will)X 864 1684(be)N 1006(correct.)X 1353(Intermediate)X 1858(values)X 2142(may)X 2353(give)X 2564(different)X 2925(quality/performance)X 3698(tradeoffs.)X 5 f 864 1788(D)N 9 s 927(ISPLAY)X 11 s 1204(P)X 9 s 1263(OST)X 11 s (S)S 9 s 1470(CRIPT)X 1 f 11 s 1708(effectively)X 2107(operates)X 2422(with)X 2601(line)X 2756(quality)X 3024(always)X 3290(set)X 3410(to)X 3501(1.)X 3 f 864 1996(2.9.)N 1040(Rectangle)X 1433(Operators)X 5 f 864 2128(D)N 9 s 927(ISPLAY)X 11 s 1214(P)X 9 s 1273(OST)X 11 s (S)S 9 s 1480(CRIPT)X 1 f 11 s 1728(de\256nes)X 2010(a)X 2082(number)X 2384(of)X 2490(new)X 2669(operators)X 3029(that)X 3195(work)X 3408(only)X 3598(with)X 3788(rectan-)X 864 2232(gles.)N 1079(Since)X 1304(rectangles)X 1690(are)X 1826(very)X 2011(common)X 2349(in)X 2447(window-oriented)X 3076(applications,)X 3553(their)X 3743(use)X 3888(can,)X 864 2336(according)N 1245(to)X 1348(the)X 5 f 1493(D)X 9 s 1556(ISPLAY)X 11 s 1846(P)X 9 s 1905(OST)X 11 s (S)S 9 s 2112(CRIPT)X 1 f 11 s 2363(documentation,)X 2945(`)X 2964(`)X 2 f 2993(signi\256cantly)X 3460(improve)X 3783(perfor-)X 864 2440(mance)N 1 f 1093(')X 1112('.)X 1208(It)X 1285(is)X 1367(unclear,)X 1671(however,)X 2018(just)X 2169(how)X 2343(much)X 2562(better)X 2786(special-purpose)X 3360(rectangle)X 3705(operators)X 864 2544(are)N 993(over)X 1171(simply)X 1434(using)X 1647(user)X 1815(paths)X 2024(\(described)X 2413(below\))X 2680(and/or)X 2928(recognizing)X 3367(and)X 3517(optimizing)X 3924(the)X 864 2648(handling)N 1201(of)X 1302(rectangular)X 1726(paths.)X 10 s 1980(Ne)X 2064(WS)X 11 s 2212(de\256nes)X 2489(a)X 2555(similar)X 2828(set)X 2953(of)X 3053(operations)X 3447(as)X 5 f 3550(P)X 9 s 3609(OST)X 11 s (S)S 9 s 3816(CRIPT)X 1 f 11 s 864 2752(procedures.)N 1320(Table)X 1548(2)X 1619(lists)X 1789(the)X 1924(new)X 2097(operators)X 2451(that)X 2611(work)X 2819(either)X 3048(on)X 3164(a)X 3231(single)X 3470(rectangle,)X 3843(or)X 3944(on)X 864 2856(an)N 969(in\256nite)X 1242(series)X 1464(of)X 1559(rectangles.)X 10 f 1665 2924(i)N 1691(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X 1 f 1709 3028(Operator)N 2294(Description)X 10 f 1665 3044(i)N 1691(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X 5 f 1709 3148(rect\256ll)N 2294(\256ll)X 1 f 2398(a)X 2459(rectangular)X 2877(path)X 5 f 1709 3252(rectstroke)N 2294(stroke)X 1 f 2556(a)X 2617(rectangular)X 3035(path)X 5 f 1709 3356(rectclip)N 1 f 2294(set)X 2414(a)X 2475(new)X 2 f 2643(clipping)X 2955(path)X 5 f 1709 3460(rectviewclip)N 1 f 2294(set)X 2414(a)X 2475(new)X 2 f 2643(view)X 2827(clip)X 2982(path)X 1 f 10 f 1665 3476(i)N 1691(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X 1665(c)X 3452(c)Y 3364(c)Y 3276(c)Y 3188(c)Y 3100(c)Y 3012(c)Y 3231 3476(c)N 3452(c)Y 3364(c)Y 3276(c)Y 3188(c)Y 3100(c)Y 3012(c)Y 1 f 1525 3680(Table)N 1748(2.)X 5 f 1836(D)X 9 s 1899(ISPLAY)X 11 s 2173(P)X 9 s 2232(OST)X 11 s (S)S 9 s 2439(CRIPT)X 1 f 11 s 2677(rectangle)X 3022(operators.)X 3 f 864 3888(2.10.)N 1084(User)X 1281(Paths)X 5 f 864 4020(D)N 9 s 927(ISPLAY)X 11 s 1212(P)X 9 s 1271(OST)X 11 s (S)S 9 s 1478(CRIPT)X 1 f 11 s 1724(introduces)X 2121(the)X 2259(concept)X 2563(of)X 2666(a)X 2 f 2736(user)X 2918(path)X 1 f 3075(,)X 3128(a)X 5 f 3201(P)X 9 s 3260(OST)X 11 s (S)S 9 s 3467(CRIPT)X 1 f 11 s 3714(language)X 864 4124(procedure)N 1238(consisting)X 1619(entirely)X 1912(of)X 2007(path)X 2181(construction)X 2639(operators)X 2988(and)X 3137(their)X 3321(coordinate)X 3715(operands)X 864 4228(expressed)N 1236(as)X 1335(literal)X 1568(numbers.)X 1941(A)X 2030(user)X 2202(path)X 2380(is)X 2465(a)X 2530(completely)X 2949(self-contained)X 3474(description)X 3893(of)X 3993(a)X 864 4332(path)N 1042(in)X 1137(user)X 1309(space.)X 1574(The)X 1737(\256rst)X 1900(`)X 1919(`real')X 2099(')X 2154(component)X 2572(of)X 2671(user)X 2843(path)X 3021(must)X 3219(be)X 3328(a)X 3393(speci\256cation)X 3865(for)X 3993(a)X 864 4436(bounding)N 1219(box)X 1373(around)X 1639(the)X 1769(path)X 9 s 1921 4408(7)N 11 s 4436(.)Y 2023(The)X 2182(bounding)X 2537(box)X 2691(information)X 3130(permits)X 3417(the)X 5 f 3550(P)X 9 s 3609(OST)X 11 s (S)S 9 s 3816(CRIPT)X 1 f 11 s 864 4540(interpreter,)N 1290(in)X 1396(most)X 1605(instances,)X 1987(to)X 2092(cache)X 2328(a)X 2403(bitmap)X 2685(representation)X 3220(of)X 3329(the)X 3473(path)X 3661(when)X 3887(it)X 3973(is)X 864 4644(stroked)N 1148(or)X 1246(\256lled.)X 1497(User)X 1687(paths)X 1898(are)X 2030(particularly)X 2463(useful)X 2704(for)X 2832(repetitive)X 3192(operations)X 3585(such)X 3772(as)X 3871(win-)X 864 4748(dow)N 1043(refresh.)X 1357(A)X 1447(compact)X 1773(representation)X 2299(allows)X 2556(for)X 2685(an)X 2795(ef\256cient)X 3111 0.2678(implementation,)AX 3716(and)X 3870(their)X 864 4852(restrictive)N 1271(semantics)X 1674(permits)X 1994(them)X 2226(to)X 2350(be)X 2488(interpreted)X 2925(without)X 3250(employing)X 3683(the)X 3846(usual)X 5 f 864 4956(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1400(mechanisms.)X 1934(User)X 2153(paths)X 2393(are)X 2553(not)X 2719(part)X 2909(of)X 3035(the)X 3196(standard)X 5 f 3550(P)X 9 s 3609(OST)X 11 s (S)S 9 s 3816(CRIPT)X 1 f 11 s 864 5060(language)N 1208(found)X 1439(in)X 1534(most)X 1732(printers,)X 2049(but)X 2188(they)X 2366(may)X 2544(be)X 2654(emulated)X 3005(\(although)X 3370(a)X 3436(complete)X 3787(emula-)X 864 5164(tion)N 1024(may)X 1198(be)X 1303(dif\256cult\).)X 864 5296(As)N 995(mentioned)X 1402(above,)X 10 s 1666(Ne)X 1750(WS)X 11 s 1904(provides)X 2242(no)X 2365(equivalent)X 2768(facility.)X 3098(The)X 3270(facilities)X 3610(to)X 3714(save)X 3905(and)X 864 5400(restore)N 1134(a)X 1203(path)X 1385(work)X 1595(only)X 1782(on)X 1900(the)X 2038(transformed)X 2493(representation)X 3022(of)X 3125(a)X 3194(path,)X 3398(making)X 3693(it)X 3773(far)X 3900(less)X 9 s 10 f 864 5488(hhhhhhhhhhhhhhhh)N 7 s 1 f 944 5568(7)N 9 s 1008 5590(A)N 6 f 8 s 1078(ucache)X 1 f 9 s 1318(request)X 1544(may)X 1686(actually)X 1932(appear)X 2142(\256rst)X 2272(to)X 2346(control)X 2568(whether)X 2818(or)X 2896(not)X 3006(the)X 3112(path)X 3254(is)X 3320(cached.)X 11 s 864 6152(10)N 5 f 1240(D)X 9 s 1303(ISPLAY)X 1 f 11 s 5 f 1577(P)X 9 s 1636(OST)X 11 s (S)S 9 s 1843(CRIPT)X 1 f 11 s 2081(and)X 10 s 2230(Ne)X 2314(WS)X 11 p %%Page: 11 11 0(Helvetica-Oblique)xf 0 f 10 s 10 xH 0 xS 0 f 11 s 1 f 3654 464(User)N 3841(Paths)X 864 824(\257exible)N 1152(than)X 1327(a)X 1389(user)X 1558(path.)X 1777(A)X 1863(facility)X 2137(like)X 2293(a)X 2355(user)X 2524(path)X 2699(was)X 2858(not)X 2995(included)X 3323(in)X 10 s 3414(Ne)X 3498(WS)X 11 s 3642(for)X 3768(compa-)X 864 928 0.4821(tibility)AN 1124(reasons)X 9 s 1387 900(8)N 11 s 928(.)Y 3 f 864 1136(2.11.)N 1084(Color)X 1321(Support)X 1 f 864 1268(The)N 1035(original)X 5 f 1347(P)X 9 s 1406(OST)X 11 s (S)S 9 s 1613(CRIPT)X 1 f 11 s 1864(de\256nition)X 2238(supports)X 2571(color)X 2787(only)X 2979(through)X 3288(the)X 6 f 10 s 3431(setrgbcolor)X 1 f 11 s 3905(and)X 6 f 10 s 864 1372(sethsbcolor)N 1 f 11 s 1350(operators.)X 1754(These)X 1997(allow)X 2226(an)X 2342(application)X 2768(to)X 2870(set)X 3001(the)X 3142(current)X 3424(drawing)X 3745(color)X 3959(as)X 864 1476(either)N 1102(a)X 1178(red-green-blue)X 1732(or)X 1842(hue-saturation-brightness)X 2774(triple.)X 3042(This)X 3236(was)X 3410(inadequate,)X 3852(how-)X 864 1580(ever,)N 1067(in)X 1166(that)X 1329(color)X 1540(images)X 1820(could)X 2046(not)X 2189(be)X 2301(imported,)X 2671(and)X 2827(there)X 3032(was)X 3197(no)X 3314(mechanism)X 3745(for)X 3876(con-)X 864 1684(trolling)N 1147(color)X 1350(correction)X 1729(or)X 1824(color)X 2027(halftoning.)X 10 s 864 1816(Ne)N 948(WS)X 11 s 1105(addressed)X 1488(color)X 1706(with)X 1901(several)X 2188(additions.)X 2594(Most)X 2813(importantly,)X 3286(a)X 3363(new)X 5 f 3550(P)X 9 s 3609(OST)X 11 s (S)S 9 s 3816(CRIPT)X 1 f 11 s 864 1920(type)N 1040(for)X 1166(color)X 1370(was)X 1529(added.)X 1806(A)X 1892(new)X 6 f 10 s 2061(currentcolor)X 1 f 11 s 2554(operator)X 2870(returns)X 3137(the)X 3268(current)X 3540(drawing)X 3851(color)X 864 2024(from)N 1061(the)X 1195(graphics)X 1519(state,)X 1729(while)X 1951(the)X 6 f 10 s 2085(setcolor)X 1 f 11 s 2421(operator)X 2740(sets)X 2898(the)X 3032(current)X 3307(drawing)X 3621(color)X 3828(in)X 3924(the)X 864 2128(graphics)N 1203(state.)X 1450(These)X 1701(operators)X 2069(return)X 2320(consistent)X 2714(results)X 2984(whether)X 3307(the)X 3455(current)X 3744(drawing)X 864 2232(color)N 1075(is)X 1164(a)X 1234(full)X 1388(color)X 1600(value)X 1822(or)X 1926(a)X 1996(gray)X 2183(scale)X 2390(value.)X 2656(The)X 6 f 10 s 2824(hsbcolor)X 1 f 11 s 3192(and)X 6 f 10 s 3350(rgbcolor)X 1 f 11 s 3705(operators)X 864 2336(take)N 1036(h-s-b)X 1241(and)X 1393(r-g-b)X 1593(triples)X 1839(and)X 1991(return)X 2226(a)X 2290(color)X 2496(object)X 2736(matching)X 3089(the)X 3221(requested)X 3582(values.)X 3875(This)X 864 2440(permits)N 1151(the)X 1281(old)X 6 f 10 s 1416(setrgbcolor)X 1 f 11 s 1877(and)X 6 f 10 s 2026(sethsbcolor)X 1 f 11 s 2500(operators)X 2849(to)X 2940(be)X 3045(emulated)X 3391(as)X 5 f 1304 2585(/setrgbcolor)N 1789({rgbcolor)X 2160(setcolor})X 2522(def)X 1304 2689(/sethsbcolor)N 1804({hsbcolor)X 2190(setcolor})X 2552(def)X 1 f 864 2834(Most)N 1074(importantly,)X 1538(since)X 1748(color)X 1958(is)X 2046(a)X 2114(full-\257edged)X 2554(object,)X 2821(applications)X 3277(can)X 3428(manipulate)X 3851(color)X 864 2938(objects)N 1160(without)X 1476(concern)X 1800(for)X 1948(the)X 2102(type)X 2299(of)X 2417(output)X 2688(device)X 2963(\(color,)X 3240(grey)X 3441(scale,)X 3684(or)X 3802(mono-)X 864 3042(chromatic\).)N 1318(For)X 1468(applications)X 1923(that)X 2084(require)X 2361(knowledge)X 2775(of)X 2876(the)X 3012(type)X 3192(of)X 3293(display)X 3577(device)X 3836(being)X 864 3146(used,)N 1076(it)X 1155(is)X 1243(possible)X 1561(to)X 1659(query)X 1888(a)X 1956(drawing)X 2273(surface)X 2555(to)X 2653(\256nd)X 2819(out)X 2961(if)X 3044(it)X 3122(is)X 3209(associated)X 3599(with)X 3784(a)X 3851(color)X 864 3250(display)N 1154(\(through)X 1492(the)X 1635(boolean)X 6 f 10 s 1949(/Color)X 1 f 11 s 2215(entry)X 2431(in)X 2535(a)X 2609(canvas's)X 2946(pseudo-dictionary\).)X 3690(The)X 6 f 10 s 3863(con-)X 864 3354(trastswithcurrent)N 1 f 11 s 1544(operator)X 1865(is)X 1952(also)X 2122(available)X 2468(to)X 2564(compare)X 2894(a)X 2960(speci\256c)X 3256(color)X 3464(with)X 3648(the)X 3783(current)X 864 3458(drawing)N 1174(color)X 1377(to)X 1468(\256nd)X 1627(out)X 1762(if)X 1838(they)X 2012(differ)X 2229(due)X 2378(to)X 2470(characteristics)X 2997(of)X 3093(the)X 3224(output)X 3473(device)X 3726(\(the)X 3886(nor-)X 864 3562(mal)N 5 f 1029(P)X 9 s 1088(OST)X 11 s (S)S 9 s 1295(CRIPT)X 1 f 11 s 1540(comparison)X 1980(operators)X 2336(can)X 2487(be)X 2599(used)X 2789(to)X 2887(compare)X 3218(color)X 3427(objects\).)X 3778(Instead)X 864 3666(of)N 965(extending)X 1341(the)X 6 f 10 s 1477(image)X 1 f 11 s 1735(operator)X 2056(to)X 2153(handle)X 2416(color,)X 2647(a)X 2714(new)X 6 f 10 s 2888(buildimage)X 1 f 11 s 3337(operator)X 3658(was)X 3822(added)X 864 3770(that)N 1034(creates)X 1315(a)X 1391(canvas)X 1667(object)X 1920(from)X 2128(an)X 2248(image-like)X 2663(description.)X 3135(This)X 3328(canvas)X 3603(can)X 3761(then)X 3949(be)X 864 3874(imaged)N 1146(on)X 1256(a)X 1317(display)X 1594(device)X 1846(with)X 2025(an)X 6 f 10 s 2130 -0.3625(imagecanvas)AX 1 f 11 s 2651(or)X 6 f 10 s 2746 -0.3750(imagemaskcanvas)AX 1 f 11 s 3470(operator.)X 5 f 864 4006(D)N 9 s 927(ISPLAY)X 11 s 1223(P)X 9 s 1282(OST)X 11 s (S)S 9 s 1489(CRIPT)X 1 f 11 s ('s)S 1809(extensions,)X 2244(in)X 2354(contrast,)X 2696(are)X 2845(more)X 3068(directed)X 3394(at)X 3500(handling)X 3851(color)X 864 4110(printers.)N 1212(Direct)X 1467(support)X 1766(for)X 1903(the)X 10 s 2044(CMYK)X 11 s 2319(color)X 2535(model)X 2791(was)X 2961(added)X 3205(and)X 3366(the)X 3508(halftoning)X 3905(and)X 864 4214(transfer)N 1168(components)X 1630(of)X 1739(the)X 1883(device)X 2150(state)X 2349(extended)X 2704(to)X 2810(fully)X 3014(handle)X 3286(the)X 10 s 3429(RGB)X 11 s 3630(and)X 10 s 3792(CMYK)X 11 s 864 4318(models.)N 1186(A)X 1272(new)X 6 f 10 s 1441(deviceinfo)X 1 f 11 s 1858(operator)X 2173(returns)X 2439(a)X 2500(dictionary)X 2880(containing)X 3275(a)X 3336(speci\256cation)X 3804(of:)X 3924(the)X 864 4422(number)N 1158(of)X 1256(color)X 1462(components,)X 1935(the)X 2068(number)X 2362(of)X 2460(bits)X 2613(per)X 2750(sample)X 3025(for)X 3152(red,)X 3312(green,)X 3555(blue,)X 3755(or)X 3854(gray,)X 864 4526(and)N 1025(the)X 1167(number)X 1470(of)X 1577(bits)X 1739(per)X 1885(pixel.)X 2140(Finally,)X 2447(a)X 2520(new)X 6 f 10 s 2700(colorimage)X 1 f 11 s 3159(operator)X 3486(was)X 3656(added)X 3899(that)X 864 4630(supports)N 1198(the)X 1342(functionality)X 1830(of)X 1939(the)X 6 f 10 s 2083(image)X 1 f 11 s 2349(operator)X 2678(and)X 2841(also)X 3019(handles)X 3324(multi-channel)X 3851(color)X 864 4734(images.)N 1182(The)X 6 f 10 s 1343(colorimage)X 1 f 11 s 1792(operator)X 2109(handles)X 2402(1,)X 2492(3)X 2560(\()X 10 s 2589(RGB)X 11 s 2753(\),)X 2828(or)X 2925(4)X 2992(\()X 10 s 3021(CMYK)X 11 s (\))S 3313(channel)X 3610(images,)X 3905(and)X 864 4838(the)N 995(data)X 1165(may)X 1340(be)X 1446(organized)X 1816(either)X 2040(as)X 2136(a)X 2198(merged)X 2485(data)X 2655(stream)X 2913(\(e.g.)X 10 s 3090(RGBRGB...)X 11 s 3478(\),)X 3552(or)X 3648(as)X 3744(separate)X 864 4942(streams)N 1158(of)X 1256(data)X 1428(\(e.g.)X 10 s 1627(RRR...GGG...BBB..)X 11 s 2279(\).)X 2377(Data)X 2567(may)X 2743(have)X 2933(no)X 3045(more)X 3250(than)X 3426(8)X 3494(bits)X 3646(per)X 3782(sample)X 864 5046(\(as)N 988(in)X 10 s 1077(Ne)X 1161(WS)X 11 s (\).)S 864 5178(The)N 1028(de\256nition)X 1394(of)X 1494(a)X 1561(color)X 1770(type)X 1950(in)X 10 s 2045(Ne)X 2129(WS)X 11 s 2277(is)X 2364(a)X 2431(worthwhile)X 2860(addition)X 3178(that)X 3339(permits)X 3632(the)X 3768(support)X 864 5282(of)N 966(many)X 1190(different)X 1521(color)X 1730(models.)X 2057(To)X 2183(fully)X 2378(carry)X 2586(this)X 2742(out,)X 2905(however,)X 3257(it)X 3335(must)X 3535(be)X 3646(possible)X 3963(to)X 864 5386(de\256ne)N 1106(colors)X 1349(that)X 1510(are)X 1645(not)X 1786(just)X 1942(three)X 2146(components,)X 2622(but)X 2763(have)X 2957(multichannel)X 3447(spectral)X 3749(values)X 9 s 3974 5358(9)N 11 s 5386(.)Y 9 s 10 f 864 5474(hhhhhhhhhhhhhhhh)N 7 s 1 f 944 5554(8)N 9 s 1008 5576(Gosling,)N 1272(private)X 1490(communication;)X 1976(1988.)X 7 s 944 5656(9)N 9 s 1008 5678(See)N 1141(Version)X 1398(3.0)X 1517(of)X 1606(the)X 5 f 8 s 1724(RenderMan)X 1 f 9 s 2090(Interface)X 2376(Speci\256cation)X 2782(for)X 2896(an)X 2994(example)X 3268(of)X 3358(a)X 3420(system)X 3650(that)X 3788(supports)X 11 s 3417 6152(Lef\257er)N 3944(11)X 12 p %%Page: 12 12 0(Helvetica-Oblique)xf 0 f 11 s 11 xH 0 xS 0 f 1 f 5 f 864 464(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1368(Language)X 1737(Extensions)X 864 824(The)N 1027(addition)X 1343(of)X 1442(support)X 1732(for)X 1860(the)X 10 s 1992(CMYK)X 11 s 2258(color)X 2465(model)X 2712(in)X 5 f 2810(D)X 9 s 2873(ISPLAY)X 11 s 3154(P)X 9 s 3213(OST)X 11 s (S)S 9 s 3420(CRIPT)X 1 f 11 s (,)S 3684(for)X 3812(exam-)X 864 928(ple,)N 1016(could)X 1234(have)X 1422(been)X 1610(done)X 1803(more)X 2006(cleanly)X 2283(if)X 2359(such)X 2542(a)X 2603(facility)X 2876(existed.)X 864 1060(While)N 10 s 1103(Ne)X 1187(WS)X 11 s 1332(acknowledges)X 1856(the)X 1990(possibility)X 2385(that)X 2544(colors)X 2785(displayed)X 3149(on)X 3263(an)X 3372(output)X 3624(device)X 3880(may)X 864 1164(not)N 1015(be)X 1136(exactly)X 1429(those)X 1653(requested)X 2028(by)X 2154(an)X 2275(application,)X 2728(it)X 2816(provides)X 3157(no)X 3283(facility)X 3572(by)X 3697(which)X 3949(an)X 864 1268(application)N 1304(can)X 2 f 1473(control)X 1 f 1789(the)X 1945(mapping)X 2302(between)X 2643(a)X 2730(desired)X 3032(color)X 3261(and)X 3436(the)X 3592(actual)X 3851(color)X 864 1372(displayed.)N 1269(The)X 5 f 1432(D)X 9 s 1495(ISPLAY)X 11 s 1773(P)X 9 s 1832(OST)X 11 s (S)S 9 s 2039(CRIPT)X 1 f 11 s 2278(transfer)X 2568(and)X 2717(halftoning)X 3102(facilities)X 3429(are)X 3558(only)X 3737(partially)X 864 1476(successful)N 1257(in)X 1358(this)X 1518(respect.)X 1843(The)X 2013(support)X 2310(for)X 2 f 2445(colormap)X 1 f 2829(objects)X 3112(in)X 3214(the)X 3355(X11/)X 10 s (Ne)S 3615(WS)X 11 s 3768(merged)X 864 1580(server)N 1100(does)X 1283(not)X 1418(fully)X 1607(address)X 1892(these)X 2095(problems.)X 864 1712(The)N 6 f 10 s 1034(colorimage)X 1 f 11 s 1492(operator)X 1818(in)X 5 f 1923(D)X 9 s 1986(ISPLAY)X 11 s 2274(P)X 9 s 2333(OST)X 11 s (S)S 9 s 2540(CRIPT)X 1 f 11 s 2790(is)X 2883(a)X 2956(reasonably)X 3371(clean)X 3591(extension)X 3963(to)X 864 1816(handle)N 1129(color)X 1340(images.)X 1664(It)X 1748(is)X 1836(not)X 1978(completely)X 2400(backwards)X 2804(compatible)X 3226(with)X 3412(the)X 6 f 10 s 3549(image)X 1 f 11 s 3808(opera-)X 864 1920(tor.)N 1038(The)X 10 s 1205(Ne)X 1289(WS)X 11 s 1441(facilities)X 1778(for)X 1912(image)X 2160(manipulation)X 2659(are)X 2799(less)X 2964(\257exible,)X 3284(but)X 3430(nicely)X 3679(integrated)X 864 2024(with)N 1058(drawing)X 1383(surfaces.)X 1751(Importantly,)X 2227(they)X 2416(permit)X 2684(an)X 2804(application)X 3233(to)X 3338(redisplay)X 3697(an)X 3816(image)X 864 2128(without)N 1189(having)X 1484(to)X 1608(recalculate)X 2045(its)X 2184(contents)X 2534(\(something)X 2987(not)X 3156(possible)X 3501(with)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 2232(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s (,)S 1445(although)X 1831(one)X 2035(would)X 2332(expect)X 2639(the)X 2824(window)X 3184(system)X 3505(that)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 2336(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1368(is)X 1449(embedded)X 1833(in)X 1924(to)X 2015(support)X 2301(such)X 2484(a)X 2545(facility.\))X 864 2468(The)N 1041(use)X 1198(of)X 1311(color)X 1532(causes)X 1801(the)X 1950(amount)X 2256(of)X 2370(data)X 2558(needed)X 2848(to)X 2958(specify)X 3253(an)X 3377(image)X 3634(to)X 3744(increase)X 864 2572(signi\256cantly.)N 1371(Unfortunately,)X 1913(neither)X 5 f 2186(D)X 9 s 2249(ISPLAY)X 11 s 2529(P)X 9 s 2588(OST)X 11 s (S)S 9 s 2795(CRIPT)X 1 f 11 s 3036(or)X 10 s 3132(Ne)X 3216(WS)X 11 s 3361(provide)X 3655(direct)X 3881(sup-)X 864 2676(port)N 1034(for)X 1164(decoding)X 1515(compressed)X 1958(image)X 2202(data.)X 2421(The)X 2586(procedural)X 2990(hooks)X 3228(provided)X 3569(in)X 3666(the)X 6 f 10 s 3802(image)X 1 f 11 s 864 2780(operator)N 1191(should)X 1460(be)X 1577(suf\256cient)X 1939(to)X 2042(implement)X 2455(decoding)X 2812(algorithms)X 3224(in)X 5 f 3329(P)X 9 s 3388(OST)X 11 s (S)S 9 s 3595(CRIPT)X 1 f 11 s 3844(code,)X 864 2884(but)N 1005(it)X 1083(is)X 1170(unlikely)X 1488(that)X 1649(this)X 1806(is)X 1894(ef\256cient)X 2212(enough)X 2500(for)X 2631(an)X 2743(interactive)X 3145(environment.)X 3664(The)X 10 s 3828(Ne)X 3912(WS)X 6 f 864 2988(readimage)N 1 f 11 s 1292(operator)X 1615(that)X 1778(creates)X 2052(a)X 2121(canvas)X 2390(object)X 2635(by)X 2752(reading)X 3045(an)X 3157(image)X 3402(from)X 3602(a)X 3670(\256le)X 3812(would)X 864 3092(be)N 973(more)X 1180(useful)X 1421(if)X 1501(the)X 1635(\256le)X 1774(format)X 2035(were)X 2231(something)X 2625(other)X 2832(than)X 3010(the)X 3144(crufty)X 3380(Sun)X 2 f 3543(raster\256le)X 1 f 3901(for-)X 864 3196(mat)N 9 s 997 3168(10)N 11 s 3196(.)Y 3 f 864 3404(2.12.)N 1084(Miscellaneous)X 1635(Additions)X 1 f 864 3536(There)N 1093(are)X 1224(numerous)X 1596(other)X 1802(additions)X 2151(in)X 5 f 2248(D)X 9 s 2311(ISPLAY)X 11 s 2591(P)X 9 s 2650(OST)X 11 s (S)S 9 s 2857(CRIPT)X 1 f 11 s (.)S 3142(Several)X 3431(are)X 3563(earmarked)X 3959(as)X 864 3640(speci\256c)N 1155(to)X 1246(window)X 1551(system.)X 1862(These)X 2094(are)X 2223(listed)X 2437(in)X 2528(Table)X 2751(3.)X 10 f 1009 3708(i)N 1026(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X 1 f 1053 3812(Operator)N 1713(Description)X 10 f 1009 3828(i)N 1026(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X 5 f 1053 3932(currentdevice)N 1 f 1713(return)X 1945(information)X 2384(about)X 2602(current)X 2873(display)X 3150(device)X 5 f 1053 4036(in\256ll)N 1 f 1713(test)X 1858(whether)X 2163(point)X 2367(would)X 2609(be)X 2714(painted)X 2996(by)X 5 f 3106(\256ll)X 1053 4140(ineo\256ll)N 1 f 1713(test)X 1858(whether)X 2163(point)X 2367(would)X 2609(be)X 2714(painted)X 2996(by)X 5 f 3106(eo\256ll)X 1053 4244(inu\256ll)N 1 f 1713(test)X 1858(whether)X 2163(point)X 2367(would)X 2609(be)X 2714(painted)X 2996(by)X 5 f 3106(u\256ll)X 1053 4348(inueo\256ll)N 1 f 1713(test)X 1858(whether)X 2163(point)X 2367(would)X 2609(be)X 2714(painted)X 2996(by)X 5 f 3106(ueo\256ll)X 1053 4452(instroke)N 1 f 1713(test)X 1858(whether)X 2163(point)X 2367(would)X 2609(be)X 2714(painted)X 2996(by)X 5 f 3106(instrok)X 1053 4556(inustroke)N 1 f 1713(test)X 1858(whether)X 2163(point)X 2367(would)X 2609(be)X 2714(painted)X 2996(by)X 5 f 3106(inustrok)X 1053 4660(wtranslation)N 1 f 1713(return)X 1945(translation)X 2340(from)X 2533(window)X 2838(origin)X 3071(to)X 3162(device)X 3414(space)X 3631(origin)X 10 f 1009 4676(i)N 1026(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X 1009(c)X 4588(c)Y 4500(c)Y 4412(c)Y 4324(c)Y 4236(c)Y 4148(c)Y 4060(c)Y 3972(c)Y 3884(c)Y 3796(c)Y 3886 4676(c)N 4588(c)Y 4500(c)Y 4412(c)Y 4324(c)Y 4236(c)Y 4148(c)Y 4060(c)Y 3972(c)Y 3884(c)Y 3796(c)Y 1 f 1268 4880(Table)N 1491(3.)X 5 f 1579(D)X 9 s 1642(ISPLAY)X 11 s 1916(P)X 9 s 1975(OST)X 11 s (S)S 9 s 2182(CRIPT)X 1 f 11 s 2420(window)X 2725(system)X 2992(support)X 3278(operators.)X 10 s 864 4984(Ne)N 948(WS)X 11 s 1097(provides)X 1429(a)X 6 f 10 s 1497(pointinpath)X 1 f 11 s 1962(operator)X 2284(that)X 2446(is)X 2534(equivalent)X 2931(to)X 6 f 10 s 3029(in\256ll)X 1 f 11 s 3193(,)X 3244(but)X 3387(nothing)X 3687(similar)X 3963(to)X 864 5088(the)N 994(other)X 5 f 1200(D)X 9 s 1263(ISPLAY)X 11 s 1540(P)X 9 s 1599(OST)X 11 s (S)S 9 s 1806(CRIPT)X 1 f 11 s 2044(operators.)X 9 s 10 f 864 5322(hhhhhhhhhhhhhhhh)N 1 f 864 5410(many)N 1042(different)X 1308(color)X 1474(models.)X 7 s 944 5490(10)N 9 s 1036 5512(For)N 1154(example,)X 1434(Aldus/Microsoft's)X 1980(Tag)X 2110(Image)X 2308(File)X 2438(Format)X 2664(\(TIFF\).)X 11 s 864 6152(12)N 5 f 1240(D)X 9 s 1303(ISPLAY)X 1 f 11 s 5 f 1577(P)X 9 s 1636(OST)X 11 s (S)S 9 s 1843(CRIPT)X 1 f 11 s 2081(and)X 10 s 2230(Ne)X 2314(WS)X 13 p %%Page: 13 13 0(Helvetica-Oblique)xf 0 f 10 s 10 xH 0 xS 0 f 11 s 1 f 3433 464(What's)N 3709(Missing?)X 3 f 864 824(2.13.)N 1084(What's)X 1379(Missing?)X 1 f 864 956(There)N 1102(are)X 1242(several)X 1525(areas)X 1739(that)X 5 f 1909(D)X 9 s 1972(ISPLAY)X 11 s 2261(P)X 9 s 2320(OST)X 11 s (S)S 9 s 2527(CRIPT)X 1 f 11 s 2777(does)X 2972(not)X 3119(address)X 3416(in)X 3519(the)X 3661(support)X 3959(of)X 864 1060(interactive)N 1266(systems.)X 1618(Some)X 1848(of)X 1950(these)X 2159(are)X 2294(required)X 2615(for)X 2745(virtually)X 3073(any)X 3228(window)X 3539(system)X 3812(that)X 3973(is)X 864 1164(built)N 1057(on)X 1175(top)X 1318(it.)X 1442(Other)X 1672(areas)X 1883(seem)X 2095(as)X 2199(if)X 2284(they)X 2467(should)X 2733(be)X 2847(addressed)X 3224(to)X 3324(ensure)X 3584(that)X 3748(applica-)X 864 1268(tions)N 1059(that)X 1215(are)X 1345(built)X 1531(on)X 1642(top)X 1778(of)X 5 f 1877(D)X 9 s 1940(ISPLAY)X 11 s 2218(P)X 9 s 2277(OST)X 11 s (S)S 9 s 2484(CRIPT)X 1 f 11 s 2723(are)X 2853(portable.)X 3209(Portability,)X 3627(however,)X 3973(is)X 864 1372(not)N 1015(possible)X 1342(with)X 1537(any)X 5 f 1705(D)X 9 s 1768(ISPLAY)X 11 s 2061(P)X 9 s 2120(OST)X 11 s (S)S 9 s 2327(CRIPT)X 1 f 11 s (-based)S 2810(application)X 3241(because)X 3558(there)X 3773(are)X 3919(too)X 864 1476(many)N 1090(facilities)X 1425(that)X 1588(are)X 1725(left)X 1873(unspeci\256ed)X 2303(\(e.g.)X 2488(connection)X 2904(management,)X 3406(drawing)X 3723(surfaces,)X 864 1580(and)N 1013(input)X 1217(handling\).)X 864 1712(The)N 1026(\256rst,)X 1210(most)X 1407(obvious)X 1711(facility,)X 2009(that)X 2167(is)X 2252(missing)X 2553(is)X 2638(a)X 2703(mechanism)X 3131(for)X 3259(copying)X 3569(an)X 3678(area)X 3850(of)X 3949(an)X 864 1816(image)N 1103(from)X 1297(one)X 1447(place)X 1655(on)X 1765(the)X 1895(display)X 2172(to)X 2263(another.)X 2593(This)X 2772(facility)X 3045(is)X 3126(necessary)X 3489(for)X 3613(the)X 3743(ef\256cient)X 864 1920 0.2884(implementation)AN 1452(of)X 1557(scrolling.)X 10 s 1938(Ne)X 2022(WS)X 11 s 2174(de\256nes)X 2455(a)X 6 f 10 s 2527(copyarea)X 1 f 11 s 2909(operator)X 3235(that)X 3401(cleanly)X 3689(integrates)X 864 2024(this)N 1026(function)X 1354(into)X 1525(the)X 1666(standard)X 5 f 2000(P)X 9 s 2059(OST)X 11 s (S)S 9 s 2266(CRIPT)X 1 f 11 s 2515(imaging)X 2838(model.)X 3136(The)X 3306(NeXT)X 3558(extensions)X 3963(to)X 5 f 864 2128(D)N 9 s 927(ISPLAY)X 11 s 1214(P)X 9 s 1273(OST)X 11 s (S)S 9 s 1480(CRIPT)X 1 f 11 s 1728(include)X 2020(a)X 6 f 10 s 2091(composite)X 1 f 11 s 2522(operator)X 2847(that)X 3012(is)X 3103(based)X 3335(on)X 3455(the)X 3595(compositing)X 864 2232(formalisms)N 1283(presented)X 1642(by)X 1752(Porter)X 1989(and)X 2138(Duff)X 9 s 2303 2204(11)N 11 s 2232(.)Y 864 2364(A)N 951(second)X 1219(facility)X 1494(that)X 1651(is)X 1734(missing)X 2033(is)X 2116(a)X 2179(way)X 2349(to)X 2442(draw)X 2641(images)X 2915(that)X 3072(are)X 3204(only)X 3386(present)X 3665(for)X 3792(a)X 3856(short)X 864 2468(period)N 1132(of)X 1248(time;)X 1474(for)X 1619(example,)X 1983(a)X 2065(cursor)X 2327(image)X 2585(or)X 2700(some)X 2928(form)X 3141(of)X 3256(highlighting.)X 3775(Such)X 3993(a)X 864 2572(mechanism)N 1295(is)X 1383(usually)X 1667(needed)X 1946(even)X 2142(if)X 2226(the)X 2364(system)X 2639(supports)X 2967(multiple)X 3293(overlapping)X 3744(drawing)X 864 2676(surfaces)N 1176(because)X 1479(these)X 1685(objects)X 1960(tend)X 2137(to)X 2231(be)X 2339(too)X 2477(expensive)X 2853(to)X 2946(use)X 3087(for)X 3213(short)X 3413(bursts)X 3647(of)X 3744(activity.)X 10 s 864 2780(Ne)N 948(WS)X 11 s 1100(has)X 1249(the)X 1389(notion)X 1648(of)X 1754(an)X 2 f 1870(overlay)X 2167(canvas)X 1 f 2411(;)X 2469(a)X 2541(canvas)X 2813(that)X 2979(is)X 3071(temporarily)X 3516(present)X 3803(on)X 3924(the)X 864 2884(display.)N 1195(The)X 1364(overlay)X 1660(canvas)X 1931(facility)X 2213(provides)X 2547(limited)X 2830(drawing)X 3149(functionality)X 3632(that)X 3796(can)X 3949(be)X 864 2988(implemented,)N 1399(for)X 1552(example,)X 1924(with)X 2132(overlay)X 2447(bitplanes.)X 2861(Overlay)X 3195(canvases)X 3558(are)X 3717(used)X 3930(for)X 864 3092(highlighting)N 1329(selections,)X 1731(for)X 1865(feedback)X 2214(during)X 2476(rubberbanding)X 3021(operations,)X 3442(etc.)X 3621(Cursors)X 3925(are)X 864 3196(supported)N 1244(directly)X 1547(as)X 1653(an)X 1769(additional)X 2156(object)X 2405(that)X 2572(is)X 2665(associated)X 3061(with)X 3252(a)X 3325(canvas.)X 3642(The)X 3813(NeXT)X 864 3300(window)N 1171(system)X 1440(de\256nes)X 1713(a)X 1776(facility)X 2051(that)X 2208(is)X 2290(equivalent)X 2681(to)X 10 s 2771(Ne)X 2855(WS)X 11 s ('s)S 3061(overlay)X 3348(canvas,)X 3632(an)X 2 f 3738(instance)X 864 3404(drawing)N 1183(mode)X 1 f 1412(wherein)X 1720(the)X 1853(contents)X 2172(of)X 2270(a)X 2334(window)X 2642(are)X 2774(saved)X 3000(while)X 3222(instance)X 3537(drawing)X 3851(takes)X 864 3508(place.)N 1116(Cursors)X 1411(are)X 1540(also)X 1704(directly)X 1996(supported)X 2365(as)X 2460(an)X 2565(attribute)X 2882(of)X 2977(a)X 3038(window.)X 5 f 864 3640(D)N 9 s 927(ISPLAY)X 11 s 1205(P)X 9 s 1264(OST)X 11 s (S)S 9 s 1471(CRIPT)X 1 f 11 s 1710(would)X 1954(bene\256t)X 2218(greatly)X 2487(by)X 2599(the)X 2731(addition)X 3045(of)X 3142(a)X 3205(drawing)X 3517(surface)X 3794(object.)X 864 3744(While)N 1105(this)X 1258(might)X 1490(make)X 1706(it)X 1781(more)X 1986(dif\256cult)X 2290(to)X 2383(integrate)X 5 f 2719(D)X 9 s 2782(ISPLAY)X 11 s 3061(P)X 9 s 3120(OST)X 11 s (S)S 9 s 3327(CRIPT)X 1 f 11 s 3567(into)X 3729(an)X 3836(exist-)X 864 3848(ing)N 1001(window)X 1308(system,)X 1599(it)X 1673(would)X 1917(provide)X 2210(an)X 2317(important)X 2685(intermediate)X 3151(layer)X 3352(between)X 3670(the)X 3803(graph-)X 864 3952(ics)N 988(state)X 1176(and)X 1329(an)X 1438(underlying)X 1846(display)X 2127(device.)X 2427(In)X 2526(particular,)X 2912(a)X 2977(drawing)X 3291(surface)X 3570(object)X 3812(would)X 864 4056(permit)N 1129(a)X 1202(concrete)X 1534(speci\256cation)X 2014(for)X 2150(the)X 2292(handling)X 2636(of:)X 2769(damage)X 3078(repair,)X 3340(input)X 3557 0.2760(multiplexing,)AX 864 4160(and)N 1014(retained)X 1320(drawing)X 1630(images.)X 1946(Additionally,)X 2437(in)X 2528(the)X 2658(current)X 2929(architecture,)X 3389(a)X 3450(window)X 3755(must)X 3949(be)X 864 4264(modeled)N 1195(as)X 1295(a)X 1362(device.)X 1664(This)X 1849(can)X 1999(cause)X 2222(confusion)X 2597(when)X 2815(information)X 3260(exists)X 3489(both)X 3674(for)X 3804(a)X 3871(win-)X 864 4368(dow)N 1042(and)X 1196(the)X 2 f 1331(underlying)X 1 f 1754(hardware)X 2107(device)X 2364(that)X 2523(the)X 2657(window)X 2966(resides)X 3236(on)X 3350(\(for)X 3507(example)X 3832(infor-)X 864 4472(mation)N 1132(about)X 1350(color\).)X 5 f 864 4604(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1373(is)X 1459(de\256ned)X 1745(with)X 1929(a)X 1995(write-only)X 2389(model.)X 2681(That)X 2870(is,)X 2978(there)X 3181(is)X 3267(no)X 3382(way)X 3555(to)X 3652(retrieve)X 3949(an)X 864 4708(image's)N 1179(representation)X 1714(once)X 1916(it)X 2002(has)X 2155(been)X 2357(rendered.)X 10 s 2739(Ne)X 2823(WS)X 11 s 2978(provides)X 3316(a)X 3390(limited)X 3677(facility)X 3963(to)X 864 4812(retrieve)N 1163(data)X 1340(in)X 1439(the)X 6 f 10 s 1577 -0.3125(writecanvas)AX 1 f 11 s 2062(and)X 6 f 10 s 2219(writescreen)X 1 f 11 s 2691(operators,)X 3070(but)X 3213(these)X 3424(are)X 3561(blemishes)X 3944(on)X 864 4916(the)N 995(general)X 5 f 1280(P)X 9 s 1339(OST)X 11 s (S)S 9 s 1546(CRIPT)X 1 f 11 s 1785(imaging)X 2098(model.)X 2386(A)X 2472(better)X 2695(mechanism)X 3119(that)X 3274(provides)X 3599(more)X 3802(device)X 864 5020(independence)N 1374(is)X 1459(needed)X 1734(for)X 1862(both)X 2045(systems;)X 2376(possible)X 2692(the)X 2827(NeXT)X 6 f 10 s 3073(sizeimage)X 1 f 11 s 3480(and)X 6 f 10 s 3634(readimage)X 1 f 11 s 864 5124(operators.)N 9 s 10 f 864 5322(hhhhhhhhhhhhhhhh)N 7 s 1 f 944 5402(11)N 9 s 1036 5424(`)N 1050(`Compositing)X 1472(Digital)X 1699(Images.`)X 1939(`)X 2008(Thomas)X 2267(Porter)X 2470(and)X 2601(Tom)X 2764(Duff.)X 2963(Computer)X 3278(Graphics)X 3565(\()X 8 s (SIGGRAPH)S 9 s 3936('84)X 864 5512(Conference)N 1214(Proceedings\),)X 1626(Vol.)X 1770(18,)X 1878(No.)X 2002(3,)X 2074(July)X 2212(1984,)X 2392(pp.)X 2500(253-259.)X 11 s 3417 6152(Lef\257er)N 3944(13)X 14 p %%Page: 14 14 0(Helvetica-Oblique)xf 0 f 11 s 11 xH 0 xS 0 f 1 f 5 f 864 464(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1368(Language)X 1737(Extensions)X 864 824(The)N 1038(way)X 1221(in)X 1327(which)X 1579(the)X 5 f 1727(D)X 9 s 1790(ISPLAY)X 11 s 2082(P)X 9 s 2141(OST)X 11 s (S)S 9 s 2348(CRIPT)X 11 s 2605(P)X 9 s 2664(OST)X 11 s (S)S 9 s 2871(CRIPT)X 1 f 11 s 3125(interpreter)X 3530(`)X 3549(`\256ts')X 3705(')X 3772(into)X 3948(its)X 864 928(operating)N 1224(environment)X 1697(is)X 1783(poorly)X 2040(de\256ned.)X 2370(The)X 5 f 2537(P)X 9 s 2596(OST)X 11 s (S)S 9 s 2803(CRIPT)X 1 f 11 s 3045(interpreter)X 3438(may)X 3616(be)X 3725(accessed)X 864 1032(through)N 1173(a)X 1248(communication)X 1834(channel)X 2144(or)X 2253(as)X 2362(a)X 2437(library-like)X 2870(facility\320this)X 3373(is)X 3468(unde\256ned.)X 3895(The)X 864 1136(client)N 1100(library)X 1374(does)X 1574(not)X 1725(even)X 1929(include)X 2227(an)X 2348(interface)X 2694(routine)X 2982(to)X 3089(establish)X 3436(contact)X 3729(with)X 3924(the)X 864 1240(interpreter.)N 1322(This)X 1526(makes)X 1798(the)X 5 f 1956(D)X 9 s 2019(ISPLAY)X 11 s 2321(P)X 9 s 2380(OST)X 11 s (S)S 9 s 2587(CRIPT)X 1 f 11 s 2850(system)X 3143(decidely)X 3490(nonportable.)X 4003(I)X 864 1344(believe)N 1173(that)X 1360(it)X 1463(is)X 1575(possible)X 1917(to)X 2039(de\256ne)X 2307(a)X 2399(communication-based)X 3231(interface)X 3592(to)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 1448(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1378(that)X 1543(is)X 1634(portable)X 1955(except)X 2218(for)X 2353(the)X 2494(communication)X 3077(protocol)X 3404(used)X 3598(between)X 3924(the)X 5 f 864 1552(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1368(interpreter)X 1757(and)X 1906(client)X 2125(applications.)X 3 f 864 1760(3.)N 5 f 980(D)X 9 s 1043(ISPLAY)X 11 s 1320(P)X 9 s 1379(OST)X 11 s (S)S 9 s 1586(CRIPT)X 3 f 11 s 1824(Programming)X 1 f 864 1892(An)N 994(application)X 1410(that)X 1566(uses)X 5 f 1743(D)X 9 s 1806(ISPLAY)X 11 s 2084(P)X 9 s 2143(OST)X 11 s (S)S 9 s 2350(CRIPT)X 1 f 11 s 2589(is)X 2672(typically)X 3006(a)X 3069(combination)X 3535(of)X 3632(C)X 3715(code)X 3905(and)X 5 f 864 1996(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1393(code.)X 1650(The)X 5 f 1837(D)X 9 s 1900(ISPLAY)X 11 s 2202(P)X 9 s 2261(OST)X 11 s (S)S 9 s 2468(CRIPT)X 1 f 11 s 2730(client)X 2973(library)X 3254(provides)X 3603(a)X 3688(means)X 3959(of)X 864 2100(transmitting)N 5 f 1321(P)X 9 s 1380(OST)X 11 s (S)S 9 s 1587(CRIPT)X 1 f 11 s 1829(code)X 2021(to)X 2116(the)X 2250(interpreter,)X 2666(and)X 2820(interprets)X 3180(information)X 3624(returned)X 3944(by)X 864 2204(the)N 998(interpreter)X 1391(to)X 1486(the)X 1620(application.)X 2083(An)X 2215(application)X 2633(may)X 2810(draw)X 3010(on)X 3123(a)X 3187(display)X 3467(by)X 3580(making)X 3870(calls)X 864 2308(to)N 966(client)X 1196(library)X 1464(procedures,)X 1904(or)X 2010(by)X 2131(de\256ning)X 2453(stylized)X 2761(interfaces)X 3137(that)X 3304(are)X 3445(created)X 3733(with)X 3924(the)X 3 f 864 2412(pswrap)N 1 f 1165(utility.)X 1445(For)X 1590(example,)X 1933(to)X 2024(execute)X 2315(the)X 5 f 2448(P)X 9 s 2507(OST)X 11 s (S)S 9 s 2714(CRIPT)X 1 f 11 s 2952(operator)X 6 f 10 s 3267(translate)X 1 f 11 s 3599(,)X 3643(the)X 3773(follow-)X 864 2516(ing)N 999(call)X 1149(might)X 1378(be)X 1483(made:)X 7 f 1304 2661(PStranslate\(1.1,)N 2205(0.5\);)X 1 f 864 2806(this)N 1014(is)X 1095(equivalent)X 1485(to)X 1576(the)X 5 f 1709(P)X 9 s 1768(OST)X 11 s (S)S 9 s 1975(CRIPT)X 1 f 11 s 2213(code:)X 5 f 1304 2951(1.1)N 1452(0.5)X 1600(translate)X 1 f 864 3096(The)N 1023(client)X 1242(library)X 1499(includes)X 1815(similar)X 2083(procedures)X 2490(for)X 2614(each)X 2797(of)X 2892(the)X 5 f 3025(P)X 9 s 3084(OST)X 11 s (S)S 9 s 3291(CRIPT)X 1 f 11 s 3529(operators.)X 864 3228(Typically)N 1228(an)X 1336(application)X 1754(uses)X 1930(a)X 1994(limited)X 2271(set)X 2394(of)X 2492(drawing)X 2806(requests)X 3120(that)X 3279(may)X 3457(be)X 3566(easily)X 3798(encap-)X 864 3332(sulated)N 1144(in)X 1243(procedure-like)X 1786(bodies)X 2046(of)X 5 f 2152(P)X 9 s 2211(OST)X 11 s (S)S 9 s 2418(CRIPT)X 1 f 11 s 2663(code.)X 2902(In)X 3004(this)X 3161(case,)X 3363(rather)X 3597(than)X 3778(use)X 3924(the)X 864 3436(single)N 1102(operator)X 1422(routines)X 1733(de\256ned)X 2019(in)X 2115(the)X 2250(library,)X 2534(a)X 2600(special)X 2872(purpose)X 3177(interface)X 3512(can)X 3662(be)X 3773(de\256ned)X 864 3540(with)N 1047(the)X 3 f 1181(pswrap)X 1 f 1485(utility.)X 1768(This)X 1951(program)X 2275(takes)X 5 f 2485(P)X 9 s 2544(OST)X 11 s (S)S 9 s 2751(CRIPT)X 1 f 11 s 2993(code)X 3185(bodies)X 3441(and)X 3594(C-like)X 3841(inter-)X 864 3644(face)N 1033(de\256nitions,)X 1451(and)X 1601(creates)X 1868(C)X 1950(callable)X 2248(procedures)X 2656(that)X 2812(cause)X 3030(the)X 3161(associated)X 5 f 3550(P)X 9 s 3609(OST)X 11 s (S)S 9 s 3816(CRIPT)X 1 f 11 s 864 3748(code)N 1061(to)X 1161(be)X 1275(transmitted)X 1704(to)X 1804(the)X 1943(interpreter)X 2341(where)X 2586(it)X 2667(is)X 2757(executed.)X 3145(This)X 3333(is)X 3423(the)X 3561(equivalent)X 3959(of)X 864 3852(combining)N 1273(one)X 1431(or)X 1536(more)X 1749(of)X 1854(the)X 1994(single)X 2237(operator)X 2562(procedures)X 2979(into)X 3149(a)X 3220(single)X 3463(procedure)X 3846(\(with)X 864 3956(the)N 1001(expected)X 1343(performance)X 1816(gain\).)X 2070(For)X 2221(example,)X 2571(the)X 2708(following)X 3080(C)X 3168(code)X 3362(draws)X 3599(a)X 3666(gray)X 3850(\256lled)X 864 4060(rectangle:)N 7 f 1304 4205(PSgsave\(\);)N 1304 4309(PSsetgray\(gray\);)N 1304 4413 0.1968(PSfillrect\(rectNums\);)AN 1304 4517(PSgrestore\(\);)N 1 f 864 4662(while)N 1082(an)X 1187(equivalent,)X 1599(single)X 1832(procedure,)X 3 f 2227(pswrap)X 1 f 2527(de\256nition)X 2888(is:)X 5 f 1304 4807(de\256neps)N 1662(grayRect\(\257oat)X 2235(gray,)X 2456(rectNums[4]\))X 1592 4911(gsave)N 1592 5015(gray)N 1788(setgray)X 1592 5119(rectNums)N 1993(\256llrect)X 1592 5223(grestore)N 1304 5327(endps)N 1 f 864 5472(The)N 1023(resultant)X 1349(procedure,)X 7 f 1775(grayRect\(\))X 1 f 2305(,)X 2349(could)X 2567(then)X 2741(be)X 2846(called)X 3079(as)X 3174(in)X 7 f 1304 5617(grayRect\(gray,)N 2099(rectNums\);)X 1 f 864 6152(14)N 5 f 1240(D)X 9 s 1303(ISPLAY)X 1 f 11 s 5 f 1577(P)X 9 s 1636(OST)X 11 s (S)S 9 s 1843(CRIPT)X 1 f 11 s 2081(and)X 10 s 2230(Ne)X 2314(WS)X 15 p %%Page: 15 15 0(Helvetica-Oblique)xf 0 f 10 s 10 xH 0 xS 0 f 11 s 7 f 5 f 2706 464(D)N 9 s 2769(ISPLAY)X 1 f 11 s 5 f 3043(P)X 9 s 3102(OST)X 11 s (S)S 9 s 3309(CRIPT)X 1 f 11 s 3547(Programming)X 864 824(The)N 1027(single)X 1264(operator)X 1583(procedures)X 1994(and)X 2147(the)X 3 f 2281(pswrap)X 1 f 2585(utility)X 2824(are)X 2957(the)X 3092(entire)X 3320(set)X 3445(of)X 3545(drawing)X 3860(tools)X 864 928(provided)N 1208(to)X 1308(a)X 1378(programmer)X 1844(that)X 2008(wants)X 2244(to)X 2344(create)X 2585(a)X 5 f 2658(D)X 9 s 2721(ISPLAY)X 11 s 3007(P)X 9 s 3066(OST)X 11 s (S)S 9 s 3273(CRIPT)X 1 f 11 s (-based)S 3748(applica-)X 864 1032(tion.)N 1073(In)X 1173(this)X 1328(sense,)X 1567(users)X 1774(of)X 5 f 1877(D)X 9 s 1940(ISPLAY)X 11 s 2222(P)X 9 s 2281(OST)X 11 s (S)S 9 s 2488(CRIPT)X 1 f 11 s 2731(are)X 2866(no)X 2982(better)X 3211(off)X 3341(than)X 3521(users)X 3729(of)X 10 s 3828(Ne)X 3912(WS)X 11 s 864 1136(\(where)N 1131(the)X 1263(only)X 1444(facilities)X 1773(provided)X 2110(are)X 2241(the)X 3 f 2373(cps)X 1 f 2519(program)X 2841(and)X 2992(the)X 3124(supporting)X 3525(client)X 3746(library\).)X 864 1240(The)N 1030(remainder)X 1416(of)X 1518(this)X 1675(section)X 1954(provides)X 2286(a)X 2354(more)X 2564(detailed)X 2873(comparison)X 3313(of)X 3415(the)X 3552(programming)X 864 1344(tools:)N 3 f 1083(pswrap)X 1 f 1383(with)X 3 f 1562(cps)X 1 f 1684(,)X 1728(and)X 1877(the)X 5 f 2010(D)X 9 s 2073(ISPLAY)X 11 s 2350(P)X 9 s 2409(OST)X 11 s (S)S 9 s 2616(CRIPT)X 1 f 11 s 2854(and)X 10 s 3001(Ne)X 3085(WS)X 11 s 3227(client)X 3446(libraries.)X 3 f 864 1552(3.1.)N 1040(pswrap)X 1340(and)X 1504(cps)X 864 1684(Pswrap)N 1 f 1170(is)X 1252(a)X 1314(more)X 1518(re\256ned)X 1785(version)X 2067(of)X 3 f 2163(cps)X 1 f 2285(.)X 2353(In)X 2450(particular,)X 3 f 2834(pswrap)X 1 f 3136(provides)X 3463(certain)X 3727(facilities)X 864 1788(that)N 1019(are)X 1148(not)X 1283(present)X 1559(in)X 3 f 1650(cps)X 1 f 1772(,)X 1816(or)X 1911(which)X 2148(are)X 2277(provided)X 2612(in)X 2703(only)X 2882(a)X 2943(limited)X 3217(manner:)X 10 f 864 1920(g)N 3 f 996(pswrap)X 1 f 1300(can)X 1448(be)X 1557(used)X 1744(as)X 1843(a)X 1908(preprocessor,)X 2404(a)X 2469(la)X 2559(the)X 10 s 2691(UNIX)X 11 s 2892(\262)X 2962 0.3828(utilities)AX 3 f 3255(lex)X 1 f 3390(and)X 3 f 3544(yacc)X 1 f 3737(\()X 3 f 3766(cps)X 1 f 3915(has)X 996 2024(an)N 1102(escape)X 1359(mechanism)X 1784(for)X 1909(passing)X 2196(C)X 2277(code)X 2465(through,)X 2783(but)X 2918(it)X 2990(is)X 3071(clumsy)X 3348(and)X 3497(is)X 3578(only)X 3757(suitable)X 996 2128(for)N 1120(simple)X 1378(declarations\),)X 10 f 864 2260(g)N 3 f 996(pswrap)X 1 f 1296(can)X 1440(generate)X 1760(external)X 2066(references)X 2448(for)X 10 s 2570(ANSI)X 11 s 2779(C)X 2860(compilers,)X 3252(and)X 10 f 864 2392(g)N 3 f 996(pswrap)X 1 f 1304(can)X 1456(generate)X 1785(reentrant)X 2129(code)X 2326(for)X 2459(shared)X 2719(libraries)X 3039(and)X 3197(multi-threaded)X 3748(applica-)X 996 2496(tions.)N 864 2628(Most)N 1082(importantly,)X 3 f 1554(pswrap)X 1 f 1870(provides)X 2211(better)X 2450(support)X 2752(than)X 3 f 2942(cps)X 1 f 3102(for)X 3242(passing)X 3544(and)X 3709(returning)X 864 2732(aggregate)N 1240(data)X 1421(structures.)X 1841(Speci\256cally,)X 2314(homogeneous)X 2837(arrays)X 3085(of)X 3191(numbers)X 3527(can)X 3682(be)X 3798(passed)X 864 2836(and)N 1024(returned)X 1350(\(as)X 1485(shown)X 1747(above\).)X 2063(The)X 2233(syntax)X 2496(for)X 2631(specifying)X 3031(parameters)X 3450(is)X 3543(also)X 3719(closer)X 3963(to)X 864 2940(that)N 1028(used)X 1220(to)X 1320(de\256ne)X 1566(C)X 1656(variables,)X 2026(making)X 2321(it)X 2401(more)X 2612(intuitive)X 2938(to)X 3037(the)X 3175(C)X 3264(programmer.)X 3773(Having)X 864 3044(return)N 1100(parameters)X 1512(de\256ned)X 1797(in)X 1892(the)X 2026(function)X 2346(prologue)X 2685(is)X 2770(an)X 2879(improvement)X 3376(over)X 3558(the)X 3693(de\256nition)X 864 3148(style)N 1062(used)X 1254(by)X 3 f 1373(cps)X 1 f 1526(\(it)X 1636(makes)X 1892(it)X 1973(simpler)X 2268(to)X 2367(locate)X 2608(return)X 2848(results\).)X 3181(Finally,)X 3484(having)X 3 f 3754(pswrap)X 1 f 864 3252(generate)N 5 f 1187(P)X 9 s 1246(OST)X 11 s (S)S 9 s 1453(CRIPT)X 1 f 11 s 1691(code)X 1879(to)X 1970(return)X 2202(parameter)X 2576(values)X 2823(is)X 2904(an)X 3009(improvement)X 3502(over)X 3 f 3680(cps)X 1 f 3802(.)X 864 3384(On)N 1003(the)X 1143(down)X 1370(side,)X 3 f 1566(pswrap)X 1 f 1876(has)X 2025(a)X 2097(confusing)X 2477(scheme)X 2774(for)X 2909(handling)X 5 f 3254(P)X 9 s 3313(OST)X 11 s (S)S 9 s 3520(CRIPT)X 1 f 11 s 3769(literals,)X 864 3488(names)N 1115(and)X 1268(strings.)X 1573(With)X 1776(this)X 1930(scheme,)X 2242(parameters)X 2654(names)X 2904(that)X 3062(are)X 3194(declared)X 3517(as)X 3615(`)X 3634(`)X 7 f 3663(char)X 3931(*)X 1 f 3984(')X 4003(')X 864 3592(are)N 999(interpreted)X 1409(in)X 1506(a)X 1573(context)X 1861(sensitive)X 2198(manner.)X 2534(If)X 2620(the)X 2756(parameter)X 3136(is)X 3223(preceded)X 3568(by)X 3684(a)X 3752(`)X 3771(`/')X 3844(',)X 3924(the)X 864 3696(parameter)N 1239(is)X 1321(treated)X 1584(as)X 1680(a)X 1742(literal.)X 2016(If)X 2097(the)X 2228(parameter)X 2602(is)X 2683(enclosed)X 3013(in)X 3104(parenthesis,)X 3544(it)X 3616(is)X 3697(treated)X 3959(as)X 864 3800(a)N 927(string.)X 1196(Otherwise,)X 1603(the)X 1735(parameter)X 2111(is)X 2194(treated)X 2458(as)X 2555(an)X 2663(executable)X 3065(name.)X 3325(This)X 3507(can)X 3654(easily)X 3885(lead)X 864 3904(to)N 955(confusion.)X 1368(For)X 1512(example,)X 1855(in)X 1946(the)X 2076(following)X 5 f 1304 4049(de\256neps)N 1662(threeStrings\(char)X 2362(*str\))X 1592 4153(\(str\))N 1773(\()X 1827(str)X 1950(\))X 2004(\(a)X 2107(str\))X 1304 4257(endps)N 1 f 864 4402(only)N 1043(the)X 1173(\256rst)X 1332(instance)X 1643(of)X 7 f 1769(str)X 1 f 1950(is)X 2032(substituted)X 2438(for.)X 2607(Furthermore,)X 3092(because)X 3393(names)X 3641(and)X 3791(literals)X 864 4506(are)N 997(distinguished)X 1494(at)X 1584(the)X 1718(time)X 3 f 1902(pswrap)X 1 f 2205(is)X 2289(run,)X 2453(instead)X 2728(of)X 2826(at)X 2915(runtime,)X 3237(the)X 3370(only)X 3552(way)X 3723(to)X 3817(de\256ne)X 864 4610(a)N 943(parameter)X 1335(that)X 1509(is)X 1609(either)X 1851(a)X 1931(literal)X 2179(or)X 2293(a)X 2373(name)X 2605(is)X 2705(to)X 2815(bypass)X 3095(the)X 3244(facilities)X 3590(provided)X 3944(by)X 3 f 864 4714(pswrap)N 1 f 9 s 1142 4686(12)N 11 s 4714(.)Y 1296(While)X 1550(less)X 1720(C)X 1817(oriented,)X 2167(the)X 7 f 2345(string)X 1 f 2702(and)X 7 f 2899(postscript)X 1 f 3468(type)X 3659(de\256nitions)X 864 4818(provided)N 1199(by)X 3 f 1309(cps)X 1 f 1453(appear)X 1709(to)X 1800(be)X 1905(a)X 1966(better)X 2189(way)X 2357(to)X 2448(de\256ne)X 2685(such)X 2868(parameters.)X 9 s 10 f 864 5308(hhhhhhhhhhhhhhhh)N 7 s 1 f 944 5388(11)N 9 s 1036 5410(\262)N 8 s 1088(UNIX)X 9 s 1265(is)X 1331(a)X 1381(registered)X 1683(trademark)X 1993(of)X 2071(AT&T)X 2285(Bell)X 2423(Laboratories)X 2805(in)X 2879(the)X 2985(USA)X 3147(and)X 3269(other)X 3435(countries.)X 7 s 944 5490(12)N 9 s 1036 5512(I)N 1078(found)X 1264(several)X 1486(instances)X 1768(where)X 1962(I)X 2004(wanted)X 2230(to)X 2304(do)X 2394(this)X 2516(in)X 2590(my)X 8 s 2698(Ne)X 2762(WS)X 9 s 2876(client)X 3054(library.)X 11 s 3417 6152(Lef\257er)N 3944(15)X 16 p %%Page: 16 16 0(Helvetica-Oblique)xf 0 f 11 s 11 xH 0 xS 0 f 1 f 5 f 864 464(D)N 9 s 927(ISPLAY)X 1 f 11 s 5 f 1201(P)X 9 s 1260(OST)X 11 s (S)S 9 s 1467(CRIPT)X 1 f 11 s 1705(Programming)X 3 f 864 824(3.2.)N 1040(Client)X 1292(Libraries)X 1 f 864 956(The)N 10 s 1025(Ne)X 1109(WS)X 11 s 1255(client)X 1478(library)X 1739(is)X 1824(very)X 2006(simplistic)X 2378(and)X 2532(designed)X 2872(solely)X 3110(to)X 3206(support)X 3497(code)X 3690(generated)X 864 1060(by)N 983(the)X 3 f 1122(cps)X 1 f 1275(utility.)X 1563(The)X 5 f 1734(D)X 9 s 1797(ISPLAY)X 11 s 2083(P)X 9 s 2142(OST)X 11 s (S)S 9 s 2349(CRIPT)X 1 f 11 s 2596(client)X 2824(library)X 3090(is)X 3180(slightly)X 3476(more)X 3687(elaborate.)X 864 1164(Aside)N 1107(from)X 1316(a)X 1393(set)X 1529(of)X 1640(single)X 1889(operator)X 5 f 2223(P)X 9 s 2282(OST)X 11 s (S)S 9 s 2489(CRIPT)X 1 f 11 s 2744(procedures,)X 5 f 3193(D)X 9 s 3256(ISPLAY)X 11 s 3550(P)X 9 s 3609(OST)X 11 s (S)S 9 s 3816(CRIPT)X 1 f 11 s 864 1268(supports)N 1184(four)X 1352(notable)X 1634(facilities)X 1961(not)X 2096(found)X 2323(in)X 2414(its)X 10 s 2518(Ne)X 2602(WS)X 11 s 2744(counterpart:)X 10 f 864 1400(g)N 1 f 996(the)X 1129(ability)X 1381(to)X 1475(manage)X 1775(multiple)X 2097(parallel)X 2388(threads)X 2668(of)X 2767(execution)X 3136(in)X 3231(the)X 3365(interpreter)X 3758(through)X 996 1504(the)N 1126(notion)X 1374(of)X 1469(a)X 2 f 1530(context)X 1 f 1799(,)X 10 f 864 1636(g)N 1 f 996(an)X 1101(exception)X 1466(handling)X 1797(facility)X 2070(that)X 2225(is)X 2306(integrated)X 2681(with)X 2860(the)X 2990(context)X 3272(abstraction,)X 10 f 864 1768(g)N 1 f 996(support)X 1282(for)X 1406(user)X 1574(de\256ned)X 5 f 1858(P)X 9 s 1917(OST)X 11 s (S)S 9 s 2124(CRIPT)X 1 f 11 s 2362(objects)X 2634(and)X 2783(names,)X 3052(and)X 10 f 864 1900(g)N 1 f 996(the)X 1139(ability)X 1402(to)X 1507(dynamically)X 1980(change)X 2265(the)X 2409(format)X 2680(of)X 2789(the)X 5 f 2936(P)X 9 s 2995(OST)X 11 s (S)S 9 s 3202(CRIPT)X 1 f 11 s 3454(transmitted)X 3888(to)X 3993(a)X 996 2004(context.)N 864 2136(A)N 952(context)X 1237(is)X 1321(a)X 1385(logically)X 1720(independent)X 5 f 2179(P)X 9 s 2238(OST)X 11 s (S)S 9 s 2445(CRIPT)X 1 f 11 s 2687(interpreter)X 3080(session.)X 3404(Each)X 3606(client-based)X 864 2240(context)N 1157(is)X 1249(normally)X 1601(associated)X 1995(with)X 2184(a)X 5 f 2258(P)X 9 s 2317(OST)X 11 s (S)S 9 s 2524(CRIPT)X 2 f 11 s 2772(context)X 1 f 3073(in)X 3174(the)X 3314(interpreter,)X 3735(but)X 3880(they)X 864 2344(may)N 1051(also,)X 1250(for)X 1387(example,)X 1743(be)X 1862(associated)X 2260(with)X 2453(a)X 2528(text)X 2697(\256le)X 2846(for)X 2984(the)X 3128(purpose)X 3442(of)X 3551(debugging)X 3959(or)X 864 2448(printing.)N 1215(An)X 1349(application)X 1769(can)X 1918(have)X 2110(multiple)X 2432(contexts)X 2752(active)X 2989(at)X 3079(a)X 3144(time)X 3328(and)X 3481(contexts)X 3801(can)X 3949(be)X 864 2552(linked)N 1114(so)X 1221(that)X 1383(output)X 1638(directed)X 1951(to)X 2049(one)X 2205(context)X 2494(is)X 2582 0.2604(automatically)AX 3093(directed)X 3407(to)X 3506(all)X 3625(linked)X 3876(con-)X 864 2656(texts)N 1066(as)X 1173(well.)X 1403(\(This)X 1623(seems)X 1872(to)X 1975(have)X 2175(application)X 2602(only)X 2793(for)X 2929(the)X 3071(purpose)X 3383(of)X 3490(debugging.\))X 3969(A)X 2 f 864 2760(current)N 1151(context)X 1 f 1448(is)X 1535(identi\256ed)X 1897(as)X 1998(the)X 2134(default)X 2407(destination)X 2823(for)X 5 f 2956(P)X 9 s 3015(OST)X 11 s (S)S 9 s 3222(CRIPT)X 1 f 11 s 3466(requests)X 3782(that)X 3944(do)X 864 2864(not)N 999(take)X 1168(an)X 1273(explicit)X 1561(context)X 1843(parameter.)X 864 2996(The)N 1033(exception)X 1408(handling)X 1749(facility)X 2032(permits)X 2329(an)X 2444(application)X 2869(to)X 2970(de\256ne)X 3217(handler)X 3513(procedures)X 3930(for)X 864 3100(exceptional)N 1301(conditions)X 1699(in)X 1798(a)X 1866(nested)X 2120(fashion.)X 2452(The)X 2618(only)X 2804(exceptional)X 3240(conditions)X 3637(de\256ned)X 3925(are)X 864 3204(for)N 995(errors)X 1228(detected)X 1551(in)X 1649(the)X 5 f 1789(P)X 9 s 1848(OST)X 11 s (S)S 9 s 2055(CRIPT)X 1 f 11 s 2300(interpreter)X 2696(or)X 2798(in)X 2896(the)X 3033(client)X 3260(library.)X 3569(It)X 3653(is)X 3742(unlikely)X 864 3308(that)N 1027(large)X 1233(applications)X 1689(will)X 1856(use)X 2002(these)X 2212(facilities)X 2546(because)X 2853(they)X 3034(are)X 3170(not)X 3312(well)X 3493(integrated)X 3875(with)X 864 3412(the)N 10 s 992(UNIX)X 11 s 1215(runtime)X 1512(environment;)X 2005(i.e.)X 2135(signals.)X 864 3544(The)N 1028(support)X 1319(for)X 1448(user)X 1622(de\256ned)X 5 f 1912(P)X 9 s 1971(OST)X 11 s (S)S 9 s 2178(CRIPT)X 1 f 11 s 2422(objects)X 2700(and)X 2855(names)X 3108(amounts)X 3435(to)X 3532(a)X 3599(set)X 3725(of)X 3826(tables)X 864 3648(that)N 1036(map)X 1227(strings)X 1501(into)X 1678(binary)X 1942(encoded)X 2274(tokens)X 2542(that)X 2713(are)X 2858(transmitted)X 3294(to)X 3401(the)X 5 f 3550(P)X 9 s 3609(OST)X 11 s (S)S 9 s 3816(CRIPT)X 1 f 11 s 864 3752(interpreter.)N 1311(This)X 1504(a)X 1579(useful)X 1831(facility,)X 2141(particularly)X 2585(when)X 2812(used)X 3010(in)X 3116(conjunction)X 3570(with)X 3764(the)X 3909(last)X 864 3856(facility,)N 1162(the)X 1295(ability)X 1547(to)X 1641(dynamically)X 2103(change)X 2377(the)X 2510(format)X 2770(of)X 2868(the)X 3001(data)X 3172(transmitted)X 3594(to)X 3687(a)X 3750(context.)X 864 3960(That)N 1048(is,)X 1151(by)X 1261(maintaining)X 1706(a)X 1767(name)X 1980(table)X 2174(it)X 2246(is)X 2327(possible)X 2638(to)X 2730(record)X 2977(a)X 3039(a)X 3101(stream)X 3359(of)X 5 f 3458(P)X 9 s 3517(OST)X 11 s (S)S 9 s 3724(CRIPT)X 1 f 11 s 3963(in)X 864 4064(a)N 926(\256le)X 1061(simply)X 1324(by)X 1434(switching)X 1799(to)X 1890(an)X 10 s 1993(ASCII)X 11 s 2224(encoding)X 2569(and)X 2718(setting)X 2976(the)X 3106(current)X 3377(context)X 3659(to)X 3750(one)X 3899(that)X 864 4168(is)N 945(associated)X 1329(with)X 1508(a)X 1569(\256le.)X 864 4300(Noticeably)N 1301(missing)X 1626(from)X 1848(the)X 5 f 2010(D)X 9 s 2073(ISPLAY)X 11 s 2379(P)X 9 s 2438(OST)X 11 s (S)S 9 s 2645(CRIPT)X 1 f 11 s 2912(client)X 3160(library)X 3446(is)X 3556(any)X 3734(standard)X 864 4404(mechanism)N 1289(for)X 1414(establishing)X 1859(contact)X 2137(with)X 2316(the)X 5 f 2449(P)X 9 s 2508(OST)X 11 s (S)S 9 s 2715(CRIPT)X 1 f 11 s 2953(interpreter.)X 3386(This)X 3565(facility)X 3838(is)X 3919(not)X 864 4508(part)N 1039(of)X 5 f 1154(D)X 9 s 1217(ISPLAY)X 11 s 1511(P)X 9 s 1570(OST)X 11 s (S)S 9 s 1777(CRIPT)X 1 f 11 s (.)S 2076(Instead)X 2369(applications)X 2835(are)X 2981(expected)X 3333(to)X 3441(\256rst)X 3617(gain)X 3808(access)X 864 4612(through)N 1170(the)X 1310(appropriate)X 1743(window)X 2058(system)X 2335(mechanism\(s\),)X 2904(with)X 3092(the)X 3231(resultant)X 3566(window)X 3880(then)X 864 4716(used)N 1051(by)X 5 f 1168(D)X 9 s 1231(ISPLAY)X 11 s 1512(P)X 9 s 1571(OST)X 11 s (S)S 9 s 1778(CRIPT)X 1 f 11 s (.)S 2064(In)X 2163(a)X 2228(similar)X 2500(vein,)X 2701(there)X 2904(is)X 2990(no)X 3105(mention)X 3422(of)X 3522(how)X 3700(the)X 3835(client)X 864 4820(library)N 1131(multiplexes)X 1575(client-server)X 2046(communication)X 2627(when)X 2848(multiple)X 3175(contexts)X 3500(are)X 3638(used)X 3830(by)X 3949(an)X 864 4924(application.)N 1329(Adobe)X 1591(believes)X 1908(this)X 2065(is)X 2153(a)X 2221(property)X 2548(of)X 2650(the)X 2787(window)X 3099(system)X 3373(and)X 3529(operating)X 3891(sys-)X 864 5028(tem)N 1028(and)X 1186(should)X 1452(be)X 1566(left)X 1715(unspeci\256ed)X 9 s 2116 5000(13)N 11 s 5028(.)Y 2263(Whatever)X 2636(scheme)X 2931(is)X 3021(used)X 3213(to)X 3313(handle)X 3579 0.3011(multiplexing)AX 864 5132(and)N 1013(communication)X 1585(issues)X 1817(must)X 2011(also)X 2175(deal)X 2344(with)X 2523(input)X 2727(events.)X 9 s 10 f 864 5234(hhhhhhhhhhhhhhhh)N 7 s 1 f 944 5314(13)N 9 s 1036 5336(On)N 1142(the)X 1248(NeXT)X 1446(machine,)X 1726(under)X 1908(Mach,)X 2108(each)X 2258(context)X 2488(has)X 2602(an)X 2688(independent)X 3058(communication)X 3525(stream)X 3736(associated)X 864 5424(with)N 1014(a)X 1068(Mach)X 8 s 1252(IPC)X 9 s 1374(port.)X 1548(For)X 1670(other)X 1840(machines,)X 2151(Adobe)X 2364(uses)X 2509(some)X 2682(\(unde\256ned\))X 3035(protocol)X 3296(to)X 3373(multiplex)X 3670(a)X 3723(single)X 8 s 3914(TCP)X 9 s 864 5512(connection)N 1198(to)X 1272(a)X 1322(server)X 1516(process.)X 11 s 864 6152(16)N 5 f 1240(D)X 9 s 1303(ISPLAY)X 1 f 11 s 5 f 1577(P)X 9 s 1636(OST)X 11 s (S)S 9 s 1843(CRIPT)X 1 f 11 s 2081(and)X 10 s 2230(Ne)X 2314(WS)X 17 p %%Page: 17 17 0(Helvetica-Oblique)xf 0 f 10 s 10 xH 0 xS 0 f 11 s 1 f 3082 464(Summary)N 3447(and)X 3596(Conclusions)X 3 f 864 824(4.)N 974(Summary)X 1367(and)X 1531(Conclusions)X 5 f 864 956(D)N 9 s 927(ISPLAY)X 11 s 1228(P)X 9 s 1287(OST)X 11 s (S)S 9 s 1494(CRIPT)X 1 f 11 s 1757(provides)X 2107(a)X 2193(number)X 2509(of)X 2629(extensions)X 3048(to)X 3164(the)X 3319(basic)X 5 f 3550(P)X 9 s 3609(OST)X 11 s (S)S 9 s 3816(CRIPT)X 1 f 11 s 864 1060(language)N 1206(explicitly)X 1565(for)X 1691(use)X 1832(in)X 1924(an)X 2030(interactive)X 2426(setting.)X 2729(These)X 2962(facilities)X 3290(have)X 3479(been)X 3668(added)X 3901(in)X 3993(a)X 864 1164(fashion)N 1159(that)X 1328(is)X 1423(consistent)X 1812(with)X 2006(the)X 2151(underlying)X 2570(concepts)X 2915(of)X 3025(the)X 5 f 3173(P)X 9 s 3232(OST)X 11 s (S)S 9 s 3439(CRIPT)X 1 f 11 s 3692(language.)X 864 1268(Execution)N 1255(contexts)X 1582(address)X 1878(the)X 2019(requirement)X 2478(of)X 2584(multiple,)X 2935(simultaneous)X 3433(users)X 3645(of)X 3750(a)X 3821(single)X 864 1372(display.)N 1210(The)X 1394(binary)X 1666(stream)X 1948(encoding)X 2318(provides)X 2668(a)X 2754(clean)X 2987(mechanism)X 3437(for)X 3587(the)X 3743(ef\256cient)X 864 1476(exchange)N 1235(of)X 1346(information)X 1801(in)X 1908(a)X 1985(client-server)X 2463(environment.)X 2991(View)X 3219(clipping,)X 3569(the)X 3715(new)X 3899(text)X 864 1580(operators,)N 1243(and)X 1400(graphics)X 1728(states)X 1954(satisfy)X 2214(various)X 2503(needs)X 2734(of)X 2838(non-printer-oriented)X 3583(applications.)X 864 1684(User)N 1060(paths)X 1277(appear)X 1541(to)X 1640(be)X 1753(a)X 1822(useful)X 2067(mechanism)X 2499(for)X 2631(improving)X 3029(the)X 3167(drawing)X 3485(performance)X 3959(of)X 864 1788(interactive)N 1259(applications.)X 864 1920(The)N 1031(designers)X 1393(of)X 10 s 1494(Ne)X 1578(WS)X 11 s 1728(have)X 1924(addressed)X 2300(the)X 2438(same)X 2649(problems)X 3007(as)X 3110(the)X 3248(designers)X 3610(of)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 2024(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s (;)S 1423(providing)X 1818(similar)X 2116(additions)X 2492(to)X 2613(the)X 5 f 2776(P)X 9 s 2835(OST)X 11 s (S)S 9 s 3042(CRIPT)X 1 f 11 s 3309(language.)X 3722(In)X 3846(some)X 864 2128(instances,)N 2 f 1231(e.g.)X 1 f 1380(the)X 6 f 10 s 1510(save)X 1 f 11 s 1708(and)X 6 f 10 s 1857(restore)X 1 f 11 s 2149(operators,)X 2520(their)X 2704(efforts)X 2956(have)X 3145(not)X 3281(been)X 3470(completely)X 3886(suc-)X 864 2232(cessful.)N 1182(However,)X 1554(in)X 1652(comparison)X 2092(to)X 5 f 2193(D)X 9 s 2256(ISPLAY)X 11 s 2540(P)X 9 s 2599(OST)X 11 s (S)S 9 s 2806(CRIPT)X 1 f 11 s 3051(they)X 3232(have)X 3427(made)X 3647(fewer)X 3875(visi-)X 864 2336(ble)N 996(changes)X 1303(while)X 1523(still)X 1681(achieving)X 2049(good)X 2250(interactive)X 2648(performance.)X 3161(The)X 3323(addition)X 3638(to)X 10 s 3730(Ne)X 3814(WS)X 11 s 3959(of)X 864 2440(the)N 1013(new)X 1200(operators)X 1568(de\256ned)X 1868(in)X 5 f 1981(D)X 9 s 2044(ISPLAY)X 11 s 2340(P)X 9 s 2399(OST)X 11 s (S)S 9 s 2606(CRIPT)X 1 f 11 s 2862(should)X 3137(be)X 3260(a)X 3339(signi\256cant)X 3747(boon)X 3963(to)X 864 2544(interactive)N 1259(performance.)X 864 2676(In)N 968(general,)X 1280(I)X 1340(believe)X 1648(that)X 5 f 1815(D)X 9 s 1878(ISPLAY)X 11 s 2164(P)X 9 s 2223(OST)X 11 s (S)S 9 s 2430(CRIPT)X 1 f 11 s 2677(does)X 2870(not)X 3015(go)X 3135(far)X 3264(enough)X 3555(in)X 3656(addressing)X 864 2780(many)N 1134(of)X 1281(the)X 1463(requirements)X 1997(of)X 2144(interactive)X 2591(applications.)X 3135(In)X 3281(particular,)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 2884(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1368(does)X 1551(not:)X 10 f 864 3016(g)N 1 f 996(provide)X 1287(integral)X 1579(support)X 1865(for)X 1989(the)X 2119(notion)X 2367(of)X 2462(a)X 2523(drawing)X 2833(surface,)X 10 f 864 3148(g)N 1 f 996(address)X 1281(input)X 1485(handling,)X 10 f 864 3280(g)N 1 f 996(de\256ne)X 1243(the)X 1383(interface)X 1724(between)X 2050(the)X 2191(operating)X 2557(environment)X 3036(and)X 5 f 3199(D)X 9 s 3262(ISPLAY)X 11 s 3550(P)X 9 s 3609(OST)X 11 s (S)S 9 s 3816(CRIPT)X 1 f 11 s 996 3384(contexts)N 1318(at)X 1410(a)X 1477(high)X 1662(enough)X 1949(level)X 2148(or)X 2248(in)X 2344(a)X 2410(complete)X 2761(enough)X 3047(manner)X 3338(to)X 3434(fully)X 3628(de\256ne)X 3870(their)X 996 3488(semantics,)N 10 f 864 3620(g)N 1 f 996(provide)X 1287(support)X 1573(for)X 1697(copying)X 2003(portions)X 2314(of)X 2409(a)X 2470(drawing)X 2780(surface,)X 10 f 864 3752(g)N 1 f 996(support)X 1282(cursors,)X 1579(and)X 10 f 864 3884(g)N 1 f 996(provide)X 1287(highlighting)X 1742(mechanisms.)X 864 4016(In)N 960(addition,)X 1295(I)X 1347(prefer)X 1579(the)X 2 f 1710(object-oriented)X 2272(style)X 1 f 2471(with)X 2651(which)X 2889(additions)X 3236(were)X 3429(made)X 3644(in)X 10 s 3735(Ne)X 3819(WS)X 11 s 3963(to)X 864 4120(the)N 2 f 1012(operator-oriented)X 1683(style)X 1 f 1899(employed)X 2287(in)X 5 f 2399(D)X 9 s 2462(ISPLAY)X 11 s 2757(P)X 9 s 2816(OST)X 11 s (S)S 9 s 3023(CRIPT)X 1 f 11 s (.)S 3322(The)X 3498(object-oriented)X 864 4224(style)N 1053(allows)X 10 s 1303(Ne)X 1387(WS)X 11 s (,)S 1551(for)X 1675(example,)X 2018(to)X 2109(provide)X 2400(a)X 2461(cleaner)X 2737(interface)X 3067(to)X 3158(color.)X 864 4356(In)N 967(a)X 1036(sense)X 1257(it)X 1338(is)X 1428(not)X 1572(clear)X 1774(how)X 1956(useful)X 2202(it)X 2283(is)X 2373(to)X 2473(compare)X 5 f 2810(D)X 9 s 2873(ISPLAY)X 11 s 3159(P)X 9 s 3218(OST)X 11 s (S)S 9 s 3425(CRIPT)X 1 f 11 s 3672(and)X 10 s 3828(Ne)X 3912(WS)X 11 s 864 4460(because)N 10 s 1166(Ne)X 1250(WS)X 11 s 1396(is)X 1481(a)X 1546(self-contained)X 2071(system,)X 2364(while)X 5 f 2588(D)X 9 s 2651(ISPLAY)X 11 s 2931(P)X 9 s 2990(OST)X 11 s (S)S 9 s 3197(CRIPT)X 1 f 11 s 3438(is)X 3522(a)X 3586(foundational)X 864 4564(layer)N 1063(on)X 1174(which)X 1413(a)X 1476(system)X 1745(such)X 1930(as)X 10 s 2025(Ne)X 2109(WS)X 11 s 2253(might)X 2484(be)X 2591(constructed.)X 3065(A)X 3152(better)X 3377(comparison)X 3812(would)X 864 4668(be)N 975(between)X 10 s 1294(Ne)X 1378(WS)X 11 s 1526(and)X 1681(a)X 1747(system)X 2019(such)X 2207(as)X 2307(NeXTStep)X 2710(or)X 2810(`)X 2829(`X)X 2948(with)X 5 f 3135(D)X 9 s 3198(ISPLAY)X 11 s 3480(P)X 9 s 3539(OST)X 11 s (S)S 9 s 3746(CRIPT)X 1 f 11 s (.')S 4003(')X 864 4772(If)N 957(this)X 1120(comparison)X 1566(were)X 1771(to)X 1875(be)X 1993(done,)X 2221(however,)X 2580(I)X 2644(believe)X 2935(that)X 3104(the)X 3248(lack)X 3431(of)X 3540(integration)X 3959(of)X 864 4876(facilities)N 1199(such)X 1390(as)X 1493(drawing)X 1811(surfaces)X 2128(and)X 2285(input)X 2497(handling)X 2836(would)X 3086(be)X 3198(apparent.)X 10 s 3570(Ne)X 3654(WS)X 11 s 3803(does)X 3993(a)X 864 4980(very)N 1052(nice)X 1231(job)X 1376(of)X 1481(melding)X 1803(these)X 2016(facilities)X 2353(into)X 2523(the)X 5 f 2666(P)X 9 s 2725(OST)X 11 s (S)S 9 s 2932(CRIPT)X 1 f 11 s 3181(language,)X 3554(and)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 5084(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s 1385(would)X 1644(be)X 1766(much)X 2000(better)X 2239(if)X 2331(it)X 2419(had)X 2584(either)X 2823(adopted)X 3140(the)X 3286(interfaces)X 3666(de\256ned)X 3963(in)X 10 s 864 5188(Ne)N 948(WS)X 11 s (,)S 1126(or)X 1236(de\256ned)X 1532(equivalent)X 1937(notions.)X 2278(For)X 2437(example,)X 2795(there)X 3008(are)X 3152(dif\256cult)X 3469(synchronization)X 864 5292(problems)N 1233(that)X 1407(must)X 1620(be)X 1744(addressed)X 2131(in)X 2241(integrating)X 2665(input)X 2887(handling.)X 3280(Having)X 3579(the)X 3727(facilities)X 864 5396(de\256ned)N 1150(by)X 1265(the)X 1401(window)X 1712(system)X 1985(in)X 2082(which)X 5 f 2328(D)X 9 s 2391(ISPLAY)X 11 s 2674(P)X 9 s 2733(OST)X 11 s (S)S 9 s 2940(CRIPT)X 1 f 11 s 3184(is)X 3271(embedded)X 3661(may)X 3841(make)X 864 5500(the)N 996(handling)X 1329(of)X 1426(such)X 1611(problems)X 1963(harder.)X 2255(At)X 2367(the)X 2499(very)X 2679(least,)X 2886(by)X 2997(not)X 3133(specifying)X 3523(these)X 3727(facilities)X 864 5604(in)N 5 f 987(D)X 9 s 1050(ISPLAY)X 11 s 1356(P)X 9 s 1415(OST)X 11 s (S)S 9 s 1622(CRIPT)X 1 f 11 s 1889(Adobe)X 2174(has)X 2342(made)X 2585(it)X 2687(dif\256cult)X 3019(to)X 3140(write)X 3373(portable)X 5 f 3717(D)X 9 s 3780(ISPLAY)X 11 s 864 5708(P)N 9 s 923(OST)X 11 s (S)S 9 s 1130(CRIPT)X 1 f 11 s (-based)S 1597(applications.)X 3417 6152(Lef\257er)N 3944(17)X 17 p %%Trailer xt xs