mi.h revision 6747b715
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#include "privates.h"
59#include "colormap.h"
60#include "events.h"
61
62#define MiBits	CARD32
63
64typedef struct _miDash *miDashPtr;
65#define EVEN_DASH	0
66#define ODD_DASH	~0
67
68/* miarc.c */
69
70extern _X_EXPORT void miPolyArc(
71    DrawablePtr /*pDraw*/,
72    GCPtr /*pGC*/,
73    int /*narcs*/,
74    xArc * /*parcs*/
75);
76
77/* mibitblt.c */
78
79extern _X_EXPORT RegionPtr miCopyArea(
80    DrawablePtr /*pSrcDrawable*/,
81    DrawablePtr /*pDstDrawable*/,
82    GCPtr /*pGC*/,
83    int /*xIn*/,
84    int /*yIn*/,
85    int /*widthSrc*/,
86    int /*heightSrc*/,
87    int /*xOut*/,
88    int /*yOut*/
89);
90
91extern _X_EXPORT RegionPtr miCopyPlane(
92    DrawablePtr /*pSrcDrawable*/,
93    DrawablePtr /*pDstDrawable*/,
94    GCPtr /*pGC*/,
95    int /*srcx*/,
96    int /*srcy*/,
97    int /*width*/,
98    int /*height*/,
99    int /*dstx*/,
100    int /*dsty*/,
101    unsigned long /*bitPlane*/
102);
103
104extern _X_EXPORT void miGetImage(
105    DrawablePtr /*pDraw*/,
106    int /*sx*/,
107    int /*sy*/,
108    int /*w*/,
109    int /*h*/,
110    unsigned int /*format*/,
111    unsigned long /*planeMask*/,
112    char * /*pdstLine*/
113);
114
115extern _X_EXPORT void miPutImage(
116    DrawablePtr /*pDraw*/,
117    GCPtr /*pGC*/,
118    int /*depth*/,
119    int /*x*/,
120    int /*y*/,
121    int /*w*/,
122    int /*h*/,
123    int /*leftPad*/,
124    int /*format*/,
125    char * /*pImage*/
126);
127
128/* micopy.c  */
129
130#define miGetCompositeClip(pGC) ((pGC)->pCompositeClip)
131
132typedef void	(*miCopyProc) (DrawablePtr  pSrcDrawable,
133			       DrawablePtr  pDstDrawable,
134			       GCPtr	    pGC,
135			       BoxPtr	    pDstBox,
136			       int	    nbox,
137			       int	    dx,
138			       int	    dy,
139			       Bool	    reverse,
140			       Bool	    upsidedown,
141			       Pixel	    bitplane,
142			       void	    *closure);
143
144extern _X_EXPORT void
145miCopyRegion (DrawablePtr   pSrcDrawable,
146	      DrawablePtr   pDstDrawable,
147	      GCPtr	    pGC,
148	      RegionPtr	    pDstRegion,
149	      int	    dx,
150	      int	    dy,
151	      miCopyProc    copyProc,
152	      Pixel	    bitPlane,
153	      void	    *closure);
154
155extern _X_EXPORT RegionPtr
156miDoCopy (DrawablePtr	pSrcDrawable,
157	  DrawablePtr	pDstDrawable,
158	  GCPtr		pGC,
159	  int		xIn,
160	  int		yIn,
161	  int		widthSrc,
162	  int		heightSrc,
163	  int		xOut,
164	  int		yOut,
165	  miCopyProc	copyProc,
166	  Pixel		bitplane,
167	  void		*closure);
168
169/* micursor.c */
170
171extern _X_EXPORT void miRecolorCursor(
172    DeviceIntPtr /* pDev */,
173    ScreenPtr /*pScr*/,
174    CursorPtr /*pCurs*/,
175    Bool /*displayed*/
176);
177
178/* midash.c */
179
180extern _X_EXPORT void miStepDash(
181    int /*dist*/,
182    int * /*pDashIndex*/,
183    unsigned char * /*pDash*/,
184    int /*numInDashList*/,
185    int * /*pDashOffset*/
186);
187
188/* mieq.c */
189
190
191#ifndef INPUT_H
192typedef struct _DeviceRec *DevicePtr;
193#endif
194
195extern _X_EXPORT Bool mieqInit(
196    void
197);
198
199extern _X_EXPORT void mieqFini(void);
200
201extern _X_EXPORT void mieqEnqueue(
202    DeviceIntPtr /*pDev*/,
203    InternalEvent* /*e*/
204);
205
206extern _X_EXPORT void mieqSwitchScreen(
207    DeviceIntPtr /* pDev */,
208    ScreenPtr /*pScreen*/,
209    Bool /*fromDIX*/
210);
211
212extern _X_EXPORT void mieqProcessDeviceEvent(
213    DeviceIntPtr /* dev*/,
214    InternalEvent* /* event */,
215    ScreenPtr /* screen*/
216);
217
218extern _X_EXPORT void mieqProcessInputEvents(
219    void
220);
221
222extern DeviceIntPtr CopyGetMasterEvent(
223    DeviceIntPtr /* sdev */,
224    InternalEvent* /* original */,
225    InternalEvent* /* copy */
226);
227
228/**
229 * Custom input event handler. If you need to process input events in some
230 * other way than the default path, register an input event handler for the
231 * given internal event type.
232 */
233typedef void (*mieqHandler)(int screen, InternalEvent* event, DeviceIntPtr dev);
234void _X_EXPORT mieqSetHandler(int event, mieqHandler handler);
235
236/* miexpose.c */
237
238extern _X_EXPORT RegionPtr miHandleExposures(
239    DrawablePtr /*pSrcDrawable*/,
240    DrawablePtr /*pDstDrawable*/,
241    GCPtr /*pGC*/,
242    int /*srcx*/,
243    int /*srcy*/,
244    int /*width*/,
245    int /*height*/,
246    int /*dstx*/,
247    int /*dsty*/,
248    unsigned long /*plane*/
249);
250
251extern _X_EXPORT void miSendGraphicsExpose(
252    ClientPtr /*client*/,
253    RegionPtr /*pRgn*/,
254    XID /*drawable*/,
255    int /*major*/,
256    int /*minor*/
257);
258
259extern _X_EXPORT void miSendExposures(
260    WindowPtr /*pWin*/,
261    RegionPtr /*pRgn*/,
262    int /*dx*/,
263    int /*dy*/
264);
265
266extern _X_EXPORT void miWindowExposures(
267    WindowPtr /*pWin*/,
268    RegionPtr /*prgn*/,
269    RegionPtr /*other_exposed*/
270);
271
272extern _X_EXPORT void miPaintWindow(
273    WindowPtr /*pWin*/,
274    RegionPtr /*prgn*/,
275    int /*what*/
276);
277
278extern _X_EXPORT void miClearDrawable(
279    DrawablePtr /*pDraw*/,
280    GCPtr /*pGC*/
281);
282
283/* mifillrct.c */
284
285extern _X_EXPORT void miPolyFillRect(
286    DrawablePtr /*pDrawable*/,
287    GCPtr /*pGC*/,
288    int /*nrectFill*/,
289    xRectangle * /*prectInit*/
290);
291
292/* miglblt.c */
293
294extern _X_EXPORT void miPolyGlyphBlt(
295    DrawablePtr /*pDrawable*/,
296    GCPtr /*pGC*/,
297    int /*x*/,
298    int /*y*/,
299    unsigned int /*nglyph*/,
300    CharInfoPtr * /*ppci*/,
301    pointer /*pglyphBase*/
302);
303
304extern _X_EXPORT void miImageGlyphBlt(
305    DrawablePtr /*pDrawable*/,
306    GCPtr /*pGC*/,
307    int /*x*/,
308    int /*y*/,
309    unsigned int /*nglyph*/,
310    CharInfoPtr * /*ppci*/,
311    pointer /*pglyphBase*/
312);
313
314/* mipoly.c */
315
316extern _X_EXPORT void miFillPolygon(
317    DrawablePtr /*dst*/,
318    GCPtr /*pgc*/,
319    int /*shape*/,
320    int /*mode*/,
321    int /*count*/,
322    DDXPointPtr /*pPts*/
323);
324
325/* mipolycon.c */
326
327extern _X_EXPORT Bool miFillConvexPoly(
328    DrawablePtr /*dst*/,
329    GCPtr /*pgc*/,
330    int /*count*/,
331    DDXPointPtr /*ptsIn*/
332);
333
334/* mipolygen.c */
335
336extern _X_EXPORT Bool miFillGeneralPoly(
337    DrawablePtr /*dst*/,
338    GCPtr /*pgc*/,
339    int /*count*/,
340    DDXPointPtr /*ptsIn*/
341);
342
343/* mipolypnt.c */
344
345extern _X_EXPORT void miPolyPoint(
346    DrawablePtr /*pDrawable*/,
347    GCPtr /*pGC*/,
348    int /*mode*/,
349    int /*npt*/,
350    xPoint * /*pptInit*/
351);
352
353/* mipolyrect.c */
354
355extern _X_EXPORT void miPolyRectangle(
356    DrawablePtr /*pDraw*/,
357    GCPtr /*pGC*/,
358    int /*nrects*/,
359    xRectangle * /*pRects*/
360);
361
362/* mipolyseg.c */
363
364extern _X_EXPORT void miPolySegment(
365    DrawablePtr /*pDraw*/,
366    GCPtr /*pGC*/,
367    int /*nseg*/,
368    xSegment * /*pSegs*/
369);
370
371/* mipolytext.c */
372
373extern _X_EXPORT int miPolyText8(
374    DrawablePtr /*pDraw*/,
375    GCPtr /*pGC*/,
376    int /*x*/,
377    int /*y*/,
378    int /*count*/,
379    char * /*chars*/
380);
381
382extern _X_EXPORT int miPolyText16(
383    DrawablePtr /*pDraw*/,
384    GCPtr /*pGC*/,
385    int /*x*/,
386    int /*y*/,
387    int /*count*/,
388    unsigned short * /*chars*/
389);
390
391extern _X_EXPORT void miImageText8(
392    DrawablePtr /*pDraw*/,
393    GCPtr /*pGC*/,
394    int /*x*/,
395    int /*y*/,
396    int /*count*/,
397    char * /*chars*/
398);
399
400extern _X_EXPORT void miImageText16(
401    DrawablePtr /*pDraw*/,
402    GCPtr /*pGC*/,
403    int /*x*/,
404    int /*y*/,
405    int /*count*/,
406    unsigned short * /*chars*/
407);
408
409/* mipushpxl.c */
410
411extern _X_EXPORT void miPushPixels(
412    GCPtr /*pGC*/,
413    PixmapPtr /*pBitMap*/,
414    DrawablePtr /*pDrawable*/,
415    int /*dx*/,
416    int /*dy*/,
417    int /*xOrg*/,
418    int /*yOrg*/
419);
420
421/* miscrinit.c */
422
423extern _X_EXPORT Bool miModifyPixmapHeader(
424    PixmapPtr /*pPixmap*/,
425    int /*width*/,
426    int /*height*/,
427    int /*depth*/,
428    int /*bitsPerPixel*/,
429    int /*devKind*/,
430    pointer /*pPixData*/
431);
432
433extern _X_EXPORT Bool miCreateScreenResources(
434    ScreenPtr /*pScreen*/
435);
436
437extern _X_EXPORT Bool miScreenDevPrivateInit(
438    ScreenPtr /*pScreen*/,
439    int /*width*/,
440    pointer /*pbits*/
441);
442
443extern _X_EXPORT Bool miScreenInit(
444    ScreenPtr /*pScreen*/,
445    pointer /*pbits*/,
446    int /*xsize*/,
447    int /*ysize*/,
448    int /*dpix*/,
449    int /*dpiy*/,
450    int /*width*/,
451    int /*rootDepth*/,
452    int /*numDepths*/,
453    DepthPtr /*depths*/,
454    VisualID /*rootVisual*/,
455    int /*numVisuals*/,
456    VisualPtr /*visuals*/
457);
458
459extern _X_EXPORT DevPrivateKey miAllocateGCPrivateIndex(
460    void
461);
462
463/* mivaltree.c */
464
465extern _X_EXPORT int miShapedWindowIn(
466    RegionPtr /*universe*/,
467    RegionPtr /*bounding*/,
468    BoxPtr /*rect*/,
469    int /*x*/,
470    int /*y*/
471);
472
473typedef void
474(*SetRedirectBorderClipProcPtr) (WindowPtr pWindow, RegionPtr pRegion);
475
476typedef RegionPtr
477(*GetRedirectBorderClipProcPtr) (WindowPtr pWindow);
478
479extern _X_EXPORT void
480miRegisterRedirectBorderClipProc (SetRedirectBorderClipProcPtr setBorderClip,
481				  GetRedirectBorderClipProcPtr getBorderClip);
482
483extern _X_EXPORT int miValidateTree(
484    WindowPtr /*pParent*/,
485    WindowPtr /*pChild*/,
486    VTKind /*kind*/
487);
488
489extern _X_EXPORT void miWideLine(
490    DrawablePtr /*pDrawable*/,
491    GCPtr /*pGC*/,
492    int /*mode*/,
493    int /*npt*/,
494    DDXPointPtr /*pPts*/
495);
496
497extern _X_EXPORT void miWideDash(
498    DrawablePtr /*pDrawable*/,
499    GCPtr /*pGC*/,
500    int /*mode*/,
501    int /*npt*/,
502    DDXPointPtr /*pPts*/
503);
504
505/* miwindow.c */
506
507extern _X_EXPORT void miClearToBackground(
508    WindowPtr /*pWin*/,
509    int /*x*/,
510    int /*y*/,
511    int /*w*/,
512    int /*h*/,
513    Bool /*generateExposures*/
514);
515
516extern _X_EXPORT void miMarkWindow(
517    WindowPtr /*pWin*/
518);
519
520extern _X_EXPORT Bool miMarkOverlappedWindows(
521    WindowPtr /*pWin*/,
522    WindowPtr /*pFirst*/,
523    WindowPtr * /*ppLayerWin*/
524);
525
526extern _X_EXPORT void miHandleValidateExposures(
527    WindowPtr /*pWin*/
528);
529
530extern _X_EXPORT void miMoveWindow(
531    WindowPtr /*pWin*/,
532    int /*x*/,
533    int /*y*/,
534    WindowPtr /*pNextSib*/,
535    VTKind /*kind*/
536);
537
538extern _X_EXPORT void miSlideAndSizeWindow(
539    WindowPtr /*pWin*/,
540    int /*x*/,
541    int /*y*/,
542    unsigned int /*w*/,
543    unsigned int /*h*/,
544    WindowPtr /*pSib*/
545);
546
547extern _X_EXPORT WindowPtr miGetLayerWindow(
548    WindowPtr /*pWin*/
549);
550
551extern _X_EXPORT void miSetShape(
552    WindowPtr /*pWin*/,
553    int /*kind*/
554);
555
556extern _X_EXPORT void miChangeBorderWidth(
557    WindowPtr /*pWin*/,
558    unsigned int /*width*/
559);
560
561extern _X_EXPORT void miMarkUnrealizedWindow(
562    WindowPtr /*pChild*/,
563    WindowPtr /*pWin*/,
564    Bool /*fromConfigure*/
565);
566
567extern _X_EXPORT void miSegregateChildren(WindowPtr pWin, RegionPtr pReg, int depth);
568
569/* mizerarc.c */
570
571extern _X_EXPORT void miZeroPolyArc(
572    DrawablePtr /*pDraw*/,
573    GCPtr /*pGC*/,
574    int /*narcs*/,
575    xArc * /*parcs*/
576);
577
578/* mizerline.c */
579
580extern _X_EXPORT void miZeroLine(
581    DrawablePtr /*dst*/,
582    GCPtr /*pgc*/,
583    int /*mode*/,
584    int /*nptInit*/,
585    DDXPointRec * /*pptInit*/
586);
587
588extern _X_EXPORT void miZeroDashLine(
589    DrawablePtr /*dst*/,
590    GCPtr /*pgc*/,
591    int /*mode*/,
592    int /*nptInit*/,
593    DDXPointRec * /*pptInit*/
594);
595
596extern _X_EXPORT void miPolyFillArc(
597    DrawablePtr /*pDraw*/,
598    GCPtr /*pGC*/,
599    int /*narcs*/,
600    xArc * /*parcs*/
601);
602
603#endif /* MI_H */
604