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