1%! 2%%BoundingBox: 15 712 321 775 3%%Title: cons-cell-diagram2 4%%CreationDate: Wed Mar 8 14:26:39 1995 5%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) 6% 7% Due to bugs in Transcript, the 'PS-Adobe-' stuff is omitted from line 1 8% 9 10% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007 11% Free Software Foundation, Inc. 12% 13% This file is part of GNU Emacs. 14% 15% GNU Emacs is free software; you can redistribute it and/or modify 16% it under the terms of the GNU General Public License as published by 17% the Free Software Foundation; either version 2, or (at your option) 18% any later version. 19% 20% GNU Emacs is distributed in the hope that it will be useful, 21% but WITHOUT ANY WARRANTY; without even the implied warranty of 22% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23% GNU General Public License for more details. 24% 25% You should have received a copy of the GNU General Public License 26% along with GNU Emacs; see the file COPYING. If not, write to 27% the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 28% Boston, MA 02110-1301, USA. 29 30/tgifdict 132 dict def 31tgifdict begin 32 33% 34% Using a zero value radius for an ellipse or an arc would result 35% in a non-invertible CTM matrix which causes problem when this 36% when this PostScript is wrapped inside other routines, such as 37% the multi.ps package from 38% ftp.ucc.su.oz.au:/pub/ps_printing/multi. You can overcome such 39% error by uncommenting the sole line of the procedure below: 40% 41/tgif_min_radius 42 { 43% dup 0.01 lt { pop 0.01 } if 44 } bind def 45 46/tgifellipsedict 6 dict def 47tgifellipsedict /mtrx matrix put 48 49/tgifellipse 50 { tgifellipsedict begin 51 /yrad exch def 52 /xrad exch def 53 /y exch def 54 /x exch def 55 /savematrix mtrx currentmatrix def 56 x y translate 57 xrad yrad scale 58 0 0 1 0 360 arc 59 savematrix setmatrix 60 end 61 } def 62 63/tgifarrowtipdict 8 dict def 64tgifarrowtipdict /mtrx matrix put 65 66/tgifarrowtip 67 { tgifarrowtipdict begin 68 /dy exch def 69 /dx exch def 70 /h exch def 71 /w exch def 72 /y exch def 73 /x exch def 74 /savematrix mtrx currentmatrix def 75 x y translate 76 dy dx atan rotate 77 0 0 moveto 78 w neg h lineto 79 w neg h neg lineto 80 savematrix setmatrix 81 end 82 } def 83 84/tgifarcdict 8 dict def 85tgifarcdict /mtrx matrix put 86 87/tgifarcn 88 { tgifarcdict begin 89 /endangle exch def 90 /startangle exch def 91 /yrad exch def 92 /xrad exch def 93 /y exch def 94 /x exch def 95 /savematrix mtrx currentmatrix def 96 x y translate 97 xrad yrad scale 98 0 0 1 startangle endangle arc 99 savematrix setmatrix 100 end 101 } def 102 103/tgifarc 104 { tgifarcdict begin 105 /endangle exch def 106 /startangle exch def 107 /yrad exch def 108 /xrad exch def 109 /y exch def 110 /x exch def 111 /savematrix mtrx currentmatrix def 112 x y translate 113 xrad yrad scale 114 0 0 1 startangle endangle arcn 115 savematrix setmatrix 116 end 117 } def 118 119/tgifsetuserscreendict 22 dict def 120tgifsetuserscreendict begin 121 /tempctm matrix def 122 /temprot matrix def 123 /tempscale matrix def 124 125 /concatprocs 126 { /proc2 exch cvlit def 127 /proc1 exch cvlit def 128 /newproc proc1 length proc2 length add array def 129 newproc 0 proc1 putinterval 130 newproc proc1 length proc2 putinterval 131 newproc cvx 132 } def 133 /resmatrix matrix def 134 /findresolution 135 { 72 0 resmatrix defaultmatrix dtransform 136 /yres exch def /xres exch def 137 xres dup mul yres dup mul add sqrt 138 } def 139end 140 141/tgifsetuserscreen 142 { tgifsetuserscreendict begin 143 /spotfunction exch def 144 /screenangle exch def 145 /cellsize exch def 146 147 /m tempctm currentmatrix def 148 /rm screenangle temprot rotate def 149 /sm cellsize dup tempscale scale def 150 151 sm rm m m concatmatrix m concatmatrix pop 152 153 1 0 m dtransform /y1 exch def /x1 exch def 154 155 /veclength x1 dup mul y1 dup mul add sqrt def 156 /frequency findresolution veclength div def 157 158 /newscreenangle y1 x1 atan def 159 160 m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt 161 162 {{neg} /spotfunction load concatprocs 163 /spotfunction exch def 164 } if 165 166 frequency newscreenangle /spotfunction load setscreen 167 end 168 } def 169 170/tgifsetpatterndict 18 dict def 171tgifsetpatterndict begin 172 /bitison 173 { /ybit exch def /xbit exch def 174 /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def 175 176 /mask 1 7 xbit 8 mod sub bitshift def 177 bytevalue mask and 0 ne 178 } def 179end 180 181/tgifbitpatternspotfunction 182 { tgifsetpatterndict begin 183 /y exch def /x exch def 184 185 /xindex x 1 add 2 div bpside mul cvi def 186 /yindex y 1 add 2 div bpside mul cvi def 187 188 xindex yindex bitison 189 { /onbits onbits 1 add def 1 } 190 { /offbits offbits 1 add def 0 } 191 ifelse 192 end 193 } def 194 195/tgifsetpattern 196 { tgifsetpatterndict begin 197 /cellsz exch def 198 /angle exch def 199 /bwidth exch def 200 /bpside exch def 201 /bstring exch def 202 203 /onbits 0 def /offbits 0 def 204 cellsz angle /tgifbitpatternspotfunction load tgifsetuserscreen 205 {} settransfer 206 offbits offbits onbits add div setgray 207 end 208 } def 209 210/tgifxpmdict 4 dict def 211/tgifbwpicstr 1 string def 212/tgifcolorpicstr 3 string def 213 214/tgifsetpixels { tgifxpmdict begin /pixels exch def end } def 215 216/tgifsetpix { tgifxpmdict begin pixels 3 1 roll putinterval end } def 217 218/tgifbwspot 219 { tgifxpmdict begin 220 /index exch def 221 tgifbwpicstr 0 222 pixels index 3 mul 3 getinterval aload pop 223 255 mul .114 mul exch 255 mul .587 mul add exch 255 mul .299 mul add 224 cvi put 225 tgifbwpicstr 226 end 227 } def 228 229/tgifcolorspot 230 { tgifxpmdict begin 231 /index exch def 232 pixels index 3 mul 3 getinterval aload pop 233 255 mul cvi tgifcolorpicstr 2 3 -1 roll put 234 255 mul cvi tgifcolorpicstr 1 3 -1 roll put 235 255 mul cvi tgifcolorpicstr 0 3 -1 roll put 236 tgifcolorpicstr 237 end 238 } def 239 240/tgifnewcolorspot 241 { tgifxpmdict begin 242 /index exch def 243 pixels index 3 mul 3 getinterval aload pop setrgbcolor 244 end 245 } def 246 247/tgifcolordict 4 dict def 248 249/colorimage where 250 { pop } 251 { /colorimage 252 { tgifcolordict begin 253 pop pop pop pop pop 254 /ih exch def 255 /iw exch def 256 /x 0 def 257 /y 0 def 258 1 1 ih 259 { pop 1 1 iw 260 { pop currentfile 261 tgifbwpicstr readhexstring pop 0 get tgifnewcolorspot 262 x y moveto 1 0 rlineto 0 1 rlineto -1 0 rlineto 263 closepath fill 264 /x x 1 add def 265 } for 266 /y y 1 add def 267 /x 0 def 268 } for 269 end 270 } def 271 } ifelse 272 273/tgifpatdict 10 dict def 274 275/tgifpatbyte 276 { currentdict /retstr get exch 277 pat i cellsz mod get put 278 } def 279 280/tgifpatproc 281 { 0 1 widthlim {tgifpatbyte} for retstr 282 /i i 1 add def 283 } def 284 285/tgifpatfill 286 { tgifpatdict begin 287 /h exch def 288 /w exch def 289 /lty exch def 290 /ltx exch def 291 /cellsz exch def 292 /pat exch def 293 294 /widthlim w cellsz div cvi 1 sub def 295 /retstr widthlim 1 add string def 296 /i 0 def 297 298 ltx lty translate 299 w h true [1 0 0 1 0 0] {tgifpatproc} imagemask 300 ltx neg lty neg translate 301 end 302 } def 303 304/pat1 <ffffffffffffffff> def 305/pat2 <0000000000000000> def 306/pat3 <8000000008000000> def 307/pat4 <8800000022000000> def 308/pat5 <8800220088002200> def 309/pat6 <8822882288228822> def 310/pat7 <aa55aa55aa55aa55> def 311/pat8 <77dd77dd77dd77dd> def 312/pat9 <77ffddff77ffddff> def 313/pat10 <77ffffff77ffffff> def 314/pat11 <7fffffff7fffffff> def 315/pat12 <8040200002040800> def 316/pat13 <40a00000040a0000> def 317/pat14 <ff888888ff888888> def 318/pat15 <ff808080ff080808> def 319/pat16 <f87422478f172271> def 320/pat17 <038448300c020101> def 321/pat18 <081c22c180010204> def 322/pat19 <8080413e080814e3> def 323/pat20 <8040201008040201> def 324/pat21 <8844221188442211> def 325/pat22 <77bbddee77bbddee> def 326/pat23 <c1e070381c0e0783> def 327/pat24 <7fbfdfeff7fbfdfe> def 328/pat25 <3e1f8fc7e3f1f87c> def 329/pat26 <0102040810204080> def 330/pat27 <1122448811224488> def 331/pat28 <eeddbb77eeddbb77> def 332/pat29 <83070e1c3870e0c1> def 333/pat30 <fefdfbf7efdfbf7f> def 334/pat31 <7cf8f1e3c78f1f3e> def 335 336/tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def 337 338/tgifrighttext { dup stringwidth pop neg 0 rmoveto } def 339 340/tgifreencsmalldict 12 dict def 341/tgifReEncodeSmall 342 { tgifreencsmalldict begin 343 /newcodesandnames exch def 344 /newfontname exch def 345 /basefontname exch def 346 347 /basefontdict basefontname findfont def 348 /newfont basefontdict maxlength dict def 349 350 basefontdict 351 { exch dup /FID ne 352 { dup /Encoding eq 353 { exch dup length array copy newfont 3 1 roll put } 354 { exch newfont 3 1 roll put } 355 ifelse 356 } 357 { pop pop } 358 ifelse 359 } 360 forall 361 362 newfont /FontName newfontname put 363 newcodesandnames aload pop 364 365 newcodesandnames length 2 idiv 366 { newfont /Encoding get 3 1 roll put} 367 repeat 368 369 newfontname newfont definefont pop 370 end 371 } def 372 373/tgifgray { 8 1 0 72 300 32 div div tgifsetpattern } bind def 374 375/tgifboxdict 6 dict def 376/tgifboxstroke 377 { tgifboxdict begin 378 /pat def /w def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 379 1.415 setmiterlimit 380 w 1 eq { w setlinewidth } if 381 pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 382 newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 383 pat pat2 eq { 1 setgray stroke 0 setgray } { stroke } ifelse 384 pat pat1 ne pat pat2 ne and { grestore } if 385 w 1 eq { 1 setlinewidth } if 386 1 setmiterlimit 387 end 388 } def 389/tgifboxfill 390 { tgifboxdict begin 391 /pat def /y2 exch def /x2 exch def /y1 exch def /x1 exch def 392 pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if 393 newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath 394 pat pat2 eq { 1 setgray fill 0 setgray } { fill } ifelse 395 pat pat1 ne pat pat2 ne and { grestore } if 396 end 397 } def 398 399end 400 401%%PageBoundingBox: 15 712 321 775 402tgifdict begin 403/tgifsavedpage save def 404 4051 setmiterlimit 4061 setlinewidth 407 4080 setgray 409 41072 0 mul 72 11.00 mul translate 41172 128 div 100 mul 100 div dup neg scale 412 413gsave 414 415% TEXT 4160 setgray 417/Courier findfont [17 0 0 -17 0 0] makefont setfont 418 gsave 419 32 47 moveto (bouquet) show 420 grestore 421 422% BOX 423gsave 424 1.415 setmiterlimit 425 newpath 426 122 65 moveto 186 65 lineto 186 97 lineto 122 97 lineto 427 closepath stroke 428 1 setmiterlimit 429grestore 430 431% POLY/OPEN-SPLINE 432gsave 433 newpath 434 154 65 moveto 435 154 97 lineto 436 stroke 437grestore 438 439% POLY/OPEN-SPLINE 440gsave 441 newpath 442 170 81 moveto 443 0 80 atan dup cos 8 mul 250 exch sub 444 exch sin 8 mul 81 exch sub lineto 445 stroke 446grestore 447gsave 448 newpath 449 250 81 8 3 80 0 tgifarrowtip 450 closepath fill 451grestore 452 453% TEXT 4540 setgray 455/Courier findfont [17 0 0 -17 0 0] makefont setfont 456 gsave 457 202 135 moveto (rose) show 458 grestore 459 460% POLY/OPEN-SPLINE 461gsave 462 newpath 463 138 81 moveto 464 138 130 lineto 465 0 48 atan dup cos 8 mul 186 exch sub 466 exch sin 8 mul 130 exch sub lineto 467 stroke 468grestore 469gsave 470 newpath 471 186 130 8 3 48 0 tgifarrowtip 472 closepath fill 473grestore 474 475% BOX 476gsave 477 1.415 setmiterlimit 478 newpath 479 255 65 moveto 319 65 lineto 319 97 lineto 255 97 lineto 480 closepath stroke 481 1 setmiterlimit 482grestore 483 484% POLY/OPEN-SPLINE 485gsave 486 newpath 487 287 65 moveto 488 287 97 lineto 489 stroke 490grestore 491 492% POLY/OPEN-SPLINE 493gsave 494 newpath 495 303 81 moveto 496 0 93 atan dup cos 8 mul 396 exch sub 497 exch sin 8 mul 81 exch sub lineto 498 stroke 499grestore 500gsave 501 newpath 502 396 81 8 3 93 0 tgifarrowtip 503 closepath fill 504grestore 505 506% TEXT 5070 setgray 508/Courier findfont [17 0 0 -17 0 0] makefont setfont 509 gsave 510 335 135 moveto (violet) show 511 grestore 512 513% POLY/OPEN-SPLINE 514gsave 515 newpath 516 271 81 moveto 517 271 130 lineto 518 0 48 atan dup cos 8 mul 319 exch sub 519 exch sin 8 mul 130 exch sub lineto 520 stroke 521grestore 522gsave 523 newpath 524 319 130 8 3 48 0 tgifarrowtip 525 closepath fill 526grestore 527 528% BOX 529gsave 530 1.415 setmiterlimit 531 newpath 532 398 63 moveto 462 63 lineto 462 95 lineto 398 95 lineto 533 closepath stroke 534 1 setmiterlimit 535grestore 536 537% POLY/OPEN-SPLINE 538gsave 539 newpath 540 429 63 moveto 541 429 95 lineto 542 stroke 543grestore 544 545% POLY/OPEN-SPLINE 546gsave 547 newpath 548 445 80 moveto 549 0 48 atan dup cos 8 mul 493 exch sub 550 exch sin 8 mul 80 exch sub lineto 551 stroke 552grestore 553gsave 554 newpath 555 493 80 8 3 48 0 tgifarrowtip 556 closepath fill 557grestore 558 559% TEXT 5600 setgray 561/Courier findfont [17 0 0 -17 0 0] makefont setfont 562 gsave 563 477 134 moveto (buttercup) show 564 grestore 565 566% POLY/OPEN-SPLINE 567gsave 568 newpath 569 413 80 moveto 570 413 129 lineto 571 0 48 atan dup cos 8 mul 461 exch sub 572 exch sin 8 mul 129 exch sub lineto 573 stroke 574grestore 575gsave 576 newpath 577 461 129 8 3 48 0 tgifarrowtip 578 closepath fill 579grestore 580 581% TEXT 5820 setgray 583/Courier findfont [17 0 0 -17 0 0] makefont setfont 584 gsave 585 505 86 moveto (nil) show 586 grestore 587 588% POLY/OPEN-SPLINE 589gsave 590 newpath 591 66 53 moveto 592 66 81 lineto 593 0 46 atan dup cos 8 mul 112 exch sub 594 exch sin 8 mul 81 exch sub lineto 595 stroke 596grestore 597gsave 598 newpath 599 112 81 8 3 46 0 tgifarrowtip 600 closepath fill 601grestore 602 603grestore 604tgifsavedpage restore 605end 606%MatchingCreationDate: Wed Mar 8 14:26:39 1995 607