Annotation of researchv9/X11/src/X.V11R1/server/ddx/v9sun/sun.h, revision 1.1

1.1     ! root        1: /*-
        !             2:  * sun.h --
        !             3:  *     Internal declarations for the sun ddx interface
        !             4:  *
        !             5:  * Copyright (c) 1987 by the Regents of the University of California
        !             6:  *
        !             7:  * Permission to use, copy, modify, and distribute this
        !             8:  * software and its documentation for any purpose and without
        !             9:  * fee is hereby granted, provided that the above copyright
        !            10:  * notice appear in all copies.  The University of California
        !            11:  * makes no representations about the suitability of this
        !            12:  * software for any purpose.  It is provided "as is" without
        !            13:  * express or implied warranty.
        !            14:  *
        !            15:  *     "$Header: sun.h,v 4.3 87/09/12 02:29:58 sun Exp $ SPRITE (Berkeley)"
        !            16:  */
        !            17: #ifndef _SUN_H_
        !            18: #define _SUN_H_
        !            19: 
        !            20: #include    <errno.h>
        !            21: extern int errno;
        !            22: #include    <sys/types.h>
        !            23: #include    <sys/timeb.h>
        !            24: #include    <signal.h>
        !            25: #include    <sun/fbio.h>
        !            26: 
        !            27: #include    "X.h"
        !            28: #include    "Xproto.h"
        !            29: #include    "scrnintstr.h"
        !            30: #include    "screenint.h"
        !            31: #ifdef NEED_EVENTS
        !            32: #include    "inputstr.h"
        !            33: #endif NEED_EVENTS
        !            34: #include    "input.h"
        !            35: #include    "cursorstr.h"
        !            36: #include    "cursor.h"
        !            37: #include    "pixmapstr.h"
        !            38: #include    "pixmap.h"
        !            39: #include    "windowstr.h"
        !            40: #include    "gc.h"
        !            41: #include    "gcstruct.h"
        !            42: #include    "regionstr.h"
        !            43: #include    "colormap.h"
        !            44: #include    "miscstruct.h"
        !            45: #include    "dix.h"
        !            46: #include    "mfb.h"
        !            47: #include    "mi.h"
        !            48: 
        !            49: /*
        !            50:  * MAXEVENTS is the maximum number of events the mouse and keyboard functions
        !            51:  * will read on a given call to their GetEvents vectors.
        !            52:  */
        !            53: #define MAXEVENTS      32
        !            54: 
        !            55: /*
        !            56:  * Data private to any sun pointer device.
        !            57:  *     GetEvents, ProcessEvent and DoneEvents have uses similar to the
        !            58:  *         keyboard fields of the same name.
        !            59:  *     pScreen is the screen the pointer is on (only valid if it is the
        !            60:  *         main pointer device).
        !            61:  *     x and y are absolute coordinates on that screen (they may be negative)
        !            62:  */
        !            63: typedef struct ptrPrivate {
        !            64:     short        x,                    /* Current X coordinate of pointer */
        !            65:                  y;                    /* Current Y coordinate */
        !            66:     ScreenPtr    pScreen;              /* Screen pointer is on */
        !            67: } PtrPrivRec, *PtrPrivPtr;
        !            68: 
        !            69: /*
        !            70:  * Cursor-private data
        !            71:  *     screenBits      saves the contents of the screen before the cursor
        !            72:  *                     was placed in the frame buffer.
        !            73:  *     source          a bitmap for placing the foreground pixels down
        !            74:  *     srcGC           a GC for placing the foreground pixels down.
        !            75:  *                     Prevalidated for the cursor's screen.
        !            76:  *     invSource       a bitmap for placing the background pixels down.
        !            77:  *     invSrcGC        a GC for placing the background pixels down.
        !            78:  *                     Also prevalidated for the cursor's screen Pixmap.
        !            79:  *     temp            a temporary pixmap for low-flicker cursor motion --
        !            80:  *                     exists to avoid the overhead of creating a pixmap
        !            81:  *                     whenever the cursor must be moved.
        !            82:  *     fg, bg          foreground and background pixels. For a color display,
        !            83:  *                     these are allocated once and the rgb values changed
        !            84:  *                     when the cursor is recolored.
        !            85:  *     scrX, scrY      the coordinate on the screen of the upper-left corner
        !            86:  *                     of screenBits.
        !            87:  *     state           one of CR_IN, CR_OUT and CR_XING to track whether the
        !            88:  *                     cursor is in or out of the frame buffer or is in the
        !            89:  *                     process of going from one state to the other.
        !            90:  */
        !            91: typedef enum {
        !            92:     CR_IN,             /* Cursor in frame buffer */
        !            93:     CR_OUT,            /* Cursor out of frame buffer */
        !            94:     CR_XING            /* Cursor in flux */
        !            95: } CrState;
        !            96: 
        !            97: typedef struct crPrivate {
        !            98:     PixmapPtr                  screenBits; /* Screen before cursor put down */
        !            99:     PixmapPtr                  source;     /* Cursor source (foreground bits) */
        !           100:     GCPtr              srcGC;      /* Foreground GC */
        !           101:     PixmapPtr                  invSource;  /* Cursor source inverted (background) */
        !           102:     GCPtr              invSrcGC;   /* Background GC */
        !           103:     PixmapPtr                  temp;       /* Temporary pixmap for merging screenBits
        !           104:                                     * and the sources. Saves creation time */
        !           105:     Pixel              fg;         /* Foreground color */
        !           106:     Pixel              bg;         /* Background color */
        !           107:     int                        scrX,       /* Screen X coordinate of screenBits */
        !           108:                        scrY;       /* Screen Y coordinate of screenBits */
        !           109:     CrState            state;      /* Current state of the cursor */
        !           110: } CrPrivRec, *CrPrivPtr;
        !           111: 
        !           112: /*
        !           113:  * Frame-buffer-private info.
        !           114:  *     fd              file opened to the frame buffer device.
        !           115:  *     info            description of the frame buffer -- type, height, depth,
        !           116:  *                     width, etc.
        !           117:  *     fb              pointer to the mapped image of the frame buffer. Used
        !           118:  *                     by the driving routines for the specific frame buffer
        !           119:  *                     type.
        !           120:  *     pGC             A GC for realizing cursors.
        !           121:  *     GetImage        Original GetImage function for this screen.
        !           122:  *     CreateGC        Original CreateGC function
        !           123:  *     CreateWindow    Original CreateWindow function
        !           124:  *     ChangeWindowAttributes  Original function
        !           125:  *     GetSpans        GC function which needs to be here b/c GetSpans isn't
        !           126:  *                     called with the GC as an argument...
        !           127:  *     mapped          flag set true by the driver when the frame buffer has
        !           128:  *                     been mapped in.
        !           129:  *     fbPriv          Data private to the frame buffer type.
        !           130:  */
        !           131: typedef struct {
        !           132:     pointer            fb;         /* Frame buffer itself */
        !           133:     GCPtr              pGC;        /* GC for realizing cursors */
        !           134: 
        !           135:     void               (*GetImage)();
        !           136:     Bool               (*CreateGC)();/* GC Creation function previously in the
        !           137:                                       * Screen structure */
        !           138:     Bool               (*CreateWindow)();
        !           139:     Bool               (*ChangeWindowAttributes)();
        !           140:     unsigned int       *(*GetSpans)();
        !           141:     void               (*EnterLeave)();
        !           142:     Bool               mapped;     /* TRUE if frame buffer already mapped */
        !           143:     int                        fd;         /* Descriptor open to frame buffer */
        !           144:     struct fbtype      info;       /* Frame buffer characteristics */
        !           145:     pointer            fbPriv;     /* Frame-buffer-dependent data */
        !           146: } fbFd;
        !           147: 
        !           148: /*
        !           149:  * Data describing each type of frame buffer. The probeProc is called to
        !           150:  * see if such a device exists and to do what needs doing if it does. devName
        !           151:  * is the expected name of the device in the file system. Note that this only
        !           152:  * allows one of each type of frame buffer. This may need changing later.
        !           153:  */
        !           154: typedef enum {
        !           155:        neverProbed, probedAndSucceeded, probedAndFailed
        !           156: } SunProbeStatus;
        !           157: 
        !           158: /*
        !           159:  * ZOIDS should only ever be defined if SUN_WINDOWS is defined.
        !           160:  */
        !           161: typedef struct _sunFbDataRec {
        !           162:     Bool    (*probeProc)();    /* probe procedure for this fb */
        !           163:     char    *devName;          /* device filename */
        !           164:     SunProbeStatus probeStatus;        /* TRUE if fb has been probed successfully */
        !           165: } sunFbDataRec;
        !           166: 
        !           167: extern sunFbDataRec sunFbData[];
        !           168: /*
        !           169:  * Cursor functions
        !           170:  */
        !           171: extern void      sunInitCursor();
        !           172: extern Bool      sunRealizeCursor();
        !           173: extern Bool      sunUnrealizeCursor();
        !           174: extern Bool      sunDisplayCursor();
        !           175: extern Bool      sunSetCursorPosition();
        !           176: extern void      sunCursorLimits();
        !           177: extern void      sunPointerNonInterestBox();
        !           178: extern void      sunConstrainCursor();
        !           179: extern void      sunRecolorCursor();
        !           180: extern Bool      sunCursorLoc();
        !           181: extern void      sunRemoveCursor();
        !           182: extern void      sunRestoreCursor();
        !           183: 
        !           184: /*
        !           185:  * Initialization
        !           186:  */
        !           187: extern void      sunScreenInit();
        !           188: extern int       sunOpenFrameBuffer();
        !           189: 
        !           190: /*
        !           191:  * GC Interceptions
        !           192:  */
        !           193: extern GCPtr     sunCreatePrivGC();
        !           194: extern Bool      sunCreateGC();
        !           195: extern Bool      sunCreateWindow();
        !           196: extern Bool      sunChangeWindowAttributes();
        !           197: 
        !           198: extern void      sunGetImage();
        !           199: extern unsigned int *sunGetSpans();
        !           200: 
        !           201: extern int       isItTimeToYield;
        !           202: extern int       sunCheckInput;    /* Non-zero if input is available */
        !           203: 
        !           204: extern fbFd      sunFbs[];
        !           205: extern Bool      screenSaved;          /* True is screen is being saved */
        !           206: 
        !           207: extern int       lastEventTime;    /* Time (in ms.) of last event */
        !           208: extern void      SetTimeSinceLastInputEvent();
        !           209: extern void    ErrorF();
        !           210: 
        !           211: #define AUTOREPEAT_INITIATE     (300)           /* milliseconds */
        !           212: #define AUTOREPEAT_DELAY        (100)           /* milliseconds */
        !           213: /*
        !           214:  * We signal autorepeat events with the unique Firm_event
        !           215:  * id AUTOREPEAT_EVENTID.
        !           216:  * Because inputevent ie_code is set to Firm_event ids in
        !           217:  * sunKbdProcessEventSunWin, and ie_code is short whereas
        !           218:  * Firm_event id is u_short, we use 0x7fff.
        !           219:  */
        !           220: #define AUTOREPEAT_EVENTID      (0x7fff)        /* AutoRepeat Firm_event id */
        !           221: 
        !           222: extern int     autoRepeatKeyDown;              /* TRUE if key down */
        !           223: extern int     autoRepeatReady;                /* TRUE if time out */
        !           224: extern int     autoRepeatDebug;                /* TRUE if debugging */
        !           225: 
        !           226: #endif _SUN_H_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.