?? commlcd.c
字號:
// 使用native圖形引擎的數據結構和fb(Framebuffer)的驅動程序#include "native.h"#include "fb.h"#include "lcddrive.h"// 圖形引擎始化函數// 初始化正確返回PSD結構,否則返回NULLstatic PSD fb_open(PSD psd){ PSUBDRIVER subdriver; // 初始化液晶 TftInit(); fprintf(stderr, "GAL Common LCD engine: Init LCM!\n"); // 設置液晶屬性 psd->planes = 1; // 單屏 #if SWAP_XY_EN==1 psd->xres = GUI_LCM_YMAX; psd->yres = GUI_LCM_XMAX;#else psd->xres = GUI_LCM_XMAX; psd->yres = GUI_LCM_YMAX;#endif // 設置屏幕顏色深度 psd->bpp = 16; psd->linelen = 2 * (psd->xres); psd->ncolors = (psd->bpp >= 24) ? (1 << 24) : (1 << psd->bpp); // 分配Framebuffer空間 psd->addr = malloc(GUI_LCM_XMAX * GUI_LCM_YMAX * 2); // 每一個點要2字節數據 if ( ! psd->addr ) { fprintf(stderr, "GAL Common LCD engine: Couldn't allocate buffer!\n"); return(NULL); // 內存不足,初始化失敗(返回NULL) } psd->gr_mode = MODE_SET; // 畫圖模式為設置模式(非AND、XOR模式) psd->size = 0; // 分配的內存(由fb驅動程序設置) psd->flags = PSF_MEMORY; // 采用MEMORY驅動方式 psd->flags |= PSF_MSBRIGHT; // 設置象素格式 psd->pixtype = PF_TRUECOLOR565; // 子驅動程序選擇(畫點、線) subdriver = select_fb_subdriver (psd); if (!subdriver) { fprintf(stderr,"GAL Common LCD engine: No driver for bpp %d\n", psd->bpp); return(NULL); } // 子驅動程序入口點設置 if (!set_subdriver (psd, subdriver, TRUE)) { fprintf(stderr,"GAL Common LCD engine: Driver initialize failed for bpp %d\n", psd->bpp); return(NULL); } return(psd); }// 關閉fbstatic void fb_close (PSD psd){ free(psd->addr);}// 設置調色板static void fb_setpalette (PSD psd, int first, int count, GAL_Color *palette){}// 取得調色板static void fb_getpalette (PSD psd, int first, int count, GAL_Color *palette){}// 更新顯示區域static void fb_UpdateRects(PSD psd, int l, int t, int r, int b){ int bak; if(l > r) { //fprintf(stderr,"GAL Common LCD engine: UpdateRect l >= r !\n"); bak = l; l = r; r = bak; } if(t > b) { //fprintf(stderr,"GAL Common LCD engine: UpdateRect t >= b !\n"); bak = t; t = b; b = bak; } TFT_UpdateRects( l, t, // 起始點坐標 r+1-l, b+1-t, // 區域寬度、高度 psd->addr); // Framebuffer起始地址 }// COMMLCD圖形引擎的數據結構SCREENDEVICE commlcd = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, fb_open, fb_close, fb_setpalette, fb_getpalette, native_gen_allocatememgc, fb_mapmemgc, native_gen_freememgc, native_gen_clippoint, native_gen_fillrect, NULL, // DrawPixel 使用fb的驅動程序 NULL, // ReadPixel 使用fb的驅動程序 NULL, // DrawHLine 使用fb的驅動程序 NULL, // DrawVLine 使用fb的驅動程序 NULL, // Blit 使用fb的驅動程序 NULL, // PutBox 使用fb的驅動程序 NULL, // GetBox 使用fb的驅動程序 NULL, // PutBoxMask 使用fb的驅動程序 NULL, // CopyBox 使用fb的驅動程序 fb_UpdateRects // UpdateRect更新顯示函數};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -