1 #!/home/people/tkys/Eos/util/ALPHALINUX5/bin/bltwish
18 # ------------------------------------------------------------------
22 # Tiles graph postscript files together in a pre-defined
26 # outFile -- Resulting tiled PostScript output file.
27 # args -- Names of input graph PostScript files.
29 # ------------------------------------------------------------------
31 proc TileFiles { outFile args } {
38 set padx [Pica $page(padx)]
39 set pady [Pica $page(padx)]
40 set width [Pica $page(width)]
41 set height [Pica $page(height)]
42 set gutter [Pica $page(gutter)]
44 set totalGutters [expr $gutter * ($page(columns) - 1)]
45 set w [expr $width - (2 * $padx) - $totalGutters]
46 set totalGutters [expr $gutter * ($page(rows) - 1)]
47 set h [expr $height - (2 * $pady) - $totalGutters]
49 set cellWidth [expr double($w) / $page(columns)]
50 set cellHeight [expr double($h) / $page(rows)]
52 set out [open $outFile "w"]
54 puts $out "%!PS-Adobe-3.0 EPSF-3.0"
55 puts $out "%%Pages: 1"
56 puts $out "%%Title: (Graph tiler)"
57 puts $out "%%DocumentNeededResources: font Helvetica Courier"
58 puts $out "%%CreationDate: [clock format [clock seconds]]"
59 puts $out "%%EndComments"
61 puts $out "/showsheet { showpage } bind def"
62 puts $out "/showpage { } def"
63 puts $out "$padx $pady translate"
66 foreach inFile $args {
67 set in [open $inFile "r"]
69 # Warning, this is assuming that the BoundingBox is in the first
70 # twenty lines of the graph's PostScript.
72 for { set count 0 } { $count < 20 } { incr count } {
74 if { [string match "%%BoundingBox:*" $line] } {
78 append first "$line\n"
83 if { ![info exists bbox] } {
84 error "can't find \"%%BoundingBox:\" line"
86 set n [scan $bbox "%%%%BoundingBox: %d %d %d %d" x1 y1 x2 y2]
88 error "Bad bounding box line \"$bbox\""
94 set x [expr ($cellWidth + $gutter) * $column]
95 set y [expr ($cellHeight + $gutter) * $row]
97 set w [expr abs($x2 - $x1)]
98 set h [expr abs($y2 - $y1)]
100 set scaleX [expr $cellWidth / $w]
101 set scaleY [expr $cellHeight / $h]
102 if { $scaleX > $scaleY } {
108 puts $out "% Tiling \"$inFile\" at ($row,$column)"
111 puts $out "$x $y translate"
112 puts $out "$scale $scale scale"
113 puts $out "-$x1 -$y1 translate"
118 if { $column >= $page(columns) } {
123 puts $out "showsheet"