GUI_MEMDEV_Handle hMem; int test_memdev_string(int x, int y, wchar_t* p_wstr, uint8_t str_w, uint8_t str_h, uint8_t font_height, uint8_t font_color, uint8_t str_align, uint8_t memdev_opt) { UINT16 str_buff[64]; int16_t font_offset_y=0; int16_t font_width=0; GUI_FONT* pFont; if( p_wstr == 0 ) return 0; memset( str_buff, 0, 64*sizeof(U16) ); UINT16 len = wcslen( (wchar_t*)p_wstr ); memcpy( str_buff, p_wstr, len*sizeof(U16) ); if(memdev_opt != 0) { GUI_SelectLayer(1); } #if (mem_dev_option_1 == 1) int width =320; int height=30; #endif // Set font if( GetFont_H(font_height) >= DEFAULT_FONT_DIGITAL_H ) { pFont = (GUI_FONT*)AppLibGraph_GetFontDigital(); height=font_height; font_offset_y=-14; font_width = 44; text_y_offset=-11; } else if( GetFont_H(font_height) > DEFAULT_FONT_H ) { pFont = (GUI_FONT*)AppLibGraph_GetFont29(); height=30; } else if( GetFont_H(font_height) < DEFAULT_FONT_H ) { pFont = (GUI_FONT*)AppLibGraph_GetFont20(); height=21; } else { pFont = (GUI_FONT*)AppLibGraph_GetFont22(); height=23; } width = font_height*len; if(font_width >0){ width = font_width * len; } #if (mem_dev_option_1 == 1) // GUI_MEMDEV_Handle hMem; if(memdev_opt != 0){//&&( get_current_app_index() == APP_MITHRIL_DIAG )){ hMem = GUI_MEMDEV_CreateEx(0, 0, width, height,GUI_MEMDEV_HASTRANS); GUI_MEMDEV_Select(hMem);//activate hMem //GUI_MEMDEV_Clear(hMem); } #endif GUI_SetFont(pFont); { // set text color UINT32 TextColor = 0; switch(font_color) { case COLOR_8BIT_BLACK: TextColor = GUI_BLACK; break; case COLOR_8BIT_GREEN: TextColor = GUI_GREEN; break; case COLOR_8BIT_YELLOW: TextColor = GUI_YELLOW; break; case COLOR_8BIT_RED: TextColor = GUI_RED; break; case COLOR_8BIT_DARKRED: TextColor = GUI_DARKRED; break; case COLOR_8BIT_WHITE: TextColor = GUI_WHITE; break; case COLOR_8BIT_THUMB_GRAY: TextColor = GUI_GRAY; break; case COLOR_8BIT_LIGHTGRAY: TextColor = GUI_LIGHTGRAY; break; case COLOR_8BIT_DARKGRAY: TextColor = GUI_DARKGRAY; break; case COLOR_8BIT_ORANGE: TextColor = GUI_ORANGE; break; case COLOR_8BIT_BLUE: TextColor = GUI_BLUE; break; default: TextColor = font_color; break; } GUI_SetBkColor(GUI_TRANSPARENT); GUI_SetColor(TextColor); GUI_SetTextMode(GUI_TM_TRANS); } //if( str_id != STR_NULL ) { int /*x = 0, y = 0, */Align = GUI_TA_TOP | GUI_TA_LEFT; //GUI_RECT strRect = { x, y, x + str_w, y + str_h }; switch(str_align) { /**< top-left position */ case APPLIB_GRAPHIC_STRING_ALIGN_TL: x = x; y = y; Align = GUI_TA_TOP | GUI_TA_LEFT; break; /**< top-middle position */ case APPLIB_GRAPHIC_STRING_ALIGN_TM: x = x + (str_w / 2); y = y; Align = GUI_TA_TOP | GUI_TA_CENTER; break; /**< top-right postion */ case APPLIB_GRAPHIC_STRING_ALIGN_TR: x = x + str_w; y = y; Align = GUI_TA_TOP | GUI_TA_RIGHT; break; } if(memdev_opt == 0){ GUI_GotoXY( x, y ); int Align_bk; Align_bk = GUI_GetTextAlign( ); GUI_SetTextAlign( Align ); GUI_SetLBorder(2); GUI_UC_DispString( str_buff ); GUI_SetTextAlign( Align_bk ); }else{ if((height > 50)){//test GUI_SetBkColor(GUI_BLUE); GUI_Clear(); } GUI_GotoXY(0,font_offset_y);// x, y ); if(font_width < 44){ text_y_offset=-(height/2); } GUI_UC_DispString( str_buff ); #if (mem_dev_option_1 == 1) if(memdev_opt != 0){ GUI_MEMDEV_Select(0); //activate LCD handle:0 GUI_MEMDEV_WriteAt(hMem, x, y+text_y_offset); //GUI_MEMDEV_CopyToLCDAt(hMem, x, y+text_y_offset); //GUI_MEMDEV_Clear(hMem); GUI_MEMDEV_Delete(hMem); } #endif } } return ok; }