微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 矢量字库在嵌入式机顶盒中的应用

矢量字库在嵌入式机顶盒中的应用

时间:09-05 来源:互联网 点击:
3 程序实现

3.1 功能设计和界面设计

主程序为MFC生成的SDI单文档程序。视图类由CscrollView派生,显示的字符和位图可以自由地放大和缩小,当字符超过窗口大小时视图自动滚动,以满足提取不同大小库点阵的需要,用一个RichEditBox控件来接收输入字符。添加静态控件,显示字符点阵的宽、高等信息。在菜单栏分别添加插入位图、插入图标、插入特殊字符、字体设置、字体放大和字体缩小等菜单项。

程序的界面如图2所示。图中程序正在提取阿拉伯矢量字符集,使用该程序时直接在该工具的图形操作界面下输入需要提取的字符或者插入位图和图标。待调整好全部所需的字符图标后点击保存,程序自动转换矢量字符和图形并生成存入文件。实现的功能有:

① 能在视图显示RichEditBox控件内输入英文、汉字等矢量字符,并通过图形设备上下文CDC读取视图的点阵信息;

② 能读取所有插入RTF文本内的特殊字体点阵信息;

③ 能读取插入的位图和图标点阵信息;

④ 能将点阵信息保存在FONT.h文件中,并添加字库索引表和字符宽、高、字体等信息。



3.2 主要类和模块

CFONTView为CscrollView派生类,负责字符和图标的缩放显示,CFONTModule类封装了字符串操作函数,CtextSetDlg类负责字符属性的设定。程序中点阵信息的数据、位图和图标的数据和字符串数据分别封装在类CdotMatrix、CimageElemnt和CwordElement中。在主要的模块函数里,Create_Text_Dot_Matrix和Create_Bmp_Dot_Matrix函数是本程序的核心函数。功能是在内存中形式位映射数据,完成矢量汉字或矢量图形向点阵数据的转换。设向量图型尺寸宽width像素,高height像素,程序流程如下:

① 计算该位图对应的缓冲区尺寸。每行长度为:BytePerLine=(width+1)/8,缓冲区大小为Buffersize=BytePerLine*height。

② 申请内存缓冲区。如果内存不足以容纳整 个图形,则可以分段处理。

BufferPtr=(unsigned char*)malloc(BufferSize)。

③ 计算坐标点在所申请内存缓冲区的偏移量和屏蔽位。设原点(0,0)在内存中的偏移量为0,则图中任意一点P(x,y)相对于原点(0,0)的偏移量为

offset=y*BytePerLine+x/8,该点对应的字节内屏蔽位为mask=0x80>>(X%8)。

④ 读取点P(x, y)在内存中对应的颜色值Value,读取所在的字节。

byte=(unsigned char)*(Bufferptr+offset),取该点对应的位,

Value=byte & mask最后得到点阵信息,输出到屏幕或磁盘文件。

3.3 主程序流程

主程序流程图如图3所示。首先进入响应用户消息分支,当从编辑框输入标准汉字或ASCII字符,程序检查字符同码判断字符有效性,若满足条件则跳至显示部分;当用户从外部磁盘插入图标或位图图片,程序直接读入文件数据;如果插入的是特殊字符则进入RTF格式文本解析部分,得到特殊字符的代码页、字体、大小等信息。然后将字符图标信息在视图中显示,此时可通过图形界面调整字符外观。通过获得内存中图像信息形成位映射数据,计算点阵数据。最后将字库点阵和索引表、字体、大小等附加信息按头文件格式保存到字库文件中。

4 结论

实际应用中,本方法可以有关键人物 地提取Windows环境下矢量字库的字模,满足嵌入式机顶盒系统的开发需要。字模提取程序具有多种功能,可以生成各种大小风格的字体、符号和图形点阵信息,从而使机顶盒能利用Windows中丰富的字体和图像资源,显示更为精彩的图形用户界面。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top