static void utf16big_config(txtEncodeParser *thiz, ParserConfig *config) { __u16 tmp_chinese; config->p_dispstr = thiz->dispstr; thiz->fd = config->fd; thiz->txtLength = config->len; thiz->viewWidth = config->xScrWidth; // thiz->viewHeight = config->yScrHeight; // thiz->lineofpage = config->lineofpage; // thiz->FontHeight = config->FontHeight; thiz->bufferTxtlen = 0; thiz->start = config->startOffset; if( thiz->start <= 2 ) thiz->bof = EPDK_TRUE; else thiz->bof = EPDK_FALSE; thiz->eof = EPDK_FALSE; thiz->pFont = config->pFont; thiz->hlyr = config->hlyr; GUI_LyrWinSel(thiz->hlyr); GUI_SetTextMode(GUI_TM_TRANS); GUI_SetFont(thiz->pFont); GUI_SetFontMode(GUI_FONTMODE_8BPP256); tmp_chinese = eLIBs_GB2312_to_Unicode(0xced2); thiz->chinese_width = GUI_GetCharDistX(tmp_chinese); }
__u32 TxtLayer_ClearTxtItem(txtlayer_man_t *ptxtlayer,__u32 x,__u32 y) { #if 0 void * base; __u32 bpp; __u32 size; bpp = TxtLayer_GetBPP(ptxtlayer); size = (ptxtlayer->txtlist->head->rect.width * ptxtlayer->txtlist->head->rect.height * ptxtlayer->txtlist->bpp + 7)/8; base = (void *)((__u32)ptxtlayer->txtbuffer->buffer + (ptxtlayer->txtbuffer->rectsz.width * y *bpp + 7)/8 + (x * bpp +7)/8); eLIBs_memset(base, 0x00, size); #else GUI_LyrWinSel(ptxtlayer->layer); GUI_SetBkColor(ptxtlayer->bk_color); GUI_ClearRect(x,y,x + ptxtlayer->txtbuffer->rectsz.width - 1,y + ptxtlayer->txtlist->head->rect.height - 1); #endif return 0; }
__s32 GUI_LongStringStart(__hdle hString) { __string_show_info_t *show_info; if(!hString) { ORANGE_WRN("input parameter error!\n"); return ORANGE_FAIL; } show_info = (__string_show_info_t *)hString; if(show_info->hmem == 0) { GUI_LyrWinSel(show_info->hlayer); show_info->hmem = GUI_MEMDEV_Create( show_info->region.x, show_info->region.y, show_info->region.width, show_info->region.height); if(!show_info->hmem) { ORANGE_WRN("create show info mem device fail\n"); return ORANGE_FAIL; } } /*all can see*/ if(show_info->show_size.width < show_info->region.width) { return ORANGE_OK; } LONGSTR_LOCK(); show_info->status = LONGSTRING_MOVE; LONGSTR_UNLOCK(); if(run_sem) { int sem_value; sem_getvalue (&run_sem, &sem_value); if (sem_value <= 0) { sem_post(&run_sem); } } return ORANGE_OK; }
__s32 GUI_LongStringStop(__hdle hString) { __string_show_info_t *show_info; if(!hString) { ORANGE_WRN("input parameter error!\n"); return ORANGE_FAIL; } show_info = (__string_show_info_t *)hString; if(show_info->hmem ) { __here__; if(show_info->hlayer) { GUI_LyrWinSel(show_info->hlayer); __here__; GUI_MEMDEV_Delete(show_info->hmem ); __here__; } show_info->hmem = NULL; } /*all can see*/ if(show_info->show_size.width < show_info->region.width) { return ORANGE_OK; } LONGSTR_LOCK(); /*等待move结束之后,然后返回*/ show_info->status = LONGSTRING_STOP; LONGSTR_UNLOCK(); return ORANGE_OK; }
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 __s32 utf16big_analysis(txtEncodeParser *thiz, MkLine *line) { __u16 CharWidth; int c = thiz->cur_offset; //buffer索引 int w = 0; //每行的字符总宽度 int l = 0; //每行包含的字符数 GUI_LyrWinSel(thiz->hlyr); GUI_SetTextMode(GUI_TM_TRANS); GUI_SetFont(thiz->pFont); GUI_SetFontMode(GUI_FONTMODE_8BPP256); while( c < thiz->bufferTxtlen ) { __u16 b = thiz->bufferTxt[c+1] & 0xff; b += (thiz->bufferTxt[c]&0xff)<<8; //大端格式,高位在前, 低位在后 if ( (b == 13) || (b == 10)) //\r 换行\r\n { __u16 tmp; tmp = thiz->bufferTxt[c+3] & 0xff; tmp += (thiz->bufferTxt[c+2]&0xff)<<8; //大端格式,高位在前, 低位在后 if( tmp == 10 ) { c+=4; l+=4; } else { c+=2; l+=2; } // tmp_line.len = l; // tmp_line.txt_off = thiz->start + c -l; //注意thiz->currentoffset的初始化,应该record一下。 // set_txt_line_value_push(lines, &tmp_line); line->start = thiz->start + c -l; line->len = l; thiz->cur_offset = c; w = 0; l = 0; //c +=2; return 0; } if( b< 0x80) CharWidth = GUI_GetCharDistX(b); else CharWidth = thiz->chinese_width; if (w + CharWidth > thiz->viewWidth) { //当前行无法显示完整 // tmp_line.len = l; // tmp_line.txt_off = thiz->start + c -l; // set_txt_line_value_push(lines, &tmp_line); line->start = thiz->start + c -l; line->len = l; thiz->cur_offset = c; w = 0; l = 0; //c +=2; return 0; } else { c += 2; l += 2; w += CharWidth; } } thiz->cur_offset = 0; if( l > 0 ) { // tmp_line.len = l; // tmp_line.txt_off = thiz->start + c -l; // set_txt_line_value_push(lines, &tmp_line); line->start = thiz->start + c -l; line->len = l; return -2; } return -1; }
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; } }