📄 tddisplay.c
字号:
/********************************************************************************/
/* File Name : TdDisplay.c */
/* File Description : 时间日期的界面显示模块 */
/* Author Name : Wu Yajun */
/* Date : */
/* Copyright : mobile innovation */
/* History: Date: */
/* Author: */
/* Modify: */
/********************************************************************************/
#include "typedefs.h"
#include "dspl.h"
#include "TdDisplay.h"
#include "..\bmi\mmiiconresource.h"
#define TD_FOR_TEST 1
#if(MAIN_LCD_SIZE==3)
/* 背景 */
const TD_Rect BG_rect = {10+EX, 42, 100, 78}; //背景框位置
const TD_Attri BG_attr = {0xf8f562, 0x92782d, 0x104 };//背景框属性
const Color BG_color2 = 0xbeba32; //背景边框颜色
/* 日期设置窗口常量 */
const TD_Rect DS_input_rect = {25+EX, 19, 80, 15}; //输入框位置
const TD_Attri DS_input_attr = {0xe0e0e0, 0x004c98, 0x102};//输入框属性
const TD_Rect DS_hint_rect = {25+EX, 48, 64, 14}; //提示框位置
const TD_Attri DS_hint_attr = {0xc7eceb, 0xc7eceb, 0x200};//提示框属性
const TD_Line DS_index_l = {27+EX, 32, 34+EX, 32}; //光标位置
const Color DS_index_c = 0x0000ff; //光标颜色
/* 时间设置窗口常量 */
const TD_Rect TS_input_rect = {25+EX, 19, 76, 15}; //输入框位置
const TD_Attri TS_input_attr1 = {0xe0e0e0, 0x004c98, 0x102};//输入框属性(选中)
const TD_Attri TS_input_attr2 = {0xDBFFFF, 0xCDAAC5, 0x002};//输入框属性(未选中)
const TD_Line TS_index_l = {32+EX, 32, 38+EX, 32}; //光标位置
const Color TS_index_c = 0x0000ff; //光标颜色
const TD_Rect TS_tm_rect = {25+EX, 48, 67, 14}; //时间模式选择框位置
const TD_Attri TS_tm_attr = {0xc7eceb, 0xc7eceb, 0x100};//时间模式选择框属性(未选中)
const TD_Attri TS_tm_attr1 = {0x5ac7ff, 0x5ac7ff, 0x100};//时间模式选择框属性(选中)
const TD_Rect TS_AP_rect = {42+EX, 64, 22, 12}; //AM/PM选择框位置
const TD_Attri TS_AP_attr = {0x5ac7ff, 0x5ac7ff, 0x100};//AM/PM选择属性
/* 闹钟设置窗口常量 */
const TD_Rect AL_input_rect = {26+EX, 19, 46, 16}; //输入框位置//shiheng 288 modidy
const TD_Attri AL_input_attr1 = {0xe0e0e0, 0x004c98, 0x102};//输入框属性(选中)
const TD_Attri AL_input_attr2 = {0xDBFFFF, 0xCDAAC5, 0x002};//输入框属性(未选中)
const TD_Line AL_index_l = {31+EX, 33, 37+EX, 33}; //光标位置//shiheng 288 modify
const Color AL_index_c = 0x0000ff; //光标颜色
const TD_Rect AL_hint_rect = {24+EX, 48, 66, 14}; //时间模式提示框位置
const TD_Attri AL_hint_attr = {0xc7eceb, 0xc7eceb, 0x200};//时间模式提示框属性
const TD_Rect AL_AP_rect = {40+EX, 33, 22, 12}; //AM/PM选择框位置
const TD_Attri AL_AP_attr = {0x5ac7ff, 0x5ac7ff, 0x100};//AM/PM选择框属性
/* 定时器窗口设置常量 */
const TD_Rect TM_input_rect = {24+EX, 19, 70, 16}; //输入框位置
const TD_Attri TM_input_attr = {0xe0e0e0, 0x004c98, 0x102};//输入框属性
const TD_Line TM_index_l = {28+EX, 32, 34+EX, 32}; //光标位置
const Color TM_index_c = 0x0000ff; //光标颜色
/* 自动开关机常量 */
const TD_Rect AU_input_rect = {31+EX, 17, 40, 13}; //输入框位置
const TD_Attri AU_input_attr1 = {0xe0e0e0, 0x004c98, 0x102};//输入框属性(选中)
const TD_Attri AU_input_attr2 = {0xDBFFFF, 0xCDAAC5, 0x002};//输入框属性(未选中)
const TD_Line AU_index_l = {37+EX, 29, 41+EX, 29}; //光标位置
const Color AU_index_c = 0x0000ff; //光标颜色
const TD_Rect AU_SW_rect = {39+EX,35, 24, 12}; //开关框位置
const TD_Attri AU_SW_attr = {0x5ac7ff, 0x5ac7ff, 0x100};//开关框属性
const TD_Rect AU_AP_rect = {40+EX, 50, 22, 12}; //AM/PM选择框位置
const TD_Attri AU_AP_attr = {0x5ac7ff, 0x5ac7ff, 0x100}; //AM/PM选择框属性
/* 日程表常量 */
const TD_Rect SC_week_rect = {0, 31, 127, 14}; //星期框位置
const TD_Attri SC_week_attr = {0xc7eceb, 0xc7eceb, 0x200}; //星期框属性
const TD_Rect SC_Lunar_rect = {0, 125, 127, 16}; //农历框位置
const TD_Attri SC_Lunar_attr = {0xf8f562, 0xf8f562, 0x200};//农历框属性
const TD_Rect SC_BS_rect = {0, 17, 127, 13}; //浏览背景框
const TD_Attri SC_BS_attr = {0xc7eceb, 0xc7eceb, 0x200}; //浏览背景框属性
#elif(MAIN_LCD_SIZE==4)
/* 背景 */
const TD_Rect BG_rect = {10+EX, 40, 100, 85}; //背景框位置
const TD_Attri BG_attr = {0xf8f562, 0x92782d, 0x104 };//背景框属性
const Color BG_color2 = 0xbeba32; //背景边框颜色
/* 2004/05/20 yhf modify */
/* 日期设置窗口常量 */
const TD_Rect DS_input_rect = {16+EX, 56, 88, 18}; //输入框位置
const TD_Attri DS_input_attr = {0xe0e0e0, 0x004c98, 0x102};//输入框属性
const TD_Rect DS_hint_rect = {27+EX, 92, 66, 13}; //提示框位置
const TD_Attri DS_hint_attr = {0xc7eceb, 0xc7eceb, 0x200};//提示框属性
const TD_Line DS_index_l = {20+EX, 72, 28+EX, 72}; //光标位置
const Color DS_index_c = 0x0000ff; //光标颜色
/* 时间设置窗口常量 */
const TD_Rect TS_input_rect = {24+EX, 56, 72, 18}; //输入框位置
const TD_Attri TS_input_attr1 = {0xe0e0e0, 0x004c98, 0x102};//输入框属性(选中)
const TD_Attri TS_input_attr2 = {0xDBFFFF, 0xCDAAC5, 0x002};//输入框属性(未选中)
const TD_Line TS_index_l = {28+EX, 72, 36+EX, 72}; //光标位置
const Color TS_index_c = 0x0000ff; //光标颜色
const TD_Rect TS_tm_rect = {30+EX, 82, 60, 13}; //时间模式选择框位置
const TD_Attri TS_tm_attr = {0xc7eceb, 0xc7eceb, 0x100};//时间模式选择框属性(未选中)
const TD_Attri TS_tm_attr1 = {0x5ac7ff, 0x5ac7ff, 0x100};//时间模式选择框属性(选中)
const TD_Rect TS_AP_rect = {49+EX, 103, 22, 12}; //AM/PM选择框位置
const TD_Attri TS_AP_attr = {0x5ac7ff, 0x5ac7ff, 0x100};//AM/PM选择属性
/* 2004/05/19yhf modify */
/* 闹钟设置窗口常量 */
const TD_Rect AL_input_rect = {35+EX, 56, 50, 18}; //输入框位置
const TD_Attri AL_input_attr1 = {0xe0e0e0, 0x004c98, 0x102};//输入框属性(选中)
const TD_Attri AL_input_attr2 = {0xDBFFFF, 0xCDAAC5, 0x002};//输入框属性(未选中)
const TD_Line AL_index_l = {40+EX, 72, 48+EX, 72}; //光标位置
const Color AL_index_c = 0x0000ff; //光标颜色
const TD_Rect AL_hint_rect = {28+EX, 102, 64, 13}; //时间模式提示框位置
const TD_Attri AL_hint_attr = {0xc7eceb, 0xc7eceb, 0x200};//时间模式提示框属性
const TD_Rect AL_AP_rect = {49+EX, 82, 22, 12}; //AM/PM选择框位置
const TD_Attri AL_AP_attr = {0x5ac7ff, 0x5ac7ff, 0x100};//AM/PM选择框属性
/***end yhf modify***/
const TD_Rect TM_input_rect = {21+EX, 64, 80, 18}; //输入框位置 /* 2004/05/18 yhf modify */
//const TD_Rect TM_input_rect = {24+EX, 29, 54, 13}; //输入框位置
const TD_Attri TM_input_attr = {0xe0e0e0, 0x004c98, 0x102};//输入框属性
const TD_Line TM_index_l = {28+EX, 80, 36+EX, 80}; //光标位置
//const TD_Line TM_index_l = {28+EX, 41, 32+EX, 41}; //光标位置 /* 2004/05/18 yhf modify */
const Color TM_index_c = 0x0000ff; //光标颜色
/* 2004/05/20 yhf modify */
/* 自动开关机常量 */
const TD_Rect AU_input_rect = {35+EX, 56, 50, 18}; //输入框位置
const TD_Attri AU_input_attr1 = {0xe0e0e0, 0x004c98, 0x102};//输入框属性(选中)
const TD_Attri AU_input_attr2 = {0xDBFFFF, 0xCDAAC5, 0x002};//输入框属性(未选中)
const TD_Line AU_index_l = {40+EX, 72, 48+EX, 72}; //光标位置
const Color AU_index_c = 0x0000ff; //光标颜色
const TD_Rect AU_SW_rect = {38+EX, 82, 44, 17}; //开关框位置
const TD_Attri AU_SW_attr = {0x5ac7ff, 0x5ac7ff, 0x100};//开关框属性
const TD_Rect AU_AP_rect = {49+EX, 103, 22, 12}; //AM/PM选择框位置
const TD_Attri AU_AP_attr = {0x5ac7ff, 0x5ac7ff, 0x100}; //AM/PM选择框属性
/***end yhf modify***/
/* 日程表常量 */
const TD_Rect SC_week_rect = {0, 31, 127, 14}; //星期框位置
const TD_Attri SC_week_attr = {0xc7eceb, 0xc7eceb, 0x200}; //星期框属性
const TD_Rect SC_Lunar_rect = {0, 125, 127, 16}; //农历框位置
const TD_Attri SC_Lunar_attr = {0xf8f562, 0xf8f562, 0x200};//农历框属性
const TD_Rect SC_BS_rect = {0, 17, 127, 13}; //浏览背景框
const TD_Attri SC_BS_attr = {0xc7eceb, 0xc7eceb, 0x200}; //浏览背景框属性
#endif
/* 模块内部函数申明 */
static void drawtype1(TD_Rect r, TD_Attri a);
static void drawtype2(TD_Rect r, TD_Attri a);
static void drawtype3(TD_Rect r, TD_Attri a);
static void TD_drawRectangle0(TD_Rect r, Color color);
static void TD_drawRectangle1(TD_Rect r, Color color);
static void TD_drawRectangle2(TD_Rect r, Color color);
/* 画线 */
void TD_drawLine(TD_Line l, Color color)
{
int oldcolor;
oldcolor = dspl_SetFrgColor(color);
dspl_DrawLine(l.x1, l.y1, l.x2, l.y2);
dspl_SetFrgColor(oldcolor);
}
/* 画矩形框 */
void TD_drawSolidRectangle(TD_Rect r, TD_Attri a)
{
dspl_Clear(r.x, r.y, r.x+r.width, r.y+r.height);
/* 画填充色 */
switch(a.type & 0xff00)
{
case 0x0000:
TD_drawRectangle0(r, a.fillcolor); //无填充(白色)
break;
case 0x0100: //无渐变效果
TD_drawRectangle1(r, a.fillcolor);
break;
case 0x0200: //有渐变效果
TD_drawRectangle2(r, a.fillcolor);
break;
}
/* 画边框 */
switch(a.type & 0xff)
{
case 1: //外框缩进
drawtype1(r, a);
break;
case 2: //外框
drawtype2(r, a);
break;
case 3: //阴影外框
drawtype3(r, a);
break;
}
}
/* 无填充(白色) */
static void TD_drawRectangle0(TD_Rect r, Color color)
{
int oldcolor;
oldcolor = dspl_SetFrgColor(0xffffff);
dspl_DrawRect(r.x, r.y, r.x+r.width, r.y+r.height);
dspl_SetFrgColor(oldcolor);
}
/* 画实心矩形 */
static void TD_drawRectangle1(TD_Rect r, Color color)
{
int oldcolor;
oldcolor = dspl_SetBkgColor(color);
dspl_fill_rectangle(r.x, r.y, r.x+r.width, r.y+r.height);
dspl_SetBkgColor(oldcolor);
oldcolor = dspl_SetFrgColor(color);
dspl_DrawRect(r.x, r.y, r.x+r.width, r.y+r.height);
dspl_SetFrgColor(oldcolor);
}
/* 画实心矩形(有颜色渐变) */
static void TD_drawRectangle2(TD_Rect r, Color color)
{
int oldcolor;
int i;
TD_Line l;
oldcolor = dspl_SetFrgColor(color);
dspl_DrawRect(r.x, r.y, r.x+r.width, r.y+r.height);
dspl_SetFrgColor(oldcolor);
oldcolor = dspl_SetBkgColor(color);
l.x1 = r.x;
l.y1 = r.y;
l.x2 = r.x + r.width;
l.y2 = r.y;
for(i=0; i<r.height; i++)
{
color -= 0x030303;
l.y1++;
l.y2++;
TD_drawLine(l, color);
}
dspl_SetBkgColor(oldcolor);
}
/* 边框 缩进 */
static void drawtype1(TD_Rect r, TD_Attri a)
{
TD_Line l;
/* 上 */
l.x1 = r.x + 1;
l.y1 = r.y - 1;
l.x2 = r.x + r.width - 1;
l.y2 = r.y - 1;
TD_drawLine(l, a.framecolor);
/* 右 */
l.x1 = r.x + r.width + 1;
l.y1 = r.y + 1;
l.x2 = r.x + r.width + 1;
l.y2 = r.y + r.height - 1;
TD_drawLine(l, a.framecolor);
/* 下 */
l.x1 = r.x + 1;
l.y1 = r.y + r.height + 1;
l.x2 = r.x + r.width - 1;
l.y2 = r.y + r.height + 1;
TD_drawLine(l, a.framecolor);
/* 左 */
l.x1 = r.x - 1;
l.y1 = r.y + 1;
l.x2 = r.x - 1;
l.y2 = r.y + r.height - 1;
TD_drawLine(l, a.framecolor);
}
/* 矩形框 */
static void drawtype2(TD_Rect r, TD_Attri a)
{
TD_Line l;
/* 上 */
l.x1 = r.x - 1;
l.y1 = r.y - 1;
l.x2 = r.x + r.width ;
l.y2 = r.y - 1;
/* 右 */
TD_drawLine(l, a.framecolor);
l.x1 = r.x + r.width + 1;
l.y1 = r.y - 1;
l.x2 = r.x + r.width + 1;
l.y2 = r.y + r.height + 1;
TD_drawLine(l, a.framecolor);
/* 下 */
l.x1 = r.x - 1;
l.y1 = r.y + r.height + 1;
l.x2 = r.x + r.width + 1;
l.y2 = r.y + r.height + 1;
TD_drawLine(l, a.framecolor);
/* 左 */
l.x1 = r.x - 1;
l.y1 = r.y - 1;
l.x2 = r.x - 1;
l.y2 = r.y + r.height + 1;
TD_drawLine(l, a.framecolor);
}
/* 阴影型矩形框 */
static void drawtype3(TD_Rect r, TD_Attri a)
{
TD_Line l;
/* 右 */
l.x1 = r.x + r.width + 1;
l.y1 = r.y + 1;
l.x2 = r.x + r.width + 1;
l.y2 = r.y + r.height;
TD_drawLine(l, a.framecolor);
/* 下 */
l.x1 = r.x + 1;
l.y1 = r.y + r.height + 1;
l.x2 = r.x + r.width ;
l.y2 = r.y + r.height + 1;
TD_drawLine(l, a.framecolor);
}
/* 画图片 */
void TD_drawPic(TD_Pic pic)
{
dspl_BitBlt(pic.x, pic.y, pic.width, pic.height, 0, pic.p, 0);
}
extern const unsigned char icnMnuListBkg[];
/* 画背景框 */
void TD_drawBkg(TD_Rect r, TD_Attri a)
{
#if(MAIN_LCD_SIZE==4)
/* 2004/05/18 yhf modify */
TD_Line l;
TD_drawRectangle1(r, a.fillcolor);
/* 上 */
l.x1 = r.x - 1;
l.y1 = r.y - 1;
l.x2 = r.x + r.width ;
l.y2 = r.y - 1;
TD_drawLine(l, 0xdfa726);
/* 左 */
l.x1 = r.x - 1;
l.y1 = r.y - 1;
l.x2 = r.x - 1;
l.y2 = r.y + r.height + 1;
TD_drawLine(l, 0xdfa726);
/* 右 */
l.x1 = r.x + r.width + 1;
l.y1 = r.y ;
l.x2 = r.x + r.width + 1;
l.y2 = r.y + r.height;
TD_drawLine(l, BG_color2);
l.x1 = r.x + r.width + 2;
l.y1 = r.y + 1;
l.x2 = r.x + r.width + 2;
l.y2 = r.y + r.height + 1;
TD_drawLine(l, a.framecolor);
/* 下 */
l.x1 = r.x ;
l.y1 = r.y + r.height + 1;
l.x2 = r.x + r.width + 1;
l.y2 = r.y + r.height + 1;
TD_drawLine(l, BG_color2);
l.x1 = r.x + 1;
l.y1 = r.y + r.height + 2;
l.x2 = r.x + r.width + 1;
l.y2 = r.y + r.height + 2;
TD_drawLine(l, a.framecolor);
#elif (MAIN_LCD_SIZE==3)
DRAW_ICON(ICON_MENULISTBKGICONS);
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -