📄 lcmdrv.c
字号:
#include "config.h"
/***********************************************************************
* 名称:LCM_DispFill()
* 功能:向显示缓冲区填充数据
* 入口参数:filldata 要写入LCM的填充数据
* 出口参数:无
* 说明:用户根据LCM的实际情况编写此函数。
***********************************************************************/
void LCM_DispFill(TCOLOR filldata)
{
uint32 x,y;
uint16 ColorIndex = GUI_Color2Index_565(filldata);
for(y=0;y< GUI_LCM_YMAX;y++)
for(x=0;x< GUI_LCM_XMAX;x++)
*(&GBA_VRAM + 240*y + x)=ColorIndex ;
}
/****************************************************************************
* 名称:GUI_FillSCR()
* 功能:全屏填充。直接使用数据填充显示缓冲区。
* 入口参数:dat 填充的数据
* 出口参数:无
* 说明:用户根据LCM的实际情况编写此函数。
****************************************************************************/
void GUI_FillSCR(TCOLOR dat)
{
// 填充LCM
LCM_DispFill(dat);
}
/****************************************************************************
* 名称:GUI_Initialize()
* 功能:初始化GUI,包括初始化显示缓冲区,初始化LCM并清屏。
* 入口参数:无
* 出口参数:无
* 说明:用户根据LCM的实际情况编写此函数。
****************************************************************************/
void GUI_Initialize(void)
{
GBA_REG_DISPCNT = 0x0403;
GUI_ClearSCR();
}
/****************************************************************************
* 名称:GUI_Point()
* 功能:在指定位置上画点。
* 入口参数:x 指定点所在列的位置
* y 指定点所在行的位置
* color 显示颜色(对于黑白色LCM,为0时灭,为1时显示)
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
* 说明:操作失败原因是指定地址超出缓冲区范围。
****************************************************************************/
uint8 GUI_Point(uint8 x, uint8 y, TCOLOR color)
{
// 参数过滤
if(x>=GUI_LCM_XMAX) return(0);
if(y>=GUI_LCM_YMAX) return(0);
// 设置相应的点
*(&GBA_VRAM + 240*y + x) = GUI_Color2Index_565(color);
return(1);
}
/****************************************************************************
* 名称:GUI_ReadPoint()
* 功能:读取指定点的颜色。
* 入口参数:x 指定点所在列的位置
* y 指定点所在行的位置
* ret 保存颜色值的指针
* 出口参数:返回0表示指定地址超出缓冲区范围
* 说明:对于单色,设置ret的d0位为1或0,4级灰度则为d0、d1有效,8位RGB则d0--d7有效,
* RGB结构则R、G、B变量有效。
****************************************************************************/
uint8 GUI_ReadPoint(uint8 x, uint8 y, TCOLOR *ret)
{
// 参数过滤
if(x>=GUI_LCM_XMAX) return(0);
if(y>=GUI_LCM_YMAX) return(0);
*ret =GUI_Index2Color_565(*(&GBA_VRAM + 240*y + x));
return(1);
}
/****************************************************************************
* 名称:GUI_HLine()
* 功能:画水平线。
* 入口参数:x0 水平线起点所在列的位置
* y0 水平线起点所在行的位置
* x1 水平线终点所在列的位置
* color 显示颜色(对于黑白色LCM,为0时灭,为1时显示)
* 出口参数:无
* 说明:操作失败原因是指定地址超出缓冲区范围。
****************************************************************************/
void GUI_HLine(uint8 x0, uint8 y0, uint8 x1, TCOLOR color)
{
uint32 i,j;
uint16 ColorIndex = GUI_Color2Index_565(color);
j = 240*y0;
if(x1 >= x0)
{
for(i=x0; i<=x1; i++)
*(&GBA_VRAM + j + i) = ColorIndex;
}
else
{
for(i=x0; i>=x1; i--)
*(&GBA_VRAM + j + i) = ColorIndex;
}
}
/***********************************************************************
* 名称:GUI_RLine()
* 功能:画竖直线。根据硬件特点,实现加速。
* 入口参数:x0 垂直线起点所在列的位置
* y0 垂直线起点所在行的位置
* y1 垂直线终点所在行的位置
* color 显示颜色(对于黑白色LCM,为0时灭,为1时显示)
* 出口参数: 无
* 说明:操作失败原因是指定地址超出缓冲区范围。
***********************************************************************/
void GUI_RLine(uint8 x0, uint8 y0, uint8 y1, TCOLOR color)
{
uint32 i;
uint16 ColorIndex = GUI_Color2Index_565(color);
if(y1 >= y0)
{
for(i=y0; i<=y1; i++)
*(&GBA_VRAM + 240*i + x0) = ColorIndex;
}
else
{
for(i=y0; i>=y1; i--)
*(&GBA_VRAM + 240*i + x0) = ColorIndex;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -