|
|
1.1 root 1: % Copyright Barbara Liskov 1985
2:
3: x_window = cluster is none, create, create_transparency,
4: destroy, destroy_subwindows, map, map_subwindows,
5: unmap, unmap_subwindows, unmap_transparent, raise, lower,
6: circulate_up, circulate_down, move, change, configure,
7: set_background, set_border, set_tilemode, set_clipmode,
8: query, query_tree, get_name, set_name, set_icon,
9: get_resize, set_resize, set_cursor, set_input,
10: grab_mouse, ungrab_mouse, grab_button, ungrab_button,
11: query_mouse, interpret_locator,
12: warp_mouse, cond_warp_mouse,
13: focus_keyboard, clear, pix_set, pix_fill, tile_set,
14: tile_fill, pixmap_put, pixmap_xybitsput, pixmap_zbitsput,
15: bitmap_bitsput, move_area, copy_area,
16: text, textv, texta, text_pad, textv_pad, texta_pad,
17: text_mask, textv_mask, texta_mask,
18: text_mask_pad, textv_mask_pad, texta_mask_pad,
19: line, draw,
20: draw_dashed, draw_patterned, draw_filled, draw_tiled,
21: save_region, read_xyregion, read_zregion,
22: get_id, equal, similar, copy
23:
24: rep = int
25:
26: none = proc () returns (cvt)
27: return(0)
28: end none
29:
30: create = proc (x, y, width, height: int, background: x_pixmap, parent: cvt,
31: borderwidth: int, border: x_pixmap) returns (cvt)
32: signals (error(string))
33: or: oreq, er: ereq := x_buf$get()
34: er.code := x_createwindow + (borderwidth * 2**8)
35: er.ewin := parent
36: er.s0 := height
37: or.s1 := width
38: er.s2 := x
39: or.s3 := y
40: lr(er).l2 := border.id
41: lr(er).l3 := background.id
42: x_buf$receive()
43: resignal error
44: return(x_buf$get_lp0())
45: end create
46:
47: create_transparency = proc (x, y, width, height: int, parent: cvt) returns (cvt)
48: signals (error(string))
49: or: oreq, er: ereq := x_buf$get()
50: er.code := x_createtransparency
51: er.ewin := parent
52: er.s0 := height
53: or.s1 := width
54: er.s2 := x
55: or.s3 := y
56: x_buf$receive()
57: resignal error
58: return(x_buf$get_lp0())
59: end create_transparency
60:
61: destroy = proc (w: cvt)
62: or: oreq, er: ereq := x_buf$get()
63: er.code := x_destroywindow
64: er.ewin := w
65: end destroy
66:
67: destroy_subwindows = proc (w: cvt)
68: or: oreq, er: ereq := x_buf$get()
69: er.code := x_destroysubwindows
70: er.ewin := w
71: end destroy_subwindows
72:
73: map = proc (w: cvt)
74: or: oreq, er: ereq := x_buf$get()
75: er.code := x_mapwindow
76: er.ewin := w
77: end map
78:
79: map_subwindows = proc (w: cvt)
80: or: oreq, er: ereq := x_buf$get()
81: er.code := x_mapsubwindows
82: er.ewin := w
83: end map_subwindows
84:
85: unmap = proc (w: cvt)
86: or: oreq, er: ereq := x_buf$get()
87: er.code := x_unmapwindow
88: er.ewin := w
89: end unmap
90:
91: unmap_subwindows = proc (w: cvt)
92: or: oreq, er: ereq := x_buf$get()
93: er.code := x_unmapsubwindows
94: er.ewin := w
95: end unmap_subwindows
96:
97: unmap_transparent = proc (w: cvt)
98: or: oreq, er: ereq := x_buf$get()
99: er.code := x_unmaptransparent
100: er.ewin := w
101: end unmap_transparent
102:
103: raise = proc (w: cvt)
104: or: oreq, er: ereq := x_buf$get()
105: er.code := x_raisewindow
106: er.ewin := w
107: end raise
108:
109: lower = proc (w: cvt)
110: or: oreq, er: ereq := x_buf$get()
111: er.code := x_lowerwindow
112: er.ewin := w
113: end lower
114:
115: circulate_up = proc (w: cvt)
116: or: oreq, er: ereq := x_buf$get()
117: er.code := x_circwindowup
118: er.ewin := w
119: end circulate_up
120:
121: circulate_down = proc (w: cvt)
122: or: oreq, er: ereq := x_buf$get()
123: er.code := x_circwindowdown
124: er.ewin := w
125: end circulate_down
126:
127: move = proc (w: cvt, x, y: int)
128: or: oreq, er: ereq := x_buf$get()
129: er.code := x_movewindow
130: er.ewin := w
131: er.s0 := x
132: or.s1 := y
133: end move
134:
135: change = proc (w: cvt, width, height: int)
136: or: oreq, er: ereq := x_buf$get()
137: er.code := x_changewindow
138: er.ewin := w
139: er.s0 := height
140: or.s1 := width
141: end change
142:
143: configure = proc (w: cvt, x, y, width, height: int)
144: or: oreq, er: ereq := x_buf$get()
145: er.code := x_configurewindow
146: er.ewin := w
147: er.s0 := height
148: or.s1 := width
149: er.s2 := x
150: or.s3 := y
151: end configure
152:
153: set_background = proc (w: cvt, background: x_pixmap)
154: or: oreq, er: ereq := x_buf$get()
155: er.code := x_changebackground
156: er.ewin := w
157: lr(er).l0 := p2i(background)
158: end set_background
159:
160: set_border = proc (w: cvt, border: x_pixmap)
161: or: oreq, er: ereq := x_buf$get()
162: er.code := x_changeborder
163: er.ewin := w
164: lr(er).l0 := p2i(border)
165: end set_border
166:
167: set_tilemode = proc (w: cvt, relative: bool)
168: or: oreq, er: ereq := x_buf$get()
169: if relative
170: then er.code := x_tilemode + (TileModeRelative * 2**8)
171: else er.code := x_tilemode + (TileModeAbsolute * 2**8)
172: end
173: er.ewin := w
174: end set_tilemode
175:
176: set_clipmode = proc (w: cvt, drawthru: bool)
177: or: oreq, er: ereq := x_buf$get()
178: if drawthru
179: then er.code := x_clipmode + (ClipModeDrawThru * 2**8)
180: else er.code := x_clipmode + (ClipModeClipped * 2**8)
181: end
182: er.ewin := w
183: end set_clipmode
184:
185: % returns (x, y, width, height, border, map, kind, icon)
186:
187: query = proc (w: cvt) returns (int, int, int, int, int, int, int, cvt)
188: signals (error(string))
189: or: oreq, er: ereq := x_buf$get()
190: er.code := x_querywindow
191: er.ewin := w
192: x_buf$receive()
193: resignal error
194: return(x_buf$get_sp2(), x_buf$get_sp3(), x_buf$get_sp1(), x_buf$get_sp0(),
195: x_buf$get_sp4(), x_buf$get_bp10(), x_buf$get_bp11(),
196: x_buf$get_lp3())
197: end query
198:
199: query_tree = proc (w: cvt) returns (cvt, wlist) signals (error(string))
200: wlist = array[x_window]
201: or: oreq, er: ereq := x_buf$get()
202: er.code := x_querytree
203: er.ewin := w
204: x_buf$receive()
205: resignal error
206: parent: int := x_buf$get_lp0()
207: n: int := x_buf$get_lp1()
208: subs: wlist := wlist$fill(1, n, up(parent))
209: if n > 0
210: then b: _bytevec := _bytevec$create(n * 4)
211: x_buf$receive_data(b)
212: for i: int in int$from_to(1, n) do
213: subs[i] := up(b2w(b)[i])
214: end
215: end
216: return(parent, subs)
217: end query_tree
218:
219: get_name = proc (w: cvt) returns (string) signals (error(string))
220: or: oreq, er: ereq := x_buf$get()
221: er.code := x_fetchname
222: er.ewin := w
223: x_buf$receive()
224: resignal error
225: n: int := x_buf$get_sp0()
226: if n = 0
227: then return("") end
228: b: _bytevec := _bytevec$create(n)
229: x_buf$receive_data(b)
230: return(b2s(b))
231: end get_name
232:
233: set_name = proc (w: cvt, n: string)
234: or: oreq, er: ereq := x_buf$get()
235: er.code := x_storename
236: er.ewin := w
237: er.s0 := string$size(n)
238: x_buf$send_data(s2b(n), 1, string$size(n))
239: end set_name
240:
241: set_icon = proc (w, icon: cvt)
242: or: oreq, er: ereq := x_buf$get()
243: er.code := x_seticonwindow
244: er.ewin := w
245: lr(er).l0 := icon
246: end set_icon
247:
248: get_resize = proc (w: cvt) returns (int, int, int, int) signals (error(string))
249: or: oreq, er: ereq := x_buf$get()
250: er.code := x_getresizehint
251: er.ewin := w
252: x_buf$receive()
253: resignal error
254: return(x_buf$get_sp2(), x_buf$get_sp3(), x_buf$get_sp0(), x_buf$get_sp1())
255: end get_resize
256:
257: set_resize = proc (w: cvt, width0, widthinc, height0, heightinc: int)
258: or: oreq, er: ereq := x_buf$get()
259: er.code := x_setresizehint
260: er.ewin := w
261: er.s0 := height0
262: or.s1 := heightinc
263: er.s2 := width0
264: or.s3 := widthinc
265: end set_resize
266:
267: set_cursor = proc (w: cvt, cursor: x_cursor)
268: or: oreq, er: ereq := x_buf$get()
269: er.code := x_definecursor
270: er.ewin := w
271: lr(er).l0 := c2i(cursor)
272: end set_cursor
273:
274: set_input = proc (w: cvt, mask: int)
275: or: oreq, er: ereq := x_buf$get()
276: er.code := x_selectinput
277: er.ewin := w
278: lr(er).l0 := mask
279: end set_input
280:
281: grab_mouse = proc (w: cvt, mask: int, cursor: x_cursor) signals (error(string))
282: or: oreq, er: ereq := x_buf$get()
283: er.code := x_grabmouse
284: er.ewin := w
285: lr(er).l0 := c2i(cursor)
286: lr(er).l1 := mask
287: x_buf$receive()
288: resignal error
289: end grab_mouse
290:
291: ungrab_mouse = proc ()
292: or: oreq, er: ereq := x_buf$get()
293: er.code := x_ungrabmouse
294: end ungrab_mouse
295:
296: grab_button = proc (w: cvt, button, mask: int, cursor: x_cursor)
297: signals (error(string))
298: or: oreq, er: ereq := x_buf$get()
299: er.code := x_grabbutton
300: or.mask := button
301: er.ewin := w
302: lr(er).l0 := c2i(cursor)
303: lr(er).l1 := mask
304: x_buf$receive()
305: resignal error
306: end grab_button
307:
308: ungrab_button = proc (button: int)
309: or: oreq, er: ereq := x_buf$get()
310: er.code := x_ungrabmouse
311: or.mask := button
312: end ungrab_button
313:
314: % returns (x, y, window)
315:
316: query_mouse = proc (w: cvt) returns (int, int, cvt) signals (error(string))
317: or: oreq, er: ereq := x_buf$get()
318: er.code := x_querymouse
319: er.ewin := w
320: x_buf$receive()
321: resignal error
322: return(x_buf$get_sp2(), x_buf$get_sp3(), x_buf$get_lp0())
323: end query_mouse
324:
325: interpret_locator = proc (w: cvt, x, y: int) returns (int, int, cvt)
326: signals (error(string))
327: or: oreq, er: ereq := x_buf$get()
328: er.code := x_interpretlocator
329: er.ewin := w
330: er.s0 := y
331: or.s1 := x
332: x_buf$receive()
333: resignal error
334: return(x_buf$get_sp2(), x_buf$get_sp3(), x_buf$get_lp0())
335: end interpret_locator
336:
337: warp_mouse = proc (w: cvt, x, y: int)
338: or: oreq, er: ereq := x_buf$get()
339: er.code := x_warpmouse
340: er.ewin := w
341: er.s0 := x
342: or.s1 := y
343: lr(er).l1 := down(x_display$root())
344: er.s4 := 0
345: or.s5 := 0
346: er.s6 := 0
347: or.s7 := 0
348: end warp_mouse
349:
350: cond_warp_mouse = proc (dstw: cvt, dstx, dsty: int, srcw: cvt,
351: srcx, srcy, srcwidth, srcheight: int)
352: or: oreq, er: ereq := x_buf$get()
353: er.code := x_warpmouse
354: er.ewin := dstw
355: er.s0 := dstx
356: or.s1 := dsty
357: lr(er).l1 := srcw
358: er.s4 := srcheight
359: or.s5 := srcwidth
360: er.s6 := srcx
361: or.s7 := srcy
362: end cond_warp_mouse
363:
364: focus_keyboard = proc (w: cvt)
365: or: oreq, er: ereq := x_buf$get()
366: er.code := x_focuskeyboard
367: er.ewin := w
368: end focus_keyboard
369:
370: clear = proc (w: cvt)
371: or: oreq, er: ereq := x_buf$get()
372: er.code := x_clear
373: er.ewin := w
374: end clear
375:
376: pix_set = proc (w: cvt, pixel, x, y, width, height: int)
377: or: oreq, er: ereq := x_buf$get()
378: er.code := x_pixfill + (GXcopy * 2**8)
379: or.mask := -1
380: er.ewin := w
381: er.s0 := height
382: or.s1 := width
383: er.s2 := x
384: or.s3 := y
385: er.s4 := pixel
386: lr(er).l3 := 0
387: end pix_set
388:
389: pix_fill = proc (w: cvt, pixel: int, mask: x_bitmap, x, y, width, height: int,
390: func, planes: int)
391: or: oreq, er: ereq := x_buf$get()
392: er.code := x_pixfill + (func * 2**8)
393: or.mask := planes
394: er.ewin := w
395: er.s0 := height
396: or.s1 := width
397: er.s2 := x
398: or.s3 := y
399: er.s4 := pixel
400: lr(er).l3 := b2i(mask)
401: end pix_fill
402:
403: tile_set = proc (w: cvt, tile: x_pixmap, x, y, width, height: int)
404: or: oreq, er: ereq := x_buf$get()
405: er.code := x_tilefill + (GXcopy * 2**8)
406: or.mask := -1
407: er.ewin := w
408: er.s0 := height
409: or.s1 := width
410: er.s2 := x
411: or.s3 := y
412: lr(er).l2 := p2i(tile)
413: lr(er).l3 := 0
414: end tile_set
415:
416: tile_fill = proc (w: cvt, tile: x_pixmap, mask: x_bitmap,
417: x, y, width, height, func, planes: int)
418: or: oreq, er: ereq := x_buf$get()
419: er.code := x_tilefill + (func * 2**8)
420: or.mask := planes
421: er.ewin := w
422: er.s0 := height
423: or.s1 := width
424: er.s2 := x
425: or.s3 := y
426: lr(er).l2 := p2i(tile)
427: lr(er).l3 := b2i(mask)
428: end tile_fill
429:
430: pixmap_put = proc (w: cvt, pix: x_pixmap,
431: srcx, srcy, width, height, dstx, dsty, func, planes: int)
432: or: oreq, er: ereq := x_buf$get()
433: er.code := x_pixmapput + (func * 2**8)
434: or.mask := planes
435: er.ewin := w
436: er.s0 := height
437: or.s1 := width
438: er.s2 := srcx
439: or.s3 := srcy
440: lr(er).l2 := p2i(pix)
441: er.s6 := dstx
442: or.s7 := dsty
443: end pixmap_put
444:
445: pixmap_zbitsput = proc (w: cvt, width, height: int, bits: _wordvec,
446: mask: x_bitmap, x, y, func, planes: int)
447: or: oreq, er: ereq := x_buf$get()
448: er.code := x_pixmapbitsput + (func * 2**8)
449: or.mask := planes
450: er.ewin := w
451: er.s0 := height
452: or.s1 := width
453: er.s2 := x
454: or.s3 := y
455: er.s4 := ZFormat
456: lr(er).l3 := b2i(mask)
457: z: int := width * height
458: if x_display$planes() > 8
459: then z := z + z end
460: x_buf$send_data(w2b(bits), 1, z)
461: end pixmap_zbitsput
462:
463: pixmap_xybitsput = proc (w: cvt, width, height: int, bits: _wordvec,
464: mask: x_bitmap, x, y, func, planes: int)
465: or: oreq, er: ereq := x_buf$get()
466: er.code := x_pixmapbitsput + (func * 2**8)
467: or.mask := planes
468: er.ewin := w
469: er.s0 := height
470: or.s1 := width
471: er.s2 := x
472: or.s3 := y
473: er.s4 := XYFormat
474: lr(er).l3 := b2i(mask)
475: x_buf$send_data(w2b(bits), 1,
476: ((width + 15) / 16) * height * 2 * x_display$planes())
477: end pixmap_xybitsput
478:
479: bitmap_bitsput = proc (w: cvt, width, height: int, bits: _wordvec,
480: fore, back: int, mask: x_bitmap, x, y, func, planes: int)
481: or: oreq, er: ereq := x_buf$get()
482: er.code := x_bitmapbitsput + (func * 2**8)
483: or.mask := planes
484: er.ewin := w
485: er.s0 := height
486: or.s1 := width
487: er.s2 := x
488: or.s3 := y
489: er.s4 := fore
490: or.s5 := back
491: lr(er).l3 := b2i(mask)
492: x_buf$send_data(w2b(bits), 1, ((width + 15) / 16) * height * 2)
493: end bitmap_bitsput
494:
495: move_area = proc (w: cvt, srcx, srcy, width, height, dstx, dsty: int)
496: or: oreq, er: ereq := x_buf$get()
497: er.code := x_copyarea + (GXcopy * 2**8)
498: or.mask := -1
499: er.ewin := w
500: er.s0 := height
501: or.s1 := width
502: er.s2 := srcx
503: or.s3 := srcy
504: er.s6 := dstx
505: or.s7 := dsty
506: end move_area
507:
508: copy_area = proc (w: cvt, srcx, srcy, width, height, dstx, dsty: int,
509: func, planes: int)
510: or: oreq, er: ereq := x_buf$get()
511: er.code := x_copyarea + (func * 2**8)
512: or.mask := planes
513: er.ewin := w
514: er.s0 := height
515: or.s1 := width
516: er.s2 := srcx
517: or.s3 := srcy
518: er.s6 := dstx
519: or.s7 := dsty
520: end copy_area
521:
522: text = proc (w: cvt, s: string, font: x_font, fore, back, x, y: int)
523: or: oreq, er: ereq := x_buf$get()
524: er.code := x_text + (GXcopy * 2**8)
525: or.mask := -1
526: er.ewin := w
527: er.s0 := x
528: or.s1 := y
529: lr(er).l1 := f2i(font)
530: er.s4 := fore
531: or.s5 := back
532: er.s6 := string$size(s)
533: x_buf$send_data(s2b(s), 1, string$size(s))
534: end text
535:
536: textv = proc (w: cvt, b: _bytevec, start, z: int, font: x_font,
537: fore, back, x, y: int)
538: or: oreq, er: ereq := x_buf$get()
539: er.code := x_text + (GXcopy * 2**8)
540: or.mask := -1
541: er.ewin := w
542: er.s0 := x
543: or.s1 := y
544: lr(er).l1 := f2i(font)
545: er.s4 := fore
546: or.s5 := back
547: er.s6 := z
548: x_buf$send_data(b, start, z)
549: end textv
550:
551: texta = proc (w: cvt, a: array[char], start, z: int, font: x_font,
552: fore, back, x, y: int)
553: or: oreq, er: ereq := x_buf$get()
554: er.code := x_text + (GXcopy * 2**8)
555: or.mask := -1
556: er.ewin := w
557: er.s0 := x
558: or.s1 := y
559: lr(er).l1 := f2i(font)
560: er.s4 := fore
561: or.s5 := back
562: er.s6 := z
563: x_buf$send_array(a, start, z)
564: end texta
565:
566: text_pad = proc (w: cvt, s: string, font: x_font, fore, back, cpad, spad: int,
567: x, y: int, func, planes: int)
568: or: oreq, er: ereq := x_buf$get()
569: er.code := x_text + (func * 2**8)
570: or.mask := planes
571: er.ewin := w
572: er.s0 := x
573: or.s1 := y
574: lr(er).l1 := f2i(font)
575: er.s4 := fore
576: or.s5 := back
577: er.s6 := string$size(s)
578: or.s7 := (cpad // 2**8) + (spad * 2**8)
579: x_buf$send_data(s2b(s), 1, string$size(s))
580: end text_pad
581:
582: textv_pad = proc (w: cvt, b: _bytevec, start, z: int, font: x_font,
583: fore, back, cpad, spad: int, x, y: int, func, planes: int)
584: or: oreq, er: ereq := x_buf$get()
585: er.code := x_text + (func * 2**8)
586: or.mask := planes
587: er.ewin := w
588: er.s0 := x
589: or.s1 := y
590: lr(er).l1 := f2i(font)
591: er.s4 := fore
592: or.s5 := back
593: er.s6 := z
594: or.s7 := (cpad // 2**8) + (spad * 2**8)
595: x_buf$send_data(b, start, z)
596: end textv_pad
597:
598: texta_pad = proc (w: cvt, a: array[char], start, z: int, font: x_font,
599: fore, back, cpad, spad: int, x, y: int, func, planes: int)
600: or: oreq, er: ereq := x_buf$get()
601: er.code := x_text + (func * 2**8)
602: or.mask := planes
603: er.ewin := w
604: er.s0 := x
605: or.s1 := y
606: lr(er).l1 := f2i(font)
607: er.s4 := fore
608: or.s5 := back
609: er.s6 := z
610: or.s7 := (cpad // 2**8) + (spad * 2**8)
611: x_buf$send_array(a, start, z)
612: end texta_pad
613:
614: text_mask = proc (w: cvt, s: string, font: x_font, pixel, x, y: int)
615: or: oreq, er: ereq := x_buf$get()
616: er.code := x_textmask + (GXcopy * 2**8)
617: or.mask := -1
618: er.ewin := w
619: er.s0 := x
620: or.s1 := y
621: lr(er).l1 := f2i(font)
622: er.s4 := pixel
623: er.s6 := string$size(s)
624: x_buf$send_data(s2b(s), 1, string$size(s))
625: end text_mask
626:
627: textv_mask = proc (w: cvt, b: _bytevec, start, z: int, font: x_font,
628: pixel, x, y: int)
629: or: oreq, er: ereq := x_buf$get()
630: er.code := x_textmask + (GXcopy * 2**8)
631: or.mask := -1
632: er.ewin := w
633: er.s0 := x
634: or.s1 := y
635: lr(er).l1 := f2i(font)
636: er.s4 := pixel
637: er.s6 := z
638: x_buf$send_data(b, start, z)
639: end textv_mask
640:
641: texta_mask = proc (w: cvt, a: array[char], start, z: int, font: x_font,
642: pixel, x, y: int)
643: or: oreq, er: ereq := x_buf$get()
644: er.code := x_textmask + (GXcopy * 2**8)
645: or.mask := -1
646: er.ewin := w
647: er.s0 := x
648: or.s1 := y
649: lr(er).l1 := f2i(font)
650: er.s4 := pixel
651: er.s6 := z
652: x_buf$send_array(a, start, z)
653: end texta_mask
654:
655: text_mask_pad = proc (w: cvt, s: string, font: x_font, pixel, cpad, spad: int,
656: x, y: int, func, planes: int)
657: or: oreq, er: ereq := x_buf$get()
658: er.code := x_textmask + (func * 2**8)
659: or.mask := planes
660: er.ewin := w
661: er.s0 := x
662: or.s1 := y
663: lr(er).l1 := f2i(font)
664: er.s4 := pixel
665: er.s6 := string$size(s)
666: or.s7 := (cpad // 2**8) + (spad * 2**8)
667: x_buf$send_data(s2b(s), 1, string$size(s))
668: end text_mask_pad
669:
670: textv_mask_pad = proc (w: cvt, b: _bytevec, start, z: int, font: x_font,
671: pixel, cpad, spad: int, x, y: int, func, planes: int)
672: or: oreq, er: ereq := x_buf$get()
673: er.code := x_textmask + (func * 2**8)
674: or.mask := planes
675: er.ewin := w
676: er.s0 := x
677: or.s1 := y
678: lr(er).l1 := f2i(font)
679: er.s4 := pixel
680: er.s6 := z
681: or.s7 := (cpad // 2**8) + (spad * 2**8)
682: x_buf$send_data(b, start, z)
683: end textv_mask_pad
684:
685: texta_mask_pad = proc (w: cvt, a: array[char], start, z: int, font: x_font,
686: pixel, cpad, spad: int, x, y: int, func, planes: int)
687: or: oreq, er: ereq := x_buf$get()
688: er.code := x_textmask + (func * 2**8)
689: or.mask := planes
690: er.ewin := w
691: er.s0 := x
692: or.s1 := y
693: lr(er).l1 := f2i(font)
694: er.s4 := pixel
695: er.s6 := z
696: or.s7 := (cpad // 2**8) + (spad * 2**8)
697: x_buf$send_array(a, start, z)
698: end texta_mask_pad
699:
700: line = proc (w: cvt, pixel, width, height, x1, y1, x2, y2, func, planes: int)
701: or: oreq, er: ereq := x_buf$get()
702: er.code := x_line + (func * 2**8)
703: or.mask := planes
704: er.ewin := w
705: er.s0 := x1
706: or.s1 := y1
707: er.s2 := x2
708: or.s3 := y2
709: er.s4 := pixel
710: or.s5 := (height // 2**8) + (width * 2**8)
711: end line
712:
713: draw = proc (w: cvt, verts: x_vlist, z, pixel, width, height, func, planes: int)
714: or: oreq, er: ereq := x_buf$get()
715: er.code := x_draw + (func * 2**8)
716: or.mask := planes
717: er.ewin := w
718: er.s0 := z
719: or.s1 := pixel
720: er.s2 := (height // 2**8) + (width * 2**8)
721: or.s3 := DrawSolidLine
722: x_buf$send_data(v2b(verts), 1, 6 * z)
723: end draw
724:
725: draw_dashed = proc (w: cvt, verts: x_vlist, z, pixel, width, height: int,
726: pattern, patlen, patmul, func, planes: int)
727: or: oreq, er: ereq := x_buf$get()
728: er.code := x_draw + (func * 2**8)
729: or.mask := planes
730: er.ewin := w
731: er.s0 := z
732: or.s1 := pixel
733: er.s2 := (height // 2**8) + (width * 2**8)
734: or.s3 := DrawDashedLine
735: or.s5 := pattern
736: er.s6 := patlen
737: or.s7 := patmul
738: x_buf$send_data(v2b(verts), 1, 6 * z)
739: end draw_dashed
740:
741: draw_patterned = proc (w: cvt, verts: x_vlist, z, pixel, altpix: int,
742: width, height, pattern, patlen, patmul, func, planes: int)
743: or: oreq, er: ereq := x_buf$get()
744: er.code := x_draw + (func * 2**8)
745: or.mask := planes
746: er.ewin := w
747: er.s0 := z
748: or.s1 := pixel
749: er.s2 := (height // 2**8) + (width * 2**8)
750: or.s3 := DrawPatternedLine
751: er.s4 := altpix
752: or.s5 := pattern
753: er.s6 := patlen
754: or.s7 := patmul
755: x_buf$send_data(v2b(verts), 1, 6 * z)
756: end draw_patterned
757:
758: draw_filled = proc (w: cvt, verts: x_vlist, z, pixel, func, planes: int)
759: or: oreq, er: ereq := x_buf$get()
760: er.code := x_drawfilled + (func * 2**8)
761: or.mask := planes
762: er.ewin := w
763: er.s0 := z
764: or.s1 := pixel
765: lr(er).l1 := 0
766: x_buf$send_data(v2b(verts), 1, 6 * z)
767: end draw_filled
768:
769: draw_tiled = proc (w: cvt, verts: x_vlist, z: int, tile: x_pixmap,
770: func, planes: int)
771: or: oreq, er: ereq := x_buf$get()
772: er.code := x_drawfilled + (func * 2**8)
773: or.mask := planes
774: er.ewin := w
775: er.s0 := z
776: lr(er).l1 := p2i(tile)
777: x_buf$send_data(v2b(verts), 1, 6 * z)
778: end draw_tiled
779:
780: save_region = proc (w: cvt, x, y, width, height: int) returns (x_pixmap)
781: signals (error(string))
782: or: oreq, er: ereq := x_buf$get()
783: er.code := x_pixmapsave
784: er.ewin := w
785: er.s0 := height
786: or.s1 := width
787: er.s2 := x
788: or.s3 := y
789: x_buf$receive()
790: resignal error
791: return(_cvt[int, x_pixmap](x_buf$get_lp0()))
792: end save_region
793:
794: read_xyregion = proc (w: cvt, x, y, width, height: int) returns (_wordvec)
795: signals (error(string))
796: or: oreq, er: ereq := x_buf$get()
797: er.code := x_pixmapget + (XYFormat * 2**8)
798: er.ewin := w
799: er.s0 := height
800: or.s1 := width
801: er.s2 := x
802: or.s3 := y
803: x_buf$receive()
804: resignal error
805: b: _bytevec := _bytevec$create(x_buf$get_lp0())
806: x_buf$receive_data(b)
807: return(b2w(b))
808: end read_xyregion
809:
810: read_zregion = proc (w: cvt, x, y, width, height: int) returns (_wordvec)
811: signals (error(string))
812: or: oreq, er: ereq := x_buf$get()
813: er.code := x_pixmapget + (ZFormat * 2**8)
814: er.ewin := w
815: er.s0 := height
816: or.s1 := width
817: er.s2 := x
818: or.s3 := y
819: x_buf$receive()
820: resignal error
821: b: _bytevec := _bytevec$create(x_buf$get_lp0())
822: x_buf$receive_data(b)
823: return(b2w(b))
824: end read_zregion
825:
826: get_id = proc (w: cvt) returns (int)
827: return(w)
828: end get_id
829:
830: equal = proc (w1, w2: cvt) returns (bool)
831: return(w1 = w2)
832: end equal
833:
834: similar = proc (w1, w2: cvt) returns (bool)
835: return(w1 = w2)
836: end similar
837:
838: copy = proc (w: cvt) returns (cvt)
839: return(w)
840: end copy
841:
842: end x_window
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.