MTK之DrawManager机制

 
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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值