gui_driver.h
上传用户:sunhongbo
上传日期:2022-01-25
资源大小:3010k
文件大小:5k
源码类别:

数据库系统

开发平台:

C/C++

  1. #ifndef __GUI_DRIVER_H_
  2. #define __GUI_DRIVER_H_
  3. typedef struct _tagGUI_ScreenDevice_s * PSD;
  4. typedef struct _tagGUI_ScreenDevice_s 
  5. {
  6.     BU32  doclip;
  7.     BU32  clipminx;        /* minimum x value of cache rectangle */
  8.     BU32  clipminy;        /* minimum y value of cache rectangle */
  9.     BU32  clipmaxx;        /* maximum x value of cache rectangle */
  10.     BU32  clipmaxy;        /* maximum y value of cache rectangle */
  11.     BU32  xres;        /* X screen res (real) */
  12.     BU32  yres;        /* Y screen res (real) */
  13.     BU32  xvirtres;    /* X drawing res (will be flipped in portrait mode) */
  14.     BU32  yvirtres;    /* Y drawing res (will be flipped in portrait mode) */
  15.     BU32  planes;        /* # planes*/
  16.     BU32  bpp;        /* # bits per pixel*/
  17.     BU32  linelen;    /* line length in bytes for bpp 1,2,4,8*/
  18.                 /* line length in pixels for bpp 16, 24, 32*/
  19.     BU32  size;        /* size of memory allocated*/
  20.     BU32 gr_foreground;      /* current foreground color */
  21.     BU32 gr_background;      /* current background color */
  22.     BU32 gr_mode;
  23.     BU32 ncolors;    /* # screen colors */
  24.     BU32  pixtype;    /* format of pixel value */
  25.     BU32  flags;        /* device flags */
  26.     void *addr;        /* address of memory allocated (memdc or fb) */
  27.     void *dev_spec;    /* device specific field. */
  28.     PSD  (*Open)(PSD psd);
  29.     void (*Close)(PSD psd);
  30.     void (*SetPalette)(PSD psd,BU32 first,BU32 count,PU32 cmap);
  31.     void (*GetPalette)(PSD psd,BU32 first,BU32 count,PU32 cmap);
  32.     PSD  (*AllocateMemGC)(PSD psd);
  33.     BU32 (*MapMemGC)(PSD mempsd,BU32 w,BU32 h,BU32 planes,BU32 bpp, BU32 linelen,BU32 size,void *addr);
  34.     void (*FreeMemGC)(PSD mempsd);
  35.     BU32 (*ClipPoint)(PSD psd,BU32 x,BU32 y);
  36.     void (*FillRect)(PSD psd,BU32 x,BU32 y,BU32 w,BU32 h,BU32 c);
  37.     
  38. //==================================================================================//
  39.     void (*DrawPixel)(PSD psd, BU32 x, BU32 y, BU32 c);
  40.     BU32 (*ReadPixel)(PSD psd, BU32 x, BU32 y);
  41.     void (*DrawHLine)(PSD psd, BU32 x, BU32 y, BU32 w, BU32 c);
  42.     void (*DrawVLine)(PSD psd, BU32 x, BU32 y, BU32 w, BU32 c);
  43.     void (*Blit)(PSD dstpsd, BU32 dstx, BU32 dsty, BU32 w, BU32 h, 
  44. PSD srcpsd, BU32 srcx, BU32 srcy);
  45.     void (*PutBox)( PSD psd, BU32 x, BU32 y, BU32 w, BU32 h, void* buf );
  46.     void (*GetBox)( PSD psd, BU32 x, BU32 y, BU32 w, BU32 h, void* buf );
  47.     void (*PutBoxMask)( PSD psd, BU32 x, BU32 y, BU32 w, BU32 h, void *buf, BU32 cxx);
  48.     void (*CopyBox)(PSD psd,BU32 x1, BU32 y1, BU32 w, BU32 h, BU32 x2, BU32 y2);
  49.     void (*UpdateRect) (PSD psd, BU32 l, BU32 t, BU32 r, BU32 b);
  50. //==================================================================================//
  51. //extern function
  52. void (*Printf)(PU08 fmt);
  53. void*  (*MemMalloc)(BU32 size);
  54. void (*MemFree)(void * lpmem);
  55. void (*TimerDelay)(BU32 ms);
  56. //===================================================================================//
  57. } GUI_ScreenDevice_s,* GUI_ScreenDevice_sp;
  58. /* PSD flags*/
  59. #define PSF_SCREEN 0x0001 /* screen device*/
  60. #define PSF_MEMORY 0x0002 /* memory device*/
  61. #define PSF_HAVEBLIT 0x0004 /* have bitblit*/
  62. #define PSF_HAVEOP_COPY 0x0008 /* psd->DrawArea can do area copy*/
  63. #define PSF_ADDRMALLOC 0x0010 /* psd->addr was malloc'd*/
  64. #define PSF_ADDRSHAREDMEM 0x0020 /* psd->addr is shared memory*/
  65. /* return*/
  66. #define GUI_SYS_SUCCESS 0x0001
  67. #define GUI_SYS_FAILURE 0x0002
  68. #define GUI_SYS_TIMEOUT 0x0003
  69. /*mutex flags*/
  70. #define GUI_SYS_MUTEX_OBTAIN 0x0001 /*have mutex*/
  71. #define GUI_SYS_MUTEX_NOTOBTAIN 0x0002  /*no mutex*/
  72. /*mutex flags*/
  73. #define GUI_SYS_EVENT_MANUAL_RST 0x0001 /*have mutex*/
  74. #define GUI_SYS_EVENT_INIT_STATUS 0x0002  /*no mutex*/
  75. typedef struct _tagGUI_SystemDevice_s 
  76. {
  77. /*mutex*/
  78. BU32 (*CreateMutex)(const PU08 pstrName,BU32 flag );
  79. BU32 (*DestroyMutex)(BU32 hMutex);
  80. BU32 (*WaitForMutex)(BU32 hMutex,BU32 TimeoutMs);
  81. BU32 (*ReleaseMutex)(BU32 hMutex);
  82. /*event*/
  83. BU32 (*CreateEvent)(const PU08 pstrName,BU32 flag );
  84. BU32 (*DestroyEvent)(BU32 hEvent);
  85. BU32 (*SetEvent)(BU32 hEvent);
  86. BU32 (*WaitForSingleEvent)(BU32 hEvent,BU32 TimeoutMs);
  87. /*semaphore*/
  88. BU32 (*CreateSemaphore)(const PU08 pstrName,BU32 nInitCount,BU32 nMaxCount );
  89. BU32 (*DestroySemaphore)(BU32 hMutex);
  90. BU32 (*WaitForSemaphore)(BU32 hMutex,BU32 TimeoutMs);
  91. BU32 (*ReleaseSemaphore)(BU32 hMutex,BU32 nReleaseCount);
  92. /*MsgQueue*/
  93. BU32 (*CreateMsgQueue)(const PU08 pstrName,BU32 nMaxMsgs,BU32 nMsgLen,BU32 Options );
  94. BU32 (*DestroyMsgQueue)(BU32 hMsgQueue);
  95. BU32 (*ReceiveMsgQueue)(BU32 hMsgQueue,void * pvMsg,BU32 nMaxMsgBYtes,BU32 TimeoutMs);
  96. BU32 (*SendMsgQueue)(BU32 hMsgQueue,const void * pvMsg,BU32 nMaxMsgBYtes,BU32 TimeoutMs);
  97. } GUI_SystemDevice_s ,* GUI_SystemDevice_sp;
  98. #define GUI_THREAD_WAIT_FIFO 0
  99. #define GUI_THREAD_WAIT_PRIO    1
  100. #define GUI_NO_WAIT 0
  101. #define GUI_WAIT_FOREVER -1 
  102. #define GUI_OK 0
  103. #define GUI_ERR -1
  104. typedef struct _tagGUI_Semaphore_s
  105.     BU32 (*FYF_CPI_semaphore_create)(const PU08 name,BS32 initial_count,BU32 
  106.       wait_mode); 
  107.    BS32 (*FYF_CPI_semaphore_destroy)(BU32 handle); 
  108.    BS32 (*FYF_CPI_semaphore_wait)(BU32 handle,BS32 wait_time); 
  109.    BS32 (*FYF_CPI_semaphore_release)(BU32 handle); 
  110. }GUI_Semaphore_s,*GUI_Semaphore_sp; 
  111. #endif