📄 gb_wrapper.c
字号:
pixtel_UI_move_text_cursor(x, y);
pixtel_UI_print_text(text);
return width - widthLeft;
}
#define ZERO_SAM 0//ADD this just to eliminate some values in counting.
static void GBDrawStrokeUpLine(void)
{
/* U16 compIndex;
//首先画部首
int cmpTop = (UP_LINE_HEIGHT - COMP_HEIGHT) / 2 + UP_LINE_TOP;
int cmpLeft = UP_LINE_RIGHT - g_gbMMIGlobals.outputInfo.componentsLen * (COMP_WIDTH + SELECTOR_WIDTH);
int allStringLength;
int leftLength;
int outputStringWidth;
int strokeStringWidth;
int showOutputWidth;
int i;
//既然已经开始选择候选了,那么这个时候就不要出部首了。
if(g_gbMMIGlobals.outputInfo.isSelectedCand)
{
g_gbMMIGlobals.outputInfo.componentsLen = 0;
}
for(i = 0; i < g_gbMMIGlobals.outputInfo.componentsLen; i++)
{
compIndex = FindCompIndex(g_gbMMIGlobals.outputInfo.components[i]);
compIndex = (ALL_COMP_COUNT * i * ZERO_SAM) + compIndex + IMG_GB_COMP_SELECTOR_1_1;
pixtel_UI_show_image(cmpLeft, cmpTop, get_image(compIndex));
INSERT_REGION(cmpLeft, cmpTop,
cmpLeft + COMP_WIDTH,
cmpTop + COMP_HEIGHT,
GBET_In_Key,
((i < 4) ? i + '6' : '0'));
cmpLeft += COMP_WIDTH;
pixtel_UI_show_image(cmpLeft, cmpTop, get_image((U16)(IMG_GB_SELECTOR_0 + (i + 6) % 10)));//Sam,add digital map
cmpLeft += SELECTOR_WIDTH;
}
if(g_gbMMIGlobals.outputInfo.fullOutput[0] == 0)
{
return;
}
outputStringWidth = pixtel_UI_get_string_width(g_gbMMIGlobals.outputInfo.fullOutput);
strokeStringWidth = pixtel_UI_get_string_width(g_gbMMIGlobals.outputInfo.stroke);
allStringLength = outputStringWidth + strokeStringWidth + 3;
leftLength = UP_LINE_WIDTH - g_gbMMIGlobals.outputInfo.componentsLen * COMP_WIDTH;
showOutputWidth = (leftLength - 3) * outputStringWidth /
(outputStringWidth + strokeStringWidth);
pixtel_UI_set_text_color(UI_COLOR_BLACK);
showOutputWidth =
RightAlignDrawText(UP_LINE_LEFT, UP_LINE_TOP,
(U16)showOutputWidth,
g_gbMMIGlobals.outputInfo.fullOutput,
NULL);
if(!g_gbMMIGlobals.outputInfo.isSelectedCand)
{
INSERT_REGION(UP_LINE_LEFT, UP_LINE_TOP,
CAND_LEFT + showOutputWidth,
CAND_LINE_BOTTOM,
GBET_In_Key,
GBKEY_Up);
}
if(g_gbMMIGlobals.outputInfo.strokeLen > 0)
{
pixtel_UI_line(CAND_LEFT + showOutputWidth + 2, CAND_TOP,
CAND_LEFT + showOutputWidth + 2,
UP_LINE_BOTTOM,
UI_COLOR_BLACK);
RightAlignDrawText(CAND_LEFT + showOutputWidth + 3, CAND_TOP,
(U16)(leftLength - showOutputWidth - 3),
g_gbMMIGlobals.outputInfo.stroke,
NULL);
}*/
}
static void GBDrawPinYinUpLine(void)
{
/* int i;
int x, y;
int stringWidth;
int widthLeft;
UI_string_type pStr;
x = UP_LINE_LEFT;
y = UP_LINE_TOP;
widthLeft = UP_LINE_WIDTH;
for(i = 0; i < g_gbMMIGlobals.outputInfo.syllableNum && widthLeft > 0; i++)
{
if(i > 0)
{
x += SYLLABLE_SEPERATE;
}
pStr = g_gbMMIGlobals.outputInfo.syllables[i];
stringWidth = pixtel_UI_get_string_width(pStr);
if(g_gbMMIGlobals.outputInfo.syllableIndex == i)
{
pixtel_UI_fill_rectangle(x - 1, UP_LINE_TOP,
x + min(stringWidth, widthLeft - 1) + 1,
UP_LINE_BOTTOM,
BG_CLR_SELECTED);
pixtel_UI_set_text_color(FONT_CLR_SELECTED);
}
else
{
pixtel_UI_set_text_color(FONT_CLR_NORMAL);
}
if(widthLeft > stringWidth)
{
pixtel_UI_move_text_cursor(x, y);
pixtel_UI_print_text(pStr);
}
else
{
RightAlignDrawText(x, y, (U16)widthLeft, pStr, NULL);
stringWidth = widthLeft;
}
INSERT_REGION(x, y,
x + stringWidth,
UP_LINE_BOTTOM,
GBET_In_SetPinYinIndex,
i);
x += stringWidth;
widthLeft -= stringWidth;
}*/
}
static void GBDrawSmartLatinUpLine(void)
{
int width;
pixtel_UI_set_text_color(UI_COLOR_BLACK);
/*在标点模式下面不要画那个'#'号*/
if(g_gbMMIGlobals.outputInfo.fullOutput[1] == 0
&& g_gbMMIGlobals.outputInfo.fullOutput[0] == '#')
{
return;
}
width = RightAlignDrawText(UP_LINE_LEFT, UP_LINE_TOP, UP_LINE_WIDTH,
g_gbMMIGlobals.outputInfo.fullOutput, NULL);
if(!g_gbMMIGlobals.outputInfo.isSelectedCand)
{
INSERT_REGION(UP_LINE_LEFT, UP_LINE_TOP,
UP_LINE_TOP + width, UP_LINE_BOTTOM,
GBET_In_Key,
GBKEY_Up);
}
}
static void GBDrawCandLine(void)
{
int seperate;
int allCandLength;
int candLength;
UI_string_type str;
S32 x, y;
int i;
allCandLength = 0;
for(i = 0; i < g_gbMMIGlobals.outputInfo.candidatesNum; i++)
{
allCandLength += pixtel_UI_get_string_width((UI_string_type)g_gbMMIGlobals.outputInfo.candidates[i]);
}
seperate = (CAND_LINE_WIDTH - (allCandLength +
g_gbMMIGlobals.outputInfo.candidatesNum * SELECTOR_WIDTH))
/ (g_gbMMIGlobals.outputInfo.candidatesNum + 1);
x = CAND_LINE_LEFT;
y = CAND_LINE_TOP;
for(i = 0; i < g_gbMMIGlobals.outputInfo.candidatesNum; i++)
{
str = (UI_string_type)g_gbMMIGlobals.outputInfo.candidates[i];
candLength = pixtel_UI_get_string_width(str);
if(g_gbMMIGlobals.outputInfo.isSelectedCand)
{
pixtel_UI_show_image(x, y, get_image((U16)(IMG_GB_SELECTOR_0 + (i + 1) % 10)));
}
INSERT_REGION(x, y,
x + SELECTOR_WIDTH + candLength,
y + CAND_LINE_HEIGHT,
GBET_In_SelCandidate,
i);
x += SELECTOR_WIDTH;
if(g_gbMMIGlobals.outputInfo.isSelectedCand == 0
&& g_gbMMIGlobals.outputInfo.candidateIndex == i)
{
pixtel_UI_fill_rectangle(x, y,
x + candLength + 1,
y + CAND_LINE_HEIGHT,
BG_CLR_HOT);
pixtel_UI_set_text_color(FONT_CLR_HOT);
}
else if(g_gbMMIGlobals.outputInfo.isSelectedCand == 1
&& g_gbMMIGlobals.outputInfo.candidateIndex == i)
{
pixtel_UI_fill_rectangle(x, y,
x + candLength + 1,
y + CAND_LINE_HEIGHT,
BG_CLR_SELECTED);
pixtel_UI_set_text_color(FONT_CLR_SELECTED);
}
else
{
pixtel_UI_set_text_color(FONT_CLR_NORMAL);
}
pixtel_UI_move_text_cursor(x, y);
pixtel_UI_print_text(str);
x += candLength + seperate;
}
}
#define UP_DOWN_TIPS_HEIGHT 10
#define UP_DOWN_TIPS_WIDTH 20
#define LEFT_RIGHT_TIPS_HEIGHT 20
#define LEFT_RIGHT_TIPS_WIDTH 10
/**
* \brief 输入法的显示函数
*/
void GBDrawCandWnd(void)
{
#ifdef __MMI_TOUCH_SCREEN__
s_gbTouchRegionsCount = 0;
#endif
if(!g_gbMMIGlobals.outputInfo.isShowIMWin
|| !GB_IS_ACTIVE())
{
GBCloseCand();
return;
}
else
{
GBCheckCandWnd();
}
pixtel_UI_lock_double_buffer();
pixtel_UI_push_clip();
pixtel_UI_push_text_clip();
pixtel_UI_set_clip(CAND_LEFT, CAND_TOP, CAND_RIGHT, CAND_BOTTOM);
pixtel_UI_set_text_clip(CAND_LEFT, CAND_TOP, CAND_RIGHT, CAND_BOTTOM);
pixtel_UI_fill_rectangle(CAND_LEFT, CAND_TOP, CAND_RIGHT, CAND_BOTTOM, UI_COLOR_WHITE);
pixtel_UI_draw_rectangle(CAND_LEFT, CAND_TOP, CAND_RIGHT, CAND_BOTTOM, UI_COLOR_BLACK);
pixtel_UI_line(CAND_LEFT,
(CAND_TOP + CAND_BOTTOM) / 2, CAND_RIGHT, (CAND_TOP + CAND_BOTTOM) / 2,
UI_COLOR_BLACK);
/*
pixtel_UI_fill_rectangle(UP_LINE_LEFT,
UP_LINE_TOP,
CAND_RIGHT - 1,
UP_LINE_BOTTOM,
(g_gbMMIGlobals.outputInfo.isSelectedCand) ? BG_CLR_DEACTIVE_LINE : BG_CLR_ACTIVE_LINE);
pixtel_UI_fill_rectangle(CAND_LINE_LEFT,
CAND_LINE_TOP,
CAND_RIGHT - 1,
CAND_LINE_BOTTOM,
(g_gbMMIGlobals.outputInfo.isSelectedCand) ? BG_CLR_ACTIVE_LINE : BG_CLR_DEACTIVE_LINE);
*/
pixtel_UI_set_font(&MMI_medium_font);
if(g_gbMMIGlobals.outputInfo.nInputMode == GBIM_Chn_Stroke
|| g_gbMMIGlobals.outputInfo.nInputMode == GBIM_Chn_YinStroke)
{
GBDrawStrokeUpLine();
}
else if(g_gbMMIGlobals.outputInfo.nInputMode == GBIM_Chn_Pinyin)
{
GBDrawPinYinUpLine();
}
else
{
GBDrawSmartLatinUpLine();
}
pixtel_UI_set_font(&MMI_medium_font);
GBDrawCandLine();
if(g_gbMMIGlobals.outputInfo.otherInfo.isShowUpArrow)
{
pixtel_UI_show_image(CAND_LINE_RIGHT + 1, CAND_LINE_TOP,
get_image(IMG_GB_TIP_UP));
INSERT_REGION(CAND_LINE_RIGHT + 1, CAND_LINE_TOP,
CAND_LINE_RIGHT + 1 + UP_DOWN_TIPS_WIDTH,
CAND_LINE_TOP + UP_DOWN_TIPS_HEIGHT,
GBET_In_Key,
GBKEY_Up);
}
if(g_gbMMIGlobals.outputInfo.otherInfo.isShowDownArrow)
{
pixtel_UI_show_image(CAND_LINE_RIGHT + 1, CAND_LINE_TOP + UP_DOWN_TIPS_HEIGHT,
get_image(IMG_GB_TIP_DOWN));
INSERT_REGION(CAND_LINE_RIGHT + 1, CAND_LINE_TOP + UP_DOWN_TIPS_HEIGHT,
CAND_LINE_RIGHT + 1 + UP_DOWN_TIPS_WIDTH,
CAND_LINE_TOP + UP_DOWN_TIPS_HEIGHT * 2,
GBET_In_Key,
GBKEY_Down);
}
/*
if(g_gbMMIGlobals.outputInfo.otherInfo.isShowLeftArrow)
{
pixtel_UI_show_image(UP_LINE_RIGHT + 1, UP_LINE_TOP,
get_image(IMG_GB_TIP_LEFT));
INSERT_REGION(UP_LINE_RIGHT + 1, UP_LINE_TOP,
UP_LINE_RIGHT + 1 + LEFT_RIGHT_TIPS_WIDTH,
UP_LINE_TOP + LEFT_RIGHT_TIPS_HEIGHT,
GBET_In_Key,
GBKEY_Left);
}
if(g_gbMMIGlobals.outputInfo.otherInfo.isShowRightArrow)
{
pixtel_UI_show_image(UP_LINE_RIGHT + 1 + LEFT_RIGHT_TIPS_WIDTH, UP_LINE_TOP,
get_image(IMG_GB_TIP_RIGHT));
INSERT_REGION(UP_LINE_RIGHT + 1 + LEFT_RIGHT_TIPS_WIDTH, UP_LINE_TOP,
UP_LINE_RIGHT + 1 + LEFT_RIGHT_TIPS_WIDTH * 2,
UP_LINE_TOP + LEFT_RIGHT_TIPS_HEIGHT,
GBET_In_Key,
GBKEY_Right);
}*/
pixtel_UI_pop_clip();
pixtel_UI_pop_text_clip();
pixtel_UI_unlock_double_buffer();
//这里面才是真正更新屏幕,前面是在memory里面的更新
pixtel_UI_BLT_double_buffer(CAND_LEFT, CAND_TOP, CAND_RIGHT, CAND_BOTTOM);
}
/**
* \brief 将上屏的内容加入EMS input box
*/
static void GBUpScreen(void)
{
int i;
if(!gbCurInputBox.pfUpscreen)
{
return;
}
for(i = 0; i < g_gbMMIGlobals.outputInfo.upscreenLen; i++)
{
(*gbCurInputBox.pfUpscreen)(g_gbMMIGlobals.outputInfo.upscreenStr[i]);
}
g_gbMMIGlobals.outputInfo.upscreenLen = 0;
}
/**
* \brief 检查输入法当前的输入是否为空
*/
int GbIsInputEmpty(void)
{
if(GB_IS_ACTIVE())
{
if(g_gbMMIGlobals.outputInfo.fullOutput == NULL
|| g_gbMMIGlobals.outputInfo.fullOutput[0] == 0)
{
return 1;
}
else
{
return 0;
}
}
else
{
return 1;
}
}
U8 GBSinglineInputBoxIsEmpty(void)
{
return pixtel_UI_single_line_input_box_get_text_length(&MMI_singleline_inputbox) <= 0;
}
U8 GBEMSInputBoxIsEmpty(void)
{
return pixtel_UI_EMS_inputbox_empty(&MMI_EMS_inputbox);
}
void GBSetCurInputBox(const GBIInputBox * pIInputBox)
{
memcpy(&gbCurInputBox, pIInputBox, sizeof(gbCurInputBox));
}
#ifdef __MMI_TOUCH_SCREEN__
void GBHandleTouchEvent(U16 x, U16 y)
{
GBTouchRegion * pStart = s_gbTouchRegions + s_gbTouchRegionsCount - 1;
while(pStart >= s_gbTouchRegions)
{
if(PT_IN_REGION(x, y, pStart))
{
GBEventHandler(pStart->gbEvent, pStart->param, 0);
GBDrawCandWnd();
break;
}
--pStart;
}
}
#endif
#ifndef __MMI_TOUCH_SCREEN__
extern void redraw_EMS_inputbox();
void GBResizeContentArea(int changed_height)
{
if (0 == changed_height)
{
return;
}
switch (gbCurInputBox.type)
{
case GBMultilineInputBox:
gui_resize_multi_line_input_box(
&MMI_multiline_inputbox,
MMI_multiline_inputbox.width,
MMI_multiline_inputbox.height + changed_height);
redraw_multiline_inputbox();
break;
case GBEMSInputBox:
gui_resize_EMS_input_box(
&MMI_EMS_inputbox,
MMI_EMS_inputbox.width,
MMI_EMS_inputbox.height + changed_height);
redraw_EMS_inputbox();
break;
case GBSinglineInputBox:
break;
/*
case PEN_EDITOR_QUICK_SEARCH_SINGLE_LINE_INPU_BOX:
resize_fixed_list(MMI_fixed_list_menu.width, MMI_fixed_list_menu.height + changed_height);
/ * W06.03 Adjust highlight position * /
gui_dynamic_list_menu_locate_highlighted_item(&MMI_fixed_list_menu);
move_singleline_inputbox(MMI_singleline_inputbox.x, MMI_fixed_list_menu.y + MMI_fixed_list_menu.height + 1);
break;
case PEN_EDITOR_DICT_MULTILINE_INPUT_BOX:
resize_fixed_list(MMI_fixed_list_menu.width, MMI_fixed_list_menu.height + changed_height);
gui_dynamic_list_menu_locate_highlighted_item(&MMI_fixed_list_menu);
move_multiline_inputbox(
MMI_multiline_inputbox.x,
MMI_fixed_list_menu.y + MMI_fixed_list_menu.height + wgui_inputbox_information_bar_height);
wgui_setup_input_information(
MMI_multiline_inputbox.x,
MMI_multiline_inputbox.y - wgui_inputbox_information_bar_height,
MMI_multiline_inputbox.width,
wgui_inputbox_information_bar_height);
RedrawCategoryControlledArea201Screen();
break;
case PEN_EDITOR_INLINE_TEXT:
break;
case PEN_EDITOR_DATE:
break;
case PEN_EDITOR_IP4:
break;
case PEN_EDITOR_TIME:
break;
case PEN_EDITOR_TIME_PERIOD:
break;*/
default:
MMI_ASSERT(0);
break;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -