Annotation of researchv9/X11/src/X.V11R1/server/ddx/v9sun/sun.h, revision 1.1.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.