⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tddisplay.c

📁 是一个手机功能的模拟程序
💻 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 + -