分类:
2008-10-31 09:48:51
UI 修改的步骤
在DPF中,针对不同的Resolution,需要进行相应UI的修改,以匹配不同resolution的panel。下面以640x480的修改说明一下UI修改的步骤:
1. 针对屏的Spec编写initial scripts[inc档] 放到sdk\include\lcd\ initial_script.
在inc档开头加上:
#define PANELOFFSET 0 //For SHARP LQ104V1DG51
#define HIGHTOFFSET 0
这两个参数是用来设置Display Base的。
2. 设置initial scripts的调用路径,在lcd_controllerConst.h里面加入:
#elif defined(PANEL_640_480) //hawkwen 20080822
#include "initial_script\panel_640_480_sharp.inc"
3. 修改build\ freertos-setting.cmd,添加相应的640x480选项:
set SMEDIA_MODEL=sharp_640_480
这个会生成在build/ freertos-config.cmd,并在freertos.cmd中调用,并传给cmake作为编译参数。
4. 修改freertos/def.cmake,加入:
ELSEIF(${SMEDIA_MODEL} STREQUAL sharp_640_480) #test Hawkwen
SET(SMEDIA_DEFS
${SMEDIA_DEFS}
-DPANEL_RGB565
-DPANEL_640_480
)
PANEL_640_480是程序里面用来设置UI大小的,在所有UI相关的设置文件里面都要加入这个compile switch,然后根据UI来设置UI的大小。
5. 要设置LCD Controller [lcd_panel.c]:
先在\sdk\include\panel定义:
#elif defined(PANEL_640_480)
#define SHARP
然后,再lcd_panel.c里面设置LCD Controller:
#elif defined SHARP //PANEL_640_480
aLCD_CONTROLLER.DCLKDivide = 0xb;
aLCD_CONTROLLER.DMCLKDivide = 1;
aLCD_CONTROLLER.DHCLKDivide = 0;
aLCD_CONTROLLER.panelWidth = 640;
aLCD_CONTROLLER.panelHeight = 480;
aLCD_CONTROLLER.pitch = &pitch;
aLCD_CONTROLLER.bpp = 16;
设置了lcd controller,显示的时候就会按相应的resolution 在lcd上显示数据。
6. 对每一个涉及UI大小的文件,进行UI大小的设置,一般是根据Compile Switch宏定义UI的大小,比如在state_calendar.c 里面加入:
#elif defined(PANEL_640_480)
#define CALENDAR_DISP_WIDTH 640
#define CALENDAR_DISP_HEIGHT 480
#define TAB_X 32
#define TAB_Y 18 // height
#define TODAY_BG_W 28
#define TODAY_BG_H 24
……
对UI大小的设置,主要是根据Panel的分辨率来进行合适的设置。
7. Win32平台要修改的主要是:win32\ def.cmake和build\win32_setting.cmd, 修改的方法跟上面相同。