Chinaunix首页 | 论坛 | 博客
  • 博客访问: 34073
  • 博文数量: 6
  • 博客积分: 74
  • 博客等级: 民兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-23 01:06
文章分类
文章存档

2012年(5)

2011年(1)

分类: 嵌入式

2011-04-21 23:46:25

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(维护)更新画面的操作,平台会在显示资料改变的时,自动引发整个更新画面的流程。

  

阅读(1268) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:ARM 异常向量表 及寄存器

给主人留下些什么吧!~~