Commit | Line | Data |
---|---|---|
a09e091a JB |
1 | /*********************************************************** |
2 | ||
3 | Copyright 1987, 1998 The Open Group | |
4 | ||
5 | Permission to use, copy, modify, distribute, and sell this software and its | |
6 | documentation for any purpose is hereby granted without fee, provided that | |
7 | the above copyright notice appear in all copies and that both that | |
8 | copyright notice and this permission notice appear in supporting | |
9 | documentation. | |
10 | ||
11 | The above copyright notice and this permission notice shall be included in | |
12 | all copies or substantial portions of the Software. | |
13 | ||
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
17 | OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN | |
18 | AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | |
19 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
20 | ||
21 | Except as contained in this notice, the name of The Open Group shall not be | |
22 | used in advertising or otherwise to promote the sale, use or other dealings | |
23 | in this Software without prior written authorization from The Open Group. | |
24 | ||
25 | Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. | |
26 | ||
27 | All Rights Reserved | |
28 | ||
29 | Permission to use, copy, modify, and distribute this software and its | |
30 | documentation for any purpose and without fee is hereby granted, | |
31 | provided that the above copyright notice appear in all copies and that | |
32 | both that copyright notice and this permission notice appear in | |
33 | supporting documentation, and that the name of Digital not be | |
34 | used in advertising or publicity pertaining to distribution of the | |
35 | software without specific, written prior permission. | |
36 | ||
37 | DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING | |
38 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL | |
39 | DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR | |
40 | ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | |
41 | WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, | |
42 | ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS | |
43 | SOFTWARE. | |
44 | ||
45 | ******************************************************************/ | |
46 | ||
47 | #ifndef MI_H | |
48 | #define MI_H | |
49 | #include <X11/X.h> | |
50 | #include "region.h" | |
51 | #include "validate.h" | |
52 | #include "window.h" | |
53 | #include "gc.h" | |
54 | #include <X11/fonts/font.h> | |
55 | #include "input.h" | |
56 | #include "cursor.h" | |
57 | #include "privates.h" | |
58 | #include "colormap.h" | |
59 | #include "events.h" | |
60 | ||
61 | #define MiBits CARD32 | |
62 | ||
63 | typedef struct _miDash *miDashPtr; | |
64 | ||
65 | #define EVEN_DASH 0 | |
66 | #define ODD_DASH ~0 | |
67 | ||
68 | /* miarc.c */ | |
69 | ||
70 | extern _X_EXPORT void miPolyArc(DrawablePtr /*pDraw */ , | |
71 | GCPtr /*pGC */ , | |
72 | int /*narcs */ , | |
73 | xArc * /*parcs */ | |
74 | ); | |
75 | ||
76 | /* mibitblt.c */ | |
77 | ||
78 | extern _X_EXPORT RegionPtr miCopyArea(DrawablePtr /*pSrcDrawable */ , | |
79 | DrawablePtr /*pDstDrawable */ , | |
80 | GCPtr /*pGC */ , | |
81 | int /*xIn */ , | |
82 | int /*yIn */ , | |
83 | int /*widthSrc */ , | |
84 | int /*heightSrc */ , | |
85 | int /*xOut */ , | |
86 | int /*yOut */ | |
87 | ); | |
88 | ||
89 | extern _X_EXPORT RegionPtr miCopyPlane(DrawablePtr /*pSrcDrawable */ , | |
90 | DrawablePtr /*pDstDrawable */ , | |
91 | GCPtr /*pGC */ , | |
92 | int /*srcx */ , | |
93 | int /*srcy */ , | |
94 | int /*width */ , | |
95 | int /*height */ , | |
96 | int /*dstx */ , | |
97 | int /*dsty */ , | |
98 | unsigned long /*bitPlane */ | |
99 | ); | |
100 | ||
101 | extern _X_EXPORT void miGetImage(DrawablePtr /*pDraw */ , | |
102 | int /*sx */ , | |
103 | int /*sy */ , | |
104 | int /*w */ , | |
105 | int /*h */ , | |
106 | unsigned int /*format */ , | |
107 | unsigned long /*planeMask */ , | |
108 | char * /*pdstLine */ | |
109 | ); | |
110 | ||
111 | extern _X_EXPORT void miPutImage(DrawablePtr /*pDraw */ , | |
112 | GCPtr /*pGC */ , | |
113 | int /*depth */ , | |
114 | int /*x */ , | |
115 | int /*y */ , | |
116 | int /*w */ , | |
117 | int /*h */ , | |
118 | int /*leftPad */ , | |
119 | int /*format */ , | |
120 | char * /*pImage */ | |
121 | ); | |
122 | ||
123 | /* micopy.c */ | |
124 | ||
125 | #define miGetCompositeClip(pGC) ((pGC)->pCompositeClip) | |
126 | ||
127 | typedef void (*miCopyProc) (DrawablePtr pSrcDrawable, | |
128 | DrawablePtr pDstDrawable, | |
129 | GCPtr pGC, | |
130 | BoxPtr pDstBox, | |
131 | int nbox, | |
132 | int dx, | |
133 | int dy, | |
134 | Bool reverse, | |
135 | Bool upsidedown, Pixel bitplane, void *closure); | |
136 | ||
137 | extern _X_EXPORT void | |
138 | ||
139 | miCopyRegion(DrawablePtr pSrcDrawable, | |
140 | DrawablePtr pDstDrawable, | |
141 | GCPtr pGC, | |
142 | RegionPtr pDstRegion, | |
143 | int dx, | |
144 | int dy, miCopyProc copyProc, Pixel bitPlane, void *closure); | |
145 | ||
146 | extern _X_EXPORT RegionPtr | |
147 | ||
148 | miDoCopy(DrawablePtr pSrcDrawable, | |
149 | DrawablePtr pDstDrawable, | |
150 | GCPtr pGC, | |
151 | int xIn, | |
152 | int yIn, | |
153 | int widthSrc, | |
154 | int heightSrc, | |
155 | int xOut, | |
156 | int yOut, miCopyProc copyProc, Pixel bitplane, void *closure); | |
157 | ||
158 | /* micursor.c */ | |
159 | ||
160 | extern _X_EXPORT void miRecolorCursor(DeviceIntPtr /* pDev */ , | |
161 | ScreenPtr /*pScr */ , | |
162 | CursorPtr /*pCurs */ , | |
163 | Bool /*displayed */ | |
164 | ); | |
165 | ||
166 | /* midash.c */ | |
167 | ||
168 | extern _X_EXPORT void miStepDash(int /*dist */ , | |
169 | int * /*pDashIndex */ , | |
170 | unsigned char * /*pDash */ , | |
171 | int /*numInDashList */ , | |
172 | int * /*pDashOffset */ | |
173 | ); | |
174 | ||
175 | /* mieq.c */ | |
176 | ||
177 | #ifndef INPUT_H | |
178 | typedef struct _DeviceRec *DevicePtr; | |
179 | #endif | |
180 | ||
181 | extern _X_EXPORT Bool mieqInit(void | |
182 | ); | |
183 | ||
184 | extern _X_EXPORT void mieqFini(void); | |
185 | ||
186 | extern _X_EXPORT void mieqEnqueue(DeviceIntPtr /*pDev */ , | |
187 | InternalEvent * /*e */ | |
188 | ); | |
189 | ||
190 | extern _X_EXPORT void mieqSwitchScreen(DeviceIntPtr /* pDev */ , | |
191 | ScreenPtr /*pScreen */ , | |
192 | Bool /*set_dequeue_screen */ | |
193 | ); | |
194 | ||
195 | extern _X_EXPORT void mieqProcessDeviceEvent(DeviceIntPtr /* dev */ , | |
196 | InternalEvent * /* event */ , | |
197 | ScreenPtr /* screen */ | |
198 | ); | |
199 | ||
200 | extern _X_EXPORT void mieqProcessInputEvents(void | |
201 | ); | |
202 | ||
203 | extern DeviceIntPtr CopyGetMasterEvent(DeviceIntPtr /* sdev */ , | |
204 | InternalEvent * /* original */ , | |
205 | InternalEvent * /* copy */ | |
206 | ); | |
207 | ||
208 | /** | |
209 | * Custom input event handler. If you need to process input events in some | |
210 | * other way than the default path, register an input event handler for the | |
211 | * given internal event type. | |
212 | */ | |
213 | typedef void (*mieqHandler) (int screen, InternalEvent *event, | |
214 | DeviceIntPtr dev); | |
215 | void _X_EXPORT mieqSetHandler(int event, mieqHandler handler); | |
216 | ||
217 | /* miexpose.c */ | |
218 | ||
219 | extern _X_EXPORT RegionPtr miHandleExposures(DrawablePtr /*pSrcDrawable */ , | |
220 | DrawablePtr /*pDstDrawable */ , | |
221 | GCPtr /*pGC */ , | |
222 | int /*srcx */ , | |
223 | int /*srcy */ , | |
224 | int /*width */ , | |
225 | int /*height */ , | |
226 | int /*dstx */ , | |
227 | int /*dsty */ , | |
228 | unsigned long /*plane */ | |
229 | ); | |
230 | ||
231 | extern _X_EXPORT void miSendGraphicsExpose(ClientPtr /*client */ , | |
232 | RegionPtr /*pRgn */ , | |
233 | XID /*drawable */ , | |
234 | int /*major */ , | |
235 | int /*minor */ | |
236 | ); | |
237 | ||
238 | extern _X_EXPORT void miSendExposures(WindowPtr /*pWin */ , | |
239 | RegionPtr /*pRgn */ , | |
240 | int /*dx */ , | |
241 | int /*dy */ | |
242 | ); | |
243 | ||
244 | extern _X_EXPORT void miWindowExposures(WindowPtr /*pWin */ , | |
245 | RegionPtr /*prgn */ , | |
246 | RegionPtr /*other_exposed */ | |
247 | ); | |
248 | ||
249 | extern _X_EXPORT void miPaintWindow(WindowPtr /*pWin */ , | |
250 | RegionPtr /*prgn */ , | |
251 | int /*what */ | |
252 | ); | |
253 | ||
254 | extern _X_EXPORT void miClearDrawable(DrawablePtr /*pDraw */ , | |
255 | GCPtr /*pGC */ | |
256 | ); | |
257 | ||
258 | /* mifillrct.c */ | |
259 | ||
260 | extern _X_EXPORT void miPolyFillRect(DrawablePtr /*pDrawable */ , | |
261 | GCPtr /*pGC */ , | |
262 | int /*nrectFill */ , | |
263 | xRectangle * /*prectInit */ | |
264 | ); | |
265 | ||
266 | /* miglblt.c */ | |
267 | ||
268 | extern _X_EXPORT void miPolyGlyphBlt(DrawablePtr /*pDrawable */ , | |
269 | GCPtr /*pGC */ , | |
270 | int /*x */ , | |
271 | int /*y */ , | |
272 | unsigned int /*nglyph */ , | |
273 | CharInfoPtr * /*ppci */ , | |
274 | pointer /*pglyphBase */ | |
275 | ); | |
276 | ||
277 | extern _X_EXPORT void miImageGlyphBlt(DrawablePtr /*pDrawable */ , | |
278 | GCPtr /*pGC */ , | |
279 | int /*x */ , | |
280 | int /*y */ , | |
281 | unsigned int /*nglyph */ , | |
282 | CharInfoPtr * /*ppci */ , | |
283 | pointer /*pglyphBase */ | |
284 | ); | |
285 | ||
286 | /* mipoly.c */ | |
287 | ||
288 | extern _X_EXPORT void miFillPolygon(DrawablePtr /*dst */ , | |
289 | GCPtr /*pgc */ , | |
290 | int /*shape */ , | |
291 | int /*mode */ , | |
292 | int /*count */ , | |
293 | DDXPointPtr /*pPts */ | |
294 | ); | |
295 | ||
296 | /* mipolycon.c */ | |
297 | ||
298 | extern _X_EXPORT Bool miFillConvexPoly(DrawablePtr /*dst */ , | |
299 | GCPtr /*pgc */ , | |
300 | int /*count */ , | |
301 | DDXPointPtr /*ptsIn */ | |
302 | ); | |
303 | ||
304 | /* mipolygen.c */ | |
305 | ||
306 | extern _X_EXPORT Bool miFillGeneralPoly(DrawablePtr /*dst */ , | |
307 | GCPtr /*pgc */ , | |
308 | int /*count */ , | |
309 | DDXPointPtr /*ptsIn */ | |
310 | ); | |
311 | ||
312 | /* mipolypnt.c */ | |
313 | ||
314 | extern _X_EXPORT void miPolyPoint(DrawablePtr /*pDrawable */ , | |
315 | GCPtr /*pGC */ , | |
316 | int /*mode */ , | |
317 | int /*npt */ , | |
318 | xPoint * /*pptInit */ | |
319 | ); | |
320 | ||
321 | /* mipolyrect.c */ | |
322 | ||
323 | extern _X_EXPORT void miPolyRectangle(DrawablePtr /*pDraw */ , | |
324 | GCPtr /*pGC */ , | |
325 | int /*nrects */ , | |
326 | xRectangle * /*pRects */ | |
327 | ); | |
328 | ||
329 | /* mipolyseg.c */ | |
330 | ||
331 | extern _X_EXPORT void miPolySegment(DrawablePtr /*pDraw */ , | |
332 | GCPtr /*pGC */ , | |
333 | int /*nseg */ , | |
334 | xSegment * /*pSegs */ | |
335 | ); | |
336 | ||
337 | /* mipolytext.c */ | |
338 | ||
339 | extern _X_EXPORT int miPolyText8(DrawablePtr /*pDraw */ , | |
340 | GCPtr /*pGC */ , | |
341 | int /*x */ , | |
342 | int /*y */ , | |
343 | int /*count */ , | |
344 | char * /*chars */ | |
345 | ); | |
346 | ||
347 | extern _X_EXPORT int miPolyText16(DrawablePtr /*pDraw */ , | |
348 | GCPtr /*pGC */ , | |
349 | int /*x */ , | |
350 | int /*y */ , | |
351 | int /*count */ , | |
352 | unsigned short * /*chars */ | |
353 | ); | |
354 | ||
355 | extern _X_EXPORT void miImageText8(DrawablePtr /*pDraw */ , | |
356 | GCPtr /*pGC */ , | |
357 | int /*x */ , | |
358 | int /*y */ , | |
359 | int /*count */ , | |
360 | char * /*chars */ | |
361 | ); | |
362 | ||
363 | extern _X_EXPORT void miImageText16(DrawablePtr /*pDraw */ , | |
364 | GCPtr /*pGC */ , | |
365 | int /*x */ , | |
366 | int /*y */ , | |
367 | int /*count */ , | |
368 | unsigned short * /*chars */ | |
369 | ); | |
370 | ||
371 | /* mipushpxl.c */ | |
372 | ||
373 | extern _X_EXPORT void miPushPixels(GCPtr /*pGC */ , | |
374 | PixmapPtr /*pBitMap */ , | |
375 | DrawablePtr /*pDrawable */ , | |
376 | int /*dx */ , | |
377 | int /*dy */ , | |
378 | int /*xOrg */ , | |
379 | int /*yOrg */ | |
380 | ); | |
381 | ||
382 | /* miscrinit.c */ | |
383 | ||
384 | extern _X_EXPORT Bool miModifyPixmapHeader(PixmapPtr /*pPixmap */ , | |
385 | int /*width */ , | |
386 | int /*height */ , | |
387 | int /*depth */ , | |
388 | int /*bitsPerPixel */ , | |
389 | int /*devKind */ , | |
390 | pointer /*pPixData */ | |
391 | ); | |
392 | ||
393 | extern _X_EXPORT Bool miCreateScreenResources(ScreenPtr /*pScreen */ | |
394 | ); | |
395 | ||
396 | extern _X_EXPORT Bool miScreenDevPrivateInit(ScreenPtr /*pScreen */ , | |
397 | int /*width */ , | |
398 | pointer /*pbits */ | |
399 | ); | |
400 | ||
401 | extern _X_EXPORT Bool miScreenInit(ScreenPtr /*pScreen */ , | |
402 | pointer /*pbits */ , | |
403 | int /*xsize */ , | |
404 | int /*ysize */ , | |
405 | int /*dpix */ , | |
406 | int /*dpiy */ , | |
407 | int /*width */ , | |
408 | int /*rootDepth */ , | |
409 | int /*numDepths */ , | |
410 | DepthPtr /*depths */ , | |
411 | VisualID /*rootVisual */ , | |
412 | int /*numVisuals */ , | |
413 | VisualPtr /*visuals */ | |
414 | ); | |
415 | ||
416 | /* mivaltree.c */ | |
417 | ||
418 | extern _X_EXPORT int miShapedWindowIn(RegionPtr /*universe */ , | |
419 | RegionPtr /*bounding */ , | |
420 | BoxPtr /*rect */ , | |
421 | int /*x */ , | |
422 | int /*y */ | |
423 | ); | |
424 | ||
425 | typedef void | |
426 | (*SetRedirectBorderClipProcPtr) (WindowPtr pWindow, RegionPtr pRegion); | |
427 | ||
428 | typedef RegionPtr | |
429 | (*GetRedirectBorderClipProcPtr) (WindowPtr pWindow); | |
430 | ||
431 | extern _X_EXPORT void | |
432 | ||
433 | miRegisterRedirectBorderClipProc(SetRedirectBorderClipProcPtr setBorderClip, | |
434 | GetRedirectBorderClipProcPtr getBorderClip); | |
435 | ||
436 | extern _X_EXPORT int miValidateTree(WindowPtr /*pParent */ , | |
437 | WindowPtr /*pChild */ , | |
438 | VTKind /*kind */ | |
439 | ); | |
440 | ||
441 | extern _X_EXPORT void miWideLine(DrawablePtr /*pDrawable */ , | |
442 | GCPtr /*pGC */ , | |
443 | int /*mode */ , | |
444 | int /*npt */ , | |
445 | DDXPointPtr /*pPts */ | |
446 | ); | |
447 | ||
448 | extern _X_EXPORT void miWideDash(DrawablePtr /*pDrawable */ , | |
449 | GCPtr /*pGC */ , | |
450 | int /*mode */ , | |
451 | int /*npt */ , | |
452 | DDXPointPtr /*pPts */ | |
453 | ); | |
454 | ||
455 | /* miwindow.c */ | |
456 | ||
457 | extern _X_EXPORT void miClearToBackground(WindowPtr /*pWin */ , | |
458 | int /*x */ , | |
459 | int /*y */ , | |
460 | int /*w */ , | |
461 | int /*h */ , | |
462 | Bool /*generateExposures */ | |
463 | ); | |
464 | ||
465 | extern _X_EXPORT void miMarkWindow(WindowPtr /*pWin */ | |
466 | ); | |
467 | ||
468 | extern _X_EXPORT Bool miMarkOverlappedWindows(WindowPtr /*pWin */ , | |
469 | WindowPtr /*pFirst */ , | |
470 | WindowPtr * /*ppLayerWin */ | |
471 | ); | |
472 | ||
473 | extern _X_EXPORT void miHandleValidateExposures(WindowPtr /*pWin */ | |
474 | ); | |
475 | ||
476 | extern _X_EXPORT void miMoveWindow(WindowPtr /*pWin */ , | |
477 | int /*x */ , | |
478 | int /*y */ , | |
479 | WindowPtr /*pNextSib */ , | |
480 | VTKind /*kind */ | |
481 | ); | |
482 | ||
483 | extern _X_EXPORT void miSlideAndSizeWindow(WindowPtr /*pWin */ , | |
484 | int /*x */ , | |
485 | int /*y */ , | |
486 | unsigned int /*w */ , | |
487 | unsigned int /*h */ , | |
488 | WindowPtr /*pSib */ | |
489 | ); | |
490 | ||
491 | extern _X_EXPORT WindowPtr miGetLayerWindow(WindowPtr /*pWin */ | |
492 | ); | |
493 | ||
494 | extern _X_EXPORT void miSetShape(WindowPtr /*pWin */ , | |
495 | int /*kind */ | |
496 | ); | |
497 | ||
498 | extern _X_EXPORT void miChangeBorderWidth(WindowPtr /*pWin */ , | |
499 | unsigned int /*width */ | |
500 | ); | |
501 | ||
502 | extern _X_EXPORT void miMarkUnrealizedWindow(WindowPtr /*pChild */ , | |
503 | WindowPtr /*pWin */ , | |
504 | Bool /*fromConfigure */ | |
505 | ); | |
506 | ||
507 | extern _X_EXPORT void miSegregateChildren(WindowPtr pWin, RegionPtr pReg, | |
508 | int depth); | |
509 | ||
510 | /* mizerarc.c */ | |
511 | ||
512 | extern _X_EXPORT void miZeroPolyArc(DrawablePtr /*pDraw */ , | |
513 | GCPtr /*pGC */ , | |
514 | int /*narcs */ , | |
515 | xArc * /*parcs */ | |
516 | ); | |
517 | ||
518 | /* mizerline.c */ | |
519 | ||
520 | extern _X_EXPORT void miZeroLine(DrawablePtr /*dst */ , | |
521 | GCPtr /*pgc */ , | |
522 | int /*mode */ , | |
523 | int /*nptInit */ , | |
524 | DDXPointRec * /*pptInit */ | |
525 | ); | |
526 | ||
527 | extern _X_EXPORT void miZeroDashLine(DrawablePtr /*dst */ , | |
528 | GCPtr /*pgc */ , | |
529 | int /*mode */ , | |
530 | int /*nptInit */ , | |
531 | DDXPointRec * /*pptInit */ | |
532 | ); | |
533 | ||
534 | extern _X_EXPORT void miPolyFillArc(DrawablePtr /*pDraw */ , | |
535 | GCPtr /*pGC */ , | |
536 | int /*narcs */ , | |
537 | xArc * /*parcs */ | |
538 | ); | |
539 | ||
540 | #endif /* MI_H */ |