device_gdi.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /** @file
  2. * Header file for graphics device interfaces.
  3. *
  4. * @author anlzhao
  5. * @author mandy.wu 2009/08/21 (Draw objs to a tempbuf and then blit once to OSD)
  6. * @version 0.1
  7. */
  8. #ifndef _DEVICE_H
  9. #define _DEVICE_H
  10. #include "gui_eng/stddefs.h"
  11. #include "gui_eng/region.h"
  12. #define INVALID_REGION_HANDLE (-1)
  13. #define PAL_ENTRY_NUM (256)
  14. #define PAL_ENTRY_NUM_4BPP (16)
  15. #define DIV_BYTE_SHIFT (3)
  16. //#define BITS_PER_BYTE (8)
  17. #define BMP_ALIGN_BYTE_NUM (4)
  18. /** Input key types used by WM_KEYDOWN message on Editbox control. */
  19. typedef enum {
  20. KEY_0 = 0, /**< */
  21. KEY_1, /**< */
  22. KEY_2, /**< */
  23. KEY_3, /**< */
  24. KEY_4, /**< */
  25. KEY_5, /**< */
  26. KEY_6, /**< */
  27. KEY_7, /**< */
  28. KEY_8, /**< */
  29. KEY_9, /**< */
  30. KEY_LEFT, /**< */
  31. KEY_RIGHT, /**< */
  32. KEY_UP, /**< */
  33. KEY_DOWN, /**< */
  34. } input_key_t;
  35. /*
  36. ** Double linked list data structure
  37. ** LIST must be first declared in struct
  38. */
  39. typedef struct _list {
  40. struct _list *next;
  41. struct _list *prev;
  42. } LIST, *PLIST;
  43. /* Double linked list head data structure */
  44. typedef struct _listhead {
  45. struct _list *head;
  46. struct _list *tail;
  47. } LISTHEAD, *PLISTHEAD;
  48. /* GDL layer drawing flags */
  49. #define GDL_SRC_ALIGNED (0x1) /**< Indicates that pstImgData is 4-byte aligned or not. */
  50. #define GDL_IGNORE_TRANS_COLOR (0x2) /**< If set, the transparent color won't be drawn. */
  51. #define GDL_180_ROTATE (0x4) /**< 180 degree rotation. */
  52. /* Graphics rendering operation funcs */
  53. typedef struct {
  54. INT32 (*draw_pixel) (RegionHandle_t sdRegionHandle, INT16 swX, INT16 swY, UINT32 dValue, INT32 *pBlockId);
  55. INT32 (*draw_line) (RegionHandle_t sdRegionHandle, INT16 swX1, INT16 swY1, INT16 swX2, INT16 swY2, UINT16 wThickness, Color_t stColor, INT32 *pBlockId);
  56. INT32 (*draw_rect) (RegionHandle_t sdRegionHandle, RECT stRect, UINT16 wThickness, Color_t stColor, INT32 *pBlockId);
  57. INT32 (*draw_hole_rect) (RegionHandle_t sdRegionHandle, RECT stRect, UINT16 wThickness, INT32 *pBlockId, INT32 isEvenAlign);
  58. INT32 (*fill_rect) (RegionHandle_t sdRegionHandle, RECT stRect, Color_t stColor, BOOLEAN bIgnoreTransColor, INT32 *pBlockId);
  59. INT32 (*fill_bmp) (RegionHandle_t sdRegionHandle, RECT stSrcRect, RECT stDstRect,
  60. const PIMAGEHDR pstImgData, PALENTRY *pDynSrcPal, UINT8 bDrawFlag, INT32 *pBlockId);
  61. INT32 (*blit_bmp) (RegionHandle_t sdRegionHandle, RECT stSrcRect, RECT stDstRect,
  62. const PIMAGEHDR pstImgData, PALENTRY *pDynSrcPal, UINT8 bDrawFlag, INT32 *pBlockId);
  63. INT32 (*blit_rot_bmp) (RegionHandle_t sdRegionHandle, RECT stSrcRect, RECT stDstRect,
  64. const PIMAGEHDR pstImgData, PALENTRY *pDynSrcPal, UINT32 dAngle, INT32 *pBlockId);
  65. INT32 (*sblit_bmp) (RegionHandle_t sdRegionHandle, RECT stSrcRect, RECT stDstRect,
  66. const PIMAGEHDR pstImgData, PALENTRY *pDynSrcPal, INT32 *pBlockId);
  67. INT32 (*blit_text_bmp)(RegionHandle_t sdRegionHandle, RECT stRect, PIMAGEHDR pstTextData, INT32 *pBlockId);
  68. INT32 (*blend_bmp) (RegionHandle_t sdRegionHandle, RECT stDstRect, const PIMAGEHDR pstImgData,
  69. PALENTRY *pDynSrcPal, UINT8 bAlphaValue, INT32 *pBlockId);
  70. INT32 (*set_dispaly) (BOOL ShowOSD);
  71. } DRAWDRIVER, *PDRAWDRIVER;
  72. typedef struct _region_params {
  73. BOOLEAN bFullAALock; /* TRUE if the palette of this region is modified by 256-level AA rendering. */
  74. // Resources
  75. RegionInfo_t *region_info; /* Pointer to a specific region_info */
  76. UINT32 region_index; /* The region index of the region_info array */
  77. RECT rect;
  78. PALENTRY *pPal; /* Pointer to the current referenced region pal */
  79. void *pClutTable; /* prepare for OSD Library */
  80. PixelFormat_e format;
  81. UINT8 bpp; /* bits per pixel */
  82. UINT8 transparency; /* 0~MAX_REGION_TRANSPARENCY 0: OPaque */
  83. UINT8 enable_trans;
  84. OSD_Layer_t layer;
  85. PDRAWDRIVER drawdriver; /* Indicate function ptrs to drawing driver */
  86. } RegionParams_t;
  87. /* OSD region operation funcs */
  88. typedef struct _region_procs {
  89. INT32 (*pOpenRegion)(RegionHandle_t stRegionHandle);
  90. INT32 (*pCloseRegion)(RegionHandle_t stRegionHandle);
  91. INT32 (*pSetTransLevel) (RegionHandle_t stRegionHandle, UINT8 bTransValue, BOOLEAN bRegionBlendEnable);
  92. INT32 (*pSetPal)(RegionHandle_t stRegionHandle, const PALENTRY *pPal);
  93. INT32(*pResizeUI) (OSD_Layer_t osd_layer, UINT16 wWidth, UINT16 wHeight, UINT16 wTargetWidth, UINT16 wTargetHeight);
  94. } RegionProcs_t;
  95. #endif /* _DEVICE_H */