home *** CD-ROM | disk | FTP | other *** search
/ Practical Programming in Tcl & Tk (4th Edition) / TCLBOOK4.BIN / pc / exsource.old / 35_14.tcl < prev    next >
Text File  |  2003-04-15  |  1KB  |  54 lines

  1. #
  2. # Example 35-14
  3. # Generating Postscript from a canvas.
  4. #
  5.  
  6. proc Setup {} {
  7.     global fontMap
  8.     canvas .c
  9.     pack .c -fill both -expand true
  10.     set x 10
  11.     set y 10
  12.     set last [.c create text $x $y -text "Font sampler" \
  13.         -font fixed -anchor nw]
  14.     
  15.     # Create several strings in different fonts and sizes
  16.  
  17.     foreach family {times courier helvetica} {
  18.         set weight bold
  19.         switch -- $family {
  20.             times { set fill blue; set psfont Times}
  21.             courier { set fill green; set psfont Courier }
  22.             helvetica { set fill red; set psfont Helvetica }
  23.         }
  24.         foreach size {10 14 24} {
  25.             set y [expr 4+[lindex [.c bbox $last] 3]]
  26.             
  27.             # Guard against missing fonts
  28.             if {[catch {.c create text $x $y \
  29.                     -text $family-$weight-$size \
  30.                     -anchor nw -fill $fill \
  31.                     -font -*-$family-$weight-*-*-*-$size-*} \
  32.             it] == 0} {
  33.                 set fontMap(-*-$family-$weight-*-*-*-$size-*)\
  34.                     [list $psfont $size]
  35.                 set last $it
  36.             }
  37.         }
  38.     }
  39.     set fontMap(fixed) [list Courier 12]
  40. }
  41. proc Postscript { c file } {
  42.     global fontMap
  43.     # Tweak the output color
  44.     set colorMap(blue) {0.1 0.1 0.9 setrgbcolor}
  45.     set colorMap(green) {0.0 0.9 0.1 setrgbcolor}
  46.     # Position the text at the upper-left corner of
  47.     # an 8.5 by 11 inch sheet of paper
  48.     $c postscript -fontmap fontMap -colormap colorMap \
  49.         -file $file \
  50.         -pagex 0.i -pagey 11.i -pageanchor nw
  51. }
  52.  
  53.  
  54.