OLD | NEW |
| (Empty) |
1 #!/usr/bin/perl | |
2 # | |
3 # Copyright (c) International Business Machines Corp., 2002 | |
4 # | |
5 # This program is free software; you can redistribute it and/or modify | |
6 # it under the terms of the GNU General Public License as published by | |
7 # the Free Software Foundation; either version 2 of the License, or (at | |
8 # your option) any later version. | |
9 # | |
10 # This program is distributed in the hope that it will be useful, but | |
11 # WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 # General Public License for more details. | |
14 # | |
15 # You should have received a copy of the GNU General Public License | |
16 # along with this program; if not, write to the Free Software | |
17 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 # | |
19 # | |
20 # posterize.pl | |
21 # | |
22 # This script generates a postscript file from output generated from the | |
23 # fcgp http://sourceforge.net/projects/fcgp/ for plotting | |
24 # | |
25 # | |
26 # History: | |
27 # 2003-09-04 wrote - James M Kenefick Jr. <jkenefic@us.ibm.com> | |
28 # | |
29 | |
30 | |
31 | |
32 # a good deal of this could be turned in to cli | |
33 # arguments. | |
34 | |
35 # Constants | |
36 my $Title = "Linux Kernel Coverage"; | |
37 my $KernelVersion = "2.5.73"; | |
38 my $TestDescription = "A Sample Print"; | |
39 my $Image = "../lgp/image.ps"; | |
40 | |
41 # Variables | |
42 my $Bounds = ""; | |
43 # Paper sizes in inches | |
44 my $PAPER_WIDTH = 34; | |
45 my $PAPER_HEIGHT = 42; | |
46 | |
47 # points per inch | |
48 my $ppi = 72; | |
49 | |
50 # Margins | |
51 my $TopMargin = 1; | |
52 my $BottomMargin = 1.5; | |
53 my $LeftMargin = 1; | |
54 my $RightMargin = 1; | |
55 | |
56 | |
57 $RightMargin = $PAPER_WIDTH - $RightMargin; | |
58 $TopMargin = $PAPER_HEIGHT - $TopMargin; | |
59 | |
60 my $filename = "poster.ps"; | |
61 | |
62 # Sizes in ppi | |
63 my $PPI_WIDTH = ($PAPER_WIDTH * $ppi); | |
64 my $PPI_HEIGHT = ($PAPER_HEIGHT * $ppi); | |
65 | |
66 # Date we create poster | |
67 my $date = `date`; | |
68 | |
69 print STDERR "Creating Poster\n"; | |
70 | |
71 open POSTER, ">$filename"; | |
72 | |
73 | |
74 | |
75 print(POSTER <<END_OF_USAGE); | |
76 %!PS-Adobe-1.0 | |
77 %%DocumentFonts: Helvetica Helvetica-Bold | |
78 %%Title: Linux 2.4.0 Kernel Poster | |
79 %%Creator: Rusty's scripts and postersize (GPL) | |
80 %%CreationDate: $date | |
81 %%Pages: 1 | |
82 %%BoundingBox: 0 0 $PPI_WIDTH $PPI_HEIGHT | |
83 %%EndComments | |
84 %! | |
85 /PRorig_showpage_x178313 /showpage load def /showpage{ | |
86 errordict /handleerror {} put | |
87 }def | |
88 /initgraphics{}def/setpagedevice{pop}def | |
89 statusdict begin /a4tray{}def /lettertray{}def end | |
90 /a4{}def/a3{}def/a0{}def/letter{}def/legal{}def | |
91 /a4small{}def /lettersmall{}def /a4tray{}def /lettertray{}def | |
92 /setscreen{pop pop pop}def | |
93 /ColorManagement {pop} def | |
94 | |
95 | |
96 /A {gsave newpath 0 360 arc stroke grestore} bind def | |
97 /M {moveto} bind def | |
98 /L {lineto} bind def | |
99 /D {[] 0 setdash} bind def | |
100 /D5 {[5] 0 setdash} bind def | |
101 /C0 {0 0 0 setrgbcolor} bind def | |
102 /C1 {.8 .4 .4 setrgbcolor} bind def | |
103 /C2 {.5 1 .5 setrgbcolor} bind def | |
104 /C3 {0 .7 0 setrgbcolor} bind def | |
105 /C4 {1 0 0 setrgbcolor} bind def | |
106 /C5 {0 0 1 setrgbcolor} bind def | |
107 /R {grestore} bind def | |
108 /S {0 0 M stroke} bind def | |
109 /T {gsave translate} bind def | |
110 /U {C0 newpath 4 copy 4 2 roll 8 7 roll M L L L closepath stroke | |
111 C1 findfont exch scalefont setfont M show} bind def | |
112 | |
113 % Added James M Kenefick Jr. | |
114 /Hi_Color {0 0 1} def | |
115 /Med_Color {0 .60 1} def | |
116 /Lo_Color {0 1 1} def | |
117 /None_Color {.75 .75 .75} def | |
118 /Hi {newpath 4 copy 4 2 roll 8 7 roll M L L L Hi_Color setrgbcolor fill closepat
h} bind def | |
119 /Med {newpath 4 copy 4 2 roll 8 7 roll M L L L Med_Color setrgbcolor fill closep
ath} bind def | |
120 /Lo {newpath 4 copy 4 2 roll 8 7 roll M L L L Lo_Color setrgbcolor fill closepat
h} bind def | |
121 /None {newpath 4 copy 4 2 roll 8 7 roll M L L L None_Color setrgbcolor fill clos
epath} bind def | |
122 | |
123 /inch | |
124 { | |
125 72 mul | |
126 } | |
127 def | |
128 | |
129 /LeftMargin $LeftMargin inch def | |
130 /RightMargin $RightMargin inch def | |
131 /TopMargin $TopMargin inch def | |
132 /BottomMargin $BottomMargin inch def | |
133 /FontScale 25 def | |
134 /AuthorFontScale 70 def | |
135 | |
136 /centerText | |
137 { | |
138 dup | |
139 stringwidth pop | |
140 2 div | |
141 RightMargin LeftMargin sub 2 div | |
142 exch sub | |
143 LeftMargin add | |
144 NextLine moveto | |
145 show | |
146 } | |
147 def | |
148 | |
149 /upLine | |
150 { | |
151 /NextLine | |
152 NextLine LineSpace2 add | |
153 def | |
154 } | |
155 def | |
156 | |
157 /advanceLine | |
158 { | |
159 /NextLine | |
160 NextLine LineSpace sub | |
161 def | |
162 } | |
163 def | |
164 | |
165 /fontScale | |
166 { | |
167 TopMargin BottomMargin sub FontScale div | |
168 } | |
169 def | |
170 | |
171 /authorfontScale | |
172 { | |
173 TopMargin BottomMargin sub AuthorFontScale div | |
174 } | |
175 def | |
176 | |
177 /rightJustify | |
178 { | |
179 dup | |
180 stringwidth pop | |
181 RightMargin 1 inch sub | |
182 exch sub | |
183 NextLine moveto | |
184 show | |
185 } | |
186 def | |
187 | |
188 /usableY | |
189 { | |
190 TopMargin LineSpace 3 mul sub BottomMargin sub | |
191 } | |
192 def | |
193 | |
194 /usableX | |
195 { | |
196 RightMargin LeftMargin sub | |
197 } | |
198 def | |
199 gsave | |
200 /Times-Roman findfont fontScale scalefont setfont | |
201 /LineSpace fontScale def | |
202 /NextLine (B) stringwidth pop TopMargin exch sub def | |
203 | |
204 %%EndProlog | |
205 %%Page 1 | |
206 % title | |
207 | |
208 ($Title) centerText advanceLine | |
209 (Kernel: $KernelVersion) centerText advanceLine | |
210 ($TestDescription) centerText | |
211 | |
212 % Author Block | |
213 LeftMargin BottomMargin translate | |
214 /Times-Roman findfont authorfontScale scalefont setfont | |
215 /LineSpace2 authorfontScale def | |
216 /NextLine 0 def | |
217 (Based on work by Rusty Russell, Christian Reiniger) rightJustify | |
218 upLine | |
219 (By James M. Kenefick Jr.) rightJustify | |
220 | |
221 grestore | |
222 LeftMargin BottomMargin translate | |
223 | |
224 % Key Block | |
225 15 15 scale | |
226 % This is the key for the graph. | |
227 | |
228 /box { newpath moveto 0 1 rlineto 2 0 rlineto 0 -1 rlineto closepath } def | |
229 /key { setrgbcolor 2 copy box gsave fill grestore 0 0 0 setrgbcolor strokepath f
ill moveto 2.4 0.25 rmoveto show } def | |
230 | |
231 /Helvetica-Oblique findfont | |
232 1 scalefont setfont | |
233 0.1 setlinewidth | |
234 | |
235 (static functions) 1 5 0.5 1 0.5 key % Light green. | |
236 (indirectly called functions) 1 7 0 0.7 0 key % green | |
237 (exported functions) 1 9 1 0 0 key % red | |
238 (other functions) 1 11 0 0 1 key % blue | |
239 | |
240 (Low Coverage) 1 15 Lo_Color key % blue | |
241 (Medium Coverage) 1 17 Med_Color key % blue | |
242 (Hi Coverage) 1 19 Hi_Color key % blue | |
243 (No Coverage) 1 21 None_Color key % blue | |
244 1 3.25 moveto | |
245 0.8 0.4 0.4 setrgbcolor | |
246 /Helvetica findfont | |
247 1 scalefont setfont | |
248 (xxx) show | |
249 1 3 moveto | |
250 2.4 0.25 rmoveto | |
251 0 0 0 setrgbcolor | |
252 /Helvetica-Oblique findfont | |
253 1 scalefont setfont | |
254 (function name) show | |
255 | |
256 1 1.25 moveto | |
257 0.8 0.4 0.4 setrgbcolor | |
258 /Helvetica-Bold findfont | |
259 1 scalefont setfont | |
260 (xxx) show | |
261 1 1 moveto | |
262 2.4 0.25 rmoveto | |
263 0 0 0 setrgbcolor | |
264 /Helvetica-Oblique findfont | |
265 1 scalefont setfont | |
266 (source filename) show | |
267 | |
268 6 24 moveto | |
269 /Helvetica-Bold findfont | |
270 2 scalefont setfont | |
271 (Key) show | |
272 | |
273 % Box around it | |
274 newpath | |
275 0.2 0.2 moveto | |
276 0.2 27 lineto | |
277 17 27 lineto | |
278 17 0.2 lineto | |
279 closepath | |
280 strokepath fill | |
281 | |
282 | |
283 1 15 div 1 15 div scale | |
284 | |
285 % find and move to center | |
286 END_OF_USAGE | |
287 | |
288 # Find the bounds for the image | |
289 | |
290 $Bounds = `tail -1 $Image`; | |
291 ($Junk, $Junk, $minX, $minY, $maxX, $maxY) = split / /, $Bounds; | |
292 | |
293 my $xRange = $maxX - $minX; | |
294 my $yRange = $maxY - $minY; | |
295 | |
296 if ($xRange < $yRange){ | |
297 $Range = $xRange; | |
298 } else { | |
299 $Range = $yRange; | |
300 } | |
301 print POSTER " 0 usableY usableX sub 2 div translate\n"; | |
302 print POSTER "usableX $Range div usableX $Range div scale\n"; | |
303 print POSTER "$Range 2 div $Range 2 div translate\n"; | |
304 print POSTER "gsave\n"; | |
305 # Paste in actual image. | |
306 print POSTER `cat /home/lgp/image.ps`; | |
307 print POSTER "%%Trailer\n"; | |
308 print POSTER "grestore\n"; | |
309 print POSTER "showpage\n"; | |
310 print POSTER "PRorig_showpage_x178313\n"; | |
311 print POSTER "/showpage /PRorig_showpage_x178313 load def\n"; | |
312 | |
OLD | NEW |