Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/branches/SMLNJ/src/eXene/widgets/fancy/2d-graphics/obj-canvas-sig.sml
ViewVC logotype

Annotation of /sml/branches/SMLNJ/src/eXene/widgets/fancy/2d-graphics/obj-canvas-sig.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 139 - (view) (download)

1 : monnier 104 (* obj-canvas-sig.sml
2 :     *
3 :     * COPYRIGHT (c) 1998 Bell Labs, Lucent Technologies.
4 :     * COPYRIGHT (c) 1994 AT&T Bell Laboratories.
5 :     *)
6 :    
7 :     signature OBJ_CANVAS =
8 :     sig
9 :    
10 :     structure W : WIDGET
11 :    
12 :     (* the different ways to specify a border; either an absolute number of
13 :     * pixels, or proportional border specified in universal coordinate units.
14 :     *)
15 :     datatype border_spec
16 :     = BORDER_None
17 :     | BORDER_Pixel2D of (W.EXB.color * int)
18 :    
19 :     (* specification of a width; either in absolute pixels or in universal
20 :     * coordinates.
21 :     *)
22 :     datatype width_spec
23 :     = WID_Pixel of int
24 :    
25 :     (* specification of an arrow head *)
26 :     datatype arrow_spec
27 :     = NoArrow
28 :     | Arrow of {len : real, wid : real}
29 :    
30 :     type object_id
31 :     type 'a object_canvas
32 :    
33 :     type box = {minX : real, minY : real, maxX : real, maxY : real}
34 :    
35 :     val objCanvas : (W.root * W.view * W.arg list)
36 :     -> {
37 :     bbox : box option,
38 :     fontServer : ScalableFont.font_server,
39 :     sb : {hsb : Scrollbar.scrollbar, vsb : Scrollbar.scrollbar} option
40 : monnier 139 } -> ('a object_canvas * Interact.in_env)
41 : monnier 104
42 :     val widgetOf : 'a object_canvas -> W.widget
43 :    
44 :     datatype gr_object
45 :     = BOX of {
46 :     wid : real, ht : real,
47 :     fill : W.EXB.color option,
48 :     border : border_spec
49 :     }
50 :     | DIAMOND of {
51 :     wid : real, ht : real,
52 :     fill : W.EXB.color option,
53 :     border : border_spec
54 :     }
55 :     | ELLIPSE of {
56 :     wid : real, ht : real,
57 :     fill : W.EXB.color option,
58 :     border : border_spec
59 :     }
60 :     | LINE of {
61 :     pts : {x : real, y : real} list,
62 :     head : arrow_spec,
63 :     tail : arrow_spec,
64 :     wid : width_spec,
65 :     color : W.EXB.color
66 :     }
67 :     | TEXT of {
68 :     sz : int, style : ScalableFont.font_style,
69 :     align : (W.halign * W.valign),
70 :     color : W.EXB.color,
71 :     text : string
72 :     }
73 :    
74 :     val placeObj : 'a object_canvas -> {
75 :     at : {x : real, y : real},
76 :     depth : int,
77 :     obj : gr_object,
78 :     info : 'a option
79 :     } -> object_id
80 :    
81 :     val drawLine : 'a object_canvas -> {
82 :     pts : {x : real, y : real} list,
83 :     depth : int,
84 :     wid : width_spec,
85 :     color : W.EXB.color
86 :     } -> object_id
87 :    
88 :     val drawLine' : 'a object_canvas -> {
89 :     pts : {x : real, y : real} list,
90 :     head : arrow_spec,
91 :     tail : arrow_spec,
92 :     depth : int,
93 :     wid : width_spec,
94 :     color : W.EXB.color
95 :     } -> object_id
96 :    
97 :     val delObj : 'a object_canvas -> object_id -> unit
98 :     (* remove an object from the picture *)
99 :    
100 :     val delAll : 'a object_canvas -> unit
101 :     (* delete all of the existing objects *)
102 :    
103 :     val update : 'a object_canvas -> unit
104 :     (* update the display *)
105 :    
106 :     datatype pt_stream = ENTER | EXIT | PT of Geometry.point | END
107 :    
108 :     val trackObj : 'a object_canvas -> {
109 :     points : pt_stream CML.event,
110 :     obj : gr_object,
111 :     hotSpot : {x : real, y : real}
112 :     } -> {x : real, y : real} CML.event
113 :     (* This is support for feedback. Given a stream of pixel coordinates,
114 :     * track the points with the object. The stream of points will be
115 :     * terminated with NONE, at which point the resulting event is enabled
116 :     * with the final position (in world coordinates).
117 :     *)
118 :    
119 :     val setCursor : 'a object_canvas -> W.EXB.cursor option -> unit
120 :     (* set the cursor for the canvas *)
121 :    
122 :     val redraw : 'a object_canvas -> Geometry.rect list -> unit
123 :     (* redraw damaged regions (specified as a list of rectangles) *)
124 :    
125 :     val resize : 'a object_canvas -> Geometry.rect -> unit
126 :     (* resize the canvas *)
127 :    
128 :     val zoom : 'a object_canvas -> real -> unit
129 :     (* Zoom the canvas: a zoom of 1.0 is no change; a zoom of 2.0 doubles
130 :     * the size of objects in the canvas (i.e., zooms in), while a zoom of
131 :     * 0.5 halves the size of objects in the canvas. This will not zoom
132 :     * out beyond the canvas's bounding box.
133 :     *)
134 :    
135 :     end; (* OBJ_CANVAS *)

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0