📄 wgui_draw_manager.c
字号:
void (*dm_category_controlled_area2_callback) (dm_coordinates *coordinate);
#ifdef __MMI_SUBLCD__
void (*dm_sub_category_controlled_area_callback) (dm_coordinates *coordinate);
#endif
/*****************************************************************************
* Global Function
*****************************************************************************/
S16 *dm_get_coordinates(S16 *UICtrlAccessPtr_p, dm_coordinates *dm_coordinate_info);
/*****************************************************************************
* Extern Global Variable
*****************************************************************************/
#ifdef __MMI_STOPWATCH__
extern wtchSkinResStruct wtch_pos;
extern S32 stop_watch_x, stop_watch_y, stop_watch_width;
#endif /* __MMI_STOPWATCH__ */
extern S32 wgui_EMS_inputbox_information_bar_height;
extern U8 matrix_main_menu_highlight_bitmap_data[];
extern const U8 dm_base_control_set[];
extern const S16 dm_base_control_set_coordinates[];
extern icontext_button MMI_softkeys[];
extern BOOL r2lMMIFlag;
//extern MMI_ID_TYPE idle_screen_wallpaper_ID; /* 061705 Calvin added */
//extern S8 *idle_screen_wallpaper_name;
extern MMI_ID_TYPE idle_screen_cache_id; /* 073106 cache wallpaper */
extern S8 *idle_screen_cache_name;
/* Calendar Extern Variables */
extern S32 cat82_title1_x1;
extern S32 cat82_title1_y1;
extern S32 cat82_title1_x2;
extern S32 cat82_title1_y2;
extern S32 cat82_title2_x1;
extern S32 cat82_title2_y1;
extern S32 cat82_title2_x2;
extern S32 cat82_title2_y2;
extern S32 cat82_title3_x1;
extern S32 cat82_title3_y1;
extern S32 cat82_title3_x2;
extern S32 cat82_title3_y2;
extern pBOOL calendar_show_title2;
extern pBOOL calendar_show_title3;
#ifdef __MMI_UI_CALENDAR_WITH_INFO_BOX__
extern S32 cat82_title1_month_x1;
extern S32 cat82_title1_month_y1;
extern S32 cat82_title1_month_x2;
extern S32 cat82_title1_month_y2;
extern pBOOL calendar_show_title_month;
extern BOOL lunar_calendar_present;
#endif /* __MMI_UI_CALENDAR_WITH_INFO_BOX__ */
extern U8 *Cat82_title1;
extern U8 *Cat82_title2;
extern U8 *Cat82_title3;
extern stFontAttribute wgui_dialer_box_f1;
extern UI_font_type calendar_title_font;
#ifdef __MMI_UI_CALENDAR_WITH_INFO_BOX__
extern U8 *Cat82_title1_month;
extern UI_font_type calendar_title_month_font;
#endif /* __MMI_UI_CALENDAR_WITH_INFO_BOX__ */
extern UI_filled_area wgui_pop_up_dialog_background;
extern gdi_handle wgui_layer_1;
extern multitap_input MMI_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_lowercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_bpmf_multitaps[MAX_MULTITAPS];
#if defined(__MMI_MULTITAP_SPANISH__)
extern multitap_input MMI_spanish_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_spanish_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_SPANISH__) */
#if defined(__MMI_MULTITAP_FRENCH__)
extern multitap_input MMI_french_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_french_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_FRENCH__) */
#if defined(__MMI_MULTITAP_GERMAN__)
extern multitap_input MMI_german_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_german_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_GERMAN__) */
#if defined(__MMI_MULTITAP_ITALIAN__)
extern multitap_input MMI_italian_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_italian_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_ITALIAN__) */
/* PMT CZ_PO_TU START 20050812 */
#if defined(__MMI_MULTITAP_POLISH__)
extern multitap_input MMI_polish_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_polish_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_POLISH__) */
//PMT CZ_PO_TU END 20050812
//PMT CZ_PO_TU START 20050812
#if defined(__MMI_MULTITAP_CZECH__)
extern multitap_input MMI_czech_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_czech_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_CZECH__) */
//PMT CZ_PO_TU END 20050812
//PMT CZ_PO_TU START 20050812
#if defined(__MMI_MULTITAP_TURKISH__)
extern multitap_input MMI_turkish_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_turkish_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_TURKISH__) */
//PMT CZ_PO_TU END 20050812
// PMT BHASKAR START 20052907
#if defined(__MMI_MULTITAP_VIETNAMESE__)
extern multitap_input MMI_vietnamese_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_vietnamese_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_VIETNAMESE__) */
#if defined(__MMI_MULTITAP_INDONESIAN__)
extern multitap_input MMI_indonesian_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_indonesian_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_INDONESIAN__) */
#if defined(__MMI_MULTITAP_DANISH__)
extern multitap_input MMI_danish_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_danish_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_DANISH__) */
#if defined(__MMI_MULTITAP_PORTUGUESE__)
extern multitap_input MMI_portuguese_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_portuguese_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_PORTUGUESE__) */
/* PMT START HU_FI 20050825 */
#if defined(__MMI_MULTITAP_FINNISH__)
extern multitap_input MMI_finnish_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_finnish_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_FINNISH__) */
//PMT END HU_FI 20050825
//PMT NO_AR_SL_DU START 20050909
#if defined(__MMI_MULTITAP_SLOVAK__)
extern multitap_input MMI_slovak_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_slovak_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_SLOVAK__) */
/* START DUTCH_T9 20051021 */
#if defined(__MMI_MULTITAP_DUTCH__)
extern multitap_input MMI_dutch_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_dutch_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_DUTCH__) */
//END DUTCH_T9 20051021
//PMT BULGARIAN START 20051201
#if defined(__MMI_MULTITAP_BULGARIAN__)
extern multitap_input MMI_bulgarian_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_bulgarian_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_BULGARIAN__) */
/* PMT BULGARIAN END 20051201 */
#if defined(__MMI_MULTITAP_ARABIC__)
extern multitap_input MMI_arabic_multitaps[MAX_MULTITAPS];
#endif
/* PMT START PERSIAN */
#if defined(__MMI_MULTITAP_PERSIAN__)
extern multitap_input MMI_persian_multitaps[MAX_MULTITAPS];
#endif
//PMT END PERSIAN
/* Norwegian start */
#if defined(__MMI_MULTITAP_NORWEGIAN__)
extern multitap_input MMI_norwegian_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_norwegian_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_NORWEGIAN__) */
//Norwegian end
//PMT NO_AR_SL_DU END 20050909
//PMT START SWEDISH 20050916
#if defined(__MMI_MULTITAP_SWEDISH__)
extern multitap_input MMI_swedish_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_swedish_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_SWEDISH__) */
//PMT END SWEDISH 20050916
//PMT START CR_ROM_SLO 20050923
#if defined(__MMI_MULTITAP_CROATIAN__)
extern multitap_input MMI_croatian_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_croatian_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_CROATIAN__) */
#if defined(__MMI_MULTITAP_ROMANIAN__)
extern multitap_input MMI_romanian_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_romanian_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_ROMANIAN__) */
#if defined(__MMI_MULTITAP_SLOVENIAN__)
extern multitap_input MMI_slovenian_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_slovenian_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_SLOVENIAN__) */
//PMT END CR_ROM_SLO 20050923
//PMT START GR_HE_CZ_FI_DA_HU 20051007
#if defined(__MMI_MULTITAP_GREEK__)
extern multitap_input MMI_greek_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_greek_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_GREEK__) */
#if defined(__MMI_MULTITAP_HUNGARIAN__)
extern multitap_input MMI_hungarian_uppercase_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_hungarian_lowercase_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_MULTITAP_HUNGARIAN__) */
/* PMT END GR_HE_CZ_FI_DA_HU 20051007 */
#if defined(__MMI_WCSS_INPUT_FORMAT_SUPPORT__)
extern multitap_input MMI_uppercase_numberless_multitaps[MAX_MULTITAPS];
extern multitap_input MMI_lowercase_numberless_multitaps[MAX_MULTITAPS];
#endif /* defined(__MMI_WCSS_INPUT_FORMAT_SUPPORT__) */
/*****************************************************************************
* Extern Global Function
*****************************************************************************/
extern void (*redraw_current_inline_item) (void);
extern S32 dm_get_coordinate_sets_count(void);
extern S32 dm_get_control_sets_count(void);
extern U8 *dm_get_base_control_set(void);
extern S16 *dm_get_base_coordinate_set(void);
extern U8 *dm_get_base_control_set2(void);
extern S16 *dm_get_base_coordinate_set2(void);
extern void set_calendar_control_background_limits(S32 y1, S32 y2);
extern void set_button_bar_height(S32 height);
extern void wgui_reset_calendar_params(S32 x, S32 y, S32 n_columns, S32 n_rows, S32 cell_width, S32 cell_height);
extern void wgui_show_calendar(void);
extern void ChangeCategory82Title1(U8 *title);
extern void ChangeCategory82Title2(U8 *title);
extern void ChangeCategory82Title3(U8 *title);
extern void category151_keyboard_handler(S32 vkey_code, S32 key_state);
extern void UI_cross_hatch_fill_rectangle(S32 x1, S32 y1, S32 x2, S32 y2, color c);
extern MMI_BOOL get_singleline_inputbox_display_status(void);
extern MMI_BOOL is_multiline_inputbox_in_view_mode(void);
extern MMI_BOOL is_EMS_inputbox_in_view_mode(void);
#ifdef __MMI_UI_CALENDAR_WITH_INFO_BOX__
extern void ChangeCategory82Title1Month(U8 *title);
#endif
#ifdef __MMI_STOPWATCH__
extern void get_stop_watch_history(U16 history_ID, U8 *history_buffer);
#endif
/*****************************************************************************
* FUNCTION
* dm_init
* DESCRIPTION
* initialize variables used in draw manager.
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void dm_init(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U8 idx = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
for (idx = 0; idx < GDI_LAYER_TOTAL_LAYER_COUNT; idx++)
{
dm_layers[idx] = GDI_ERROR_HANDLE;
}
/* Draw Manager context */
g_dm_cntx.redraw_screen_main = NORMAL_EXIT;
g_dm_cntx.redraw_scr_bg_flag = 1;
g_dm_cntx.lock_redraw_main = 0;
g_dm_cntx.exit_full_screen_on_exit = 0;
g_dm_cntx.is_context_reset = 1;
#ifdef __MMI_SUBLCD__
g_dm_cntx.redraw_screen_sub = NORMAL_EXIT;
g_dm_cntx.lock_redraw_sub = 0;
#endif /* __MMI_SUBLCD__ */
/* Draw Manager Screen Background Layer Context */
g_dm_scr_bg_cntx.layer_handle = GDI_ERROR_HANDLE;
/* g_dm_scr_bg_cntx.animation_handle=GDI_ERROR_HANDLE; */
g_dm_scr_bg_cntx.image_id = 0;
g_dm_scr_bg_cntx.image_name = NULL;
g_dm_scr_bg_cntx.offset_x = -1;
g_dm_scr_bg_cntx.offset_y = -1;
g_dm_scr_bg_cntx.layer_opacity = 150;
g_dm_scr_bg_cntx.flags = 0;//082906 scr_bg
/* Reset all images */
for (idx = 0; idx < dm_image_count; idx++)
{
dm_image_array[idx].back_fill = NULL;
dm_image_array[idx].image = NULL;
dm_image_array[idx].name = NULL;
if (dm_image_array[idx].image_handle != GDI_ERROR_HANDLE)
{
gdi_image_stop_animation(dm_image_array[idx].image_handle);
dm_image_array[idx].image_handle = GDI_ERROR_HANDLE;
}
}
dm_image_count = 0;
dm_string_count = 0;
dm_back_fill_count = 0;
dm_rectangle_count = 0;
dm_line_count = 0;
dm_slide_control_count = 0;
dm_scroll_text_count = 0;
dm_current_scroll_text = NULL;
dm_button_count = 0;
#ifdef __MMI_SUBLCD__
/* Reset all images */
for (idx = 0; idx < dm_image_count_sub; idx++)
{
dm_image_array_sub[idx].back_fill = NULL;
dm_image_array_sub[idx].image = NULL;
dm_image_array_sub[idx].name = NULL;
if (dm_image_array_sub[idx].image_handle != GDI_ERROR_HANDLE)
{
gdi_image_stop_animation(dm_image_array_sub[idx].image_handle);
dm_image_array_sub[idx].image_handle = GDI_ERROR_HANDLE;
}
}
dm_image_count_sub = 0;
dm_string_count_sub = 0;
#endif /* __MMI_SUBLCD__ */
}
/*****************************************************************************
* FUNCTION
* dm_reset_context
* DESCRIPTION
* reset variables used in draw manager.
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void dm_reset_context(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_dm_cntx.is_context_reset == MMI_FALSE)
{
U8 idx = 0;
/* Reset screen background layer */
dm_set_scr_bg_redraw(MMI_TRUE);
g_dm_scr_bg_cntx.layer_handle = GDI_ERROR_HANDLE;
/* Reset Layer information */
/* MainLCD */
if (!(g_dm_data.s32flags & DM_SUB_LCD_CONTEXT))
{
for (idx = 0; idx < dm_layers_count; idx++)
{
if (dm_layers[idx] != GDI_LAYER_MAIN_BASE_LAYER_HANDLE && dm_layers[idx] != wgui_layer_1
&& dm_layers[idx] != GDI_ERROR_HANDLE && dm_layers[idx] != GDI_LAYER_EMPTY_HANDLE)
{
gdi_layer_free(dm_layers[idx]);
}
dm_layers[idx] = GDI_ERROR_HANDLE;
}
dm_layers_count = 0;
}
dm_wallpaper_layer = GDI_ERROR_HANDLE;
/* can be removed */
gdi_layer_push_and_set_active(GDI_LAYER_MAIN_BASE_LAYER_HANDLE);
/* gdi_layer_set_source_key(FALSE,GDI_COLOR_TRANSPARENT); */
gdi_layer_pop_and_restore_active();
if (g_dm_cntx.redraw_screen_main == REDRAW_2_SHOW)
{
return;
}
/* Reset all images */
for (idx = 0; idx < dm_image_count; idx++)
{
dm_image_array[idx].back_fill = NULL;
dm_image_array[idx].image = NULL;
dm_image_array[idx].name = NULL;
if (dm_image_array[idx].image_handle != GDI_ERROR_HANDLE)
{
gdi_image_stop_animation(dm_image_array[idx].image_handle);
dm_image_array[idx].image_handle = GDI_ERROR_HANDLE;
}
}
for (idx = 0; idx < dm_scroll_text_count; idx++)
{
gui_scrolling_text_stop(&(dm_scroll_text[idx]));
}
dm_image_count = 0;
dm_string_count = 0;
dm_back_fill_count = 0;
dm_rectangle_count = 0;
dm_line_count = 0;
dm_slide_control_count = 0;
dm_scroll_text_count = 0;
dm_current_scroll_text = NULL;
dm_button_count = 0;
dm_percentage_bar_count = 0;
dm_panel_count = 0;
/* Reset default pen handlers */
#ifdef __MMI_TOUCH_SCREEN__
wgui_reset_category_screen_control_pen_handler();
wgui_reset_image_control_pen_handler();
#endif /* __MMI_TOUCH_SCREEN__ */
dm_reset_category_controlled_callback();
dm_reset_button_functions();
/* Can be removed -start */
dm_reset_title_coordinates();
dm_reset_fixed_list_coordinates();
dm_reset_inline_fixed_list_coordinates();
dm_reset_lsk_coordinates();
dm_reset_rsk_coordinates();
dm_reset_button_bar_coordinates();
/* Can be removed -end */
dm_show_vkpad_callback = NULL;
#ifdef __MMI_SCREEN_ROTATE__
/* Reset the background image set by rotated screen */
if (mmi_frm_is_screen_width_height_swapped())
{
g_dm_scr_bg_cntx.image_id = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -