1、void dm_setup_data(dm_data_struct *dm_data)
设置全局变量g_dm_data(模板ID、屏幕ID、标志) 备份当前模板退出函数到全局变量dm_backup_exit_category_function并设置全局变量ExitCategoryFunction为dm_exit_category_function 根据内部全局变量g_dm_cntx的redraw_screen_main当前值重设g_dm_cntx.redraw_screen_main 正常步骤set:NORMAL_EXIT -> NORMAL_SHOW 从重回屏幕set:NORMAL_REDRAW -> REDRAW_2_SHOW -> dm_reset_context -> NORMAL_SHOW 从正常显示和其它set:不变 2、ShowCategoryXXXScreen(...) 高亮处理 按键注册 注册自绘区控制:dm_register_category_controlled_callback(dm_category_XXX_controlled_area); dm_setup_category_functions(dm_redraw_category_screen, GetCategoryXXXHistory, GetCategoryXXXHistorySize);//此函数实际包含如下三个设置: RedrawCategoryFunction = dm_redraw_category_screen;//1 GetCategoryHistory = dm_get_category_history;//2 GetCategoryHistorySize = dm_get_category_history_size;//3 ExitCategoryFunction = ExitCategoryXXXScreen; dm_data.s32ScrId = (S32)GetActiveScreenId(); dm_data.s32CatId = MMI_CATEGORYXXX_ID; dm_data.s32flags = DM_NO_FLAGS; dm_setup_data(&dm_data); dm_redraw_category_screen(); 3、dm_redraw_category_screen() 根据g_dm_cntx.redraw_screen_main判断重绘方式 通过模板ID获取控件列表和坐标区域 若存在屏幕ID和坐标区域的关联定义,则通过屏幕ID获取模板坐标区域 根据上面获得的坐标区域设置x、y值 根据s32flags值清除该区域 顺序绘制各控件 4、U8 *dm_get_category_history(U8 *history_buffer) 通过模板ID获取控件列表和坐标区域 顺序获取各控件历史 5、S32 dm_get_category_history_size(void) 通过模板ID获取控件列表和坐标区域 顺序返回各控件历史大小(sizeof) |
MTK之DrawManager机制
最新推荐文章于 2022-09-19 15:16:57 发布