OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / SGI / util / SGI / lib / blt2.4 / demos / eps
1 #!/home/people/tkys/Eos/util/SGI/bin/bltwish
2 #!../bltwish
3
4 source bltDemo.tcl
5 bltdebug watch ResizeEpsItem
6
7 proc MoveEpsItem { canvas tagName x y } {
8     global lastX lastY
9     $canvas move $tagName [expr $x - $lastX] [expr $y - $lastY]
10     set lastX $x; set lastY $y
11 }
12
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]
22 }
23     
24 proc SaveImageCoords { canvas x y } {
25     global lastX lastY 
26     set lastX $x
27     set lastY $y
28     $canvas configure -cursor sb_h_double_arrow
29 }
30
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
35
36 proc StartResize { canvas tagName x y anchor } {
37     global xMin yMin xMax yMax image
38
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" \
44         -fill red -width 2
45
46     $canvas create line $xMin $yMax $xMax $yMin \
47         -tags "$tagName $tagName-cross $tagName-l2" \
48         -fill red  -width 2
49     $canvas raise $tagName-grip
50     global cursors
51     $canvas configure -cursor $cursors($anchor)
52     global lastX lastY 
53     set lastX $x
54     set lastY $y
55 }
56
57 proc EndResize { canvas tagName x y anchor } {
58     $canvas itemconfigure $tagName-image -quick no \
59         -showimage yes
60     ResizeEpsItem $canvas $anchor $tagName $x $y
61     $canvas itemconfigure $tagName-grip -fill green
62     $canvas delete $tagName-cross
63     $canvas configure -cursor ""
64 }
65
66 proc ResetGrips { canvas tagName } {
67     global gripSize
68     global xMin yMin xMax yMax
69
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 
81 }
82
83 proc ResizeEpsItem { canvas anchor tagName x y } {
84     global lastX lastY xMin yMin xMax yMax 
85
86     GetEpsBBox $canvas $tagName
87     switch $anchor {
88         sw {
89             set xMin $x ; set yMax $y
90             set cursor bottom_left_corner
91         }
92         ne {
93             set xMax $x ; set yMin $y
94             set cursor top_right_corner
95         }
96         se {
97             set xMax $x ; set yMax $y
98             set cursor bottom_right_corner
99         }
100         nw {
101             set xMin $x ; set yMin $y
102             set cursor top_left_corner
103         }
104         default {
105             error "anchor can't be $anchor"
106         }
107     }
108     set w [expr $xMax - $xMin]
109     set h [expr $yMax - $yMin]
110     set options ""
111     if { $w > 1 } {
112         append options "-width $w "
113     }
114     if { $h > 1 } {
115         append options "-height $h "
116     }
117     $canvas coords $tagName-image $xMin $yMin
118     eval $canvas itemconfigure $tagName-image $options
119     GetEpsBBox $canvas $tagName
120     ResetGrips $canvas $tagName
121 }
122
123 set numGroups 0
124 set id 0
125
126 proc MakeEps { canvas {epsFile ""} {imageFile ""} } {
127     global numGroups id gripSize image
128
129     set image [image create photo -width 200 -height 200]
130     if { $imageFile != "" } {
131         $image configure -file $imageFile
132     }
133     set tagName "epsGroup[incr numGroups]"
134     $canvas create eps 20 20 \
135         -anchor nw \
136         -borderwidth 4 \
137         -tags "$tagName $tagName-image" \
138         -titlecolor white \
139         -titlerotate 90 \
140         -titleanchor nw \
141         -font *helvetica*24* \
142         -stipple hobbes \
143         -outline orange4 \
144         -fill orange \
145         -file $epsFile \
146         -image $image 
147     
148     set gripSize 8
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 ""
167
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"
174
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
183     }
184 }
185
186 source patterns.tcl
187
188 #
189 # Script to test the BLT "eps" canvas item.
190
191
192 canvas .layout
193
194 button .print -text "Print" -command {
195     wm iconify .
196     update
197     .layout postscript -file eps.ps 
198     wm deiconify .
199     update
200 }
201 button .quit -text "Quit" -command {
202     exit 0
203 }
204
205 table . \
206     0,0 .layout -fill both -cspan 2 \
207     1,0 .print \
208     1,1 .quit \
209
210 table configure . r1 -resize none
211
212 MakeEps .layout ./images/out.ps
213 MakeEps .layout xy.ps
214
215 .layout create rectangle 10 10 50 50 -fill blue -outline white
216
217 .layout create text 200 200 \
218     -text "This is a text item" \
219     -fill yellow \
220     -anchor w \
221     -font *helvetica*24*
222
223 .layout create rectangle 50 50 150 150 -fill green -outline red
224
225 wm colormapwindows . .layout
226
227 .layout configure -scrollregion [.layout bbox all]