Add patch that contain Mali fixes.
[deb_xorg-server.git] / mi / mi.h
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 */