/******************************************************************* * * _ShowBMP * * Shows the contents of a bitmap file */ static void _ShowBMP(const char * sFilename) { int XSize, YSize, XPos, YPos; DWORD NumBytesRead; HANDLE hFile = CreateFile(sFilename, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); DWORD FileSize = GetFileSize(hFile, NULL); char * pFile = malloc(FileSize); ReadFile(hFile, pFile, FileSize, &NumBytesRead, NULL); CloseHandle(hFile); GUI_ClearRect(0, 60, 319, 239); XSize = GUI_BMP_GetXSize(pFile); YSize = GUI_BMP_GetYSize(pFile); XPos = (XSize > 320) ? 0 : 160 - (XSize / 2); YPos = (YSize > 180) ? 60 : 150 - (YSize / 2); if (!GUI_BMP_Draw(pFile, XPos, YPos)) { GUI_Delay(2000); } free(pFile); }
/* 显示BMP图片 */ static int _DrawBMPFile(char *path) { FRESULT rc; uint32_t size; FIL fil; uint8_t *pFile = (uint8_t*)SRAM_START_ADDRESS; UINT br; /* 读取文件 */ rc = f_open(&fil, path, FA_READ); ERROR_TRACE(rc); if(rc) return 1; size = f_size(&fil); printf("file size:%d\r\n", size); if(size > SRAM_SIZE) { printf("file size to large\r\n"); rc = f_close(&fil); return 2; } rc = f_read(&fil, pFile, size, &br); if(rc || br != size) { printf("file data read failed\r\n"); rc = f_close(&fil); return 3; } printf("Xsize:%d Ysize:%d\r\n", GUI_BMP_GetXSize(pFile), GUI_BMP_GetYSize(pFile)); GUI_Clear(); if(GUI_BMP_Draw(pFile, 0, 0)) { GUI_DispString("BMP file display failed!"); } rc = f_close(&fil); ERROR_TRACE(rc); return 0; }
/*---------------------------------------------------------------------------* * Routine: _PFMainDialog *---------------------------------------------------------------------------* * Description: * Callback function used by emWin to process events. * Inputs: * WM_MESSAGE *pMsg -- message structure for current dialog. *---------------------------------------------------------------------------*/ static void _PFMainDialog(WM_MESSAGE *pMsg) { int Id, NCode; WM_HWIN hItem; GUI_PID_STATE *p_touchState; T_ImageMessage message; switch (pMsg->MsgId){ case WM_INIT_DIALOG: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; LAFSetup(pMsg->hWin, ID_WINDOW, PFMainLayout); hItem = WM_GetDialogItem(pMsg->hWin, ID_REVERSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &REVERSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &REVERSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &REVERSE_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_PAUSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &PLAY_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &PLAY_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &PLAY_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_FORWARD_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &FORWARD_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &FORWARD_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &FORWARD_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_SETTINGS_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &SETTINGS_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &SETTINGS_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &SETTINGS_BUTTON); G_OverlayTimer = WM_CreateTimer(pMsg->hWin, ID_OVERLAY_TIMER, OVERLAY_TIMEOUT_MS, 0); G_UpdateTimer = WM_CreateTimer(pMsg->hWin, ID_UPDATE_TIMER, UPDATE_TIME_MS, 0); G_PictureChangeTimer = WM_CreateTimer(pMsg->hWin, ID_PICTURECHANGE_TIMER, 0, 0); if (!G_Current) { G_Current = GUI_MEMDEV_Create(0, 0, UEZ_LCD_DISPLAY_WIDTH, UEZ_LCD_DISPLAY_HEIGHT); GUI_MEMDEV_Select(G_Current); GUI_BMP_Draw(G_CurrentImage, 0, 0); GUI_MEMDEV_Select(0); } WM_SetHasTrans(pMsg->hWin); message = IMAGE_INITILIZE; UEZQueueSend(G_ImageLoadQueue, (void*)&message, 50); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; if( !LAFHandleEvent(PFMainLayout, pMsg, NCode, Id)){ //Handle special cases here } break; case WM_TIMER: NCode = pMsg->Data.v; if (G_Active) { if (NCode == G_OverlayTimer) { IHideButtonsAndText(pMsg); //Grab all the touches WM_SetCapture(pMsg->hWin, 0); } else if (NCode == G_PictureChangeTimer) { //put up new picture if(G_AutoPlayOn) { IHandleForward(pMsg, WM_NOTIFICATION_RELEASED, ID_FORWARD_BUTTON); WM_RestartTimer(G_PictureChangeTimer, 5000); } } else if (NCode == G_UpdateTimer) { IUpdateFields(pMsg); WM_RestartTimer(G_UpdateTimer, UPDATE_TIME_MS); } } break; case WM_TOUCH: p_touchState = (GUI_PID_STATE *)(pMsg->Data.p); if (!p_touchState->Pressed) { WM_RestartTimer(G_OverlayTimer, OVERLAY_TIMEOUT_MS); //Show all the hidden text on buttons hItem = WM_GetDialogItem(pMsg->hWin, ID_TITLE_TEXT); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_SETTINGS_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_REVERSE_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_PAUSE_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_FORWARD_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_TIMEDATE_TEXT); WM_ShowWindow(hItem); WM_ReleaseCapture(); IUpdateFields(pMsg); } break; case WM_POST_PAINT: GUI_BMP_Draw(G_CurrentImage, 0, 0); break; case WM_APP_GAINED_FOCUS: G_Active = ETrue; WM_SetCapture(pMsg->hWin, 0); IHideButtonsAndText(pMsg); IUpdateFields(pMsg); break; case WM_APP_LOST_FOCUS: G_Active = EFalse; IHideButtonsAndText(pMsg); WM_ReleaseCapture(); G_AutoPlayOn = EFalse; break; default: WM_DefaultProc(pMsg); break; } }
int SimpleSliderDraw(void * handler, H_LYR layer, RECT * rect, int current) { SimpleSliderDesc * desc; int i; int blocks; OFFSET locat; HTHEME bmpTheme; void * bmpData; #ifndef REGULAR_DRAW HBLOCK backbg; HBLOCK foreg; FB fb; #endif if (NULL == handler) { return -1; } desc = (SimpleSliderDesc *)handler; // To get the current display position current = (current > desc->cls.limit) ? desc->cls.limit : current; blocks = (current * desc->cls.bmp_nr) / desc->cls.limit; blocks = (blocks > desc->cls.bmp_nr) ? desc->cls.bmp_nr : blocks; #ifndef REGULAR_DRAW GUI_LyrWinGetFB(layer, &fb); backbg = GUI_BlockCreateFrom(NULL, fb.size.width, fb.size.height, fb.addr[0], 0); #endif GUI_LyrWinSel(layer); if (desc->drew_position < 0) { for (i = 1; i <= blocks; i++) { if (0 == getStartPoint(&locat, &desc->cls.start_point, desc->cls.direc, i, desc->cls.bmp_nr, &desc->cls.puzzle)) { bmpTheme = dsk_theme_open(desc->bmps[i - 1]); bmpData = dsk_theme_hdl2buf(bmpTheme); #ifdef REGULAR_DRAW GUI_BMP_Draw(bmpData, locat.x + rect->x, locat.y + rect->y); #else eLIBs_memcpy(desc->puzzleData, (void *)((int)bmpData + BITMAPHEADERSIZE), desc->puzzleDataSize); foreg = GUI_BlockCreateFrom(NULL, desc->cls.puzzle.width, desc->cls.puzzle.height, desc->puzzleData, 0); GUI_BlockBitBlit(backbg, locat.x + rect->x, locat.y + rect->y, foreg, NULL, BLITFLAG_COLORALPHA, NULL); GUI_BlockDelete(foreg); #endif dsk_theme_close(bmpTheme); // LogMI("Simple Slider Piece x = %d, y = %d, bmp = %d", locat.x, locat.y, i - 1); } } for (; i <= desc->cls.bmp_nr; i++) { if (0 == getStartPoint(&locat, &desc->cls.start_point, desc->cls.direc, i, desc->cls.bmp_nr, &desc->cls.puzzle)) { bmpTheme = dsk_theme_open(desc->cls.bgbmp_piece); bmpData = dsk_theme_hdl2buf(bmpTheme); #ifdef REGULAR_DRAW GUI_BMP_Draw(bmpData, locat.x + rect->x, locat.y + rect->y); #else eLIBs_memcpy(desc->puzzleData, (void *)((int)bmpData + BITMAPHEADERSIZE), desc->puzzleDataSize); foreg = GUI_BlockCreateFrom(NULL, desc->cls.puzzle.width, desc->cls.puzzle.height, desc->puzzleData, 0); GUI_BlockBitBlit(backbg, locat.x + rect->x, locat.y + rect->y, foreg, NULL, BLITFLAG_COLORALPHA, NULL); GUI_BlockDelete(foreg); #endif dsk_theme_close(bmpTheme); // LogMI("Simple Slider Piece x = %d, y = %d", locat.x, locat.y); } } } else if (desc->drew_position < blocks) { for (i = 1 + desc->drew_position; i <= blocks; i++) { if (0 == getStartPoint(&locat, &desc->cls.start_point, desc->cls.direc, i, desc->cls.bmp_nr, &desc->cls.puzzle)) { bmpTheme = dsk_theme_open(desc->bmps[i - 1]); bmpData = dsk_theme_hdl2buf(bmpTheme); #ifdef REGULAR_DRAW GUI_BMP_Draw(bmpData, locat.x + rect->x, locat.y + rect->y); #else eLIBs_memcpy(desc->puzzleData, (void *)((int)bmpData + BITMAPHEADERSIZE), desc->puzzleDataSize); foreg = GUI_BlockCreateFrom(NULL, desc->cls.puzzle.width, desc->cls.puzzle.height, desc->puzzleData, 0); GUI_BlockBitBlit(backbg, locat.x + rect->x, locat.y + rect->y, foreg, NULL, BLITFLAG_COLORALPHA, NULL); GUI_BlockDelete(foreg); #endif dsk_theme_close(bmpTheme); // LogMI("Simple Slider Piece x = %d, y = %d, bmp = %d", locat.x, locat.y, i - 1); } } } else if (desc->drew_position > blocks) { for (i = desc->drew_position; i > blocks; i--) { if (0 == getStartPoint(&locat, &desc->cls.start_point, desc->cls.direc, i, desc->cls.bmp_nr, &desc->cls.puzzle)) { bmpTheme = dsk_theme_open(desc->cls.bgbmp_piece); bmpData = dsk_theme_hdl2buf(bmpTheme); #ifdef REGULAR_DRAW GUI_BMP_Draw(bmpData, locat.x + rect->x, locat.y + rect->y); #else eLIBs_memcpy(desc->puzzleData, (void *)((int)bmpData + BITMAPHEADERSIZE), desc->puzzleDataSize); foreg = GUI_BlockCreateFrom(NULL, desc->cls.puzzle.width, desc->cls.puzzle.height, desc->puzzleData, 0); GUI_BlockBitBlit(backbg, locat.x + rect->x, locat.y + rect->y, foreg, NULL, BLITFLAG_COLORALPHA, NULL); GUI_BlockDelete(foreg); #endif dsk_theme_close(bmpTheme); // LogMI("Simple Slider Piece x = %d, y = %d", locat.x, locat.y); } } } desc->drew_position = blocks; #ifndef REGULAR_DRAW GUI_BlockDelete(backbg); #endif return 0; }
static H_LYR StandyWndCreate(const char *file_path) { H_LYR hLyr; int rotation; FB frameBuf; ES_FILE *file = NULL; void *file_data = NULL; bmp_file_head_t *f_head= NULL; __layerwincreate_para_t layerWinCreate; __disp_layer_para_t lyrPara; __u32 lenth; file = eLIBs_fopen(file_path,"rb"); if(file == NULL){ __msg("file open fail\n"); //return NULL; goto end; } f_head = eLIBs_malloc(sizeof(bmp_file_head_t)); if(f_head==NULL){ __msg("file malloc fail\n"); goto end; } eLIBs_fread(f_head,1,sizeof(bmp_file_head_t),file); if(f_head->bfType[0]!='B'||f_head->bfType[1]!='M'){ __msg("file isnot bmp\n"); goto end; } file_data = eLIBs_malloc(f_head->bfSize); eLIBs_fseek(file,0,SEEK_SET); lenth = eLIBs_fread(file_data,1,f_head->bfSize,file); __msg("lenth==%d\n",lenth); rotation = GUI_GetScnDir(); MwLayerParaInit(&layerWinCreate, &frameBuf, &lyrPara, "Layer", rotation, 1, 320, 240); MwFillSize(&frameBuf.size, 320 , 240); MwFillRect(&lyrPara.src_win, 0, 0, 320, 240); hLyr = GUI_LyrWinCreate(&layerWinCreate); if (NULL == hLyr) { __msg("Create layer (%s) failed", layerWinCreate.name); goto end; } GUI_LyrWinSel(hLyr); GUI_BMP_Draw(file_data, 0, 0); GUI_LyrWinSetSta(hLyr,GUI_LYRWIN_STA_ON); eLIBs_fclose(file); eLIBs_free(f_head); eLIBs_free(file_data); return hLyr; end: if(file){ eLIBs_fclose(file); } if(f_head){ eLIBs_free(f_head); } if(file_data){ eLIBs_free(file_data); } return NULL; }
static __s32 clockWndProc(__gui_msg_t * msg) { __u32 clockhands[CLOCKHANDS]; FB fb; HTHEME hback; HBLOCK block; void * pic; int length; int start_x; int start_y; ClockPrivate * draw; draw = (ClockPrivate *)GUI_WinGetAttr(msg->h_deswin); if ((!draw) || (-1 == EWin_CheckInherit(&draw->scrolling.ewii)) || (!(draw->scrolling.ewii.mask[0] & SCR_WNDINFOMASK_SBUTTON))) { LogE("Null or wrong scrolling page window private data"); return -1; } switch (msg->id) { case GUI_MSG_CREATE: draw->scrolling.ewii.mask[0] |= SCR_WNDINFOMASK_GESTURE; clockhands[0] = ID_CLOCK_PNG_DIG_HAND_H1_BMP; clockhands[1] = ID_CLOCK_PNG_DIG_HAND_H2_BMP; clockhands[2] = ID_CLOCK_PNG_DIG_HAND_H3_BMP; clockhands[3] = ID_CLOCK_PNG_DIG_HAND_H4_BMP; clockhands[4] = ID_CLOCK_PNG_DIG_HAND_H5_BMP; clockhands[5] = ID_CLOCK_PNG_DIG_HAND_H6_BMP; clockhands[6] = ID_CLOCK_PNG_DIG_HAND_H7_BMP; clockhands[7] = ID_CLOCK_PNG_DIG_HAND_H8_BMP; draw->hhdl = picswap_quadrant_begin(clockhands, 25, 80); clockhands[0] = ID_CLOCK_PNG_DIG_HAND_M1_BMP; clockhands[1] = ID_CLOCK_PNG_DIG_HAND_M2_BMP; clockhands[2] = ID_CLOCK_PNG_DIG_HAND_M3_BMP; clockhands[3] = ID_CLOCK_PNG_DIG_HAND_M4_BMP; clockhands[4] = ID_CLOCK_PNG_DIG_HAND_M5_BMP; clockhands[5] = ID_CLOCK_PNG_DIG_HAND_M6_BMP; clockhands[6] = ID_CLOCK_PNG_DIG_HAND_M7_BMP; clockhands[7] = ID_CLOCK_PNG_DIG_HAND_M8_BMP; draw->mhdl = picswap_quadrant_begin(clockhands, 25, 80); clockhands[0] = ID_CLOCK_PNG_DIG_HAND_S1_BMP; clockhands[1] = ID_CLOCK_PNG_DIG_HAND_S2_BMP; clockhands[2] = ID_CLOCK_PNG_DIG_HAND_S3_BMP; clockhands[3] = ID_CLOCK_PNG_DIG_HAND_S4_BMP; clockhands[4] = ID_CLOCK_PNG_DIG_HAND_S5_BMP; clockhands[5] = ID_CLOCK_PNG_DIG_HAND_S6_BMP; clockhands[6] = ID_CLOCK_PNG_DIG_HAND_S7_BMP; clockhands[7] = ID_CLOCK_PNG_DIG_HAND_S8_BMP; draw->shdl = picswap_quadrant_begin(clockhands, 25, 80); draw->bgicon = ID_CLOCK_BMP_DIGITALCLOCK_BG_BMP; GUI_LyrWinGetFB(draw->scrolling.ewii.lyrLow, &fb); draw->bgblock = GUI_BlockCreateFrom(NULL, fb.size.width, fb.size.height, fb.addr[0], 0); GUI_LyrWinGetFB(draw->scrolling.ewii.lyrHigher, &fb); draw->forgblock = GUI_BlockCreateFrom(NULL, fb.size.width, fb.size.height, fb.addr[0], 0); esTIME_GetTime(&draw->tm); draw->minute = draw->tm.minute; draw->invalidate |= INVALIDATE_BACKGROUND|INVALIDATE_FOREGROUND; break; case GUI_MSG_DESTROY: GUI_BlockDelete(draw->forgblock); GUI_BlockDelete(draw->bgblock); picswap_quadrant_end(draw->shdl); picswap_quadrant_end(draw->mhdl); picswap_quadrant_end(draw->hhdl); esMEMS_Mfree(0, draw); break; case GUI_MSG_PAINT: if (draw->invalidate & INVALIDATE_BACKGROUND) { #ifdef THIS_DEBUG log_d("Invalidate background"); #endif GUI_LyrWinSel(draw->scrolling.ewii.lyrLow); hback = dsk_Systheme_open(draw->bgicon); pic = dsk_Systheme_hdl2buf(hback); GUI_BMP_Draw(pic, draw->scrolling.wndRect.x, draw->scrolling.wndRect.y); dsk_theme_close(hback); pic = picget_clock_pic(draw->hhdl, (draw->tm.hour % 12) * 5 + (draw->tm.minute / 12), &length, &start_x, &start_y); block = GUI_BlockCreateFrom(NULL, length, length, pic, 0); GUI_BlockBitBlit(draw->bgblock, draw->scrolling.wndRect.x + start_x + WATCH_OFFSET_X, draw->scrolling.wndRect.y + start_y + WATCH_OFFSET_Y, block, NULL, BLITFLAG_COLORALPHA, NULL); GUI_BlockDelete(block); pic = picget_clock_pic(draw->mhdl, draw->tm.minute, &length, &start_x, &start_y); block = GUI_BlockCreateFrom(NULL, length, length, pic, 0); GUI_BlockBitBlit(draw->bgblock, draw->scrolling.wndRect.x + start_x + WATCH_OFFSET_X, draw->scrolling.wndRect.y + start_y + WATCH_OFFSET_Y, block, NULL, BLITFLAG_COLORALPHA, NULL); GUI_BlockDelete(block); } if (draw->invalidate & INVALIDATE_FOREGROUND) { GUI_LyrWinSel(draw->scrolling.ewii.lyrHigher); GUI_SetBkColor(0); GUI_ClearRect(draw->scrolling.wndRect.x, draw->scrolling.wndRect.y, draw->scrolling.wndRect.x + draw->scrolling.wndRect.width, draw->scrolling.wndRect.y + draw->scrolling.wndRect.height); } pic = picget_clock_pic(draw->shdl, draw->tm.second, &length, &start_x, &start_y); block = GUI_BlockCreateFrom(NULL, length, length, pic, 0); GUI_BlockBitBlit(draw->forgblock, draw->scrolling.wndRect.x + start_x + WATCH_OFFSET_X, draw->scrolling.wndRect.y + start_y + WATCH_OFFSET_Y, block, NULL, BLITFLAG_COLORSET, NULL); GUI_BlockDelete(block); draw->invalidate = INVALIDATE_NULL; break; //case GUI_MSG_USER_REPAINT_NEIGHBOR: //draw->invalidate |= (INVALIDATE_BACKGROUND | INVALIDATE_FOREGROUND); case GUI_MSG_TIMER: esTIME_GetTime(&draw->tm); if (draw->minute != draw->tm.minute) { draw->minute = draw->tm.minute; draw->invalidate |= INVALIDATE_BACKGROUND; } #ifdef THIS_DEBUG log_mi("time: %d,%d,%d", draw->tm.hour, draw->tm.minute, draw->tm.second); log_mi("Date: %d,%d,%d", draw->date.year, draw->date.month, draw->date.day); #endif __here__; GUI_WinUpdate(msg->h_deswin, ORANGE_TRUE); break; case GUI_MSG_SET_FOCUS: draw->invalidate |= (INVALIDATE_BACKGROUND | INVALIDATE_FOREGROUND); GUI_SetTimer(msg->h_deswin, 1, 100, NULL); __msg("12"); return 0; case GUI_MSG_SET_UNFOCUS: GUI_KillTimer(msg->h_deswin, 1); return 0; default: break; } return GUI_FrmWinDefaultProc(msg); }
__s32 GUI_LongStringMove(__string_show_info_t *show_info) { if(!show_info->hmem) { ORANGE_WRN("input parameter error!\n"); return ORANGE_FAIL; } /*all can see*/ if(show_info->show_size.width < show_info->region.width) { return ORANGE_OK; } /*clear screen*/ GUI_LyrWinSel(show_info->hlayer); GUI_MEMDEV_Select(show_info->hmem); GUI_SetBkColor(show_info->color); GUI_ClearRect(show_info->region.x,show_info->region.y, show_info->region.x + show_info->region.width - 1, show_info->region.y + show_info->region.height - 1); if(show_info->bk_bmp) { GUI_BMP_Draw(show_info->bk_bmp,show_info->region.x + show_info->bmp_pos.x, show_info->region.y + show_info->bmp_pos.y); } if(show_info->alpha_en) { GUI_OpenAlphaBlend(); } GUI_CharSetToEncode(show_info->encode_id); GUI_SetFont(show_info->pFont); GUI_SetColor(show_info->fontColor); if(show_info->align) { GUI_RECT rect; rect.x0 = show_info->region.x; rect.y0 = show_info->region.y; rect.x1 = show_info->region.x + show_info->region.width - 1; rect.y1 = show_info->region.y + show_info->region.height - 1; GUI_DispStringInRect(show_info->name + show_info->enocde_align_group[show_info->move_step],&rect,show_info->align); } else { GUI_DispStringAt(show_info->name + show_info->enocde_align_group[show_info->move_step], show_info->region.x, show_info->region.y); } GUI_MEMDEV_CopyToLCD(show_info->hmem); GUI_MEMDEV_Select(0); if(show_info->alpha_en) { GUI_CloseAlphaBlend(); } GUI_LyrWinFlushFB(show_info->hlayer); if(show_info->left_move) { SIZE show_size; show_info->move_step++; local_get_string_piexl_rect(show_info->name + show_info->enocde_align_group[show_info->move_step],show_info, &show_size); if(show_size.width < show_info->region.width) { show_info->left_move = 0; } } else { show_info->move_step--; if(show_info->move_step < 0) { show_info->move_step = 0; show_info->left_move = 1; } } return ORANGE_OK; }
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; } }