Mercurial > emacs
view doc/lispintro/cons-4.eps @ 102592:9035a057d960
Fix previous change.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Sun, 15 Mar 2009 22:57:59 +0000 |
parents | cb5d2387102c |
children | 1d1d5d9bd884 |
line wrap: on
line source
%! %%BoundingBox: 6 681 355 758 %%Title: cons-cell-diagram4 %%CreationDate: Wed Mar 8 14:25:06 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) % % Due to bugs in Transcript, the 'PS-Adobe-' stuff is omitted from line 1 % % Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 % Free Software Foundation, Inc. % % This file is part of GNU Emacs. % % GNU Emacs is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % GNU Emacs is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. /tgifdict 132 dict def tgifdict begin % % Using a zero value radius for an ellipse or an arc would result % in a non-invertible CTM matrix which causes problem when this % when this PostScript is wrapped inside other routines, such as % the multi.ps package from % ftp.ucc.su.oz.au:/pub/ps_printing/multi. You can overcome such % error by uncommenting the sole line of the procedure below: % /tgif_min_radius { % dup 0.01 lt { pop 0.01 } if } bind def /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /tgifsetuserscreendict 22 dict def tgifsetuserscreendict begin /tempctm matrix def /temprot matrix def /tempscale matrix def /concatprocs { /proc2 exch cvlit def /proc1 exch cvlit def /newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx } def /resmatrix matrix def /findresolution { 72 0 resmatrix defaultmatrix dtransform /yres exch def /xres exch def xres dup mul yres dup mul add sqrt } def end /tgifsetuserscreen { tgifsetuserscreendict begin /spotfunction exch def /screenangle exch def /cellsize exch def /m tempctm currentmatrix def /rm screenangle temprot rotate def /sm cellsize dup tempscale scale def sm rm m m concatmatrix m concatmatrix pop 1 0 m dtransform /y1 exch def /x1 exch def /veclength x1 dup mul y1 dup mul add sqrt def /frequency findresolution veclength div def /newscreenangle y1 x1 atan def m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt {{neg} /spotfunction load concatprocs /spotfunction exch def } if frequency newscreenangle /spotfunction load setscreen end } def /tgifsetpatterndict 18 dict def tgifsetpatterndict begin /bitison { /ybit exch def /xbit exch def /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def /mask 1 7 xbit 8 mod sub bitshift def bytevalue mask and 0 ne } def end /tgifbitpatternspotfunction { tgifsetpatterndict begin /y exch def /x exch def /xindex x 1 add 2 div bpside mul cvi def /yindex y 1 add 2 div bpside mul cvi def xindex yindex bitison { /onbits onbits 1 add def 1 } { /offbits offbits 1 add def 0 } ifelse end } def /tgifsetpattern { tgifsetpatterndict begin /cellsz exch def /angle exch def /bwidth exch def /bpside exch def /bstring exch def /onbits 0 def /offbits 0 def cellsz angle /tgifbitpatternspotfunction load tgifsetuserscreen {} settransfer offbits offbits onbits add div setgray end } def /tgifxpmdict 4 dict def /tgifbwpicstr 1 string def /tgifcolorpicstr 3 string def /tgifsetpixels { tgifxpmdict begin /pixels exch def end } def /tgifsetpix { tgifxpmdict begin pixels 3 1 roll putinterval end } def /tgifbwspot { tgifxpmdict begin /index exch def tgifbwpicstr 0 pixels index 3 mul 3 getinterval aload pop 255 mul .114 mul exch 255 mul .587 mul add exch 255 mul .299 mul add cvi put tgifbwpicstr end } def /tgifcolorspot { tgifxpmdict begin /index exch def pixels index 3 mul 3 getinterval aload pop 255 mul cvi tgifcolorpicstr 2 3 -1 roll put 255 mul cvi tgifcolorpicstr 1 3 -1 roll put 255 mul cvi tgifcolorpicstr 0 3 -1 roll put tgifcolorpicstr end } def /tgifnewcolorspot { tgifxpmdict begin /index exch def pixels index 3 mul 3 getinterval aload pop setrgbcolor end } def /tgifcolordict 4 dict def /colorimage where { pop } { /colorimage { tgifcolordict begin pop pop pop pop pop /ih exch def /iw exch def /x 0 def /y 0 def 1 1 ih { pop 1 1 iw { pop currentfile tgifbwpicstr readhexstring pop 0 get tgifnewcolorspot x y moveto 1 0 rlineto 0 1 rlineto -1 0 rlineto closepath fill /x x 1 add def } for /y y 1 add def /x 0 def } for end } def } ifelse /tgifpatdict 10 dict def /tgifpatbyte { currentdict /retstr get exch pat i cellsz mod get put } def /tgifpatproc { 0 1 widthlim {tgifpatbyte} for retstr /i i 1 add def } def /tgifpatfill { tgifpatdict begin /h exch def /w exch def /lty exch def /ltx exch def /cellsz exch def /pat exch def /widthlim w cellsz div cvi 1 sub def /retstr widthlim 1 add string def /i 0 def ltx lty translate w h true [1 0 0 1 0 0] {tgifpatproc} imagemask ltx neg lty neg translate end } def /pat1 <ffffffffffffffff> def /pat2 <0000000000000000> def /pat3 <8000000008000000> def /pat4 <8800000022000000> def /pat5 <8800220088002200> def /pat6 <8822882288228822> def /pat7 <aa55aa55aa55aa55> def /pat8 <77dd77dd77dd77dd> def /pat9 <77ffddff77ffddff> def /pat10 <77ffffff77ffffff> def /pat11 <7fffffff7fffffff> def /pat12 <8040200002040800> def /pat13 <40a00000040a0000> def /pat14 <ff888888ff888888> def /pat15 <ff808080ff080808> def /pat16 <f87422478f172271> def /pat17 <038448300c020101> def /pat18 <081c22c180010204> def /pat19 <8080413e080814e3> def /pat20 <8040201008040201> def /pat21 <8844221188442211> def /pat22 <77bbddee77bbddee> def /pat23 <c1e070381c0e0783> def /pat24 <7fbfdfeff7fbfdfe> def /pat25 <3e1f8fc7e3f1f87c> def /pat26 <0102040810204080> def /pat27 <1122448811224488> def /pat28 <eeddbb77eeddbb77> def /pat29 <83070e1c3870e0c1> def /pat30 <fefdfbf7efdfbf7f> def /pat31 <7cf8f1e3c78f1f3e> def /tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def /tgifrighttext { dup stringwidth pop neg 0 rmoveto } def /tgifreencsmalldict 12 dict def /tgifReEncodeSmall { tgifreencsmalldict begin /newcodesandnames exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall newfont /FontName newfontname put newcodesandnames aload pop newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put} repeat newfontname newfont definefont pop end } def /tgifgray { 8 1 0 72 300 32 div div tgifsetpattern } bind def /tgifboxdict 6 dict def /tgifboxstroke { tgifboxdict begin /pat def /w def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 1.415 setmiterlimit w 1 eq { w setlinewidth } if pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath pat pat2 eq { 1 setgray stroke 0 setgray } { stroke } ifelse pat pat1 ne pat pat2 ne and { grestore } if w 1 eq { 1 setlinewidth } if 1 setmiterlimit end } def /tgifboxfill { tgifboxdict begin /pat def /y2 exch def /x2 exch def /y1 exch def /x1 exch def pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath pat pat2 eq { 1 setgray fill 0 setgray } { fill } ifelse pat pat1 ne pat pat2 ne and { grestore } if end } def end %%PageBoundingBox: 6 681 355 758 tgifdict begin /tgifsavedpage save def 1 setmiterlimit 1 setlinewidth 0 setgray 72 0 mul 72 11.00 mul translate 72 128 div 100 mul 100 div dup neg scale gsave % POLY/OPEN-SPLINE gsave newpath 274 102 moveto 274 134 lineto stroke grestore % POLY/OPEN-SPLINE gsave newpath 289 122 moveto 0 56 atan dup cos 8 mul 345 exch sub exch sin 8 mul 122 exch sub lineto stroke grestore gsave newpath 345 122 8 3 56 0 tgifarrowtip closepath fill grestore % BOX gsave 1.415 setmiterlimit newpath 350 100 moveto 414 100 lineto 414 132 lineto 350 132 lineto closepath stroke 1 setmiterlimit grestore % POLY/OPEN-SPLINE gsave newpath 382 100 moveto 382 132 lineto stroke grestore % POLY/OPEN-SPLINE gsave newpath 397 114 moveto 0 59 atan dup cos 8 mul 456 exch sub exch sin 8 mul 114 exch sub lineto stroke grestore gsave newpath 456 114 8 3 59 0 tgifarrowtip closepath fill grestore % TEXT 0 setgray /Courier findfont [17 0 0 -17 0 0] makefont setfont gsave 430 170 moveto (violet) show grestore % POLY/OPEN-SPLINE gsave newpath 366 116 moveto 366 165 lineto 0 48 atan dup cos 8 mul 414 exch sub exch sin 8 mul 165 exch sub lineto stroke grestore gsave newpath 414 165 8 3 48 0 tgifarrowtip closepath fill grestore % TEXT 0 setgray /Courier findfont [17 0 0 -17 0 0] makefont setfont gsave 219 78 moveto (flowers) show grestore % POLY/OPEN-SPLINE gsave newpath 298 73 moveto 325 73 lineto 325 111 lineto 0 18 atan dup cos 8 mul 343 exch sub exch sin 8 mul 111 exch sub lineto stroke grestore gsave newpath 343 111 8 3 18 0 tgifarrowtip closepath fill grestore % BOX gsave 1.415 setmiterlimit newpath 459 95 moveto 523 95 lineto 523 127 lineto 459 127 lineto closepath stroke 1 setmiterlimit grestore % POLY/OPEN-SPLINE gsave newpath 490 95 moveto 490 127 lineto stroke grestore % POLY/OPEN-SPLINE gsave newpath 506 112 moveto 0 48 atan dup cos 8 mul 554 exch sub exch sin 8 mul 112 exch sub lineto stroke grestore gsave newpath 554 112 8 3 48 0 tgifarrowtip closepath fill grestore % TEXT 0 setgray /Courier findfont [17 0 0 -17 0 0] makefont setfont gsave 566 118 moveto (nil) show grestore % TEXT 0 setgray /Courier findfont [17 0 0 -17 0 0] makefont setfont gsave 538 151 moveto (buttercup) show grestore % POLY/OPEN-SPLINE gsave newpath 474 109 moveto 474 146 lineto 0 48 atan dup cos 8 mul 522 exch sub exch sin 8 mul 146 exch sub lineto stroke grestore gsave newpath 522 146 8 3 48 0 tgifarrowtip closepath fill grestore % BOX gsave 1.415 setmiterlimit newpath 244 102 moveto 308 102 lineto 308 134 lineto 244 134 lineto closepath stroke 1 setmiterlimit grestore % TEXT 0 setgray /Courier findfont [17 0 0 -17 0 0] makefont setfont gsave 324 189 moveto (rose) show grestore % POLY/OPEN-SPLINE gsave newpath 260 117 moveto 260 184 lineto 0 48 atan dup cos 8 mul 308 exch sub exch sin 8 mul 184 exch sub lineto stroke grestore gsave newpath 308 184 8 3 48 0 tgifarrowtip closepath fill grestore % BOX gsave 1.415 setmiterlimit newpath 146 101 moveto 210 101 lineto 210 133 lineto 146 133 lineto closepath stroke 1 setmiterlimit grestore % POLY/OPEN-SPLINE gsave newpath 177 101 moveto 177 133 lineto stroke grestore % POLY/OPEN-SPLINE gsave newpath 193 118 moveto 0 48 atan dup cos 8 mul 241 exch sub exch sin 8 mul 118 exch sub lineto stroke grestore gsave newpath 241 118 8 3 48 0 tgifarrowtip closepath fill grestore % TEXT 0 setgray /Courier findfont [17 0 0 -17 0 0] makefont setfont gsave 187 178 moveto (lily) show grestore % POLY/OPEN-SPLINE gsave newpath 163 118 moveto 163 171 lineto 0 18 atan dup cos 8 mul 181 exch sub exch sin 8 mul 171 exch sub lineto stroke grestore gsave newpath 181 171 8 3 18 0 tgifarrowtip closepath fill grestore % TEXT 0 setgray /Courier findfont [17 0 0 -17 0 0] makefont setfont gsave 16 78 moveto (bouquet) show grestore % POLY/OPEN-SPLINE gsave newpath 95 73 moveto 122 73 lineto 122 111 lineto 0 18 atan dup cos 8 mul 140 exch sub exch sin 8 mul 111 exch sub lineto stroke grestore gsave newpath 140 111 8 3 18 0 tgifarrowtip closepath fill grestore grestore tgifsavedpage restore end %MatchingCreationDate: Wed Mar 8 14:25:06 1995