tdraw.h - plan9port - [fork] Plan 9 from user space | |
git clone git://src.adamsgaard.dk/plan9port | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
tdraw.h (17881B) | |
--- | |
1 #ifndef _DRAW_H_ | |
2 #define _DRAW_H_ 1 | |
3 #if defined(__cplusplus) | |
4 extern "C" { | |
5 #endif | |
6 | |
7 AUTOLIB(draw) | |
8 #ifdef __APPLE__ | |
9 AUTOFRAMEWORK(Carbon) | |
10 #endif | |
11 | |
12 typedef struct Cachefont Cachefont; | |
13 typedef struct Cacheinfo Cacheinfo; | |
14 typedef struct Cachesubf Cachesubf; | |
15 typedef struct Display Display; | |
16 typedef struct Font Font; | |
17 typedef struct Fontchar Fontchar; | |
18 typedef struct Image Image; | |
19 typedef struct Mouse Mouse; | |
20 typedef struct Point Point; | |
21 typedef struct Rectangle Rectangle; | |
22 typedef struct RGB RGB; | |
23 typedef struct Screen Screen; | |
24 typedef struct Subfont Subfont; | |
25 | |
26 struct Mux; | |
27 | |
28 extern int Rfmt(Fmt*); | |
29 extern int Pfmt(Fmt*); | |
30 | |
31 #define DOpaque 0xFFFFFFFF | |
32 #define DTransparent 0x00000000 /* only us… | |
33 #define DBlack 0x000000FF | |
34 #define DWhite 0xFFFFFFFF | |
35 #define DRed 0xFF0000FF | |
36 #define DGreen 0x00FF00FF | |
37 #define DBlue 0x0000FFFF | |
38 #define DCyan 0x00FFFFFF | |
39 #define DMagenta 0xFF00FFFF | |
40 #define DYellow 0xFFFF00FF | |
41 #define DPaleyellow 0xFFFFAAFF | |
42 #define DDarkyellow 0xEEEE9EFF | |
43 #define DDarkgreen 0x448844FF | |
44 #define DPalegreen 0xAAFFAAFF | |
45 #define DMedgreen 0x88CC88FF | |
46 #define DDarkblue 0x000055FF | |
47 #define DPalebluegreen 0xAAFFFFFF | |
48 #define DPaleblue 0x0000BBFF | |
49 #define DBluegreen 0x008888FF | |
50 #define DGreygreen 0x55AAAAFF | |
51 #define DPalegreygreen 0x9EEEEEFF | |
52 #define DYellowgreen 0x99994CFF | |
53 #define DMedblue 0x000099FF | |
54 #define DGreyblue 0x005DBBFF | |
55 #define DPalegreyblue 0x4993DDFF | |
56 #define DPurpleblue 0x8888CCFF | |
57 | |
58 #define DNotacolor 0xFFFFFF00 | |
59 #define DNofill DNotacolor | |
60 | |
61 enum | |
62 { | |
63 Displaybufsize = 8000, | |
64 ICOSSCALE = 1024, | |
65 Borderwidth = 4, | |
66 DefaultDPI = 133 | |
67 }; | |
68 | |
69 enum | |
70 { | |
71 /* refresh methods */ | |
72 Refbackup = 0, | |
73 Refnone = 1, | |
74 Refmesg = 2 | |
75 }; | |
76 #define NOREFRESH ((void*)-1) | |
77 | |
78 enum | |
79 { | |
80 /* line ends */ | |
81 Endsquare = 0, | |
82 Enddisc = 1, | |
83 Endarrow = 2, | |
84 Endmask = 0x1F | |
85 }; | |
86 | |
87 #define ARROW(a, b, c) (Endarrow|((a)<<5)|((b)<<14)|((c)<<… | |
88 | |
89 typedef enum | |
90 { | |
91 /* Porter-Duff compositing operators */ | |
92 Clear = 0, | |
93 | |
94 SinD = 8, | |
95 DinS = 4, | |
96 SoutD = 2, | |
97 DoutS = 1, | |
98 | |
99 S = SinD|SoutD, | |
100 SoverD = SinD|SoutD|DoutS, | |
101 SatopD = SinD|DoutS, | |
102 SxorD = SoutD|DoutS, | |
103 | |
104 D = DinS|DoutS, | |
105 DoverS = DinS|DoutS|SoutD, | |
106 DatopS = DinS|SoutD, | |
107 DxorS = DoutS|SoutD, /* == SxorD */ | |
108 | |
109 Ncomp = 12 | |
110 } Drawop; | |
111 | |
112 /* | |
113 * image channel descriptors | |
114 */ | |
115 enum { | |
116 CRed = 0, | |
117 CGreen, | |
118 CBlue, | |
119 CGrey, | |
120 CAlpha, | |
121 CMap, | |
122 CIgnore, | |
123 NChan | |
124 }; | |
125 | |
126 #define __DC(type, nbits) ((((type)&15)<<4)|((nbits)&15)) | |
127 #define CHAN1(a,b) __DC(a,b) | |
128 #define CHAN2(a,b,c,d) (CHAN1((a),(b))<<8|__DC((c),(d))) | |
129 #define CHAN3(a,b,c,d,e,f) (CHAN2((a),(b),(c),(d))<<8|__DC((e),(f… | |
130 #define CHAN4(a,b,c,d,e,f,g,h) (CHAN3((a),(b),(c),(d),(e),(f))<<8… | |
131 | |
132 #define NBITS(c) ((c)&15) | |
133 #define TYPE(c) (((c)>>4)&15) | |
134 | |
135 enum { | |
136 GREY1 = CHAN1(CGrey, 1), | |
137 GREY2 = CHAN1(CGrey, 2), | |
138 GREY4 = CHAN1(CGrey, 4), | |
139 GREY8 = CHAN1(CGrey, 8), | |
140 CMAP8 = CHAN1(CMap, 8), | |
141 RGB15 = CHAN4(CIgnore, 1, CRed, 5, CGreen, 5, CBlue, 5), | |
142 RGB16 = CHAN3(CRed, 5, CGreen, 6, CBlue, 5), | |
143 RGB24 = CHAN3(CRed, 8, CGreen, 8, CBlue, 8), | |
144 BGR24 = CHAN3(CBlue, 8, CGreen, 8, CRed, 8), | |
145 RGBA32 = CHAN4(CRed, 8, CGreen, 8, CBlue, 8, CAlpha, 8), | |
146 ARGB32 = CHAN4(CAlpha, 8, CRed, 8, CGreen, 8, CBlue, 8), … | |
147 ABGR32 = CHAN4(CAlpha, 8, CBlue, 8, CGreen, 8, CRed, 8), | |
148 XRGB32 = CHAN4(CIgnore, 8, CRed, 8, CGreen, 8, CBlue, 8), | |
149 XBGR32 = CHAN4(CIgnore, 8, CBlue, 8, CGreen, 8, CRed, 8) | |
150 }; | |
151 | |
152 extern char* chantostr(char*, u32int); | |
153 extern u32int strtochan(char*); | |
154 extern int chantodepth(u32int); | |
155 | |
156 struct Point | |
157 { | |
158 int x; | |
159 int y; | |
160 }; | |
161 | |
162 struct Rectangle | |
163 { | |
164 Point min; | |
165 Point max; | |
166 }; | |
167 | |
168 typedef void (*Reffn)(Image*, Rectangle, void*); | |
169 | |
170 struct Screen | |
171 { | |
172 Display *display; /* display holding data */ | |
173 int id; /* id of system-held Screen */ | |
174 Image *image; /* unused; for reference onl… | |
175 Image *fill; /* color to paint behind wind… | |
176 }; | |
177 | |
178 struct Display | |
179 { | |
180 QLock qlock; | |
181 int locking; /*program is using lockdispla… | |
182 int dirno; | |
183 int imageid; | |
184 int local; | |
185 void (*error)(Display*, char*); | |
186 char *devdir; | |
187 char *windir; | |
188 char oldlabel[64]; | |
189 u32int dataqid; | |
190 Image *image; | |
191 Image *white; | |
192 Image *black; | |
193 Image *opaque; | |
194 Image *transparent; | |
195 uchar *buf; | |
196 int bufsize; | |
197 uchar *bufp; | |
198 uchar *obuf; | |
199 int obufsize; | |
200 uchar *obufp; | |
201 Font *defaultfont; | |
202 Image *windows; | |
203 Image *screenimage; | |
204 int _isnewdisplay; | |
205 struct Mux *mux; | |
206 int srvfd; | |
207 int dpi; | |
208 | |
209 Font *firstfont; | |
210 Font *lastfont; | |
211 }; | |
212 | |
213 struct Image | |
214 { | |
215 Display *display; /* display holding data … | |
216 int id; /* id of system-held Image… | |
217 Rectangle r; /* rectangle in data area, lo… | |
218 Rectangle clipr; /* clipping region */ | |
219 int depth; /* number of bits per p… | |
220 u32int chan; | |
221 int repl; /* flag: data replicates… | |
222 Screen *screen; /* 0 if not a window */ | |
223 Image *next; /* next in list of windows */ | |
224 }; | |
225 | |
226 struct RGB | |
227 { | |
228 u32int red; | |
229 u32int green; | |
230 u32int blue; | |
231 }; | |
232 | |
233 /* | |
234 * Subfonts | |
235 * | |
236 * given char c, Subfont *f, Fontchar *i, and Point p, one says | |
237 * i = f->info+c; | |
238 * void(b, Rect(p.x+i->left, p.y+i->top, | |
239 * p.x+i->left+((i+1)->x-i->x), p.y+i->bottom), | |
240 * color, f->bits, Pt(i->x, i->top)); | |
241 * p.x += i->width; | |
242 * to draw characters in the specified color (itself an Image) in Image … | |
243 */ | |
244 | |
245 struct Fontchar | |
246 { | |
247 int x; /* left edge of bits */ | |
248 uchar top; /* first non-zero scan-… | |
249 uchar bottom; /* last non-zero sca… | |
250 char left; /* offset of baseline */ | |
251 uchar width; /* width of baseline … | |
252 }; | |
253 | |
254 struct Subfont | |
255 { | |
256 char *name; | |
257 short n; /* number of chars in fon… | |
258 uchar height; /* height of image */ | |
259 char ascent; /* top of image to ba… | |
260 Fontchar *info; /* n+1 character descript… | |
261 Image *bits; /* of font */ | |
262 int ref; | |
263 }; | |
264 | |
265 enum | |
266 { | |
267 /* starting values */ | |
268 LOG2NFCACHE = 6, | |
269 NFCACHE = (1<<LOG2NFCACHE), /* #chars cached */ | |
270 NFLOOK = 5, /* #chars to scan in c… | |
271 NFSUBF = 2, /* #subfonts to cache … | |
272 /* max value */ | |
273 MAXFCACHE = 1024+NFLOOK, /* upper limit */ | |
274 MAXSUBF = 50, /* generous upper li… | |
275 /* deltas */ | |
276 DSUBF = 4, | |
277 /* expiry ages */ | |
278 SUBFAGE = 10000, | |
279 CACHEAGE = 10000 | |
280 }; | |
281 | |
282 struct Cachefont | |
283 { | |
284 Rune min; /* lowest rune value to be taken… | |
285 Rune max; /* highest rune value+1 to be ta… | |
286 int offset; /* position in subfont of char… | |
287 char *name; /* stored in f… | |
288 char *subfontname; /* to access su… | |
289 }; | |
290 | |
291 struct Cacheinfo | |
292 { | |
293 int x; /* left edge of bits */ | |
294 uchar width; /* width of baseline … | |
295 schar left; /* offset of baseline … | |
296 Rune value; /* value of character at this … | |
297 ushort age; | |
298 }; | |
299 | |
300 struct Cachesubf | |
301 { | |
302 u32int age; /* for replacement */ | |
303 Cachefont *cf; /* font info that owns us */ | |
304 Subfont *f; /* attached subfont */ | |
305 }; | |
306 | |
307 struct Font | |
308 { | |
309 char *name; | |
310 char *namespec; | |
311 Display *display; | |
312 short height; /* max height of image, inte… | |
313 short ascent; /* top of image to baseline … | |
314 short width; /* widest so far; used in cac… | |
315 int nsub; /* number of subfonts */ | |
316 u32int age; /* increasing counter; used fo… | |
317 int maxdepth; /* maximum depth of all load… | |
318 int ncache; /* size of cache */ | |
319 int nsubf; /* size of subfont list */ | |
320 int scale; /* pixel scaling to apply */ | |
321 Cacheinfo *cache; | |
322 Cachesubf *subf; | |
323 Cachefont **sub; /* as read from file */ | |
324 Image *cacheimage; | |
325 | |
326 /* doubly linked list of fonts known to display */ | |
327 int ondisplaylist; | |
328 Font *next; | |
329 Font *prev; | |
330 | |
331 /* on hi-dpi systems, one of these is set to f and the other is … | |
332 Font *lodpi; | |
333 Font *hidpi; | |
334 }; | |
335 | |
336 #define Dx(r) ((r).max.x-(r).min.x) | |
337 #define Dy(r) ((r).max.y-(r).min.y) | |
338 | |
339 /* | |
340 * Image management | |
341 */ | |
342 extern Image* _allocimage(Image*, Display*, Rectangle, u32int, in… | |
343 extern Image* allocimage(Display*, Rectangle, u32int, int, u32int… | |
344 extern uchar* bufimage(Display*, int); | |
345 extern int bytesperline(Rectangle, int); | |
346 extern void closedisplay(Display*); | |
347 extern void drawerror(Display*, char*); | |
348 extern int flushimage(Display*, int); | |
349 extern int freeimage(Image*); | |
350 extern int _freeimage1(Image*); | |
351 extern int geninitdraw(char*, void(*)(Display*, char*), char*, ch… | |
352 extern int initdraw(void(*)(Display*, char*), char*, char*); | |
353 extern int newwindow(char*); | |
354 extern int loadimage(Image*, Rectangle, uchar*, int); | |
355 extern int cloadimage(Image*, Rectangle, uchar*, int); | |
356 extern int getwindow(Display*, int); | |
357 extern int gengetwindow(Display*, char*, Image**, Screen**, int); | |
358 extern Image* readimage(Display*, int, int); | |
359 extern Image* creadimage(Display*, int, int); | |
360 extern int unloadimage(Image*, Rectangle, uchar*, int); | |
361 extern int wordsperline(Rectangle, int); | |
362 extern int writeimage(int, Image*, int); | |
363 extern Image* namedimage(Display*, char*); | |
364 extern int nameimage(Image*, char*, int); | |
365 extern Image* allocimagemix(Display*, u32int, u32int); | |
366 extern int drawsetlabel(char*); | |
367 extern int scalesize(Display*, int); | |
368 | |
369 /* | |
370 * Colors | |
371 */ | |
372 extern void readcolmap(Display*, RGB*); | |
373 extern void writecolmap(Display*, RGB*); | |
374 extern u32int setalpha(u32int, uchar); | |
375 | |
376 /* | |
377 * Windows | |
378 */ | |
379 extern Screen* allocscreen(Image*, Image*, int); | |
380 extern Image* _allocwindow(Image*, Screen*, Rectangle, int, u32in… | |
381 extern Image* allocwindow(Screen*, Rectangle, int, u32int); | |
382 extern void bottomnwindows(Image**, int); | |
383 extern void bottomwindow(Image*); | |
384 extern int freescreen(Screen*); | |
385 extern Screen* publicscreen(Display*, int, u32int); | |
386 extern void topnwindows(Image**, int); | |
387 extern void topwindow(Image*); | |
388 extern int originwindow(Image*, Point, Point); | |
389 | |
390 /* | |
391 * Geometry | |
392 */ | |
393 extern Point Pt(int, int); | |
394 extern Rectangle Rect(int, int, int, int); | |
395 extern Rectangle Rpt(Point, Point); | |
396 extern Point addpt(Point, Point); | |
397 extern Point subpt(Point, Point); | |
398 extern Point divpt(Point, int); | |
399 extern Point mulpt(Point, int); | |
400 extern int eqpt(Point, Point); | |
401 extern int eqrect(Rectangle, Rectangle); | |
402 extern Rectangle insetrect(Rectangle, int); | |
403 extern Rectangle rectaddpt(Rectangle, Point); | |
404 extern Rectangle rectsubpt(Rectangle, Point); | |
405 extern Rectangle canonrect(Rectangle); | |
406 extern int rectXrect(Rectangle, Rectangle); | |
407 extern int rectinrect(Rectangle, Rectangle); | |
408 extern void combinerect(Rectangle*, Rectangle); | |
409 extern int rectclip(Rectangle*, Rectangle); | |
410 extern int ptinrect(Point, Rectangle); | |
411 extern void replclipr(Image*, int, Rectangle); | |
412 extern int drawreplxy(int, int, int); /* used to b… | |
413 extern Point drawrepl(Rectangle, Point); | |
414 extern int rgb2cmap(int, int, int); | |
415 extern int cmap2rgb(int); | |
416 extern int cmap2rgba(int); | |
417 extern void icossin(int, int*, int*); | |
418 extern void icossin2(int, int, int*, int*); | |
419 | |
420 /* | |
421 * Graphics | |
422 */ | |
423 extern void draw(Image*, Rectangle, Image*, Image*, Point); | |
424 extern void drawop(Image*, Rectangle, Image*, Image*, Point, Draw… | |
425 extern void gendraw(Image*, Rectangle, Image*, Point, Image*, Poi… | |
426 extern void gendrawop(Image*, Rectangle, Image*, Point, Image*, P… | |
427 extern void line(Image*, Point, Point, int, int, int, Image*, Poi… | |
428 extern void lineop(Image*, Point, Point, int, int, int, Image*, P… | |
429 extern void poly(Image*, Point*, int, int, int, int, Image*, Poin… | |
430 extern void polyop(Image*, Point*, int, int, int, int, Image*, Po… | |
431 extern void fillpoly(Image*, Point*, int, int, Image*, Point); | |
432 extern void fillpolyop(Image*, Point*, int, int, Image*, Point, D… | |
433 extern Point string(Image*, Point, Image*, Point, Font*, char*); | |
434 extern Point stringop(Image*, Point, Image*, Point, Font*, char*,… | |
435 extern Point stringn(Image*, Point, Image*, Point, Font*, char*, … | |
436 extern Point stringnop(Image*, Point, Image*, Point, Font*, char*… | |
437 extern Point runestring(Image*, Point, Image*, Point, Font*, Rune… | |
438 extern Point runestringop(Image*, Point, Image*, Point, Font*, Ru… | |
439 extern Point runestringn(Image*, Point, Image*, Point, Font*, Run… | |
440 extern Point runestringnop(Image*, Point, Image*, Point, Font*, R… | |
441 extern Point stringbg(Image*, Point, Image*, Point, Font*, char*,… | |
442 extern Point stringbgop(Image*, Point, Image*, Point, Font*, char… | |
443 extern Point stringnbg(Image*, Point, Image*, Point, Font*, char*… | |
444 extern Point stringnbgop(Image*, Point, Image*, Point, Font*, cha… | |
445 extern Point runestringbg(Image*, Point, Image*, Point, Font*, Ru… | |
446 extern Point runestringbgop(Image*, Point, Image*, Point, Font*, … | |
447 extern Point runestringnbg(Image*, Point, Image*, Point, Font*, R… | |
448 extern Point runestringnbgop(Image*, Point, Image*, Point, Font*,… | |
449 extern Point _string(Image*, Point, Image*, Point, Font*, char*, … | |
450 extern Point stringsubfont(Image*, Point, Image*, Subfont*, char*… | |
451 extern int bezier(Image*, Point, Point, Point, Point, int… | |
452 extern int bezierop(Image*, Point, Point, Point, Point, i… | |
453 extern int bezspline(Image*, Point*, int, int, int, int, … | |
454 extern int bezsplineop(Image*, Point*, int, int, int, int… | |
455 extern int bezsplinepts(Point*, int, Point**); | |
456 extern int fillbezier(Image*, Point, Point, Point, Point,… | |
457 extern int fillbezierop(Image*, Point, Point, Point, Poin… | |
458 extern int fillbezspline(Image*, Point*, int, int, Image*… | |
459 extern int fillbezsplineop(Image*, Point*, int, int, Imag… | |
460 extern void ellipse(Image*, Point, int, int, int, Image*, Point); | |
461 extern void ellipseop(Image*, Point, int, int, int, Image*, Point… | |
462 extern void fillellipse(Image*, Point, int, int, Image*, Point); | |
463 extern void fillellipseop(Image*, Point, int, int, Image*, Point,… | |
464 extern void arc(Image*, Point, int, int, int, Image*, Point, int,… | |
465 extern void arcop(Image*, Point, int, int, int, Image*, Point, in… | |
466 extern void fillarc(Image*, Point, int, int, Image*, Point, int, … | |
467 extern void fillarcop(Image*, Point, int, int, Image*, Point, int… | |
468 extern void border(Image*, Rectangle, int, Image*, Point); | |
469 extern void borderop(Image*, Rectangle, int, Image*, Point, Drawo… | |
470 | |
471 /* | |
472 * Font management | |
473 */ | |
474 extern Font* openfont(Display*, char*); | |
475 extern int parsefontscale(char*, char**); | |
476 extern Font* buildfont(Display*, char*, char*); | |
477 extern void freefont(Font*); | |
478 extern Font* mkfont(Subfont*, Rune); | |
479 extern int cachechars(Font*, char**, Rune**, ushort*, int, int*, … | |
480 extern void agefont(Font*); | |
481 extern Subfont* allocsubfont(char*, int, int, int, Fontchar*, Ima… | |
482 extern Subfont* lookupsubfont(Display*, char*); | |
483 extern void installsubfont(char*, Subfont*); | |
484 extern void uninstallsubfont(Subfont*); | |
485 extern void freesubfont(Subfont*); | |
486 extern Subfont* readsubfont(Display*, char*, int, int); | |
487 extern Subfont* readsubfonti(Display*, char*, int, Image*, int); | |
488 extern int writesubfont(int, Subfont*); | |
489 extern void _unpackinfo(Fontchar*, uchar*, int); | |
490 extern Point stringsize(Font*, char*); | |
491 extern int stringwidth(Font*, char*); | |
492 extern int stringnwidth(Font*, char*, int); | |
493 extern Point runestringsize(Font*, Rune*); | |
494 extern int runestringwidth(Font*, Rune*); | |
495 extern int runestringnwidth(Font*, Rune*, int); | |
496 extern Point strsubfontwidth(Subfont*, char*); | |
497 extern int loadchar(Font*, Rune, Cacheinfo*, int, int, char**); | |
498 extern char* subfontname(char*, char*, int); | |
499 extern Subfont* _getsubfont(Display*, char*); | |
500 extern void lockdisplay(Display*); | |
501 extern void unlockdisplay(Display*); | |
502 extern int drawlsetrefresh(u32int, int, void*, void*); | |
503 extern void loadhidpi(Font*); | |
504 extern void swapfont(Font*, Font**, Font**); | |
505 | |
506 /* | |
507 * Predefined | |
508 */ | |
509 extern Point ZP; | |
510 extern Rectangle ZR; | |
511 | |
512 /* | |
513 * Set up by initdraw() | |
514 */ | |
515 extern Display *display; | |
516 extern Font *font; | |
517 extern Image *screen; | |
518 extern Screen *_screen; | |
519 extern int drawmousemask; /* set bits to disable receiving… | |
520 extern int _cursorfd; | |
521 extern int _drawdebug; /* set to 1 to see errors fr… | |
522 extern void _setdrawop(Display*, Drawop); | |
523 extern Display *_initdisplay(void(*)(Display*,char*), char… | |
524 | |
525 extern void needdisplay(void); /* call instead of initdraw… | |
526 | |
527 #define BGSHORT(p) (((p)[0]<<0) | ((p)[1]<<8)) | |
528 #define BGLONG(p) ((BGSHORT(p)<<0) | (BGSHORT(p+2)… | |
529 #define BPSHORT(p, v) ((p)[0]=(v), (p)[1]=((v)>>8)) | |
530 #define BPLONG(p, v) (BPSHORT(p, (v)), BPSHORT(p+2… | |
531 | |
532 /* | |
533 * Compressed image file parameters and helper routines | |
534 */ | |
535 #define NMATCH 3 /* shortest match possible… | |
536 #define NRUN (NMATCH+31) /* longest match possible … | |
537 #define NMEM 1024 /* window size */ | |
538 #define NDUMP 128 /* maximum length of dump… | |
539 #define NCBLOCK 6000 /* size of compressed … | |
540 extern void _twiddlecompressed(uchar*, int); | |
541 extern int _compblocksize(Rectangle, int); | |
542 | |
543 /* XXX backwards helps; should go */ | |
544 extern u32int drawld2chan[]; | |
545 extern void drawsetdebug(int); | |
546 | |
547 /* | |
548 * Snarf buffer | |
549 */ | |
550 enum | |
551 { | |
552 SnarfSize = 64*1024 | |
553 }; | |
554 char *getsnarf(void); | |
555 void putsnarf(char*); | |
556 | |
557 void drawtopwindow(void); | |
558 void drawresizewindow(Rectangle); | |
559 extern char *winsize; | |
560 | |
561 int mousescrollsize(int); | |
562 | |
563 /* | |
564 * RPC interface to draw server. | |
565 */ | |
566 struct Mouse; | |
567 struct Cursor; | |
568 struct Cursor2; | |
569 int _displaybouncemouse(Display *d, struct Mouse *m); | |
570 int _displayconnect(Display *d); | |
571 int _displaycursor(Display *d, struct Cursor *c, struct C… | |
572 int _displayinit(Display *d, char *label, char *winsize); | |
573 int _displaylabel(Display *d, char *label); | |
574 int _displaymoveto(Display *d, Point p); | |
575 int _displaymux(Display *d); | |
576 int _displayrddraw(Display *d, void *v, int n); | |
577 int _displayrdkbd(Display *d, Rune *r); | |
578 int _displayrdmouse(Display *d, struct Mouse *m, int *res… | |
579 char* _displayrdsnarf(Display *d); | |
580 int _displaywrdraw(Display *d, void *v, int n); | |
581 int _displaywrsnarf(Display *d, char *snarf); | |
582 int _displaytop(Display *d); | |
583 int _displayresize(Display *d, Rectangle rect); | |
584 | |
585 #if defined(__cplusplus) | |
586 } | |
587 #endif | |
588 #endif |