📄 graph.c
字号:
MapSaveFontSize();
MapSetFontSize(32);
MapSetColor(MAP_COLOR_RED);
MapFillCircleRect(MSG_ERROR_POS_X, MSG_ERROR_POS_Y,
MSG_ERROR_LEN_X, MSG_ERROR_LEN_Y, 4);
MapSetColor(MAP_COLOR_WHITE);
MapDrawString(x, y, Text);
MapRestoreFontSize();
}
#if 0
#define EDIT_BOX_X (32)
#define EDIT_BOX_Y (32)
#define EDIT_BOX_C (80)
#define EDIT_BOX_R (16)
#define EDIT_BOX_W (EDIT_BOX_C * EDIT_COL_W + EDIT_FRAME * 0)
#define EDIT_BOX_H (EDIT_BOX_R * EDIT_ROW_H)
#define EDIT_COL_W ( 8)
#define EDIT_ROW_H (16 + EDIT_FRAME)
#define EDIT_FRAME ( 4)
#define EDIT_ROW(y) (EDIT_BOX_Y + EDIT_FRAME / 2 + (y) * EDIT_ROW_H)
#define EDIT_COL(x) (EDIT_BOX_X + EDIT_FRAME / 1 + (x) * EDIT_COL_W)
static OSD_POINT EditCursor;
static UINT32 MapEditColor;
void MapShowEdit()
{
MapSetColor(MAP_COLOR_GRAY);
MapFillRectangle(EDIT_BOX_X - EDIT_FRAME,
EDIT_BOX_Y - EDIT_FRAME,
EDIT_BOX_X + EDIT_BOX_W + EDIT_FRAME,
EDIT_BOX_Y + EDIT_BOX_H + EDIT_FRAME);
MapEditClear();
MapEditSetColor(MAP_COLOR_BLACK);
/*
MapSetColor(MAP_COLOR_BLUE);
MapDrawString(EDIT_COL(5), EDIT_ROW(2), "HELLO");
MapShowEditText("Hello天目领航");
*/
}
void MapShowEditText(BYTE *Text)
{
BYTE Char[3];
BYTE Size;
MapSaveFontSize();
MapSetFontSize(16);
MapSetColor(MapEditColor);
while (*Text) {
Char[0] = *Text++;
/*
if (Char[0] == 0x0D) {
MapEditNewLine();
}
else
if (Char[0] == 0x0A) {
EditCursor.x = 0;
}
else
*/
{
if (Char[0] > 0x7F) { // Chinese Font
Char[1] = *Text++;
if (Char[1] == 0)
break;
Size = 2;
}
else { // English Font
Size = 1;
}
Char[Size] = 0;
if (EditCursor.x + Size >= EDIT_BOX_C) {
MapEditNewLine();
EditCursor.x = 0;
}
MapDrawString(EDIT_COL(EditCursor.x), EDIT_ROW(EditCursor.y), Char);
EditCursor.x += Size;
}
}
MapRestoreFontSize();
MapEditSetColor(MAP_COLOR_BLACK);
}
void MapEditClear()
{
MapSaveColor();
MapSetColor(0xB08080);
MapFillRectangle(EDIT_BOX_X,
EDIT_BOX_Y,
EDIT_BOX_X + EDIT_BOX_W,
EDIT_BOX_Y + EDIT_BOX_H);
MapRestoreColor();
EditCursor.x = 0;
EditCursor.y = 0;
}
void MapEditNewLine()
{
if (EditCursor.y + 1 >= EDIT_BOX_R) {
#if 1
MapMoveWindowUp(EDIT_BOX_X, EDIT_BOX_Y, EDIT_BOX_W, EDIT_BOX_H);
MapSaveColor();
MapSetColor(0xB08080);
MapFillRectangle(EDIT_BOX_X,
EDIT_BOX_Y + EDIT_ROW_H * (EDIT_BOX_R - 1),
EDIT_BOX_X + EDIT_BOX_W,
EDIT_BOX_Y + EDIT_BOX_H);
MapRestoreColor();
#else
MapEditClear();
#endif
}
else {
EditCursor.y++;
}
}
void MapEditSetColor(UINT32 Color)
{
MapEditColor = Color;
}
#endif
#if 0
#define LINE_FILL_COLOR 0xB08080
#define LINE_DARK_COLOR 0x408080
#define LINE_BRIGHT_COLOR 0xE08080
#define SBAR_BOX_X (64)
#define SBAR_BOX_Y (480)
#define SBAR_BOX_W (704 - SBAR_BOX_X * 2)
#define SBAR_BOX_H (44)
#define SBAR_FRAME (2)
#define SBAR_TOTAL (3)
#define SBAR_COL_1 (128)
#define SBAR_COL_2 (128)
#define SBAR_COL_3 (SBAR_BOX_W - SBAR_COL_1 - SBAR_COL_2)
#define SBAR_CHR_1 (SBAR_COL_1 / 12 - 2)
const MAP_ZONE MapSBarZone[SBAR_TOTAL] = {
{ SBAR_BOX_X + SBAR_FRAME,
SBAR_BOX_Y + SBAR_FRAME,
SBAR_COL_1 - SBAR_FRAME * 2,
SBAR_BOX_H - SBAR_FRAME * 2 },
{ SBAR_BOX_X + SBAR_FRAME + SBAR_COL_1,
SBAR_BOX_Y + SBAR_FRAME,
SBAR_COL_2 - SBAR_FRAME * 2,
SBAR_BOX_H - SBAR_FRAME * 2 },
{ SBAR_BOX_X + SBAR_FRAME + SBAR_COL_1 + SBAR_COL_2,
SBAR_BOX_Y + SBAR_FRAME,
SBAR_COL_3 - SBAR_FRAME * 2,
SBAR_BOX_H - SBAR_FRAME * 2 },
};
const BYTE MapSBarText[SBAR_TOTAL][5] = {
"电源",
"上线",
"", // "时间",
};
void MapShowSBar()
{
BYTE i;
MapSetColor(LINE_FILL_COLOR);
MapFillRectangle(SBAR_BOX_X, SBAR_BOX_Y - SBAR_FRAME,
SBAR_BOX_X + SBAR_BOX_W, SBAR_BOX_Y + SBAR_BOX_H);
MapSetColor(LINE_DARK_COLOR);
for (i = 0; i < SBAR_TOTAL; i++) {
MapFillRectangle(MapSBarZone[i].x,
MapSBarZone[i].y,
MapSBarZone[i].x + MapSBarZone[i].w,
MapSBarZone[i].y + SBAR_FRAME);
MapFillRectangle(MapSBarZone[i].x,
MapSBarZone[i].y,
MapSBarZone[i].x + SBAR_FRAME,
MapSBarZone[i].y + MapSBarZone[i].h);
}
MapSetColor(LINE_BRIGHT_COLOR);
for (i = 0; i < SBAR_TOTAL; i++) {
MapFillRectangle(MapSBarZone[i].x + SBAR_FRAME,
MapSBarZone[i].y + MapSBarZone[i].h - SBAR_FRAME,
MapSBarZone[i].x + MapSBarZone[i].w,
MapSBarZone[i].y + MapSBarZone[i].h);
MapFillRectangle(MapSBarZone[i].x + MapSBarZone[i].w,
MapSBarZone[i].y,
MapSBarZone[i].x + MapSBarZone[i].w + SBAR_FRAME,
MapSBarZone[i].y + MapSBarZone[i].h);
}
MapSetColor(MAP_COLOR_BLUE);
MapSetBackColor(LINE_FILL_COLOR);
MapSetFontSize(32);
for (i = 0; i < SBAR_TOTAL; i++) {
MapFillString(MapSBarZone[i].x + SBAR_FRAME * 4,
MapSBarZone[i].y + (MapSBarZone[i].h - 32) / 2, (BYTE *)MapSBarText[i]);
}
for (i = 0; i < SBAR_TOTAL; i++) {
MapShowSBarIcon(i, 0);
}
}
void MapShowSBarIcon(BYTE Zone, BYTE State)
{
UINT16 x, y;
x = MapSBarZone[Zone].x + 64 + 36;
y = MapSBarZone[Zone].y + MapSBarZone[Zone].h / 2;
if (Zone == 2) {
/*
BYTE i;
for (i = 0; i < 5; i++) {
if (State <= i) MapSetColor(MAP_COLOR_RED);
else MapSetColor(MAP_COLOR_GREEN);
MapDrawRound(x, y, 12);
x += 36;
}
*/
}
else {
if (State) MapSetColor(MAP_COLOR_GREEN);
else MapSetColor(MAP_COLOR_RED);
MapDrawRound(x, y, 12);
}
}
void MapShowSBarText(BYTE Zone, BYTE *Text)
{
UINT16 x, y;
x = MapSBarZone[Zone].x + 64 + 36;
y = MapSBarZone[Zone].y + MapSBarZone[Zone].h / 2;
if (Zone == 2) {
MapSaveFontSize();
MapSetFontSize(32);
MapSetColor(MAP_COLOR_BLUE);
MapSetBackColor(LINE_FILL_COLOR);
MapFillString(MapSBarZone[2].x + SBAR_FRAME * 4,
MapSBarZone[2].y + (MapSBarZone[2].h - 32) / 2, Text);
MapSetColor(LINE_FILL_COLOR);
MapFillRectangle(MapSBarZone[2].x + SBAR_FRAME * 4 + strlen(Text) * 16,
MapSBarZone[2].y + SBAR_FRAME,
MapSBarZone[2].x + MapSBarZone[2].w - SBAR_FRAME,
MapSBarZone[2].y + MapSBarZone[2].h - SBAR_FRAME);
MapRestoreFontSize();
}
}
#define TALK_BOX_X (64)
#define TALK_BOX_Y (288)
#define TALK_BOX_W (704 - TALK_BOX_X * 2)
#define TALK_BOX_H (160)
#define TALK_FRAME (2)
#define TALK_TOTAL (3)
#define TALK_COL_1 (16 * 5 + TALK_FRAME * 8)
#define TALK_COL_2 (16 * 5 + TALK_FRAME * 8)
#define TALK_COL_3 (TALK_BOX_W - TALK_COL_1 - TALK_COL_2)
#define TALK_CHR_3 ((TALK_COL_3 - TALK_FRAME * 2) / 16)
#define TALK_COL_W (16)
#define TALK_ROW_H (32 + TALK_FRAME * 2)
const MAP_ZONE MapTalkZone[TALK_TOTAL] = {
{ TALK_BOX_X + TALK_FRAME,
TALK_BOX_Y + TALK_FRAME,
TALK_COL_1 - TALK_FRAME * 2,
TALK_BOX_H - TALK_FRAME * 2 },
{ TALK_BOX_X + TALK_FRAME + TALK_COL_1,
TALK_BOX_Y + TALK_FRAME,
TALK_COL_2 - TALK_FRAME * 2,
TALK_BOX_H - TALK_FRAME * 2 },
{ TALK_BOX_X + TALK_FRAME + TALK_COL_1 + TALK_COL_2,
TALK_BOX_Y + TALK_FRAME,
TALK_COL_3 - TALK_FRAME * 2,
TALK_BOX_H - TALK_FRAME * 2 },
};
void MapShowTalk()
{
BYTE i;
MapSetColor(LINE_FILL_COLOR);
MapFillRectangle(TALK_BOX_X, TALK_BOX_Y,
TALK_BOX_X + TALK_BOX_W, TALK_BOX_Y + TALK_BOX_H);
MapFillRectangle(TALK_BOX_X, TALK_BOX_Y - 48 - TALK_FRAME,
TALK_BOX_X + TALK_BOX_W, TALK_BOX_Y);
MapSetColor(LINE_DARK_COLOR);
for (i = 0; i < TALK_TOTAL; i++) {
MapFillRectangle(MapTalkZone[i].x,
MapTalkZone[i].y,
MapTalkZone[i].x + MapTalkZone[i].w,
MapTalkZone[i].y + TALK_FRAME);
MapFillRectangle(MapTalkZone[i].x,
MapTalkZone[i].y,
MapTalkZone[i].x + TALK_FRAME,
MapTalkZone[i].y + MapTalkZone[i].h);
}
MapFillRectangle(MapTalkZone[0].x,
MapTalkZone[0].y - 48,
MapTalkZone[2].x + MapTalkZone[2].w,
MapTalkZone[0].y - 48 + TALK_FRAME);
MapFillRectangle(MapTalkZone[0].x,
MapTalkZone[0].y - 48,
MapTalkZone[0].x + TALK_FRAME,
MapTalkZone[0].y - TALK_FRAME);
MapSetColor(LINE_BRIGHT_COLOR);
for (i = 0; i < TALK_TOTAL; i++) {
MapFillRectangle(MapTalkZone[i].x + TALK_FRAME,
MapTalkZone[i].y + MapTalkZone[i].h - TALK_FRAME,
MapTalkZone[i].x + MapTalkZone[i].w,
MapTalkZone[i].y + MapTalkZone[i].h);
MapFillRectangle(MapTalkZone[i].x + MapTalkZone[i].w,
MapTalkZone[i].y,
MapTalkZone[i].x + MapTalkZone[i].w + TALK_FRAME,
MapTalkZone[i].y + MapTalkZone[i].h);
}
MapFillRectangle(MapTalkZone[0].x + TALK_FRAME,
MapTalkZone[0].y - TALK_FRAME * 2,
MapTalkZone[2].x + MapTalkZone[2].w,
MapTalkZone[0].y - TALK_FRAME);
MapFillRectangle(MapTalkZone[2].x + MapTalkZone[2].w,
MapTalkZone[0].y - 48,
MapTalkZone[2].x + MapTalkZone[2].w + TALK_FRAME,
MapTalkZone[0].y - TALK_FRAME);
MapSetColor(MAP_COLOR_BLUE);
MapFillRectangle(MapTalkZone[0].x + TALK_FRAME + TALK_FRAME,
MapTalkZone[0].y - 48 + TALK_FRAME,
MapTalkZone[2].x + MapTalkZone[2].w - TALK_FRAME,
MapTalkZone[0].y - TALK_FRAME - TALK_FRAME);
/*
MapShowTalkText(0xFF, "- HELLO -");
MapShowTalkText(0x00, "-OK-");
MapShowTalkText(0x01, "13:15");
MapShowTalkText(0x02, "21广州市丰凌电器有限公司-1--广州市丰凌电器有限公司-2--广州市丰凌电器有限公司-3--");
*/
MapShowTalkText(0xFF, "控制中心消息");
}
void MapShowTalkText(BYTE Zone, BYTE *Text)
{
UINT16 x, y;
UINT16 n, c;
UINT16 i, j;
MapSaveFontSize();
MapSetFontSize(32);
if (Zone == 0xFF) {
x = TALK_BOX_X + (TALK_BOX_W - strlen(Text) * 16) / 2;
y = TALK_BOX_Y + TALK_FRAME - 48 + (48 - 32) / 2;
MapSetColor(MAP_COLOR_WHITE);
MapSetBackColor(MAP_COLOR_BLUE);
MapFillString(x, y, Text);
}
else
if (Zone == 2) {
x = MapTalkZone[Zone].x + TALK_FRAME * 4;
y = MapTalkZone[Zone].y + TALK_FRAME * 4;
MapSetColor(MAP_COLOR_BLUE);
MapSetBackColor(LINE_FILL_COLOR);
for (n = 0, i = 0; i < 4; i++) {
if (n >= strlen(Text)) {
LineBuffer[0] = 0;
}
else
if (strlen(Text + n) > TALK_CHR_3) {
strcpylen(LineBuffer, Text + n, TALK_CHR_3);
n += TALK_CHR_3;
for (c = 0, j = 0; j < TALK_CHR_3; j++) {
if (LineBuffer[j] > 0x7F) c ^= 0x01;
}
if (LineBuffer[TALK_CHR_3 - 1] > 0x7F && c) {
LineBuffer[TALK_CHR_3 - 1] = 0;
n--;
}
}
else {
strcpy(LineBuffer, Text + n);
n += strlen(LineBuffer);
}
for (j = strlen(LineBuffer); j < TALK_CHR_3; j++) {
LineBuffer[j] = ' ';
}
LineBuffer[TALK_CHR_3] = 0;
MapFillString(x, y, LineBuffer);
y += TALK_ROW_H;
}
}
else {
x = MapTalkZone[Zone].x + TALK_FRAME * 4;
y = MapTalkZone[Zone].y + TALK_FRAME * 4;
MapSetColor(MAP_COLOR_RED);
MapSetBackColor(LINE_FILL_COLOR);
MapFillString(x, y, Text);
}
MapRestoreFontSize();
}
#endif
void GraphTimer100mS()
{
#if 0
PollingMapRoll();
PollingMapNote();
if (MapBottomHoldTimer) {
MapBottomHoldTimer--;
if (MapBottomHoldTimer == 0) {
MapBottomHoldFlag = 0;
}
}
#endif
}
void ShowDebugHex(UINT32 Data, BYTE Pos)
{
UINT16 x, y;
#ifdef SUPPORT_LINEAR_PLAYBACK
if (CheckSystemState(SYSTEM_LINEAR)) return;
#endif
DispBuffer[0] = Hex2Asc[(Data >> 28) & 0x0f];
DispBuffer[1] = Hex2Asc[(Data >> 24) & 0x0f];
DispBuffer[2] = Hex2Asc[(Data >> 20) & 0x0f];
DispBuffer[3] = Hex2Asc[(Data >> 16) & 0x0f];
DispBuffer[4] = Hex2Asc[(Data >> 12) & 0x0f];
DispBuffer[5] = Hex2Asc[(Data >> 8) & 0x0f];
DispBuffer[6] = Hex2Asc[(Data >> 4) & 0x0f];
DispBuffer[7] = Hex2Asc[(Data >> 0) & 0x0f];
DispBuffer[8] = '\0';
x = (Pos / 8) * 160 + 64;
y = (Pos % 8) * 50 + 48;
MapSaveColor();
MapSaveFontSize();
MapSetFontSize(32);
MapSetColor(MAP_COLOR_BLACK);
MapFillRectangle(x - 8, y - 8, x + 32 / 2 * 8 + 8, y + 32 + 8);
MapSetColor(MAP_COLOR_WHITE);
MapDrawString(x, y, DispBuffer);
MapRestoreFontSize();
MapRestoreColor();
}
void ShowDebugDec(UINT32 Data, BYTE Pos)
{
UINT16 x, y;
#ifdef SUPPORT_LINEAR_PLAYBACK
if (CheckSystemState(SYSTEM_LINEAR)) return;
#endif
DispBuffer[0] = (Data / 10000000) % 10 + '0';
DispBuffer[1] = (Data / 1000000) % 10 + '0';
DispBuffer[2] = (Data / 100000) % 10 + '0';
DispBuffer[3] = (Data / 10000) % 10 + '0';
DispBuffer[4] = (Data / 1000) % 10 + '0';
DispBuffer[5] = (Data / 100) % 10 + '0';
DispBuffer[6] = (Data / 10) % 10 + '0';
DispBuffer[7] = (Data) % 10 + '0';
DispBuffer[8] = '\0';
x = (Pos / 8) * 160 + 64;
y = (Pos % 8) * 50 + 48;
MapSaveColor();
MapSaveFontSize();
MapSetFontSize(32);
MapSetColor(MAP_COLOR_BLACK);
MapFillRectangle(x - 8, y - 8, x + 32 / 2 * 8 + 8, y + 32 + 8);
MapSetColo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -