stdui.h

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 713 行 · 第 1/2 页

H
713
字号
        UI_DULCORNER,
        UI_DURCORNER,
        UI_DHLINE,
        UI_DVLINE,

        /* triangles */
        UI_DPOINT,
        UI_LPOINT,
        UI_RPOINT,
        UI_UPOINT,

        /* arrows */
        UI_DARROW,
        UI_UDARROW,

        /* boxes */
        UI_DBLOCK,
        UI_LBLOCK,
        UI_RBLOCK,
        UI_UBLOCK,
        UI_CKBOARD,
        UI_BOARD,
        UI_BLOCK,

        /* misc */
        UI_SQUARE,
        UI_ROOT,
        UI_EQUIVALENT = 31
        /* we use 31 of them: don't add any more!
           they have to fit in the C0 ASCII range */
};

#ifdef __GUI__
/*
        ORD needs to be an unsigned int for the WINDOWS scaling system
        in WVIDEO since values in the range 0-10000 are used.
        Only the data structures are use.. No UI functions are actually
        called for Windows so UI does not need to be rebuilt
*/

typedef         unsigned int            ORD;

#else

typedef         unsigned char           ORD;

#endif

typedef         unsigned short          MOUSEORD;

typedef struct sarea {
        ORD             row;
        ORD             col;
        ORD             height;
        ORD             width;
} SAREA;

typedef         unsigned char           ATTR;

#define         iseditchar( ev )        ( ( ev >= EV_FIRST_EDIT_CHAR ) \
                                       && ( ev <= EV_LAST_EDIT_CHAR ) )

#if defined(__NT__)
    typedef struct pixel {
            unsigned short  ch;
            unsigned short  attr;
    } PIXEL;
    typedef PIXEL *LPPIXEL;
    #define __FAR
    #undef HAVE_FAR
#elif defined(__OS2__) && defined(__386__)
    typedef struct pixel {
            char            ch;
            ATTR            attr;
    } PIXEL;
    typedef PIXEL *LPPIXEL;
    #define __FAR
    #undef HAVE_FAR
#elif defined(__UNIX__)
    typedef struct pixel {
            char            ch;
            ATTR            attr;
    } PIXEL;
    typedef PIXEL *LPPIXEL;
    #define __FAR
    #undef HAVE_FAR
#elif defined(__386__) || defined(M_I86)
    typedef struct pixel {
            char            ch;
            ATTR            attr;
    } PIXEL;

    typedef PIXEL far *LPPIXEL;
    #define __FAR far
    #define HAVE_FAR
#else
    #error pixel structure not configured for system
#endif

typedef struct buffer {
    LPPIXEL     origin;
    int         increment;
} BUFFER;

typedef struct image_hld {
    struct image_hld __FAR      *next_hld;
    SAREA                       area;
    int                         kill_image;
    void __FAR                  *hld;
} IMAGE_HLD;

typedef struct image_def {      // this gets attached to the graphic field
    void __FAR                  *(_FAR *get_image)( void );
    void                        (_FAR *put_image)( void );
    void                        (_FAR *done_image)( void );
    IMAGE_HLD __FAR             *images;
} IMAGE_DEF;


typedef struct window {
        SAREA               area;
        SAREA               dirty;
        int                 priority;
        void                (_FAR *update)( struct sarea, void * );
        void _FARD          *parm;
        struct window _FARD *next;
        struct window _FARD *prev;
        union {
            IMAGE_DEF __FAR *graphic;
            BUFFER          buffer;
        }                   type;
} UI_WINDOW;

typedef struct vscreen {
        EVENT           event;          /* garbage                          */
        char _FARD      *name;          /* title of virtual screen          */
        SAREA           area;           /* position on physical screen      */
        unsigned int    flags;          /* dialogue, unframed, movable etc. */
        ORD             row;
        ORD             col;            /* position of cursor on the screen */
        int             cursor;         /* cursor type                      */
        int             open;           /* bool: init to FALSE, set by ui   */
        UI_WINDOW       window;         /* used by the window manager       */
} VSCREEN;

typedef struct monitor {
        ORD             height;         /* number of rows                   */
        ORD             width;          /* number of columns                */
        int             colour;         /* M_MONO, M_CGA, M_EGA             */
        ATTR _FARD      *attrs;         /* attributes                       */
        EVENTLIST _FARD *events;        /* event list pointer               */
        UI_WINDOW _FARD *area_head;     /* head of area list                */
        UI_WINDOW _FARD *area_tail;     /* tail of area list                */
        unsigned        mouse_acc_delay;/* acceleration delay               */
        unsigned        mouse_rpt_delay;/* repeat delay                     */
        unsigned        mouse_clk_delay;/* double click delay               */
        unsigned        tick_delay;     /* clock tick delay                 */
        int             cursor_on;      /* cursor on flag                   */
        int             cursor_attr;    /* cursor attribute                 */
        ORD             cursor_row;     /* cursor row                       */
        ORD             cursor_col;     /* cursor column                    */
        int             cursor_type;    /* cursor type                      */
        unsigned char   old_shift;      /* status of shift keys             */
        int             no_snow;        /* snow check flag                  */
        UI_WINDOW       blank;          /* blank window                     */
        BUFFER          screen;         /* screen                           */
        unsigned        desqview:1;     /* desqview present flag            */
        unsigned        f10menus:1;     /* F10 active for menus             */
        unsigned        busy_wait:1;    /* SINK, MOUSE_HOLD or NO_EVENT     */
        unsigned        mouse_swapped:1;/* mouse swap flag                  */
        unsigned        no_idle_int:1;  /* disable idle interrupt           */
        unsigned        no_refresh:1;   /* disable refresh on EV_NO_EVENT   */
        unsigned        no_graphics:1;  /* disable character mapping        */
        unsigned        dbcs:1;         /* double-byte character set        */
        unsigned        no_blowup:1;    /* disable exploding windows        */
        unsigned        mouse_speed;    /* mouse speed factor               */
        unsigned char   mouse_xscale;   /* factor to divide mouse x posn    */
        unsigned char   mouse_yscale;   /* factor to divide mouse y posn    */
} MONITOR;

#define         V_DIALOGUE              0x0001
#define         V_UNBUFFERED            0x0002
#define         V_UNFRAMED              0x0004
#define         V_NO_ZOOM               0x0008
#define         V_PASSIVE               0x0010
#define         V_UNPROTECTED           0x0020
#define         V_HIDDEN                0x0040
#define         V_LISTBOX               0x0100

enum {
        C_OFF,
        C_NORMAL,
        C_INSERT
};

enum {
        M_MONO,
        M_CGA,
        M_EGA,
        M_VGA,
        M_BW,
        M_NEC_NORM,
        M_UNUSED,
        M_NEC_HIRES,
        M_FMR

#if defined( __UNIX__ )
        ,M_TERMINFO_MONO
#endif
};

#ifdef __cplusplus
    extern "C" {
#endif

extern          MONITOR _FARD*  UIData;

extern          void            finimouse( void );
extern          int             initmouse( int );
extern          void            uiactivatemenus( void );
extern          void           *uialloc( unsigned );
extern          int             uiattrs( void );
extern          int             uivgaattrs( void );
extern          void            uisetblinkattr( int );
extern          char            uigetblinkattr( void );
extern          int             uibackground( char * );
extern          BUFFER    _FARD *uibackgroundbuffer( void );
extern          void            uibandinit( SAREA, ATTR );
extern          void            uibandmove( SAREA );
extern          void            uibandfini( void );
extern          void            uirestorebackground( void );
extern          void            uibarf( void );
extern          void            uiblankarea( SAREA );
extern          void            uiblankscreen( void );
extern          void            uiblankattr( ATTR );
extern          void           *uicalloc( unsigned , unsigned );
extern          int             uichecklist( EVENT, EVENT _FARD * );
extern          void            uiclose( VSCREEN _FARD * );
extern          void            uicntrtext( VSCREEN _FARD *, SAREA *, ATTR,
                                            unsigned int, char * );
extern          int             uiconfig( char *, char ** );
extern          void            uicursor( VSCREEN _FARD *, unsigned char,
                                          unsigned char, int );
extern          int             uidialogevent( VSCREEN _FARD * );
extern          void            uidirty( SAREA );
extern          void            uidrawbox( VSCREEN _FARD *, SAREA *area,
                                           ATTR attr, char * );
extern          EVENT           uieventsource( int );
extern          void __FAR*     uifaralloc( int );
extern          void            uifarfree( void __FAR * );
extern          void            uifini( void );
extern          void            uifinicursor( void );
extern          void            uifinigmouse( void );
extern          void            uiflush( void );
extern          void            uiflushevent( void );
extern          void            uifree( void * );
extern          EVENT           uiget( void );
extern          void            uigetcursor( ORD _FARD*, ORD _FARD*,
                                int _FARD*, int _FARD* );
extern          EVENTLIST _FARD *uigetlist( void );
extern          void            uigetmouse( ORD _FARD*, ORD _FARD*, int _FARD* );
extern          void            uiignorealt( void );
extern          unsigned int    uiextkeyboard( void );
extern          int             uiinit( int );
extern          void            uiinitcursor( void );
extern          int             uiinitgmouse( int );
extern          int             uiinlist( EVENT );
extern          int             uiintoplist( EVENT );
extern          int             uikeepbackground( void );
extern          void           *uimalloc( unsigned );
extern          void            uimouse( int );
extern          void            uimouseforceoff( void );
extern          void            uimouseforceon( void );
extern          void            uinocursor( VSCREEN _FARD *);
extern          void            uioffcursor( void );
extern          void            uioncursor( void );
extern          void            uioffmouse( void );
extern          void            uionmouse( void );
extern          VSCREEN _FARD  *uiopen( SAREA *, char *, unsigned int );
extern          void            uihidemouse( void );
extern          unsigned        uiclockdelay( unsigned milli );
extern          EVENT   _FARD  *uipoplist( void );
extern          void            uiposition( SAREA *, unsigned char,
                                    unsigned char ,int ,int , int );
extern          void            uiprotect( VSCREEN _FARD* );
extern          void            uipushlist( EVENT _FARD* );
extern          void            uiputlist( EVENTLIST _FARD* );
extern          void           *uirealloc( void *, unsigned );
extern          void            uirefresh( void );
extern          int             uiremovebackground( void );
extern          int             uiset80col( void );
extern          SAREA          *uisetarea( SAREA *,  VSCREEN _FARD * );
extern          void            uisetcursor( ORD, ORD, int, int );
extern          void            uisetmouse( MOUSEORD, MOUSEORD );
extern          void            uisetmouseposn( ORD, ORD );
extern          SAREA          *uisetscreenarea( SAREA *, int, int );
extern          void            uisetsnow( int );
extern          void            uispawnend( void );
extern          void            uispawnstart( void );
extern          int             uistart( void );
extern          void            uistop( void );
extern          void            uiswap( void );
extern          void            uiswapcursor( void );
extern          void            uiswapmouse( void );
extern          void            uiungetevent( void );
extern          void            uiunprotect( VSCREEN _FARD* );
extern          void            uivattrflip( VSCREEN _FARD*, SAREA );
extern          void            uivattribute( VSCREEN _FARD*, SAREA, ATTR );
extern          void            uivclose( VSCREEN _FARD* );
extern          void            uivdirty( VSCREEN _FARD*, SAREA );
extern          void            uivfill( VSCREEN _FARD*, SAREA, ATTR, char );
extern          EVENT           uivgetevent( VSCREEN _FARD* );
extern          EVENT           uivgetprime( VSCREEN _FARD* );
extern          EVENT           uivgetprimevent( VSCREEN _FARD* );
extern          unsigned        uivhide( VSCREEN _FARD * );
extern          int             uivmouseinstalled( void );
extern          VSCREEN _FARD*  uivmousepos( VSCREEN _FARD*, ORD _FARD*,
                                ORD _FARD* );
extern          VSCREEN _FARD*  uimousepos( VSCREEN _FARD*, int _FARD*,
                                int _FARD* );
extern          void            uivmoveblock( VSCREEN _FARD*, SAREA, int, int );
extern          VSCREEN _FARD*  uivopen( VSCREEN _FARD* );
extern          VSCREEN _FARD*  uivresize( VSCREEN _FARD*, SAREA );
extern          void            uivmove( VSCREEN _FARD*, ORD, ORD );
extern          void            uivrawput( VSCREEN _FARD*, ORD, ORD,
                                PIXEL _FARD*, int );
extern          void            uivsetactive( VSCREEN _FARD* );
extern          void            uivsetcursor( VSCREEN _FARD* );
extern          unsigned        uivshow( VSCREEN _FARD * );
extern          void            uivtextput( VSCREEN _FARD*, ORD, ORD,
                                ATTR, char _FARD*, int );
extern          void            uitextfield( VSCREEN _FARD*, ORD, ORD,
                                ORD, ATTR, char __FAR *, int );
extern          void            uimousespeed( unsigned );
extern          unsigned char   uicheckshift( void );
extern          EVENT           uikeyboardevent( void );
extern          int             uimouseinstalled( void );

extern          int             FlipCharacterMap( void );
extern          int             UIMapCharacters( char mapchar[], char mapdata[][16] );

extern          void            uiyield( void );
extern          int             uiforceevadd( EVENT );  // int is a bool
extern          void            uiforceevflush( void );
extern          int             uiisdbcs( void ); // bool
extern          int             uionnec( void );  // bool
extern          int             uicharlen( int ); // returns 2 if dbcs lead byte
extern          void            UIMemOpen( void );
extern          void            UIMemClose( void );

#ifdef __cplusplus
}
#endif

#endif /* _STDUI_H_INCLUDED_ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?