1Diagrams(n) Tk Diagrams Diagrams(n)
2
3
4
5______________________________________________________________________________
6
8 Diagrams - User documentation of the Diagrams package
9
11 package require Tcl 8.4
12
13 package require Tk 8.4
14
15 package require Diagrams 0.2
16
17 ::Diagrams::drawin canvas
18
19 ::Diagrams::saveps filename
20
21 ::Diagrams::direction newdir
22
23 ::Diagrams::currentpos pos
24
25 ::Diagrams::getpos anchor obj
26
27 ::Diagrams::position xcoord ycoord
28
29 ::Diagrams::box text width height
30
31 ::Diagrams::plaintext text width height
32
33 ::Diagrams::circle text radius
34
35 ::Diagrams::slanted text width height angle
36
37 ::Diagrams::diamond text width height
38
39 ::Diagrams::drum text width height
40
41 ::Diagrams::arrow text length heads
42
43 ::Diagrams::line args
44
45 ::Diagrams::attach anchor
46
47 ::Diagrams::color name
48
49 ::Diagrams::fillcolor name
50
51 ::Diagrams::textcolor name
52
53 ::Diagrams::usegap use
54
55 ::Diagrams::xgap value
56
57 ::Diagrams::ygap value
58
59 ::Diagrams::textfont name
60
61 ::Diagrams::linewidth pixels
62
63 ::Diagrams::linestyle style
64
65 ::Diagrams::pushstate
66
67 ::Diagrams::popstate
68
69 ::Diagrams::computepos
70
71 ::Diagrams::boxcoords x1 y1 x2 y2
72
73 ::Diagrams::moveobject obj
74
75______________________________________________________________________________
76
78 The Diagrams package is meant to help drawing diagrams, like flow‐
79 charts. The philosophy is that you should be concentrating on the con‐
80 tents of the diagram, rather than the exact positioning and sizing of
81 all items within it. The Diagrams package uses a few simple rules to
82 layout the items:
83
84 · Each item (or object) in the diagram has a number of "anchors" -
85 places where arrows and lines can be connected to.
86
87 · You can draw an arrow or a line from an object in a preset
88 direction
89
90 · Sizing and positioning should be done as automatic as possible:
91 this is achieved for instance by drawing boxes and circles with
92 text, rather than first drawing a rectangle and then drawing the
93 text inside it or vice versa.
94
95 The commands within this package can be split up in several categories.
96 Each category is described in a separate section.
97
99 ::Diagrams::drawin canvas
100 Set the canvas widget in which to draw
101
102 widget canvas
103 Widget to draw in
104
105
106 ::Diagrams::saveps filename
107 Save the drawing in a PostScript file
108
109 filename string
110 Name of the file to save the drawing in
111
112
113 ::Diagrams::direction newdir
114 Set the direction for moving the current position. The direc‐
115 tion is one of: north northeast east southeast south south‐
116 west west northwest N NE E SE S SW
117 W NW up up-right left down-right down down-left left
118 up-left centre center C
119
120 newdir string
121 New direction
122
123
124 ::Diagrams::currentpos pos
125 Set the current position explicitly (argument must be a position
126 "object")
127
128 pos list
129 New position (retrieve via getpos for instance)
130
131
132 ::Diagrams::getpos anchor obj
133 Get the position of a particular "anchor" point of an object
134 anchor should be one of the direction strings
135
136 anchor string
137 Name of the anchor (one of the directions - see the
138 direction command
139
140 obj list
141 The object in question
142
143
144 ::Diagrams::position xcoord ycoord
145 Create a position "object"
146
147 xcoord float
148 X-coordinate of the position
149
150 ycoord float
151 Y-coordinate of the position
152
154 ::Diagrams::box text width height
155 Draw a box from the current position (width and height are both
156 optional; if not given, the text determines the width and
157 height)
158
159 string text
160 Text to be shown inside the box
161
162 float width
163 Width (if any) of the box in pixels
164
165 float height
166 Height (if any) of the box in pixels
167
168
169 ::Diagrams::plaintext text width height
170 Draw plain text from the current position (width and height are
171 both optional; if not given, the text determines the width and
172 height)
173
174 string text
175 Text to be shown
176
177 float width
178 Width (if any) of the (invisible) box in which to posi‐
179 tion the text
180
181 float height
182 Height (if any) of the box
183
184
185 ::Diagrams::circle text radius
186 Draw a circle from the current position (the radius is optional)
187
188 string text
189 Text to be shown inside the circle
190
191 float radius
192 Radius (if any) of the circle in pixels
193
194
195 ::Diagrams::slanted text width height angle
196 Draw a slanted box from the current position (width, height and
197 angle are optional)
198
199 string text
200 Text to be shown inside the box
201
202 float width
203 Width (if any) of the box in pixels
204
205 float height
206 Height (if any) of the box in pixels
207
208 float angle
209 Angle of the slanted box
210
211
212 ::Diagrams::diamond text width height
213 Draw a diamond-shaped box from the current position (width and
214 height are both optional; if not given, the text determines the
215 width and height)
216
217 string text
218 Text to be shown inside the diamond
219
220 float width
221 Width (if any) of the diamond in pixels
222
223 float height
224 Height (if any) of the diamond in pixels
225
226
227 ::Diagrams::drum text width height
228 Draw a drumshaped item from th ecurrent position (width and
229 height are both optional; if not given, the text determines the
230 width and height)
231
232 string text
233 Text to be shown inside the drum
234
235 float width
236 Width (if any) of the drum in pixels
237
238 float height
239 Height (if any) of the drum in pixels
240
241
242 ::Diagrams::arrow text length heads
243 Draw an arrow from the current position to the next. The text
244 is drawn next to the arrow, the length (in pixels) is optional.
245 If not given the gap parameters are used.
246
247 string text
248 Text to be shown along the arrow
249
250 float length
251 Length of the arrow in pixels
252
253 float heads
254 Which arrow heads to draw (first, last or both - defaults
255 to last)
256
257
258 ::Diagrams::line args
259 Draw a line specified via positions or via line segments The
260 arguments are either position or length-angle pairs
261
262 list args
263 List of positions or of length-angle pairs
264
265
267 (Note: attributes are persistent)
268
269 ::Diagrams::attach anchor
270 Set the anchor point for attaching arrows to
271
272 string anchor
273 Any one of the valid anchor (e.g. N or North)
274
275
276 ::Diagrams::color name
277 Set the color for the outline of a box etc.
278
279 color name
280 Name of the colour to be used
281
282
283 ::Diagrams::fillcolor name
284 Set the color to fill the objects
285
286 color name
287 Name of the colour to be used
288
289
290 ::Diagrams::textcolor name
291 Set the color to draw the text in
292
293 color name
294 Name of the colour to be used
295
296
297 ::Diagrams::usegap use
298 Turn the gap on (1) or off (0). Note: usually a small gap is
299 used when positioning objects.
300
301 boolean use
302 Use the gap to compute the position of the next object or
303 not
304
305
306 ::Diagrams::xgap value
307 Size of the gap in horizontal direction (in pixels)
308
309 integer value
310 Gap width in pixels
311
312
313 ::Diagrams::ygap value
314 Size of the gap in vertical direction (in pixels)
315
316 integer value
317 Gap height in pixels
318
319
320 ::Diagrams::textfont name
321 Set the name of the font to use
322
323 string name
324 Name of a text font
325
326
327 ::Diagrams::linewidth pixels
328 Set the width of the lines (in line objects and arrows and the
329 outline of boxes and other objects)
330
331 integer pixels
332 Number of pixels the lines are wide
333
334
335 ::Diagrams::linestyle style
336 Set the style of the lines and arrows and of the outline of
337 boxes and other objects. The predefined line styles are: solid,
338 dot, dash, dash-dot, dash-dot-dot (these are the distinguishable
339 line styles on Windows). You can also use the style patterns
340 from the canvas directly.
341
342 string style
343 Name of a valid line style
344
345
347 Note: it is best to study how for instance box objects are implemented
348 first.
349
350 ::Diagrams::pushstate
351 Save the current global settings Used when defining an object
352 that is composed of other objects
353
354 ::Diagrams::popstate
355 Restore the previously saved global settings
356
357 ::Diagrams::computepos
358 Compute the current position
359
360 ::Diagrams::boxcoords x1 y1 x2 y2
361 Compute the anchor coordinates for a box-like object (this is
362 merely a convenience routine. In general, you will have to com‐
363 pute the list of coordinates yourself - see for instance the
364 diamond object)
365
366 float x1
367 X coordinate of upper-left corner
368
369 float y1
370 Y coordinate of upper-left corner
371
372 float x2
373 X coordinate of lower-right corner
374
375 float y2
376 Y coordinate of lower-right corner
377
378
379 ::Diagrams::moveobject obj
380 Move the object to the right position and return the new infor‐
381 mation
382
383 list obj
384 List of data representing the object
385
386
388 diagrams, drawing
389
390
391
392diagrams 0.2 Diagrams(n)