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