免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 864 | 回复: 0

DISPLAY阅读笔记 [复制链接]

论坛徽章:
0
发表于 2011-12-20 09:44 |显示全部楼层

Mae_display.c阅读笔记

1.思路分析

=========================================================================

EMMI Display MechanismEMMI显示原理】

EMMI --->  Enhanced MMI 可增强,可操作的应用层【人机界面(Man-Machine interface

1

Abstract 【摘要】

Display  Overview【概述】

Display Update Mechanism 【原理】

·Invalidate  使窗口无效【初始化】

·Draw 绘制

·Update 更新

API Usage Example API 用法示例】

2

Display Overview

·IBitmap

代表一块以pixel【像素】形式存放资料的缓冲区,目前支持的格式有16bits24bits以及32bitscolor format【色彩格式】。相关操作界面定义于mae_bitmap.h中,可以对此缓冲区进行各种绘图操作,但与屏幕显示无关

·IDisplay

工作区(Client Area):如输入文字、 绘图、影像等资料处理与显示区。

对应屏幕显示的操作,其中包含了一块与屏幕等大小的bitmap【位图】,称为MMI Display BufferMMI层显示缓冲区】,对此部分的操作预设都会绘制到这块buffer,然后反应到屏幕上,AP相关操作界面定义于mmi_common_display.h中。

Display除了Bitmap之外,还包含了Client AreaCA】的概念,也就是可绘制区域。所有绘图的动作仅能反应在此范围中,超出的部分不会画到,用来避免画到非预期的范围。下图表示出IDisplayCanvasIDisplayIBitmap的关系。IDisplay中的IBitmap预设是MMI Display buffer,不过是可以透过相关操作界面被置换掉的,置换掉之后,对于IDisplay的绘图行为就只会画到新的IBitmap上,而不会画到屏幕上。

·Widget

这边仅就Widget Draw的部分做简单说明,WidgetDraw行为通常会通过定义于mae_display.h的各种draw function,绘制到mmi buffer上,一般我们建议AP通过此方式来绘制到画面上,而避免直接通过第二点的mmi_common_display.h的操作方式来绘制。这与下面的Display update mechanism【更新显示原理】有关。

3

Display update mechanism

目前平台上一般通过Widget来显示画面的机制,主要由以下三件事构成:

·1.决定重画区域范围【invalidate】:这部分会由Widget触发,通常当Widget中,与显示相关的资料有所变动时,例如:大小改变,字符串改变,图像改变等,都会触发本事件,进而引发画面更新的流程。(最通常的理解,对需要改变的区域初始化)

·2.绘制该区域的画面【Draw】:当Invalidate area(初始化区域)决定之后,就会开始进行绘制(Draw)流程,依次引发该区域所有的Widget进行重画流程。

·3.更新该区域的图画到屏幕上【Update】:当所有Draw的动作都完成后,便会将该区域更新到屏幕上。

通过此机制,AP就不用自行maintain(维护)更新画面的操作,平台会在显示资料改变的时,自动引发整个更新画面的流程。

  

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP