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/trunk/src/eXene/lib/protocol/xprottypes.sml
ViewVC logotype

Annotation of /sml/trunk/src/eXene/lib/protocol/xprottypes.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (view) (download)

1 : monnier 2 (* xprottypes.sml
2 :     *
3 :     * COPYRIGHT (c) 1990,1991 by John H. Reppy. See COPYRIGHT file for details.
4 :     *
5 :     * This is an ML interface to the low-level base types supported by
6 :     * the X11 protocol.
7 :     *)
8 :    
9 :     structure XProtTypes =
10 :     struct
11 :    
12 :     (* X authentication information *)
13 :     datatype authentication = AUTH of {
14 :     family : int,
15 :     addr : string,
16 :     dpy : string,
17 :     name : string,
18 :     data : Word8Vector.vector
19 :     }
20 :    
21 :     (* X atoms *)
22 :     datatype atom = XAtom of word
23 :    
24 :     (* X resource ids. These are used to name windows, pixmaps, fonts, graphics
25 :     * contexts, cursors and colormaps. We collapse all of these types into xid and
26 :     * leave it to a higher level interface to distinguish them. Type synonyms
27 :     * are defined for documentary purposes.
28 :     * NOTE: the X11 protocol spec guarantees that XIDs can be represented in
29 :     * 29-bits.
30 :     *)
31 :     datatype xid = XID of word
32 :    
33 :     type win_id = xid
34 :     type pixmap_id = xid
35 :     type drawable_id = xid (* either win_id or pixmap_id *)
36 :     type font_id = xid
37 :     type gc_id = xid
38 :     type fontable_id = xid (* either font_id or gc_id *)
39 :     type cursor_id = xid
40 :     type colormap_id = xid
41 :    
42 :     datatype pixel = PIXEL of int (* index into colormap *)
43 :     datatype plane_mask = PLANEMASK of word
44 :    
45 :     datatype visual_id = VISUALID of word (* should this be int?? *)
46 :    
47 :     datatype keycode = KEYCODE of int
48 :     datatype keysym = NoSymbol | KEYSYM of int
49 :    
50 :     val AnyKey = (KEYCODE 0)
51 :    
52 :     (* X time stamps are either the Current Time, or an X Server time value *)
53 :     datatype timestamp = CurrentTime | TimeStamp of XTime.time
54 :    
55 :    
56 :     (* raw data from server (in ClientMessage, property values, ...) *)
57 :     datatype raw_format = Raw8 | Raw16 | Raw32
58 :     datatype raw_data = RAW_DATA of {
59 :     format : raw_format,
60 :     data : Word8Vector.vector
61 :     }
62 :    
63 :     (* X property values. A property value has a type, which is an atom, and
64 :     * a value. The value is a sequence of 8, 16 or 32-bit items, represented
65 :     * as a format and a string.
66 :     *)
67 :     datatype prop_val = PROP_VAL of {
68 :     typ : atom,
69 :     value : raw_data
70 :     }
71 :    
72 :     (* modes for ChangeProperty *)
73 :     datatype change_prop_mode = ReplaceProp | PrependProp | AppendProp
74 :    
75 :     (* polygon shapes *)
76 :     datatype shape = ComplexShape | NonconvexShape | ConvexShape
77 :    
78 :     (* RGB colors *)
79 :     datatype rgb = RGB of {red : word, green : word, blue : word}
80 :    
81 :     (* Color items *)
82 :     datatype color_item = COLORITEM of {
83 :     pixel : pixel,
84 :     red : word option,
85 :     green : word option,
86 :     blue : word option
87 :     }
88 :    
89 :     (* text/font items, used by PolyText[8,16] *)
90 :     datatype text_font
91 :     = FontItem of font_id (* set new font *)
92 :     | TextItem of (int * string) (* text item *)
93 :    
94 :     (* modifier keys and mouse buttons *)
95 :     datatype modkey = ShiftKey | LockKey | ControlKey
96 :     | Mod1Key | Mod2Key | Mod3Key | Mod4Key | Mod5Key
97 :     | AnyModifier
98 :     datatype mbutton = MButton of int
99 :     (* A modifier key state vector *)
100 :     datatype modkey_state = AnyModKey | MKState of word
101 :     (* A Mouse button state vector *)
102 :     datatype mbutton_state = MBState of word
103 :    
104 :     (* modes for AllowEvents *)
105 :     datatype event_mode
106 :     = AsyncPointer | SyncPointer | ReplayPointer
107 :     | AsyncKeyboard | SyncKeyboard | ReplayKeyboard
108 :     | AsyncBoth | SyncBoth
109 :    
110 :     (* keyboard focus modes *)
111 :     datatype focus_mode = FocusNormal | FocusWhileGrabbed | FocusGrab | FocusUngrab
112 :     datatype focus_detail
113 :     = FocusAncestor | FocusVirtual | FocusInferior | FocusNonlinear
114 :     | FocusNonlinearVirtual | FocusPointer | FocusPointerRoot | FocusNone
115 :    
116 :     (* input focus modes *)
117 :     datatype input_focus
118 :     = InputFocus_None
119 :     | InputFocus_PointerRoot
120 :     | InputFocus_Window of win_id
121 :     datatype focus_revert = RevertToNone | RevertToPointerRoot | RevertToParent
122 :    
123 :     (* SendEvent targets *)
124 :     datatype send_evt_to
125 :     = SendEvtTo_PointerWindow
126 :     | SendEvtTo_InputFocus
127 :     | SendEvtTo_Window of win_id
128 :    
129 :     (* input device grab modes *)
130 :     datatype grab_mode = SynchronousGrab | AsynchronousGrab
131 :    
132 :     (* input device grab status *)
133 :     datatype grab_status
134 :     = GrabSuccess | AlreadyGrabbed | GrabInvalidTime | GrabNotViewable | GrabFrozen
135 :    
136 :     (* input device mapping status *)
137 :     datatype mapping_status = MappingSuccess | MappingBusy | MappingFailed
138 :    
139 :     (* visibility *)
140 :     datatype visibility
141 :     = VisibilityUnobscured
142 :     | VisibilityPartiallyObscured
143 :     | VisibilityFullyObscured
144 :    
145 :     (* window stacking modes *)
146 :     datatype stack_mode = Above | Below | TopIf | BottomIf | Opposite
147 :    
148 :     (* window circulation request *)
149 :     datatype stack_pos = PlaceOnTop | PlaceOnBottom
150 :    
151 :     (* window backing-store classes *)
152 :     datatype backing_store = BS_NotUseful | BS_WhenMapped | BS_Always
153 :    
154 :     (* window map states *)
155 :     datatype map_state = WinIsUnmapped | WinIsUnviewable | WinIsViewable
156 :    
157 :     (* rectangle list orderings for SetClipRectangles *)
158 :     datatype rect_order
159 :     = UnsortedOrder | YSortedOrder | YXSortedOrder | YXBandedOrder
160 :    
161 :     (* font drawing direction *)
162 :     datatype font_draw_dir = FontLeftToRight | FontRightToLeft
163 :    
164 :     (* font properties *)
165 :     datatype font_prop = FontProp of {
166 :     name : atom, (* the name of the property *)
167 :     value : Word32.word (* the property value: interpret according to the *)
168 :     (* property. *)
169 :     }
170 :    
171 :     (* per-character font info *)
172 :     datatype char_info = CharInfo of {
173 :     left_bearing : int,
174 :     right_bearing : int,
175 :     char_wid : int,
176 :     ascent : int,
177 :     descent : int,
178 :     attributes : word
179 :     }
180 :    
181 :     (* graphics functions *)
182 :     datatype graphics_op
183 :     = OP_Clr (* 0 *)
184 :     | OP_And (* src AND dst *)
185 :     | OP_AndNot (* src AND NOT dst *)
186 :     | OP_Copy (* src *)
187 :     | OP_AndInverted (* NOT src AND dst *)
188 :     | OP_Nop (* dst *)
189 :     | OP_Xor (* src XOR dst *)
190 :     | OP_Or (* src OR dst *)
191 :     | OP_Nor (* NOT src AND NOT dst *)
192 :     | OP_Equiv (* NOT src XOR dst *)
193 :     | OP_Not (* NOT dst *)
194 :     | OP_OrNot (* src OR NOT dst *)
195 :     | OP_CopyNot (* NOT src *)
196 :     | OP_OrInverted (* NOT src OR dst *)
197 :     | OP_Nand (* NOT src OR NOT dst *)
198 :     | OP_Set (* 1 *)
199 :    
200 :     (* gravity (both window and bit) *)
201 :     datatype gravity
202 :     = ForgetGravity (* bit gravity only *)
203 :     | UnmapGravity (* window gravity only *)
204 :     | NorthWestGravity
205 :     | NorthGravity
206 :     | NorthEastGravity
207 :     | WestGravity
208 :     | CenterGravity
209 :     | EastGravity
210 :     | SouthWestGravity
211 :     | SouthGravity
212 :     | SouthEastGravity
213 :     | StaticGravity
214 :    
215 :     (* event masks *)
216 :     datatype event_mask = XEVTMASK of word
217 :    
218 :     (* Value lists *)
219 :     datatype value_mask = VALMASK of word
220 :     datatype value_list = VALS of word option Array.array
221 :    
222 :     (* classes for QueryBestSize *)
223 :     datatype bestsz_class
224 :     = CursorShape (* largest size that can be displayed *)
225 :     | TileShape (* size tiled fastest *)
226 :     | StippleShape (* size stippled fastest *)
227 :    
228 :     (* resource close-down modes *)
229 :     datatype close_down_mode = DestroyAll | RetainPermanent | RetainTemporary
230 :    
231 :     (* X hosts *)
232 :     datatype xhost
233 :     = InternetHost of string
234 :     | DECnetHost of string
235 :     | ChaosHost of string
236 :    
237 :     (* image byte-orders and bitmap bit-orders *)
238 :     datatype order = MSBFirst | LSBFirst
239 :    
240 :     (* image formats *)
241 :     datatype image_format
242 :     = XYBitmap (* depth 1, XYFormat *)
243 :     | XYPixmap (* depth == drawable depth *)
244 :     | ZPixmap (* depth == drawable depth *)
245 :    
246 :     datatype pixmap_format = FORMAT of {
247 :     depth : int,
248 :     bits_per_pixel : int,
249 :     scanline_pad : raw_format
250 :     }
251 :    
252 :     datatype display_class
253 :     = StaticGray | GrayScale | StaticColor | PseudoColor | TrueColor | DirectColor
254 :    
255 :     (* this is a merging of the protocol types of depth and visuals *)
256 :     datatype visual_depth
257 :     = Depth of int (* a depth with no visuals *)
258 :     | VisualDepth of {
259 :     id : visual_id, (* the associated visual id *)
260 :     depth : int, (* the depth *)
261 :     class : display_class,
262 :     cmap_entries : int,
263 :     bits_per_rgb : int,
264 :     red_mask : word,
265 :     green_mask : word,
266 :     blue_mask : word
267 :     }
268 :    
269 :     end (* XProtTypes *)

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