00001
00002 #ifndef D2D_H
00003 #define D2D_H
00004
00005 #include "io.h"
00006 #include "ssd192X.h"
00007 #include "window.h"
00008
00009
00010
00011 typedef struct _2d_cmd
00012 {
00013 struct
00014 {
00015 INT8 scr_mode;
00016 INT32 scr_offset;
00017
00018 INT16 draw_x;
00019 INT16 draw_y;
00020 INT16 draw_width;
00021 INT16 draw_height;
00022
00023 INT16 pen_color[3];
00024
00025 struct
00026 {
00027 INT16 x1;
00028 INT16 y1 ;
00029 INT16 x2;
00030 INT16 y2;
00031 } line;
00032
00033 struct
00034 {
00035 INT16 x;
00036 INT16 y;
00037 INT16 rx;
00038 INT16 ry;
00039 INT16 ang1;
00040 INT16 ang2;
00041 } arc;
00042 } draw;
00043
00044 struct
00045 {
00046 INT8 scr_mode;
00047 INT32 scr_offset;
00048 INT16 scr_linewidth;
00049
00050 INT8 dst_mode;
00051 INT32 dst_offset;
00052 INT16 dst_linewidth;
00053
00054 INT8 scr_bpp;
00055 INT8 dst_bpp;
00056
00057 INT32 rotate;
00058
00059 struct
00060 {
00061 INT8 colour_lut[256][4];
00062 } clut;
00063
00064 struct
00065 {
00066 INT32 width;
00067 INT32 height;
00068 } rectCopy;
00069
00070 struct
00071 {
00072 INT32 width;
00073 INT32 height;
00074 INT32 opmode;
00075 INT16 intensity;
00076 } alphabend;
00077
00078 struct
00079 {
00080 INT16 src_width;
00081 INT16 src_height;
00082 INT16 dst_width;
00083 INT16 dst_height;
00084 } stretch;
00085
00086 struct
00087 {
00088 INT16 brush_linewidth;
00089 INT32 brush_offset;
00090
00091 INT16 brush_width;
00092 INT16 brush_height;
00093 INT16 rop;
00094
00095 INT16 width;
00096 INT16 height;
00097 } rop;
00098
00099 struct
00100 {
00101 INT16 width;
00102 INT16 height;
00103 INT16 color[3];
00104 } transparent;
00105 } blit;
00106 } D2D_CMD;
00107
00108 typedef enum
00109 {
00110 NONE=0,
00111 VFLIP=0x10,
00112 HFLIP=0x40,
00113 VHFLIP=0x50,
00114 HFLIP_ROT90=0xa0,
00115 ROT90=0xb0,
00116 ROT270=0xe0,
00117 HFLIP_ROT270=0xf0,
00118 TRANSPARENT=0x01
00119 } ROTATE_TYPE;
00120
00121
00122 typedef enum
00123 {
00124 DRAW_LINE=1,
00125 DRAW_ELLIPSE=3,
00126 BLIT_TRANS=4,
00127 BLIT_BIT=5,
00128 CLUT_SET=6,
00129 ALPHABLEND=7,
00130 BLIT_STRETCH=8,
00131 BLIT_PATTERN=9
00132 } CMD_TYPE;
00133
00134 typedef enum
00135 {
00136 _NO_ERROR=0,
00137 BOUNDARY_ERROR=1,
00138 NEGATIVE_REGVAL_ERROR=2,
00139 MODE_ERROR_1=3,
00140 MODE_ERROR_2=4,
00141 OVERLAP_ERROR=5,
00142 STRETCH_RATIO_ERROR=6,
00143 SET_MODE_ERROR=7
00144 } ERROR_CODE;
00145
00146
00147 typedef enum
00148 {
00149 MODE_16BIT=0,
00150 MODE_32BIT=1,
00151 MODE_YUV=2,
00152 MODE_1BIT=3,
00153 MODE_8BIT=4,
00154 } SRCDST_MODE;
00155
00156 #define SSD192X_DISPLAYMODE_RGB16 0
00157 #define SSD192X_DISPLAYMODE_RGB32 1
00158 #define SSD192X_DISPLAYMODE_YUV 2
00159 #define SSD192X_DISPLAYMODE_RGB1 4
00160 #define SSD192X_DISPLAYMODE_RGB8 5
00161 #define SSD192X_DISPLAYMODE_RGB2 6
00162
00163 #define SSD192X_ROTATE_NONE 0
00164 #define SSD192X_ROTATE_VFLIP 1
00165 #define SSD192X_ROTATE_HFLIP 2
00166 #define SSD192X_ROTATE_VHFLIP 3
00167 #define SSD192X_ROTATE_HFLIP_ROT90 4
00168 #define SSD192X_ROTATE_ROT90 5
00169 #define SSD192X_ROTATE_ROT270 6
00170 #define SSD192X_ROTATE_HFLIP_ROT270 7
00171
00172 void WAIT_2D(void);
00173
00174 void ssd_set_16bbp_srcdst_mode();
00175
00176 void ssd_2d_line(WINDOW *pWnd, UINT16 x1, UINT16 y1, UINT16 x2, UINT16 y2, UINT16 c);
00177
00178 void ssd_2d_arc( WINDOW *pWnd,
00179 UINT16 x1, UINT16 y1,
00180 UINT16 rx, UINT16 ry,
00181 UINT16 startAng, UINT16 endAng,
00182 UINT16 c);
00183
00184 void ssd_2d_blt(WINDOW *pSrcWnd,
00185 UINT16 x1, UINT16 y1,
00186 UINT16 srcWidth, UINT16 srcHeight,
00187 WINDOW *pDstWnd,
00188 UINT16 x2, UINT16 y2,
00189 UINT16 dstWidth, UINT16 dstHeight,
00190 ROTATE_TYPE orient);
00191
00192 void ssd_2d_rect(WINDOW *pWnd, INT32 x, INT32 y, INT32 x2, INT32 y2, UINT16 rgb16Colour);
00193 void ssd_2d_rect_outline(WINDOW *pWnd, INT32 x, INT32 y, INT32 x2, INT32 y2, UINT16 rgb16Colour);
00194
00195 void ssd192X_2d_rect(WINDOW *pWnd, INT32 x, INT32 y, INT32 x2, INT32 y2, UINT16 rgb16Colour);
00196
00197 void ssd192X_2d_stretch(INT32 SRC_STARTADDR, UINT16 SRC_LINEWIDTH,UINT16 SRC_WIDTH,UINT16 SRC_HEIGHT,INT32 DEST_STARTADDR,UINT16 DEST_LINEWIDTH,UINT16 DEST_WIDTH,UINT16 DEST_HEIGHT,UINT8 ORIENT);
00198
00199 void ssd192X_2d_blt(INT32 SRC_STARTADDR,
00200 UINT16 SRC_LINEWIDTH,
00201 UINT16 SRC_WIDTH,
00202 UINT16 SRC_HEIGHT,
00203 INT32 DEST_STARTADDR,
00204 UINT16 DEST_LINEWIDTH,
00205 ROTATE_TYPE orient);
00206
00207
00208
00209 void ClearDisplay(int DEST_STARTADDR, int DEST_LINEWIDTH, int DEST_WIDTH,int DEST_HEIGHT);
00210
00211 #endif