One more check on valid display which is known to be in the startup
[xcircuit.git] / examples / analog2.ps
blob416279a001b461ddb29b3f4c5a963c8145d1e74f
1 %%BeginProlog
3 %  PostScript prolog for output from xcircuit
4 %  Version: 2.0
6 %  Electrical circuit (and otherwise general) drawing program
8 %  Written by Tim Edwards 8/5/93--2/25/99  (tim@bach.ece.jhu.edu)
9 %  The Johns Hopkins University
11 %%BeginResource: procset XCIRCproc 2.0 2
12 % supporting definitions --- these are the primary xcircuit types.
14 /XCIRCsave save def
15 /topmat matrix currentmatrix def
17 /fontslant { /slant exch def [1 0 slant 1 0 0] 
18     exch findfont exch makefont dup length dict /ndict exch def
19     { 1 index /FID ne { ndict 3 1 roll put } { pop pop } ifelse } forall
20     ndict definefont pop} def
21 /cf { dup type /realtype eq {40 mul /fscale exch def} if dup /xfont exch def
22    findfont fscale scalefont setfont } def
23 /Ss { gsave 0.67 dup scale gsave mty neg rmoveto
24    glevel 1 add /glevel exch def } def
25 /ss { gsave 0.67 dup scale gsave mty 0.5 mul rmoveto
26    glevel 1 add /glevel exch def } def
27 /ns { currentpoint transform   % preserve x position!
28    glevel {grestore} repeat /glevel 0 def
29    itransform pop currentpoint pop sub 0 rmoveto } def
30 /ul { showflag 1 eq { gsave 
31    currentpoint topmat setmatrix 0 0 moveto 2 index stringwidth pop (_)
32    false charpath flattenpath pathbbox grestore exch pop 1 index
33    sub setlinewidth exch pop currentpoint 3 -1 roll add moveto 0
34    rlineto stroke moveto } if } def
35 /ol { showflag 1 eq { gsave gsave
36    currentpoint topmat setmatrix 2 index stringwidth pop 3 index
37    true charpath flattenpath pathbbox grestore exch pop
38    exch pop topmat setmatrix (_) true charpath pathbbox grestore
39    exch pop 1 index sub setlinewidth exch pop currentpoint
40    exch 4 1 roll exch sub add moveto pop 0 rlineto stroke
41    moveto } if } def
42 /stW { gsave true charpath flattenpath pathbbox pop exch pop sub
43    grestore } def
44 /bs { stW 0 rmoveto } def
45 /pspc 0 def
46 /qS { (aa) stW (a a) stW sub 4 div 0 rmoveto } def
47 /hS { qS qS } def
48 /textx { dup 1 add copy 0 exch { exch dup type /stringtype eq
49         {stringwidth pop add}{exec} ifelse } repeat neg ns } def
50 /mty { 0 topmat setmatrix (A) true charpath flattenpath pathbbox exch
51    pop exch sub exch pop neg grestore } def
52 /texty { gsave 2 copy pop exec mty } def
53 /tcenter { textx grestore 0.5 mul 0 rmoveto } def
54 /tright  { textx grestore fspc sub 0 rmoveto } def
55 /tmiddle { texty 0.5 mul rmoveto } def
56 /ttop    { texty fspc sub rmoveto } def
57 /tshow {{ dup type /stringtype eq {show}{exec} ifelse} repeat ns } def
59 /label  { gsave translate 0 0 moveto rotate /just exch def just 16 and 0 gt
60         {0 1 dtransform gsave pagemat setmatrix idtransform exch grestore
61         1 0 dtransform gsave pagemat setmatrix idtransform exch grestore
62         dup 0 eq {pop mul 0 gt} {3 1 roll pop pop 0 lt} ifelse
63         {-1 /just just dup 3 and 1 ne {3 xor} if def} {1} ifelse exch 0 lt
64         {-1 /just just dup 12 and 4 ne {12 xor} if def} {1} ifelse scale } if
65         /glevel 0 def /showflag 0 def /fspc pspc def
66         just 1 and 0 gt {gsave just 2 and 0 gt {tright}{tcenter} ifelse}
67         {fspc 0 rmoveto} ifelse
68         just 4 and 0 gt {just 8 and 0 gt {ttop}{tmiddle} ifelse}
69         {0 fspc rmoveto} ifelse
70         /showflag 1 def tshow grestore } def
71 /pinlabel { hlevel 0 eq { /pspc 20 def label /pspc 0 def }
72         { pop pop pop pop {pop} repeat } ifelse } def
73 /pinglobal { pinlabel } def
74 /infolabel { pinlabel } def
76 /begingate { /hlevel hlevel 1 add def gsave translate 0 0 moveto dup 0 lt
77         {neg 1 sub -1 1 scale} if rotate dup scale } bind def
78 /makeparm  {3 string cvs dup length 1 add string /tstr exch def tstr exch
79         1 exch putinterval tstr 0 (v) putinterval tstr cvn} bind def
80 /beginparm { -1 1 {makeparm exch def} for
81         dup type /arraytype eq { aload length -1 1 {makeparm exch def}
82         for } if begingate } bind def
83 /endgate { /hlevel hlevel 1 sub def grestore } bind def
85 /hlevel 0 def
86 /tmpa [1 0 0 1 0 0] def
87 /gar {8 8 true tmpa {<c0 c0 00 00 0c 0c 00 00>} imagemask} bind
88 {8 8 true tmpa {<30 70 60 02 03 07 06 20>} imagemask} bind
89 {8 8 true tmpa {<0c 1e 1e 0c c0 e1 e1 c0>} imagemask} bind
90 {8 8 true tmpa {<0f 0f 0f 0f f0 f0 f0 f0>} imagemask} bind
91 {8 8 true tmpa {<3f f3 e1 e1 f3 3f 1e 1e>} imagemask} bind
92 {8 8 true tmpa {<df cf 8f 9f fd fc f8 f9>} imagemask} bind
93 {8 8 true tmpa {<ff 3f 3f ff ff f3 f3 ff>} imagemask} bind 7 array astore def
94 /ppaint { gsave clip tmpa dup setmatrix pathbbox neg exch neg 4 2 roll
95   neg 4 -1 roll 2 copy gt {exch} if 8 div ceiling 8 mul 4 2 roll neg 2 copy
96   gt {exch} if 8 div ceiling 8 mul 3 -1 roll -8 5 -1 roll
97   { 3 index exch 5 exch put dup -8 3 index { 3 index
98   exch 4 exch put 3 index exec } for } for pop pop pop pop grestore } bind def
99 /setstyles {
100   currentlinewidth mul setlinewidth /style exch def
101   style 1 and 0 gt not {closepath} if
102   style 2 and 0 gt {currentlinewidth 4 mul dup 2 array astore 0 setdash} if 
103   style 4 and 0 gt {0.5 currentlinewidth 4 mul 2 array astore 0 setdash} if 
104   style dup 256 ge exch 480 lt and { gsave 1 setgray eofill grestore } if
105   style 16 and 0 gt { gsave style 224 and -5 bitshift dup 7 lt
106         {gar exch get ppaint} { pop eofill } ifelse grestore } if
107   style 8 and 0 gt { newpath } { stroke } ifelse grestore } def
108 /scb { gsave setrgbcolor } bind def  /sce { grestore } bind def
110 /polygon { gsave /num exch def moveto num 1 sub {lineto} repeat setstyles } def
111 /xcarc   { gsave newpath arc setstyles } def
112 /elb { matrix currentmatrix 7 -1 roll 7 -1 roll translate 5 1 roll 4 -1 roll
113         3 index div 1 scale } def
114 /ele { 0 4 1 roll 0 4 1 roll } bind def
115 /ellipse { gsave elb newpath ele arc setmatrix setstyles } def
116 /pellip  { elb ele arc setmatrix } def
117 /nellip  { elb ele arcn setmatrix } def
118 /spline  { gsave moveto curveto setstyles } def
119 /polyc   { {lineto} repeat } bind def
120 /beginpath { gsave moveto } bind def
121 /endpath { setstyles } bind def
122 /bop     { 1 setlinecap 0 setlinejoin 6 setmiterlimit 0 setgray } def
123 /setpagemat {/pagemat matrix currentmatrix def} def
124 /inchscale  {setpagemat 0.375 mul dup scale} def
125 /cmscale    {setpagemat 0.35433071 mul dup scale} def
127 %%EndResource
128 %%EndProlog
130 % XCircuit output starts here.
132 /source {
133 % -32 -64 64 128 bbox
134 % hidden
135 begingate
136 1  1.00 0 0 32 0.00 360.00 xcarc
137 1  1.00 0 32 0 64 2 polygon
138 1  1.00 0 -32 0 -64 2 polygon
139 endgate
140 } def
142 /vsource {
143 % -32 -64 172 128 bbox
144 (5)  1 beginparm
145 % fundamental
146 1.00 0 0 0 source
147 (+) {/Symbol 1.000 cf} 2 5 0 0 18 label
148 (-) {/Symbol 1.000 cf} 2 5 0 0 -18 label
149 1.000 0.000 0.000 scb
150 (v.p) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
151 (v.m) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
153 (spice:V%i %pv.m %pv.p %v5) {/Helvetica 1.000 cf} 2 20 0 -96 -160 infolabel
154 (V) {hS} () v1 () {/Helvetica 1.000 cf} 6 20 0 48 0 label
155 endgate
156 } def
158 /capacitor {
159 % -32 -64 177 128 bbox
160 (1.0)  (p)  2 beginparm
161 % fundamental
162 1  1.00 0 -64 0 -6 2 polygon
163 1  1.00 0 64 0 6 2 polygon
164 1  1.00 -32 6 32 6 2 polygon
165 1  1.00 -32 -6 32 -6 2 polygon
166 1.000 0.000 0.000 scb
167 (c.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
168 (c.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
170 (spice:C%i %pc.1 %pc.2 %v"1.0"%v"p") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel
171 (sim:c %pc.1 %pc.2) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel
172 (F) v2 () {hS} () v1 () {/Helvetica 1.000 cf} 8 20 0 48 0 label
173 endgate
174 } def
176 /resistor {
177 % -14 -64 143 128 bbox
178 (1.0)  (k)  2 beginparm
179 % fundamental
180 1  1.00 0 64 0 36 2 polygon
181 1  1.00 0 -64 0 -36 2 polygon
182 1  1.00 0 -36 14 -30 -14 -18 14 -6 -14 6 14 18 -14 30 0 36 8 polygon
183 1.000 0.000 0.000 scb
184 (r.1) {/Times-Roman 1.000 cf} 2 9 0 0 64 pinlabel
185 (r.2) {/Times-Roman 1.000 cf} 2 13 0 0 -64 pinlabel
187 (spice:R%i %pr.1 %pr.2 %v"1.0"%v"k") {/Times-Roman 1.000 cf} 2 0 0 -208 -160 infolabel
188 (sim:r %pr.1 %pr.2) {/Times-Roman 1.000 cf} 2 0 0 -208 -208 infolabel
189 (W) {/Symbol 1.000 cf} () v2 () {hS} () v1 () {/Helvetica 1.000 cf} 10 20 0 32 0 label
190 endgate
191 } def
193 /gnd {
194 % -32 -60 64 60 bbox
195 begingate
196 1  1.00 0 0 0 -32 2 polygon
197 1  1.00 -32 -32 32 -32 2 polygon
198 1  1.00 -18 -46 18 -46 2 polygon
199 1  1.00 -4 -60 4 -60 2 polygon
200 1.000 0.000 0.000 scb
201 (GND) {/Times-Roman 1.000 cf} 2 1 0 0 0 pinglobal
203 endgate
204 } def
206 %%Page: 1 1
207 %%PageOrientation: Portrait
208 /pgsave save def bop
209 % 400 336 offsets
210 1.0000 inchscale
211 2.6000 setlinewidth
213 1.00 0 400 400 [(2.5) ] vsource
214 1.00 0 656 400 [(1.0) (u) ] capacitor
215 1  1.00 656 464 656 528 2 polygon
216 1  1.00 400 336 400 272 656 272 656 336 4 polygon
217 1.00 0 400 528 [(100) () ] resistor
218 1  1.00 400 592 400 624 656 624 656 528 4 polygon
219 1.00 0 400 272 gnd
220 pgsave restore showpage
222 %%Trailer
223 XCIRCsave restore
224 %%EOF