1 #!/home/people/tkys/Eos/util/SGI/bin/bltwish
5 bltdebug watch ResizeEpsItem
7 proc MoveEpsItem { canvas tagName x y } {
9 $canvas move $tagName [expr $x - $lastX] [expr $y - $lastY]
10 set lastX $x; set lastY $y
13 proc GetEpsBBox { canvas tagName } {
14 global xMin yMin xMax yMax
15 set anchor [$canvas coords $tagName-image]
16 set xMin [lindex $anchor 0]
17 set yMin [lindex $anchor 1]
18 set width [$canvas itemcget $tagName-image -width]
19 set height [$canvas itemcget $tagName-image -height]
20 set xMax [expr $xMin + $width]
21 set yMax [expr $yMin + $height]
24 proc SaveImageCoords { canvas x y } {
28 $canvas configure -cursor sb_h_double_arrow
31 set cursors(sw) bottom_left_corner
32 set cursors(ne) top_right_corner
33 set cursors(se) bottom_right_corner
34 set cursors(nw) top_left_corner
36 proc StartResize { canvas tagName x y anchor } {
37 global xMin yMin xMax yMax image
39 GetEpsBBox $canvas $tagName
40 $canvas itemconfigure $tagName-image -quick yes
41 $canvas itemconfigure $tagName-grip -fill red
42 $canvas create line $xMin $yMin $xMax $yMax \
43 -tags "$tagName $tagName-cross $tagName-l1" \
46 $canvas create line $xMin $yMax $xMax $yMin \
47 -tags "$tagName $tagName-cross $tagName-l2" \
49 $canvas raise $tagName-grip
51 $canvas configure -cursor $cursors($anchor)
57 proc EndResize { canvas tagName x y anchor } {
58 $canvas itemconfigure $tagName-image -quick no \
60 ResizeEpsItem $canvas $anchor $tagName $x $y
61 $canvas itemconfigure $tagName-grip -fill green
62 $canvas delete $tagName-cross
63 $canvas configure -cursor ""
66 proc ResetGrips { canvas tagName } {
68 global xMin yMin xMax yMax
70 GetEpsBBox $canvas $tagName
71 $canvas coords $tagName-nw \
72 $xMin $yMin [expr $xMin + $gripSize] [expr $yMin + $gripSize]
73 $canvas coords $tagName-se \
74 [expr $xMax - $gripSize] [expr $yMax - $gripSize] $xMax $yMax
75 $canvas coords $tagName-ne \
76 [expr $xMax - $gripSize] [expr $yMin + $gripSize] $xMax $yMin
77 $canvas coords $tagName-sw \
78 $xMin $yMax [expr $xMin + $gripSize] [expr $yMax - $gripSize]
79 $canvas coords $tagName-l1 $xMin $yMin $xMax $yMax
80 $canvas coords $tagName-l2 $xMin $yMax $xMax $yMin
83 proc ResizeEpsItem { canvas anchor tagName x y } {
84 global lastX lastY xMin yMin xMax yMax
86 GetEpsBBox $canvas $tagName
89 set xMin $x ; set yMax $y
90 set cursor bottom_left_corner
93 set xMax $x ; set yMin $y
94 set cursor top_right_corner
97 set xMax $x ; set yMax $y
98 set cursor bottom_right_corner
101 set xMin $x ; set yMin $y
102 set cursor top_left_corner
105 error "anchor can't be $anchor"
108 set w [expr $xMax - $xMin]
109 set h [expr $yMax - $yMin]
112 append options "-width $w "
115 append options "-height $h "
117 $canvas coords $tagName-image $xMin $yMin
118 eval $canvas itemconfigure $tagName-image $options
119 GetEpsBBox $canvas $tagName
120 ResetGrips $canvas $tagName
126 proc MakeEps { canvas {epsFile ""} {imageFile ""} } {
127 global numGroups id gripSize image
129 set image [image create photo -width 200 -height 200]
130 if { $imageFile != "" } {
131 $image configure -file $imageFile
133 set tagName "epsGroup[incr numGroups]"
134 $canvas create eps 20 20 \
137 -tags "$tagName $tagName-image" \
141 -font *helvetica*24* \
149 GetEpsBBox $canvas $tagName
150 global xMin yMin xMax yMax
151 $canvas create rectangle \
152 $xMin $yMin [expr $xMin + $gripSize] [expr $yMin + $gripSize] \
153 -tags "$tagName $tagName-grip $tagName-nw" \
154 -fill red -outline ""
155 $canvas create rectangle \
156 [expr $xMax - $gripSize] [expr $yMax - $gripSize] $xMax $yMax \
157 -tags "$tagName $tagName-grip $tagName-se" \
158 -fill red -outline ""
159 $canvas create rectangle \
160 [expr $xMax - $gripSize] [expr $yMin + $gripSize] $xMax $yMin \
161 -tags "$tagName $tagName-grip $tagName-ne" \
162 -fill red -outline ""
163 $canvas create rectangle \
164 $xMin $yMax [expr $xMin + $gripSize] [expr $yMax - $gripSize] \
165 -tags "$tagName $tagName-grip $tagName-sw" \
166 -fill red -outline ""
168 $canvas bind $tagName <ButtonRelease-1> \
169 "$canvas configure -cursor {}"
170 $canvas bind $tagName-image <ButtonPress-1> \
171 "SaveImageCoords $canvas %x %y"
172 $canvas bind $tagName-image <B1-Motion> \
173 "MoveEpsItem $canvas $tagName %x %y"
175 foreach grip { sw ne se nw } {
176 $canvas bind $tagName-$grip <ButtonPress-1> \
177 "StartResize $canvas $tagName %x %y $grip"
178 $canvas bind $tagName-$grip <B1-Motion> \
179 "ResizeEpsItem $canvas $grip $tagName %x %y"
180 $canvas bind $tagName-$grip <ButtonRelease-1> \
181 "EndResize $canvas $tagName %x %y $grip"
182 $canvas raise $tagName-$grip
189 # Script to test the BLT "eps" canvas item.
194 button .print -text "Print" -command {
197 .layout postscript -file eps.ps
201 button .quit -text "Quit" -command {
206 0,0 .layout -fill both -cspan 2 \
210 table configure . r1 -resize none
212 MakeEps .layout ./images/out.ps
213 MakeEps .layout xy.ps
215 .layout create rectangle 10 10 50 50 -fill blue -outline white
217 .layout create text 200 200 \
218 -text "This is a text item" \
223 .layout create rectangle 50 50 150 150 -fill green -outline red
225 wm colormapwindows . .layout
227 .layout configure -scrollregion [.layout bbox all]