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