void GUI_DrawBitmapExp(int x0, int y0, int XSize, int YSize, int XMul, int YMul, int BitsPerPixel, int BytesPerLine, const U8* pData, const GUI_LOGPALETTE* pPal) { GUI_DRAWMODE PrevDraw; GUI_LOCK(); PrevDraw = GUI_SetDrawMode((pPal && pPal->HasTrans) ? GUI_DRAWMODE_TRANS : 0); #if (GUI_WINSUPPORT) WM_ADDORG(x0,y0); { GUI_RECT r; r.x0 = x0; r.x1 = x0 + XSize * XMul -1; r.y0 = y0; r.y1 = y0 + YSize * YMul -1; WM_ITERATE_START(&r); { #endif LCD_DrawBitmap( x0, y0 ,XSize ,YSize, XMul, YMul ,BitsPerPixel, BytesPerLine, pData, pPal); #if (GUI_WINSUPPORT) } WM_ITERATE_END(); } #endif GUI_SetDrawMode(PrevDraw); GUI_UNLOCK(); }
void GUIDEMO_Circle(void) { int XSize = LCD_GetXSize(); int YSize = LCD_GetYSize(); GUIDEMO_ShowIntro("Circles", "\nArbitrary circles" "\nand arcs."); GUI_Clear(); GUI_SetFont(&GUI_Font8x16); GUI_SetColor(GUI_WHITE); #if GUIDEMO_LARGE GUI_DispStringAt("Circle", 0, 0); #endif GUI_FillCircle (XSize / 2, YSize / 2, 50); GUIDEMO_Wait(); GUI_SetDrawMode(GUI_DM_XOR); GUI_FillCircle (XSize / 2, YSize / 2, 60); GUI_SetDrawMode(0); GUIDEMO_Wait(); #if GUI_SUPPORT_AA #if GUIDEMO_LARGE GUIDEMO_ShowInfo("Circles with\nAntialiasing"); #endif GUI_Clear(); GUI_SetColor(GUI_WHITE); #if GUIDEMO_LARGE GUI_DispStringAt("Antialiased\ncircle", 0, 0); #endif GUI_AA_FillCircle(XSize / 2, YSize / 2, 47); GUIDEMO_Wait(); #endif }
/******************************************************************** * * _DrawBitmap */ static _DrawBitmap(const GUI_BITMAP* pBitmap, int x, int y, int Trans, int XOr) { GUI_LOGPALETTE Pal; GUI_BITMAP Bitmap; int PrevDM; memcpy(&Bitmap, pBitmap, sizeof(GUI_BITMAP)); memcpy(&Pal, Bitmap.pPal, sizeof(GUI_LOGPALETTE)); Bitmap.pPal = &Pal; Pal.HasTrans = Trans; PrevDM = GUI_SetDrawMode((XOr) ? GUI_DM_XOR : 0); GUI_DrawBitmap(&Bitmap, x, y); GUI_SetDrawMode(PrevDM); }
//@@@@@@@@@@@@@@@@@@@@@ 删除指针形状 @@@@@@@@@@@@@@@@@@@@@@@@@@ void delete_point(void) { GUI_SetDrawMode(GUI_DM_NORMAL); GUI_SetColor(GUI_GREEN); GUI_DrawRect(store_x+2,store_y+2,store_x+18,store_y+18); }
void key_s3c(void) { int which_key,i; while((rPDATG & 0xf0)==0xf0); which_key=rPDATG&0xf0; switch(which_key) { case 0xe0: Led_Display(0x1); point.y_point-=20; if(point.y_point<20) point.y_point=200; break; case 0xd0: Led_Display(0x2); point.x_point-=20; if(point.x_point<20) point.x_point=200; break; case 0xb0: Led_Display(0x4); if( map[point.y_map][point.x_map]==0 ) { change_color(); map[point.y_map][point.x_map]=point.color; draw_map(); if( if_won(point.y_map,point.x_map,point.color) ) { GUI_SetTextMode(GUI_DM_TRANS); //设置为透明 GUI_SetFont(&GUI_Font8x16x1x2); GUI_DispStringAt("win!",250,90); for(i=0;i<20;i++) GUI_Delay(1000); map_initial(); GUI_SetDrawMode(GUI_DM_NORMAL); GUI_SetColor(GUI_GREEN); GUI_FillRect(0,0,320,240); draw_net(); draw_point(); } } break; case 0x70: Led_Display(0x7); /* point.x_point+=20; if(point.x_point>200) point.x_point-=20;*/ break; default : break; } }
//@@@@@@@@@@@@@@@@@@@@@ 画出当前光标所在的位置 @@@@@@@@@@@@@@@@@@ void draw_point(void) { GUI_SetDrawMode(GUI_DM_NORMAL); GUI_SetColor(GUI_BLUE); GUI_DrawRect(point.x_point+2,point.y_point+2,point.x_point+18,point.y_point+18); }
void GL_SetDefault(void) { GUI_SetBkColor(GUI_DEFAULT_BKCOLOR); GUI_SetColor (GUI_DEFAULT_COLOR); GUI_SetPenSize(1); GUI_SetTextAlign(0); GUI_SetTextMode(0); GUI_SetDrawMode(0); GUI_SetFont(GUI_DEFAULT_FONT); GUI_SetLineStyle(GUI_LS_SOLID); }
//@@@@@@@@@@@@@@@@@@@@@@ 绘制网格 @@@@@@@@@@@@@@@@@@@@@@@@@@ void draw_net(void) { int i; GUI_SetDrawMode(GUI_DM_NORMAL); GUI_SetColor(GUI_RED); for(i=0;i<=10;i++) GUI_DrawHLine(20+20*i,20,220); //y,x0,x1 for(i=0;i<=10;i++) GUI_DrawVLine(20+20*i,20,220); //x,y0,y1 }
/********************************************************************* * * GUI_InvertRect */ void GUI_InvertRect(int x0, int y0, int x1, int y1) { GUI_DRAWMODE PrevDraw; #if (GUI_WINSUPPORT) GUI_RECT r; #endif GUI_LOCK(); PrevDraw = GUI_SetDrawMode(GUI_DRAWMODE_XOR); #if (GUI_WINSUPPORT) WM_ADDORG(x0, y0); WM_ADDORG(x1, y1); r.x0 = x0; r.x1 = x1; r.y0 = y0; r.y1 = y1; WM_ITERATE_START(&r); { #endif LCD_FillRect(x0, y0, x1, y1); #if (GUI_WINSUPPORT) } WM_ITERATE_END(); #endif GUI_SetDrawMode(PrevDraw); GUI_UNLOCK(); }
void DispInit(void) { LcdInit(); LCD_OFF(); GUI_Init(); GUI_SetBkColor(GUI_BLACK); GUI_Clear(); GUI_SetDrawMode(GUI_DRAWMODE_NORMAL); GUI_DrawBitmap(&bm_yanghe_logo,0,0); LCD_ON(); Delay_Ms(2000); GUI_SetFont(&GUI_NOW_FONT); Display_Welcome(); }
//@@@@@@@@@@@@@@@@@@@@@ 屏幕上显示的按键 @@@@@@@@@@@@@@@@@@@@@@@@@@ static void Button(void) { BUTTON_Handle hButton[6]; int t=0; int i=0; /* Create the button*/ //BUTTON_SetBkColor(hButton[0],0,GUI_RED); hButton[0] = BUTTON_Create(260, 160, 20, 20, 1, WM_CF_SHOW); hButton[1] = BUTTON_Create(240, 180, 20, 20, 2, WM_CF_SHOW); hButton[2] = BUTTON_Create(260, 180, 20, 20, 3, WM_CF_SHOW); hButton[3] = BUTTON_Create(280, 180, 20, 20, 4, WM_CF_SHOW); hButton[4] = BUTTON_Create(260, 220, 20, 20, 5, WM_CF_SHOW); //hButton[5] = BUTTON_Create(240, 220, 20, 20, 6, WM_CF_SHOW); BUTTON_SetText(hButton[0], "w"); BUTTON_SetText(hButton[1], "a"); BUTTON_SetText(hButton[2], "s"); BUTTON_SetText(hButton[3], "d"); BUTTON_SetText(hButton[4], "B"); //BUTTON_SetText(hButton[5], "W"); t=GUI_WaitKey(); switch( t ) { case 1: point.y_point-=20; if(point.y_point<20) point.y_point+=20; break; case 2: point.x_point-=20; if(point.x_point<20) point.x_point+=20; break; case 3: point.y_point+=20; if(point.y_point>200) point.y_point-=20; break; case 4: point.x_point+=20; if(point.x_point>200) point.x_point-=20; break; case 5: if( map[point.y_map][point.x_map]==0 ) { change_color(); map[point.y_map][point.x_map]=point.color; draw_map(); if( if_won(point.y_map,point.x_map,point.color) ) { GUI_SetTextMode(GUI_DM_TRANS); //设置为透明 GUI_SetFont(&GUI_Font8x16x1x2); GUI_DispStringAt("win!",250,90); for(i=0;i<5;i++) GUI_Delay(1000); map_initial(); GUI_SetDrawMode(GUI_DM_NORMAL); GUI_SetColor(GUI_GREEN); GUI_FillRect(0,0,320,240); draw_net(); draw_point(); } } break; case 6: /* if( map[point.y_map][point.x_map]==0 ) map[point.y_map][point.x_map]=1; */ break; default: break; } for(t=0;t<6;t++) BUTTON_Delete(hButton[t]); }
static int StaticCtrlProc (__gui_msg_t *msg) { __u32 dwStyle; static_data_t* pData; dwStyle = GUI_WinGetStyle(msg->h_deswin); switch(msg->id) { case GUI_MSG_CREATE: pData = (static_data_t*) orange_malloc(sizeof(static_data_t)); if (pData == NULL) { return ORANGE_FAIL; } pData->status = 0; pData->hmem = 0; pData->str_move = 0; pData->data = (__u32)GUI_WinGetAttr(msg->h_deswin); GUI_CtrlWinSetAddData(msg->h_deswin,(__u32)pData); return 0; case GUI_MSG_DESTROY: pData = (static_data_t*)GUI_CtrlWinGetAddData(msg->h_deswin); if(pData->str_move) { GUI_LongStringDelete(pData->str_move); } orange_mfree ((void *)GUI_CtrlWinGetAddData(msg->h_deswin)); return 0; case GUI_MSG_ENABLE: if (msg->dwAddData1 && (dwStyle & WS_DISABLED)) { dwStyle &= ~WS_DISABLED; GUI_WinSetStyle(msg->h_deswin,dwStyle); } else if (!msg->dwAddData1 && !(dwStyle & WS_DISABLED)) { dwStyle |= WS_DISABLED; GUI_WinSetStyle(msg->h_deswin,dwStyle); } else { return 0; } return 0; case GUI_MSG_SET_UNFOCUS: if((STATIC_DRAWSTATUS(msg->h_deswin) & STATICST_FOCUS)) { STATIC_DRAWSTATUS(msg->h_deswin) &= (~STATICST_FOCUS); GUI_InvalidateRect (msg->h_deswin, NULL, ORANGE_TRUE); } return 0; case GUI_MSG_SET_FOCUS: if(!(STATIC_DRAWSTATUS(msg->h_deswin) & STATICST_FOCUS)) { STATIC_DRAWSTATUS(msg->h_deswin) |= STATICST_FOCUS; GUI_InvalidateRect (msg->h_deswin, NULL, ORANGE_TRUE); } return 0; case GUI_MSG_KEY: switch(msg->dwAddData1) { /*case GUI_MSG_KEY_RISE: { { __gui_notify_msg_t notify_msg; notify_msg.hWnd = msg->h_deswin; notify_msg.id = GUI_WinGetItemId(msg->h_deswin); notify_msg.msgcode = STN_CLICKED; notify_msg.dwAddData= last_key; GUI_NotifyParent (¬ify_msg); } } return 0;*/ case GUI_MSG_KEY_DOWN: { if(msg->dwAddData2 == KEY_UP_ACTION) { { __gui_notify_msg_t notify_msg; notify_msg.hWnd = msg->h_deswin; notify_msg.id = GUI_WinGetItemId(msg->h_deswin); notify_msg.msgcode = STN_CLICKED; notify_msg.dwAddData= last_key; GUI_NotifyParent (¬ify_msg); } } if(msg->dwAddData2 == KEY_DOWN_ACTION) { { __gui_notify_msg_t notify_msg; notify_msg.hWnd = msg->h_deswin; notify_msg.id = GUI_WinGetItemId(msg->h_deswin); notify_msg.msgcode = STN_PUSHED; notify_msg.dwAddData= GUI_MSG_KEY_DOWN; GUI_NotifyParent (¬ify_msg); } } } return 0; case GUI_MSG_KEY_ENTER: { if(msg->dwAddData2 == KEY_UP_ACTION) { { __gui_notify_msg_t notify_msg; notify_msg.hWnd = msg->h_deswin; notify_msg.id = GUI_WinGetItemId(msg->h_deswin); notify_msg.msgcode = STN_CLICKED; notify_msg.dwAddData= last_key; GUI_NotifyParent (¬ify_msg); } } if(msg->dwAddData2 == KEY_DOWN_ACTION) { { __gui_notify_msg_t notify_msg; notify_msg.hWnd = msg->h_deswin; notify_msg.id = GUI_WinGetItemId(msg->h_deswin); notify_msg.msgcode = STN_PUSHED; notify_msg.dwAddData= GUI_MSG_KEY_ENTER; GUI_NotifyParent (¬ify_msg); } } } return 0; case GUI_MSG_KEY_RIGHT: case GUI_MSG_KEY_LEFT: case GUI_MSG_KEY_UP: default: { if(msg->dwAddData2 == KEY_UP_ACTION) { { __gui_notify_msg_t notify_msg; notify_msg.hWnd = msg->h_deswin; notify_msg.id = GUI_WinGetItemId(msg->h_deswin); notify_msg.msgcode = STN_CLICKED; notify_msg.dwAddData= last_key; GUI_NotifyParent (¬ify_msg); } } if(msg->dwAddData2 == KEY_DOWN_ACTION) { { __gui_notify_msg_t notify_msg; notify_msg.hWnd = msg->h_deswin; notify_msg.id = GUI_WinGetItemId(msg->h_deswin); notify_msg.msgcode = STN_PUSHED; notify_msg.dwAddData= msg->dwAddData1; GUI_NotifyParent (¬ify_msg); } } } break; } /*if(msg->dwAddData1 != GUI_MSG_KEY_RISE) { last_key = msg->dwAddData1; } else { last_key = 0xffffffff; }*/ last_key = msg->dwAddData1; return 0; case GUI_MSG_TOUCH: { switch(msg->dwAddData1) { case GUI_MSG_TOUCH_DOWN: { { __gui_notify_msg_t notify_msg; notify_msg.hWnd = msg->h_deswin; notify_msg.id = GUI_WinGetItemId(msg->h_deswin); notify_msg.msgcode = STN_PUSHED; notify_msg.dwAddData= 0; GUI_NotifyParent (¬ify_msg); } } break; case GUI_MSG_TOUCH_UP: { { __gui_notify_msg_t notify_msg; notify_msg.hWnd = msg->h_deswin; notify_msg.id = GUI_WinGetItemId(msg->h_deswin); notify_msg.msgcode = STN_CLICKED; notify_msg.dwAddData= 0; GUI_NotifyParent (¬ify_msg); } } break; } } return 0; case GUI_MSG_WIN_WAKEUP: case GUI_MSG_PAINT: { __gui_rect_t rcrect; RECT fbrect; //void *pBMP; static_data_t *static_data; static_para_t *user_data; //__u32 color; //static_data = (static_para_t *)GUI_CtrlWinGetAddData(msg->h_deswin); user_data = (static_para_t *)(((static_data_t *)GUI_CtrlWinGetAddData(msg->h_deswin))->data); static_data = (static_data_t *)GUI_CtrlWinGetAddData(msg->h_deswin); GUI_LyrWinSel(GUI_LyrP2H(GUI_WinGetLyrWin(msg->h_deswin))); GUI_WinGetClientFBRect(msg->h_deswin,&fbrect); if(!static_data->hmem && (GUI_WinGetStyle(msg->h_deswin) & WS_MEMDEV)) { #if GUI_CORE_MEMDEV_EN //avoid complier error, by Derek static_data->hmem = GUI_MEMDEV_Create(fbrect.x,fbrect.y,fbrect.width,fbrect.height); #endif } SysRectToGuiRect(&fbrect,&rcrect); if(static_data->hmem) { #if GUI_CORE_MEMDEV_EN //avoid complier error, by Derek GUI_MEMDEV_Select(static_data->hmem); // start memory device #endif } if (STATIC_DRAWSTATUS(msg->h_deswin) & STATICST_FOCUS) { GUI_RECT rect; GUI_SetBkColor(user_data->bk_color); GUI_ClearRect(rcrect.left,rcrect.top, rcrect.right,rcrect.bottom); if(user_data->focus_bmp) { GUI_BMP_Draw(user_data->focus_bmp, rcrect.left + user_data->bmp_pos.x, rcrect.top + user_data->bmp_pos.y); } if(user_data->alpha_en) { GUI_OpenAlphaBlend(); } GUI_CharSetToEncode(user_data->draw_code); GUI_SetFont(user_data->draw_font); GUI_SetDrawMode(GUI_DRAWMODE_TRANS); GUI_SetColor(user_data->ftxt_color); rect.x0 = rcrect.left; rect.y0 = rcrect.top; rect.x1 = rcrect.right; rect.y1 = rcrect.bottom; if(!user_data->txt_align) { GUI_DispStringAt(user_data->text, rcrect.left + user_data->text_pos.x, rcrect.top + user_data->text_pos.y); } else { GUI_DispStringInRect(user_data->text,&rect,user_data->txt_align); } } else { GUI_RECT rect; GUI_SetBkColor(user_data->bk_color); GUI_ClearRect(rcrect.left,rcrect.top, rcrect.right,rcrect.bottom); if(user_data->unfocus_bmp) { GUI_BMP_Draw(user_data->unfocus_bmp, rcrect.left + user_data->bmp_pos.x, rcrect.top + user_data->bmp_pos.y); } if(user_data->alpha_en) { GUI_OpenAlphaBlend(); } GUI_CharSetToEncode(user_data->draw_code); GUI_SetFont(user_data->draw_font); GUI_SetDrawMode(GUI_DRAWMODE_TRANS); GUI_SetColor(user_data->uftxt_color); rect.x0 = rcrect.left; rect.y0 = rcrect.top; rect.x1 = rcrect.right; rect.y1 = rcrect.bottom; if(!user_data->txt_align) { GUI_DispStringAt(user_data->text, rcrect.left + user_data->text_pos.x, rcrect.top + user_data->text_pos.y); } else { GUI_DispStringInRect(user_data->text,&rect,user_data->txt_align); } } if(static_data->hmem) { #if GUI_CORE_MEMDEV_EN //avoid complier error, by Derek GUI_MEMDEV_CopyToLCD( static_data->hmem ); // copy from memory device to fb GUI_MEMDEV_Select( NULL ); // stop memory device GUI_MEMDEV_Delete(static_data->hmem); #endif static_data->hmem = NULL; } if(user_data->alpha_en) { GUI_CloseAlphaBlend(); } GUI_LyrWinFlushFB(GUI_WinGetLyrWin(msg->h_deswin)); } return 0; default: break; } return GUI_CtrlWinDefaultProc (msg); }
static void _spinbox_ctrl_paint(__gui_msg_t * msg) { char str[128]; __gui_rect_t rcrect; RECT fbrect; spinbox_data_t *spinbox_data; spinbox_para_t *user_data; user_data = (spinbox_para_t *)(((spinbox_data_t *)GUI_CtrlWinGetAddData(msg->h_deswin))->data); spinbox_data = (spinbox_data_t *)GUI_CtrlWinGetAddData(msg->h_deswin); GUI_LyrWinSel((H_LYR)GUI_WinGetLyrWin(msg->h_deswin)); GUI_WinGetClientFBRect(msg->h_deswin,&fbrect); if(!spinbox_data->hmem) { #if GUI_CORE_MEMDEV_EN //avoid complier error, by Derek spinbox_data->hmem = GUI_MEMDEV_Create(fbrect.x,fbrect.y,fbrect.width,fbrect.height); GUI_MEMDEV_Select(spinbox_data->hmem); #endif } SysRectToGuiRect(&fbrect,&rcrect); GUI_OpenAlphaBlend(); if (SPINBOX_DRAWSTATUS(msg->h_deswin) & BST_PUSHED) { GUI_SetBkColor(user_data->bk_color); GUI_ClearRect(rcrect.left, rcrect.top, rcrect.right, rcrect.bottom); GUI_CharSetToEncode(user_data->draw_code); GUI_SetFont(user_data->draw_font); GUI_SetDrawMode(GUI_DRAWMODE_TRANS); if(SPINBOX_DRAWFLAG(msg->h_deswin) & BST_LEFT) { GUI_BMP_Draw(user_data->ufup_bmp, rcrect.left + user_data->upbmp_pos.x, rcrect.top + user_data->upbmp_pos.y); GUI_BMP_Draw(user_data->fdn_bmp, rcrect.left + user_data->dnbmp_pos.x, rcrect.top + user_data->dnbmp_pos.y); } else { GUI_BMP_Draw(user_data->fup_bmp, rcrect.left + user_data->upbmp_pos.x, rcrect.top + user_data->upbmp_pos.y); GUI_BMP_Draw(user_data->ufdn_bmp, rcrect.left + user_data->dnbmp_pos.x, rcrect.top + user_data->dnbmp_pos.y); } GUI_SetColor(user_data->ftxt_color); eLIBs_uint2str_dec(user_data->cur_value, str); GUI_DispStringHCenterAt(str, rcrect.left + user_data->text_pos.x, rcrect.top + user_data->text_pos.y); } else { GUI_SetBkColor(user_data->bk_color); GUI_ClearRect(rcrect.left, rcrect.top, rcrect.right, rcrect.bottom); GUI_CharSetToEncode(user_data->draw_code); GUI_SetFont(user_data->draw_font); GUI_SetDrawMode(GUI_DRAWMODE_TRANS); GUI_BMP_Draw(user_data->ufup_bmp, rcrect.left + user_data->upbmp_pos.x, rcrect.top + user_data->upbmp_pos.y); GUI_BMP_Draw(user_data->ufdn_bmp, rcrect.left + user_data->dnbmp_pos.x, rcrect.top + user_data->dnbmp_pos.y); GUI_SetColor(user_data->uftxt_color); eLIBs_uint2str_dec(user_data->cur_value, str); GUI_DispStringHCenterAt(str, rcrect.left + user_data->text_pos.x,rcrect.top + user_data->text_pos.y); } GUI_LyrWinFlushFB((H_LYR)GUI_WinGetLyrWin(msg->h_deswin)); GUI_CloseAlphaBlend(); if(spinbox_data->hmem) { #if GUI_CORE_MEMDEV_EN //avoid complier error, by Derek GUI_MEMDEV_CopyToLCD( spinbox_data->hmem ); GUI_MEMDEV_Select( NULL ); GUI_MEMDEV_Delete(spinbox_data->hmem); #endif spinbox_data->hmem = NULL; } }