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 |