📄 bmp.c
字号:
/*********************************************************************************************
* File: lcd.c
* Author: embest
* Desc: LCD control and display functions
* History:
*********************************************************************************************/
#include "bmp.h"
#include "def.h"
#include "lcd.h"
/*------------------------------------------------------------------------------------------*/
/* global variable */
/*------------------------------------------------------------------------------------------*/
const UINT8T f_ucMouseMap[] = { /* mouse cursor bitmap */
BLACK, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK, BLACK, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK, WHITE, BLACK, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK, WHITE, WHITE, BLACK, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK, WHITE, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK, WHITE, WHITE, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY, TRANSPARENCY,
BLACK, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY,
BLACK, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, BLACK, BLACK, BLACK, BLACK, BLACK,
BLACK, WHITE, WHITE, BLACK, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK, WHITE, BLACK, TRANSPARENCY, BLACK, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK, BLACK, TRANSPARENCY, TRANSPARENCY, BLACK, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, BLACK, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY, TRANSPARENCY,
TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, BLACK, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY, TRANSPARENCY,
TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, BLACK, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY,
TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, BLACK, WHITE, WHITE, WHITE, BLACK, TRANSPARENCY,
TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, BLACK, BLACK, BLACK, TRANSPARENCY, TRANSPARENCY
};
const UINT8T f_ucMouseMap1[] = { /* mouse cursor bitmap */
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
};
UINT16T f_ulMouseX;
UINT16T f_ulMouseY;
UINT8T f_ucCursorBackUp[20][12/2];
STRU_BITMAP g_struBitmapMouse = {0x10, 4, 12, 20, TRANSPARENCY, (UINT8T *)f_ucMouseMap};
STRU_BITMAP g_struBitmapMouse1 = {0x10, 4, 12, 20, WHITE, (UINT8T *)f_ucMouseMap1};
/*********************************************************************************************
* name: bitmap_view()
* func: display bitmap
* para: x,y -- pot's X-Y coordinate
* Stru_Bitmap -- bitmap struct
* ret: none
* modify:
* comment:
*********************************************************************************************/
void bitmap_view (UINT16T x, UINT16T y, STRU_BITMAP Stru_Bitmap)
{
UINT32T i, j;
UINT8T ucColor;
for (i = 0; i < Stru_Bitmap.usHeight; i++)
{
for (j = 0; j <Stru_Bitmap.usWidth; j++)
{
if ((ucColor = *(UINT8T*)(Stru_Bitmap.pucStart + i * Stru_Bitmap.usWidth + j)) != TRANSPARENCY)
{
LCD_PUT_PIXEL(x + j, y + i, ucColor);
}
}
}
}
/*********************************************************************************************
* name: bitmap_push()
* func: push bitmap data into LCD active buffer
* para: x,y -- pot's X-Y coordinate
* Stru_Bitmap -- bitmap struct
* ret: none
* modify:
* comment:
*********************************************************************************************/
void bitmap_push (UINT16T x, UINT16T y, STRU_BITMAP Stru_Bitmap)
{
UINT32T i, j;
f_ulMouseX = x;
f_ulMouseY = y;
for (i = 0; i < Stru_Bitmap.usHeight; i++)
{
for (j = 0; j < Stru_Bitmap.usWidth; j+=2)
{
if ((x + j)%2)
{
f_ucCursorBackUp[i][j/2] =
(((*(UINT8T*)(LCD_ACTIVE_BUFFER + (y + i) * SCR_XSIZE / 2 + (x + j) / 8 * 4 + 3 - ((x + j)%8) / 2)) << 4) & 0xf0) +
(((*(UINT8T*)(LCD_ACTIVE_BUFFER + (y + i) * SCR_XSIZE / 2 + (x + j+1) / 8 * 4 + 3 - ((x + j+1)%8) / 2)) >> 4) & 0x0f);
}
else
{
f_ucCursorBackUp[i][j/2] = (*(UINT8T*)(LCD_ACTIVE_BUFFER + (y + i) * SCR_XSIZE / 2 + (x + j) / 8 * 4 + 3 - ((x + j)%8) / 2));
}
}
}
}
/*********************************************************************************************
* name: bitmap_pop()
* func: pop bitmap data into LCD active buffer
* para: x,y -- pot's X-Y coordinate
* Stru_Bitmap -- bitmap struct
* ret: none
* modify:
* comment:
*********************************************************************************************/
void bitmap_pop(UINT16T x, UINT16T y, STRU_BITMAP Stru_Bitmap)
{
UINT32T i, j;
UINT32T ulAddr, ulAddr1;
for (i = 0; i < Stru_Bitmap.usHeight; i++)
{
for (j = 0; j <Stru_Bitmap.usWidth; j+=2)
{
ulAddr = LCD_ACTIVE_BUFFER + (y + i) * SCR_XSIZE / 2 + (x + j) / 8 * 4 + 3 - ((x + j)%8) / 2;
ulAddr1 =LCD_ACTIVE_BUFFER + (y + i) * SCR_XSIZE / 2 + (x + j + 1) / 8 * 4 + 3 - ((x + j + 1)%8) / 2;
if ((x + j)%2)
{
(*(UINT8T*)ulAddr) &= 0xf0;
(*(UINT8T*)ulAddr) |= ((f_ucCursorBackUp[i][j/2] >> 4) & 0x0f);
(*(UINT8T*)ulAddr1) &= 0x0f;
(*(UINT8T*)ulAddr1) |= ((f_ucCursorBackUp[i][j/2] << 4) & 0xf0);
}
else
{
(*(UINT8T*)ulAddr) = f_ucCursorBackUp[i][j/2];
}
}
}
}
/*********************************************************************************************
* name: cursor_init()
* func: cursor init
* para: none
* ret: none
* modify:
* comment:
*********************************************************************************************/
void cursor_init(void)
{
f_ulMouseX = 0;
f_ulMouseY = 0;
cursor_view(f_ulMouseX, f_ulMouseY);
}
/*********************************************************************************************
* name: cursor_push()
* func: cursor push
* para: none
* ret: none
* modify:
* comment:
*********************************************************************************************/
void cursor_push(UINT16T x, UINT16T y)
{
bitmap_push(x, y, g_struBitmapMouse);
}
/*********************************************************************************************
* name: cursor_pop()
* func: cursor pop
* para: none
* ret: none
* modify:
* comment:
*********************************************************************************************/
void cursor_pop()
{
bitmap_pop(f_ulMouseX, f_ulMouseY, g_struBitmapMouse);
}
/*********************************************************************************************
* name: cursor_view()
* func: cursor display
* para: none
* ret: none
* modify:
* comment:
*********************************************************************************************/
void cursor_view(UINT16T x, UINT16T y)
{
cursor_push(x, y);
bitmap_view(x, y, g_struBitmapMouse);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -