Home | History | Annotate | Download | only in galaxy
      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 (at] 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 closepath} bind def
    119 /Med {newpath 4 copy 4 2 roll 8 7 roll M L L L Med_Color setrgbcolor fill closepath} bind def
    120 /Lo {newpath 4 copy 4 2 roll 8 7 roll M L L L Lo_Color setrgbcolor fill closepath} bind def
    121 /None {newpath 4 copy 4 2 roll 8 7 roll M L L L None_Color setrgbcolor fill closepath} 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 fill 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 
    313