diff options
Diffstat (limited to 'third_party/lcov/contrib/galaxy/posterize.pl')
-rwxr-xr-x | third_party/lcov/contrib/galaxy/posterize.pl | 312 |
1 files changed, 312 insertions, 0 deletions
diff --git a/third_party/lcov/contrib/galaxy/posterize.pl b/third_party/lcov/contrib/galaxy/posterize.pl new file mode 100755 index 0000000..1b2895ed --- /dev/null +++ b/third_party/lcov/contrib/galaxy/posterize.pl @@ -0,0 +1,312 @@ +#!/usr/bin/perl +# +# Copyright (c) International Business Machines Corp., 2002 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# +# posterize.pl +# +# This script generates a postscript file from output generated from the +# fcgp http://sourceforge.net/projects/fcgp/ for plotting +# +# +# History: +# 2003-09-04 wrote - James M Kenefick Jr. <jkenefic@us.ibm.com> +# + + + +# a good deal of this could be turned in to cli +# arguments. + +# Constants +my $Title = "Linux Kernel Coverage"; +my $KernelVersion = "2.5.73"; +my $TestDescription = "A Sample Print"; +my $Image = "../lgp/image.ps"; + +# Variables +my $Bounds = ""; +# Paper sizes in inches +my $PAPER_WIDTH = 34; +my $PAPER_HEIGHT = 42; + +# points per inch +my $ppi = 72; + +# Margins +my $TopMargin = 1; +my $BottomMargin = 1.5; +my $LeftMargin = 1; +my $RightMargin = 1; + + +$RightMargin = $PAPER_WIDTH - $RightMargin; +$TopMargin = $PAPER_HEIGHT - $TopMargin; + +my $filename = "poster.ps"; + +# Sizes in ppi +my $PPI_WIDTH = ($PAPER_WIDTH * $ppi); +my $PPI_HEIGHT = ($PAPER_HEIGHT * $ppi); + +# Date we create poster +my $date = `date`; + +print STDERR "Creating Poster\n"; + +open POSTER, ">$filename"; + + + +print(POSTER <<END_OF_USAGE); +%!PS-Adobe-1.0 +%%DocumentFonts: Helvetica Helvetica-Bold +%%Title: Linux 2.4.0 Kernel Poster +%%Creator: Rusty's scripts and postersize (GPL) +%%CreationDate: $date +%%Pages: 1 +%%BoundingBox: 0 0 $PPI_WIDTH $PPI_HEIGHT +%%EndComments +%! +/PRorig_showpage_x178313 /showpage load def /showpage{ + errordict /handleerror {} put + }def +/initgraphics{}def/setpagedevice{pop}def +statusdict begin /a4tray{}def /lettertray{}def end +/a4{}def/a3{}def/a0{}def/letter{}def/legal{}def +/a4small{}def /lettersmall{}def /a4tray{}def /lettertray{}def +/setscreen{pop pop pop}def +/ColorManagement {pop} def + + +/A {gsave newpath 0 360 arc stroke grestore} bind def +/M {moveto} bind def +/L {lineto} bind def +/D {[] 0 setdash} bind def +/D5 {[5] 0 setdash} bind def +/C0 {0 0 0 setrgbcolor} bind def +/C1 {.8 .4 .4 setrgbcolor} bind def +/C2 {.5 1 .5 setrgbcolor} bind def +/C3 {0 .7 0 setrgbcolor} bind def +/C4 {1 0 0 setrgbcolor} bind def +/C5 {0 0 1 setrgbcolor} bind def +/R {grestore} bind def +/S {0 0 M stroke} bind def +/T {gsave translate} bind def +/U {C0 newpath 4 copy 4 2 roll 8 7 roll M L L L closepath stroke +C1 findfont exch scalefont setfont M show} bind def + +% Added James M Kenefick Jr. +/Hi_Color {0 0 1} def +/Med_Color {0 .60 1} def +/Lo_Color {0 1 1} def +/None_Color {.75 .75 .75} def +/Hi {newpath 4 copy 4 2 roll 8 7 roll M L L L Hi_Color setrgbcolor fill closepath} bind def +/Med {newpath 4 copy 4 2 roll 8 7 roll M L L L Med_Color setrgbcolor fill closepath} bind def +/Lo {newpath 4 copy 4 2 roll 8 7 roll M L L L Lo_Color setrgbcolor fill closepath} bind def +/None {newpath 4 copy 4 2 roll 8 7 roll M L L L None_Color setrgbcolor fill closepath} bind def + +/inch +{ + 72 mul +} +def + +/LeftMargin $LeftMargin inch def +/RightMargin $RightMargin inch def +/TopMargin $TopMargin inch def +/BottomMargin $BottomMargin inch def +/FontScale 25 def +/AuthorFontScale 70 def + +/centerText +{ + dup + stringwidth pop + 2 div + RightMargin LeftMargin sub 2 div + exch sub + LeftMargin add + NextLine moveto + show +} +def + +/upLine +{ + /NextLine + NextLine LineSpace2 add + def +} +def + +/advanceLine +{ + /NextLine + NextLine LineSpace sub + def +} +def + +/fontScale +{ + TopMargin BottomMargin sub FontScale div +} +def + +/authorfontScale +{ + TopMargin BottomMargin sub AuthorFontScale div +} +def + +/rightJustify +{ + dup + stringwidth pop + RightMargin 1 inch sub + exch sub + NextLine moveto + show +} +def + +/usableY +{ + TopMargin LineSpace 3 mul sub BottomMargin sub +} +def + +/usableX +{ + RightMargin LeftMargin sub +} +def +gsave +/Times-Roman findfont fontScale scalefont setfont +/LineSpace fontScale def +/NextLine (B) stringwidth pop TopMargin exch sub def + +%%EndProlog +%%Page 1 +% title + +($Title) centerText advanceLine +(Kernel: $KernelVersion) centerText advanceLine +($TestDescription) centerText + +% Author Block +LeftMargin BottomMargin translate +/Times-Roman findfont authorfontScale scalefont setfont +/LineSpace2 authorfontScale def +/NextLine 0 def +(Based on work by Rusty Russell, Christian Reiniger) rightJustify +upLine +(By James M. Kenefick Jr.) rightJustify + +grestore +LeftMargin BottomMargin translate + +% Key Block +15 15 scale +% This is the key for the graph. + +/box { newpath moveto 0 1 rlineto 2 0 rlineto 0 -1 rlineto closepath } def +/key { setrgbcolor 2 copy box gsave fill grestore 0 0 0 setrgbcolor strokepath fill moveto 2.4 0.25 rmoveto show } def + +/Helvetica-Oblique findfont +1 scalefont setfont +0.1 setlinewidth + +(static functions) 1 5 0.5 1 0.5 key % Light green. +(indirectly called functions) 1 7 0 0.7 0 key % green +(exported functions) 1 9 1 0 0 key % red +(other functions) 1 11 0 0 1 key % blue + +(Low Coverage) 1 15 Lo_Color key % blue +(Medium Coverage) 1 17 Med_Color key % blue +(Hi Coverage) 1 19 Hi_Color key % blue +(No Coverage) 1 21 None_Color key % blue +1 3.25 moveto +0.8 0.4 0.4 setrgbcolor +/Helvetica findfont +1 scalefont setfont +(xxx) show +1 3 moveto +2.4 0.25 rmoveto +0 0 0 setrgbcolor +/Helvetica-Oblique findfont +1 scalefont setfont +(function name) show + +1 1.25 moveto +0.8 0.4 0.4 setrgbcolor +/Helvetica-Bold findfont +1 scalefont setfont +(xxx) show +1 1 moveto +2.4 0.25 rmoveto +0 0 0 setrgbcolor +/Helvetica-Oblique findfont +1 scalefont setfont +(source filename) show + +6 24 moveto +/Helvetica-Bold findfont +2 scalefont setfont +(Key) show + +% Box around it +newpath +0.2 0.2 moveto +0.2 27 lineto +17 27 lineto +17 0.2 lineto +closepath +strokepath fill + + +1 15 div 1 15 div scale + +% find and move to center +END_OF_USAGE + +# Find the bounds for the image + +$Bounds = `tail -1 $Image`; +($Junk, $Junk, $minX, $minY, $maxX, $maxY) = split / /, $Bounds; + +my $xRange = $maxX - $minX; +my $yRange = $maxY - $minY; + +if ($xRange < $yRange){ + $Range = $xRange; +} else { + $Range = $yRange; +} +print POSTER " 0 usableY usableX sub 2 div translate\n"; +print POSTER "usableX $Range div usableX $Range div scale\n"; +print POSTER "$Range 2 div $Range 2 div translate\n"; +print POSTER "gsave\n"; +# Paste in actual image. +print POSTER `cat /home/lgp/image.ps`; +print POSTER "%%Trailer\n"; +print POSTER "grestore\n"; +print POSTER "showpage\n"; +print POSTER "PRorig_showpage_x178313\n"; +print POSTER "/showpage /PRorig_showpage_x178313 load def\n"; + |