运行时配置选项影响MiniGUI的一些运行行为,比如要使用的图形引擎或者输入引擎;要装载的设备字体;要装载的位图、光标资源等等。我们已经了解到,MiniGUI的运行时配置一般是通过配置文件MiniGUI.cfg指定的,但在使用内建资源方式配置并编译MiniGUI后,运行时配置选项将直接编译到函数库中,配置文件MiniGUI.cfg文件将不起作用。
在MiniGUI应用程序启动时,MiniGUI优先查找当前目录下的MiniGUI.cfg文件、用户主目录下的.MiniGUI.cfg文件,其次是/usr/local/etc/MiniGUI.cfg,最后是/etc/MiniGUI.cfg文件。
查找顺序如下:
配置文件采用了非常简洁的格式,所以修改起来也很容易。其格式如下:
[section-name1] key-name1=key-value1 key-name2=key-value2 [section-name2] key-name3=key-value3 key-name4=key-value4
配置文件中由注释(#)、段(section)、键(key)和键值(Key Value)四部分组成,注释是以“#”为第一个字符开始的行,段是由[section-name]形式给出,包含若干键和键值对组合,用 key=key_value 的形式指定键和键值。下面按段介绍配置文件内容。
该段指定了MiniGUI 运行时使用的输入输出引擎以及鼠标设备和协议类型。指定的输入输出引擎必须是编译配置MiniGUI库时多个引擎中的一个。
该段定义如下键:
# GAL engine and default options
gal_engine=shadow
# IAL engine
ial_engine=cisco_touchpad
mdev=/dev/input/event1
mtype=IMPS2
该段是在[system]段gal_engine的键值指定为fbcon时使用,表示运行fbcon时使用的显示模式。若该段未定义或键值为空,则使用[system]段定义的键值。该段只包含一个defaultmode键,具体含义和[system]段相同:defaultmode:指定图形引擎的显示模式,格式为:宽x高-显示位数(bpp)
BPP:Bit Per Pixel ,bpp是像素的意思。像素是指由图像的小方格组成的,这些小方块都有一个明确的位置和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来的样子。
16bpp显示模式和32bpp显示模式
8bpp、16bpp、24bpp和32bpp,一般俩将色彩深度越大,所能表项的色彩越丰富,而24bpp就被称为真彩色,能真实的表现图像的色彩(32bpp实际也只是24bpp,它是为了让每个像素都占据独立的32位双字,以对齐像素边界,加速处理速度)。缺省的色彩深度为对应于256色的8bpp,显然这不足以表现图像的色彩,在硬件能力满足的条件下应该使用更高的色彩深度(要受显存大小和分辨率大小的限制)
[fbcon] defaultmode=1024x768-16bpp
该段是在[system]段 gal_engine 的键值指定为 qvfb 时使用,表示运行 qvfb 时使用了XWindow 的哪个 display 及显示模式。
该段定义如下键,具体含义如下:
MiniGUI.cfg 文件 qvfb 段内容如下:
[qvfb] defaultmode=640x480-16bpp display=0
该段是在 [system] 段 gal_engine 的键值指定为 pc_qvfb 时使用,表示 pc_xvfb 的程序路径、显示模式以及窗口标题栏文字。Pc_xvfb 是在 PC 机上使用的一种图形引擎模式。该段定义如下键,具体含义如下:
MiniGUI.cfg文件pc_xvfb段内容如下:
[pc_xvfb] defaultmode=1024x768-16bpp window_caption=XVFB-for-MiniGUI-3.0-(Qt-Version) exec_file=/usr/local/bin/qvfb2
该段是在 [system] 段 gal_engine 的键值指定为 rtos_qvfb 时使用,表示 rtos_xvfb 的显示模式。rtos_xvfb 是在嵌入式系统上使用的一种图形引擎模式。
该段定义如下键,具体含义如下:
MiniGUI.cfg 文件 rtos_xvfb 段内容如下:
[rtos_xvfb] defaultmode=800x600-16bpp
该段是在 [system] 段 gal_engine 的键值指定为 shadow 时使用,表示 shadow 的真实引擎、默认模式以及屏幕旋转模式。
该段定义如下键,具体含义如下:
MiniGUI.cfg 文件 shadow 段内容如下:
[shadow] real_engine=pc_xvfb defaultmode=800x600-16bpp rotate_screen=normal
该段是在 [system] 段 gal_engine 的键值指定为 mlshadow 时使用,表示 mlshadow 的真实引擎、默认模式、屏幕背景颜色以及刷屏时是否使用双缓冲。
该段定义如下键,具体含义如下:
MiniGUI.cfg文件mlshadow段内容如下:
[mlshadow] real_engine=qvfb defaultmode=800x600-16bpp def_bgcolor=0x00FF00 double_buffer=enable
单缓冲和双缓冲的区别
为了提高LCD的显示效果,如果值是使用单缓冲,即一帧数据作为缓冲器的话,就会出现写数据的时候有闪屏现象,为了解决这个问题,我们为LCD缓冲区设置了两个帧的大小,如果此时LCD控制器帧缓冲区的地址指向的是第一针的数据的话,我们可以写第二帧数据,写完以后把第二帧的首地址赋给LCD控制器。
该字段定义了MiniGUI的系统字体和字体个数。并定义了系统默认使用的字体,用于MiniGUI的标题、菜单、控件的显示。
系统字体是MiniGUI装载了由rawbitmapfonts、varbitmapfonts、qpf、upf、truetypefonts等段定义的设备字体之后,根据上述字体名称调用CreateLogFontByName函数建立的逻辑字体。
逻辑字体名称的格式如下:
<type>-<facename>-<style>-<width>-<height>-<charset1>
逻辑字体名称各部分的含义如下:
type:所选用的设备字体类型,如果不想指定,则用*代替。
facename:指字体样式名,比如Courier、Times等等。
style:是由六个字母组成的字符串,用来指定逻辑字体的风格,比如是否加粗、是否斜体、是否对字体做镜像处理、是否自动放大、是否含有下划线或者删除线等等。
width:指定要创建的逻辑字体的宽度。如果不想指定,则用*代替。
height:指定要创建的逻辑字体的高度。
charset:指定要创建的逻辑字体的字符集。
MiniGUI的许多窗口元素尺寸是根据系统字体的大小定义的,详情请参阅下面对mainwinmetric段的说明。
此外,从MiniGUI V2.0.3/1.6.9版本开始,MiniGUI还提供了字体的自动放大功能,以便将点阵字体适当放大来匹配逻辑字体所要求的大小。使用该功能的方法非常简单,请在指定逻辑字体风格时,在第四个字符时使用大写的“S?”。注意,如果您要使用矢量字体类型,比如TrueType字体,则不需要指定该风格,因为矢量字体可以逻辑字体的期望大小生成对应的字体字模。该段定义了如下键:
可以修改要创建的系统字体个数,但至少要创建一种单字节字符集(比如 ISO8859-1)的字体。
MiniGUI?根据 default、wchar_def 系统字体来定义系统的默认字符集,这影响?GetSysCharset、?GetSysCharWidth、?GetSysCCharWidth?和?GetSysHeight?函数的返回值。一般来讲,default 和 wchar_default 必须是等宽点阵字体,即 RBF 字体,并且多字节字符集字体的宽度必须是单字节字符集宽度的两倍。
TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字体文件格式,随着windows的流行,已经变成最常用的一种字体文件表示方式。TTF是一种可缩放的字体,它可以在不通尺寸和分辨率的屏幕上保持良好的显示效果。
MiniGUI.cfg 文件 systemfont 段内容如下:
# The first system font must be a logical font using RBF device font. [systemfont] font_number=6 font0=rbf-fixed-rrncnn-8-16-ISO8859-1 font1=*-fixed-rrncnn-*-16-GB2312 font2=*-Courier-rrncnn-*-16-GB2312 font3=*-SansSerif-rrncnn-*-16-GB2312 font4=*-Times-rrncnn-*-16-GB2312 font5=*-Helvetica-rrncnn-*-16-GB2312 default=0 wchar_def=4 fixed=1 caption=4 menu=2 control=3
这些段用来指定要装载的设备字体信息。定义了要装载的设备字体个数,每个设备字体名称及对应的设备字体文件。
MiniGUI?使用的设备字体名称格式如下:
<type>-<facename>-<style>-<width>-<height>-<charset1[,charset2,...]>
设备字体名称各部分的含义如下:
如果不想装载某个类型的设备字体,则可以通过设置对应段的font_number 为 0 来跳过对这种设备字体的装载。
MiniGUI.cfg 文件这些段配置示例如下:
[rawbitmapfonts] font_number=4 name0=rbf-fixed-rrncnn-8-16-ISO8859-1 fontfile0=/usr/local/lib/minigui/res/font/8x16-iso8859-1.bin name1=rbf-fixed-rrncnn-16-16-GB2312-0 fontfile1=/usr/local/lib/minigui/res/font/song-16-gb2312.bin name2=rbf-fixed-rrncnn-6-12-ISO8859-1 fontfile2=/usr/local/lib/minigui/res/font/6x12-iso8859-1.bin name3=rbf-fixed-rrncnn-12-12-GB2312-0 fontfile3=/usr/local/lib/minigui/res/font/song-12-gb2312.bin [varbitmapfonts] font_number=6 name0=vbf-Courier-rrncnn-8-13-ISO8859-1 fontfile0=/usr/local/lib/minigui/res/font/Courier-rr-8-13.vbf name1=vbf-Helvetica-rrncnn-11-12-ISO8859-1 fontfile1=/usr/local/lib/minigui/res/font/Helvetica-rr-11-12.vbf name2=vbf-Times-rrncnn-10-12-ISO8859-1 fontfile2=/usr/local/lib/minigui/res/font/Times-rr-10-12.vbf name3=vbf-Courier-rrncnn-10-15-ISO8859-1 fontfile3=/usr/local/lib/minigui/res/font/Courier-rr-10-15.vbf name4=vbf-Helvetica-rrncnn-15-16-ISO8859-1 fontfile4=/usr/local/lib/minigui/res/font/Helvetica-rr-15-16.vbf name5=vbf-Times-rrncnn-13-15-ISO8859-1 fontfile5=/usr/local/lib/minigui/res/font/Times-rr-13-15.vbf [upf] font_number=6 name0=upf-fmsong-rrncnn-12-12-ISO8859-1,ISO8859-15,GB2312-0,BIG5,GBK,UTF-8,UTF-16LE,UTF-16BE fontfile0=/usr/local/share/minigui/res/font/fmsong-latin-12.upf name1=upf-fmkai-rrncnn-14-14-ISO8859-1,ISO8859-15,GB2312-0,UTF-8,UTF-16LE,UTF-16BE fontfile1=/usr/local/share/minigui/res/font/fmkai-latin-14.upf name2=upf-fmfsong-rrncnn-15-15-ISO8859-1,ISO8859-15,GB2312-0,UTF-8,UTF-16LE,UTF-16BE fontfile2=/usr/local/share/minigui/res/font/fmfsong-latin-15.upf name3=upf-fmsong-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312-0,BIG5,GBK,UTF-8,UTF-16LE,UTF-16BE fontfile3=/usr/local/share/minigui/res/font/fmsong-latin-16.upf name4=upf-fmkai-rrncnn-18-18-ISO8859-1,ISO8859-15,GB2312-0,UTF-8,UTF-16LE,UTF-16BE fontfile4=/usr/local/share/minigui/res/font/fmkai-latin-18.upf name5=upf-fmhei-rrncnn-20-20-ISO8859-1,ISO8859-15,GB2312-0,BIG5,GBK,UTF-8,UTF-16LE,UTF-16BE fontfile5=/usr/local/share/minigui/res/font/fmhei-latin-20.upf [qpf] font_number=3 name0=qpf-unifont-rrncnn-16-16-ISO8859-1,ISO8859-15,GB2312-0,GBK,BIG5 fontfile0=/usr/local/lib/minigui/res/font/unifont_160_50.qpf name1=qpf-times-rrncnn-5-10-ISO8859-1,ISO8859-15 fontfile1=/usr/local/lib/minigui/res/font/smoothtimes_100_50.qpf name2=qpf-helvetica-rrncnn-5-10-ISO8859-1,ISO8859-15 fontfile2=/usr/local/lib/minigui/res/font/helvetica_100_50.qpf name3=qpf-micro-rrncnn-4-4-ISO8859-1,ISO8859-15 fontfile3=/usr/local/lib/minigui/res/font/micro_40_50.qpf [truetypefonts] font_number=3 name0=ttf-arial-rrncnn-0-0-ISO8859-1 fontfile0=/usr/local/lib/minigui/res/font/arial.ttf name1=ttf-times-rrncnn-0-0-ISO8859-1 fontfile1=/usr/local/lib/minigui/res/font/times.ttf name2=ttf-pinball-rrncnn-0-0-ISO8859-1 fontfile2=/usr/local/lib/minigui/res/font/pinball.ttf
该段定义了鼠标双击间隔时间。用于系统的内部事件处理,一般无须作任何改动。该段定义了如下键:
MiniGUI.cfg 文件 mouse 段内容如下:
[mouse] dblclicktime=300
该段定义了底层事件的超时时间和自动重复事件时间。用于系统的内部事件处理,一般无须作任何改动。该段定义了如下键:
MiniGUI.cfg 文件 event 段内容如下:
timeoutusec=300000 repeatusec=50000
该段指定了?MiniGUI?要装载的鼠标光标相关信息。
如果在编译配置?MiniGUI?时使用了 --disable-cursor 选项,则?MiniGUI?会忽略 cursorinfo 段。该段定义如下键:
MiniGUI.cfg 文件 cursorinfo 段内容如下:
[cursorinfo] # Edit following line to specify cursor files path cursorpath=/usr/local/share/minigui/res/cursor/ cursornumber=23 cursor0=d_arrow.cur cursor1=d_beam.cur cursor2=d_pencil.cur cursor3=d_cross.cur cursor4=d_move.cur cursor5=d_sizenwse.cur cursor6=d_sizenesw.cur cursor7=d_sizewe.cur cursor8=d_sizens.cur cursor9=d_uparrow.cur cursor10=d_none.cur cursor11=d_help.cur cursor12=d_busy.cur cursor13=d_wait.cur cursor14=g_rarrow.cur cursor15=g_col.cur cursor16=g_row.cur cursor17=g_drag.cur cursor18=g_nodrop.cur cursor19=h_point.cur cursor20=h_select.cur cursor21=ho_split.cur cursor22=ve_split.cur
该段定义了?MiniGUI?要装载的资源相关信息。该段定义如下键:
MiniGUI.cfg 文件 iconinfo 段内容如下:
[resinfo] respath=/usr/local/share/minigui/res/
在classic 、 flat 和 fashion 这三段设置中分别定义了?MiniGUI?中的 classic 风格、flat 风格和 fashion 风格的渲染器的各项属性信息。这三段的属性都是一样的,只是所设置的值不一样。他们定义了如下的键:
MiniGUI.cfg 文件这三个段的内容如下:
# Note that max number defined in source code is 5. iconnumber=5 icon0=form.ico icon1=failed.ico icon2=help.ico icon3=warning.ico icon4=excalmatory.ico # default icons for new OpenFileDialogBox dir=folder.ico file=textfile.ico # default icons for TreeView control treefold=fold-flat.ico treeunfold=unfold-flat.ico # bitmap used by BUTTON control radiobutton=classic_radio_button.bmp checkbutton=classic_check_button.bmp # background picture, use your favirate photo bgpicture=none bgpicpos=center # bgpicpos=upleft # bgpicpos=downleft # bgpicpos=upright # bgpicpos=downright # bgpicpos=upcenter # bgpicpos=downcenter # bgpicpos=vcenterleft # bgpicpos=vcenterright # bgpicpos=none #window element metrics caption=20 menu=25 border=2 scrollbar=16 #window element colors fgc_active_caption=0xFFFFFFFF bgca_active_caption=0xFF6A240A bgcb_active_caption=0xFF6A240A fgc_menu=0xFF000000 bgc_menu=0xFFCED3D6 fgc_msgbox=0xFF000000 fgc_tip=0xFF000000 bgc_tip=0xFFE7FFFF fgc_active_border=0xFFCED3D6 fgc_inactive_border=0xFFCED3D6 fgc_inactive_caption=0xFFC8D0D4 bgca_inactive_caption=0xFF808080 bgcb_inactive_caption=0xFF808080 fgc_window=0xFF000000 bgc_window=0xFFFFFFFF fgc_3dbox=0xFF000000 mainc_3dbox=0xFFCED3D6 fgc_selected_item=0xFFFFFFFF bgc_selected_item=0xFF6B2408 bgc_selected_lostfocus=0xFFBDA69C fgc_disabled_item=0xFF848284 bgc_disabled_item=0xFFCED3D6 fgc_hilight_item=0xFFFFFFFF bgc_hilight_item=0xFF6B2408 fgc_significant_item=0xFFFFFFFF bgc_significant_item=0xFF6B2408 bgc_desktop=0xFFC08000
该段定义了MiniGUI 中的 skin 渲染器的各项属性信息。在该段中,除了包含了上述三个风格的渲染器的各项属性,还有skin 渲染器独有的一些属性信息。下面将只列出skin渲染器独有的属性键的解释,其他的键的含义和其他三个渲染器的含义一样。 这些额外的键,罗列如下: