Imported Upstream version 1.15.1
[deb_xorg-server.git] / mi / mi.h
CommitLineData
a09e091a
JB
1/***********************************************************
2
3Copyright 1987, 1998 The Open Group
4
5Permission to use, copy, modify, distribute, and sell this software and its
6documentation for any purpose is hereby granted without fee, provided that
7the above copyright notice appear in all copies and that both that
8copyright notice and this permission notice appear in supporting
9documentation.
10
11The above copyright notice and this permission notice shall be included in
12all copies or substantial portions of the Software.
13
14THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
21Except as contained in this notice, the name of The Open Group shall not be
22used in advertising or otherwise to promote the sale, use or other dealings
23in this Software without prior written authorization from The Open Group.
24
25Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
26
27 All Rights Reserved
28
29Permission to use, copy, modify, and distribute this software and its
30documentation for any purpose and without fee is hereby granted,
31provided that the above copyright notice appear in all copies and that
32both that copyright notice and this permission notice appear in
33supporting documentation, and that the name of Digital not be
34used in advertising or publicity pertaining to distribution of the
35software without specific, written prior permission.
36
37DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
38ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
39DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
40ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
41WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
42ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
43SOFTWARE.
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
63typedef struct _miDash *miDashPtr;
64
65#define EVEN_DASH 0
66#define ODD_DASH ~0
67
68/* miarc.c */
69
70extern _X_EXPORT void miPolyArc(DrawablePtr /*pDraw */ ,
71 GCPtr /*pGC */ ,
72 int /*narcs */ ,
73 xArc * /*parcs */
74 );
75
76/* mibitblt.c */
77
78extern _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
89extern _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
101extern _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
111extern _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
127typedef 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
137extern _X_EXPORT void
138
139miCopyRegion(DrawablePtr pSrcDrawable,
140 DrawablePtr pDstDrawable,
141 GCPtr pGC,
142 RegionPtr pDstRegion,
143 int dx,
144 int dy, miCopyProc copyProc, Pixel bitPlane, void *closure);
145
146extern _X_EXPORT RegionPtr
147
148miDoCopy(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
160extern _X_EXPORT void miRecolorCursor(DeviceIntPtr /* pDev */ ,
161 ScreenPtr /*pScr */ ,
162 CursorPtr /*pCurs */ ,
163 Bool /*displayed */
164 );
165
166/* midash.c */
167
168extern _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
178typedef struct _DeviceRec *DevicePtr;
179#endif
180
181extern _X_EXPORT Bool mieqInit(void
182 );
183
184extern _X_EXPORT void mieqFini(void);
185
186extern _X_EXPORT void mieqEnqueue(DeviceIntPtr /*pDev */ ,
187 InternalEvent * /*e */
188 );
189
190extern _X_EXPORT void mieqSwitchScreen(DeviceIntPtr /* pDev */ ,
191 ScreenPtr /*pScreen */ ,
192 Bool /*set_dequeue_screen */
193 );
194
195extern _X_EXPORT void mieqProcessDeviceEvent(DeviceIntPtr /* dev */ ,
196 InternalEvent * /* event */ ,
197 ScreenPtr /* screen */
198 );
199
200extern _X_EXPORT void mieqProcessInputEvents(void
201 );
202
203extern 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 */
213typedef void (*mieqHandler) (int screen, InternalEvent *event,
214 DeviceIntPtr dev);
215void _X_EXPORT mieqSetHandler(int event, mieqHandler handler);
216
217/* miexpose.c */
218
219extern _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
231extern _X_EXPORT void miSendGraphicsExpose(ClientPtr /*client */ ,
232 RegionPtr /*pRgn */ ,
233 XID /*drawable */ ,
234 int /*major */ ,
235 int /*minor */
236 );
237
238extern _X_EXPORT void miSendExposures(WindowPtr /*pWin */ ,
239 RegionPtr /*pRgn */ ,
240 int /*dx */ ,
241 int /*dy */
242 );
243
244extern _X_EXPORT void miWindowExposures(WindowPtr /*pWin */ ,
245 RegionPtr /*prgn */ ,
246 RegionPtr /*other_exposed */
247 );
248
249extern _X_EXPORT void miPaintWindow(WindowPtr /*pWin */ ,
250 RegionPtr /*prgn */ ,
251 int /*what */
252 );
253
254extern _X_EXPORT void miClearDrawable(DrawablePtr /*pDraw */ ,
255 GCPtr /*pGC */
256 );
257
258/* mifillrct.c */
259
260extern _X_EXPORT void miPolyFillRect(DrawablePtr /*pDrawable */ ,
261 GCPtr /*pGC */ ,
262 int /*nrectFill */ ,
263 xRectangle * /*prectInit */
264 );
265
266/* miglblt.c */
267
268extern _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
277extern _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
288extern _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
298extern _X_EXPORT Bool miFillConvexPoly(DrawablePtr /*dst */ ,
299 GCPtr /*pgc */ ,
300 int /*count */ ,
301 DDXPointPtr /*ptsIn */
302 );
303
304/* mipolygen.c */
305
306extern _X_EXPORT Bool miFillGeneralPoly(DrawablePtr /*dst */ ,
307 GCPtr /*pgc */ ,
308 int /*count */ ,
309 DDXPointPtr /*ptsIn */
310 );
311
312/* mipolypnt.c */
313
314extern _X_EXPORT void miPolyPoint(DrawablePtr /*pDrawable */ ,
315 GCPtr /*pGC */ ,
316 int /*mode */ ,
317 int /*npt */ ,
318 xPoint * /*pptInit */
319 );
320
321/* mipolyrect.c */
322
323extern _X_EXPORT void miPolyRectangle(DrawablePtr /*pDraw */ ,
324 GCPtr /*pGC */ ,
325 int /*nrects */ ,
326 xRectangle * /*pRects */
327 );
328
329/* mipolyseg.c */
330
331extern _X_EXPORT void miPolySegment(DrawablePtr /*pDraw */ ,
332 GCPtr /*pGC */ ,
333 int /*nseg */ ,
334 xSegment * /*pSegs */
335 );
336
337/* mipolytext.c */
338
339extern _X_EXPORT int miPolyText8(DrawablePtr /*pDraw */ ,
340 GCPtr /*pGC */ ,
341 int /*x */ ,
342 int /*y */ ,
343 int /*count */ ,
344 char * /*chars */
345 );
346
347extern _X_EXPORT int miPolyText16(DrawablePtr /*pDraw */ ,
348 GCPtr /*pGC */ ,
349 int /*x */ ,
350 int /*y */ ,
351 int /*count */ ,
352 unsigned short * /*chars */
353 );
354
355extern _X_EXPORT void miImageText8(DrawablePtr /*pDraw */ ,
356 GCPtr /*pGC */ ,
357 int /*x */ ,
358 int /*y */ ,
359 int /*count */ ,
360 char * /*chars */
361 );
362
363extern _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
373extern _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
384extern _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
393extern _X_EXPORT Bool miCreateScreenResources(ScreenPtr /*pScreen */
394 );
395
396extern _X_EXPORT Bool miScreenDevPrivateInit(ScreenPtr /*pScreen */ ,
397 int /*width */ ,
398 pointer /*pbits */
399 );
400
401extern _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
418extern _X_EXPORT int miShapedWindowIn(RegionPtr /*universe */ ,
419 RegionPtr /*bounding */ ,
420 BoxPtr /*rect */ ,
421 int /*x */ ,
422 int /*y */
423 );
424
425typedef void
426 (*SetRedirectBorderClipProcPtr) (WindowPtr pWindow, RegionPtr pRegion);
427
428typedef RegionPtr
429 (*GetRedirectBorderClipProcPtr) (WindowPtr pWindow);
430
431extern _X_EXPORT void
432
433miRegisterRedirectBorderClipProc(SetRedirectBorderClipProcPtr setBorderClip,
434 GetRedirectBorderClipProcPtr getBorderClip);
435
436extern _X_EXPORT int miValidateTree(WindowPtr /*pParent */ ,
437 WindowPtr /*pChild */ ,
438 VTKind /*kind */
439 );
440
441extern _X_EXPORT void miWideLine(DrawablePtr /*pDrawable */ ,
442 GCPtr /*pGC */ ,
443 int /*mode */ ,
444 int /*npt */ ,
445 DDXPointPtr /*pPts */
446 );
447
448extern _X_EXPORT void miWideDash(DrawablePtr /*pDrawable */ ,
449 GCPtr /*pGC */ ,
450 int /*mode */ ,
451 int /*npt */ ,
452 DDXPointPtr /*pPts */
453 );
454
455/* miwindow.c */
456
457extern _X_EXPORT void miClearToBackground(WindowPtr /*pWin */ ,
458 int /*x */ ,
459 int /*y */ ,
460 int /*w */ ,
461 int /*h */ ,
462 Bool /*generateExposures */
463 );
464
465extern _X_EXPORT void miMarkWindow(WindowPtr /*pWin */
466 );
467
468extern _X_EXPORT Bool miMarkOverlappedWindows(WindowPtr /*pWin */ ,
469 WindowPtr /*pFirst */ ,
470 WindowPtr * /*ppLayerWin */
471 );
472
473extern _X_EXPORT void miHandleValidateExposures(WindowPtr /*pWin */
474 );
475
476extern _X_EXPORT void miMoveWindow(WindowPtr /*pWin */ ,
477 int /*x */ ,
478 int /*y */ ,
479 WindowPtr /*pNextSib */ ,
480 VTKind /*kind */
481 );
482
483extern _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
491extern _X_EXPORT WindowPtr miGetLayerWindow(WindowPtr /*pWin */
492 );
493
494extern _X_EXPORT void miSetShape(WindowPtr /*pWin */ ,
495 int /*kind */
496 );
497
498extern _X_EXPORT void miChangeBorderWidth(WindowPtr /*pWin */ ,
499 unsigned int /*width */
500 );
501
502extern _X_EXPORT void miMarkUnrealizedWindow(WindowPtr /*pChild */ ,
503 WindowPtr /*pWin */ ,
504 Bool /*fromConfigure */
505 );
506
507extern _X_EXPORT void miSegregateChildren(WindowPtr pWin, RegionPtr pReg,
508 int depth);
509
510/* mizerarc.c */
511
512extern _X_EXPORT void miZeroPolyArc(DrawablePtr /*pDraw */ ,
513 GCPtr /*pGC */ ,
514 int /*narcs */ ,
515 xArc * /*parcs */
516 );
517
518/* mizerline.c */
519
520extern _X_EXPORT void miZeroLine(DrawablePtr /*dst */ ,
521 GCPtr /*pgc */ ,
522 int /*mode */ ,
523 int /*nptInit */ ,
524 DDXPointRec * /*pptInit */
525 );
526
527extern _X_EXPORT void miZeroDashLine(DrawablePtr /*dst */ ,
528 GCPtr /*pgc */ ,
529 int /*mode */ ,
530 int /*nptInit */ ,
531 DDXPointRec * /*pptInit */
532 );
533
534extern _X_EXPORT void miPolyFillArc(DrawablePtr /*pDraw */ ,
535 GCPtr /*pGC */ ,
536 int /*narcs */ ,
537 xArc * /*parcs */
538 );
539
540#endif /* MI_H */