//点阵数据显示 - 数据高位在前 (字库文字的显示格式)
/**
* @brief 字符字体数据排置方式
*/
#define FONT_DATA_ARRAY_TYPE_W (0)
#define FONT_DATA_ARRAY_TYPE_Y (1)
/**
* @brief 字符 点阵数据显示
* @param pBits 字符数据的缓存
* @param x_y 坐标
* @param width 字符宽度
* @param high 字符高度
* @param ft_color 字体颜色
* @param bg_color 背景颜色
* @param _type 排置方式
*/
void fontDisplay_DZ(unsigned char *pBits, unsigned short x, unsigned short y, unsigned short width, unsigned short high,
unsigned short ft_color, unsigned short bg_color, unsigned char _type)
{
unsigned int i, j, k, cnt = 0;
unsigned char temp;
unsigned char multiple = 0;
unsigned short disp_x, disp_y = 0;
//竖置横排显示Y
if (FONT_DATA_ARRAY_TYPE_Y == _type) {
multiple = ((high + 7) >> 3);
for (i = 0; i < multiple; i++)
{
for (j = 0; j < width; j++)
{
temp = pBits[cnt++];
for (k = 0; k < 8; k++)
{
disp_x = (x + j);
disp_y = (y + k + (i * 8));
if ( ((temp >> k) & 0x01) == 0 ) //bg
{
/* 显示一个像素点 */
LCD_Fast_DrawPoint(disp_x, disp_y, bg_color); //0xFFFF = WHITE
}
else //font
{
/* 显示一个像素点 */
LCD_Fast_DrawPoint(disp_x, disp_y, ft_color); //0x0000 = BLACK
}
}
}
}
}
//横置横排显示W
else if (FONT_DATA_ARRAY_TYPE_W == _type) {
multiple = ((width + 7) >> 3);
for (i = 0; i < high; i++)
{
for (j = 0; j < multiple; j++)
{
temp = pBits[cnt++];
for (k = 0; k < 8; k++)
{
disp_x = (x + k + (j * 8));
disp_y = (y + i);
if ( ((temp << k) & 0x80) == 0 ) //bg
{
/* 显示一个像素点 */
LCD_Fast_DrawPoint(disp_x, disp_y, bg_color);
}
else //font
{
/* 显示一个像素点 */
LCD_Fast_DrawPoint(disp_x, disp_y, ft_color);
}
}
}
}
}
}
/**
* @brief 测试验证 lcd 在任意坐标画点函数
*/
void test_lcd_draw_point(void)
{
for (unsigned char x = 0; x < 12; x++)
{
for (unsigned char y = 0; y < 24; y++)
{
/* 显示一个像素点 */
LCD_Fast_DrawPoint(x, y, 0xFFFF);
}
}
}