add ui, change project struct
This commit is contained in:
61
Core/App/Graphic/Fonts/quan8x8.h
Normal file
61
Core/App/Graphic/Fonts/quan8x8.h
Normal file
@ -0,0 +1,61 @@
|
||||
#pragma once
|
||||
#include <stdint.h>
|
||||
|
||||
const uint8_t FONT_QUAN_8_8[] = {
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x00, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x50, 0xF8, 0x50, 0x50, 0xF8, 0x50, 0x50, 0x00, 0x20, 0x78, 0xA0, 0x70, 0x28, 0xF0, 0x20, 0x00,
|
||||
0x40, 0xA8, 0x50, 0x20, 0x50, 0xA8, 0x10, 0x00, 0x40, 0xA0, 0xA0, 0x40, 0xA8, 0x90, 0x68, 0x00,
|
||||
0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x00,
|
||||
0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x20, 0xA8, 0x70, 0x20, 0x70, 0xA8, 0x20, 0x00,
|
||||
0x00, 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80,
|
||||
0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
|
||||
0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x00, 0x60, 0x90, 0xB0, 0xD0, 0x90, 0x90, 0x60, 0x00,
|
||||
0xC0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0xE0, 0x10, 0x10, 0x60, 0x80, 0x80, 0xF0, 0x00,
|
||||
0xE0, 0x10, 0x10, 0x60, 0x10, 0x10, 0xE0, 0x00, 0x90, 0x90, 0x90, 0x90, 0x70, 0x10, 0x10, 0x00,
|
||||
0xF0, 0x80, 0x80, 0xE0, 0x10, 0x10, 0xE0, 0x00, 0x60, 0x80, 0x80, 0xE0, 0x90, 0x90, 0x60, 0x00,
|
||||
0xF0, 0x10, 0x10, 0x20, 0x40, 0x40, 0x40, 0x00, 0x60, 0x90, 0x90, 0x60, 0x90, 0x90, 0x60, 0x00,
|
||||
0x60, 0x90, 0x90, 0x70, 0x10, 0x10, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
|
||||
0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x00,
|
||||
0x00, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x20, 0x40, 0x80, 0x00,
|
||||
0xE0, 0x10, 0x20, 0x40, 0x40, 0x00, 0x40, 0x00, 0x38, 0x44, 0x9A, 0xAA, 0xBA, 0x44, 0x30, 0x00,
|
||||
0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x90, 0x00, 0xE0, 0x90, 0x90, 0xE0, 0x90, 0x90, 0xE0, 0x00,
|
||||
0x70, 0x80, 0x80, 0x80, 0x80, 0x80, 0x70, 0x00, 0xE0, 0x90, 0x90, 0x90, 0x90, 0x90, 0xE0, 0x00,
|
||||
0xE0, 0x80, 0x80, 0xE0, 0x80, 0x80, 0xE0, 0x00, 0xE0, 0x80, 0x80, 0xE0, 0x80, 0x80, 0x80, 0x00,
|
||||
0x70, 0x80, 0x80, 0xB0, 0x90, 0x90, 0x60, 0x00, 0x90, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x90, 0x00,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xC0, 0x00,
|
||||
0x90, 0xA0, 0xA0, 0xC0, 0xA0, 0xA0, 0x90, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xE0, 0x00,
|
||||
0x88, 0xD8, 0xD8, 0xA8, 0xA8, 0x88, 0x88, 0x00, 0x90, 0xD0, 0xD0, 0xB0, 0xB0, 0x90, 0x90, 0x00,
|
||||
0x60, 0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, 0xE0, 0x90, 0x90, 0xE0, 0x80, 0x80, 0x80, 0x00,
|
||||
0x60, 0x90, 0x90, 0x90, 0x90, 0xA0, 0x50, 0x00, 0xE0, 0x90, 0x90, 0xE0, 0xA0, 0x90, 0x90, 0x00,
|
||||
0x70, 0x80, 0x80, 0x60, 0x10, 0x10, 0xE0, 0x00, 0xF8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, 0x88, 0x88, 0x50, 0x50, 0x50, 0x20, 0x20, 0x00,
|
||||
0x88, 0xA8, 0xA8, 0xA8, 0x50, 0x50, 0x50, 0x00, 0x88, 0x50, 0x50, 0x20, 0x50, 0x50, 0x88, 0x00,
|
||||
0x88, 0x50, 0x50, 0x20, 0x20, 0x20, 0x20, 0x00, 0xF0, 0x10, 0x20, 0x60, 0x40, 0x80, 0xF0, 0x00,
|
||||
0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x00,
|
||||
0xC0, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC0, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xE0, 0x10, 0x70, 0x90, 0x70, 0x00, 0x80, 0x80, 0xE0, 0x90, 0x90, 0x90, 0xE0, 0x00,
|
||||
0x00, 0x00, 0x70, 0x80, 0x80, 0x80, 0x70, 0x00, 0x10, 0x10, 0x70, 0x90, 0x90, 0x90, 0x70, 0x00,
|
||||
0x00, 0x00, 0x60, 0x90, 0xF0, 0x80, 0x70, 0x00, 0x20, 0x40, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x00,
|
||||
0x00, 0x00, 0x70, 0x90, 0x90, 0x70, 0x10, 0xE0, 0x80, 0x80, 0xE0, 0x90, 0x90, 0x90, 0x90, 0x00,
|
||||
0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0xC0,
|
||||
0x80, 0x80, 0x90, 0xA0, 0xC0, 0xA0, 0x90, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x00,
|
||||
0x00, 0x00, 0xF0, 0xA8, 0xA8, 0xA8, 0xA8, 0x00, 0x00, 0x00, 0xE0, 0x90, 0x90, 0x90, 0x90, 0x00,
|
||||
0x00, 0x00, 0x60, 0x90, 0x90, 0x90, 0x60, 0x00, 0x00, 0x00, 0xE0, 0x90, 0x90, 0xE0, 0x80, 0x80,
|
||||
0x00, 0x00, 0x70, 0x90, 0x90, 0x70, 0x10, 0x10, 0x00, 0x00, 0xA0, 0xC0, 0x80, 0x80, 0x80, 0x00,
|
||||
0x00, 0x00, 0x70, 0x80, 0x60, 0x10, 0xE0, 0x00, 0x00, 0x40, 0xE0, 0x40, 0x40, 0x40, 0x20, 0x00,
|
||||
0x00, 0x00, 0x90, 0x90, 0x90, 0x90, 0x70, 0x00, 0x00, 0x00, 0x88, 0x88, 0x50, 0x50, 0x20, 0x00,
|
||||
0x00, 0x00, 0x88, 0xA8, 0xA8, 0x50, 0x50, 0x00, 0x00, 0x00, 0x88, 0x50, 0x20, 0x50, 0x88, 0x00,
|
||||
0x00, 0x00, 0x90, 0x90, 0x90, 0x70, 0x10, 0xE0, 0x00, 0x00, 0xF0, 0x10, 0x60, 0x80, 0xF0, 0x00,
|
||||
0x20, 0x40, 0x40, 0x80, 0x40, 0x40, 0x20, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
|
||||
0x80, 0x40, 0x40, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x64, 0x98, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
const uint8_t FONT_QUAN_ASCII_WIDTH_8_8[] = {
|
||||
0x02, 0x04, 0x06, 0x06, 0x06, 0x06, 0x02, 0x03, 0x03, 0x06, 0x06, 0x03, 0x06, 0x03, 0x04, 0x05,
|
||||
0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x03, 0x03, 0x05, 0x06, 0x05, 0x05, 0x08,
|
||||
0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x05, 0x05, 0x02, 0x04, 0x05, 0x04, 0x06, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x06, 0x06, 0x05, 0x03, 0x04, 0x03, 0x04, 0x05, 0x03,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x05, 0x05, 0x02, 0x04, 0x05, 0x03, 0x06, 0x05, 0x05, 0x05,
|
||||
0x05, 0x04, 0x05, 0x04, 0x05, 0x06, 0x06, 0x06, 0x05, 0x05, 0x04, 0x02, 0x04, 0x07,
|
||||
};
|
||||
|
202
Core/App/Graphic/Fonts/unifont16x16.h
Normal file
202
Core/App/Graphic/Fonts/unifont16x16.h
Normal file
@ -0,0 +1,202 @@
|
||||
#pragma once
|
||||
#include <stdint.h>
|
||||
|
||||
const uint8_t FONT_UNIFONT_16_16[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
|
||||
0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x7E, 0x00,
|
||||
0x24, 0x00, 0x24, 0x00, 0x7E, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x48, 0x00,
|
||||
0x38, 0x00, 0x0E, 0x00, 0x09, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x4A, 0x00, 0x4C, 0x00, 0x34, 0x00,
|
||||
0x08, 0x00, 0x18, 0x00, 0x16, 0x00, 0x29, 0x00, 0x49, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00,
|
||||
0x18, 0x00, 0x29, 0x00, 0x45, 0x00, 0x42, 0x00, 0x46, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00,
|
||||
0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
|
||||
0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x49, 0x00,
|
||||
0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00,
|
||||
0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00,
|
||||
0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x24, 0x00, 0x42, 0x00, 0x46, 0x00,
|
||||
0x4A, 0x00, 0x52, 0x00, 0x62, 0x00, 0x42, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x08, 0x00,
|
||||
0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x02, 0x00, 0x02, 0x00,
|
||||
0x0C, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x02, 0x00, 0x02, 0x00,
|
||||
0x1E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x14, 0x00, 0x24, 0x00,
|
||||
0x44, 0x00, 0x44, 0x00, 0x7E, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00,
|
||||
0x7C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00,
|
||||
0x7C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00,
|
||||
0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x3E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00,
|
||||
0x10, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00,
|
||||
0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x02, 0x00, 0x02, 0x00,
|
||||
0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x4A, 0x00, 0x56, 0x00,
|
||||
0x52, 0x00, 0x52, 0x00, 0x52, 0x00, 0x4E, 0x00, 0x20, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x24, 0x00, 0x24, 0x00, 0x42, 0x00,
|
||||
0x42, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x7C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00,
|
||||
0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x44, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x44, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00,
|
||||
0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00,
|
||||
0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00,
|
||||
0x40, 0x00, 0x4E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x7E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
|
||||
0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00,
|
||||
0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x44, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00,
|
||||
0x60, 0x00, 0x60, 0x00, 0x50, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00,
|
||||
0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00, 0x66, 0x00, 0x66, 0x00,
|
||||
0x5A, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x62, 0x00, 0x62, 0x00, 0x52, 0x00,
|
||||
0x52, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x46, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x5A, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x7C, 0x00, 0x48, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00,
|
||||
0x30, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
|
||||
0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00,
|
||||
0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x5A, 0x00, 0x66, 0x00, 0x66, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00, 0x24, 0x00, 0x24, 0x00,
|
||||
0x18, 0x00, 0x24, 0x00, 0x24, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00,
|
||||
0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00,
|
||||
0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
|
||||
0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00,
|
||||
0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00,
|
||||
0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x70, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x24, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00,
|
||||
0x02, 0x00, 0x3E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5C, 0x00, 0x62, 0x00,
|
||||
0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x62, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00,
|
||||
0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x3A, 0x00, 0x46, 0x00,
|
||||
0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00,
|
||||
0x42, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7C, 0x00,
|
||||
0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x44, 0x00, 0x44, 0x00,
|
||||
0x44, 0x00, 0x38, 0x00, 0x20, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5C, 0x00, 0x62, 0x00,
|
||||
0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x00,
|
||||
0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00,
|
||||
0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x48, 0x00, 0x30, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x44, 0x00, 0x48, 0x00,
|
||||
0x50, 0x00, 0x60, 0x00, 0x50, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
|
||||
0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x49, 0x00,
|
||||
0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00,
|
||||
0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00,
|
||||
0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00,
|
||||
0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x62, 0x00, 0x5C, 0x00, 0x40, 0x00, 0x40, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x46, 0x00,
|
||||
0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x02, 0x00, 0x02, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00,
|
||||
0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00,
|
||||
0x40, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7C, 0x00,
|
||||
0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x42, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00,
|
||||
0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x24, 0x00, 0x18, 0x00, 0x24, 0x00, 0x24, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00,
|
||||
0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x26, 0x00, 0x1A, 0x00, 0x02, 0x00, 0x02, 0x00, 0x3C, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x02, 0x00,
|
||||
0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00,
|
||||
0x10, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0C, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
|
||||
0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00,
|
||||
0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x30, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x49, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
const uint8_t FONT_UNIFONT_ASCII_WIDTH_16_16[] = {
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
};
|
||||
|
53
Core/App/Graphic/Images/digi18x32.h
Normal file
53
Core/App/Graphic/Images/digi18x32.h
Normal file
@ -0,0 +1,53 @@
|
||||
#pragma once
|
||||
#include <stdint.h>
|
||||
|
||||
const uint8_t IMG_DIGI_18_32[] = {
|
||||
0xB3, 0x1F, 0x00, 0xFC, 0xFA, 0xF6, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0xF6, 0xFA, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xF0, 0xF8, 0xFC, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0xF6, 0xFA, 0xFC, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xF6, 0xFA, 0xFC, 0x00, 0x00, 0xFC, 0xF8, 0xF0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xFC, 0x00, 0x00, 0xFC, 0xFA, 0xF6,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0xFC,
|
||||
0xFA, 0xF6, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x06, 0x02, 0x00, 0x00,
|
||||
0x00, 0x00, 0x02, 0x06, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xF6, 0xFA,
|
||||
0xFC, 0x00, 0x00, 0xFC, 0xFA, 0xF6, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0xF6, 0xFA, 0xFC, 0x00, 0x00, 0xFC, 0xFA, 0xF6, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0xF6, 0xFA, 0xFC, 0x00, 0x00, 0xFF, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xBF, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xBF, 0x7F, 0xFF, 0x00, 0x00, 0xFF,
|
||||
0x7F, 0xBF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xBF, 0x7F, 0xFF, 0x00,
|
||||
0x00, 0xFF, 0x7F, 0xBF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
|
||||
0x00, 0x00, 0x00, 0xFF, 0x7F, 0xBF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x3F, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0x7F, 0xBF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0xBF, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0x7F, 0xBF, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xBF, 0x7F, 0xFF, 0x00, 0x00, 0xFE, 0xFC, 0xF8, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE, 0x00, 0x00, 0xFE,
|
||||
0xFD, 0xFB, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFB, 0xFD,
|
||||
0xFE, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0xFB, 0xFD, 0xFE, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0xFB, 0xFD, 0xFE, 0x00, 0x00, 0xFE, 0xFD, 0xFB, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0xFB, 0xFD, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0xFD, 0xFB, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFB, 0xFD, 0xFE, 0x00, 0x00, 0x00, 0x01, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFB, 0xFD, 0xFE, 0x00, 0x00, 0x7F,
|
||||
0xBF, 0xDF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xDF, 0xBF, 0x7F, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F,
|
||||
0x7F, 0x00, 0x00, 0x7F, 0xBF, 0xDF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xDF, 0xBF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xDF, 0xBF, 0x7F, 0x00, 0x00, 0x7F, 0xBF, 0xDF, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xDF, 0xBF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x7F, 0x00, 0x00, 0x7F,
|
||||
0xBF, 0xDF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xDF, 0xBF, 0x7F, 0x00,
|
||||
0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xDF, 0xBF,
|
||||
0x7F, 0x00,
|
||||
};
|
||||
const uint32_t DATA_SIZE_DIGI_18_32 = 722;
|
||||
|
44
Core/App/Graphic/asciifont.c
Normal file
44
Core/App/Graphic/asciifont.c
Normal file
@ -0,0 +1,44 @@
|
||||
#include <stdint.h>
|
||||
#include "asciifont.h"
|
||||
#include "bmfont.h"
|
||||
#include "Fonts/quan8x8.h"
|
||||
#include "Fonts/unifont16x16.h"
|
||||
|
||||
#define ASCII_CHAR_START 0x21
|
||||
#define ASCII_CHAR_END 0x7E
|
||||
|
||||
uint8_t af_get_char_data(bmf_BitmapFont *font, uint32_t unicode, uint8_t *buffer) {
|
||||
if (unicode < ASCII_CHAR_START || unicode > ASCII_CHAR_END) {
|
||||
return 0;
|
||||
}
|
||||
uint8_t ch_w = font->char_width;
|
||||
uint8_t ch_h = font->char_height;
|
||||
uint8_t wp = ch_w / 8;
|
||||
wp += (ch_w % 8) ? 1 : 0;
|
||||
uint16_t buffer_size = wp * ch_h;
|
||||
uint32_t start, curr;
|
||||
start = (unicode - ASCII_CHAR_START) * buffer_size;
|
||||
for (curr = 0; curr < buffer_size; curr ++) {
|
||||
buffer[curr] = font->font_date[start + curr];
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
bmf_BitmapFont font_quan_8x8_obj = {
|
||||
af_get_char_data,
|
||||
FONT_QUAN_8_8,
|
||||
8,
|
||||
8,
|
||||
FONT_QUAN_ASCII_WIDTH_8_8
|
||||
};
|
||||
|
||||
bmf_BitmapFont font_unifont_16x16_obj = {
|
||||
af_get_char_data,
|
||||
FONT_UNIFONT_16_16,
|
||||
16,
|
||||
16,
|
||||
FONT_UNIFONT_ASCII_WIDTH_16_16
|
||||
};
|
||||
|
||||
bmf_BitmapFont *font_quan_8x8 = &font_quan_8x8_obj;
|
||||
bmf_BitmapFont *font_unifont_16x16 = &font_unifont_16x16_obj;
|
6
Core/App/Graphic/asciifont.h
Normal file
6
Core/App/Graphic/asciifont.h
Normal file
@ -0,0 +1,6 @@
|
||||
#pragma once
|
||||
#include <stdint.h>
|
||||
#include "bmfont.h"
|
||||
|
||||
extern bmf_BitmapFont *font_quan_8x8;
|
||||
extern bmf_BitmapFont *font_unifont_16x16;
|
189
Core/App/Graphic/bmfont.c
Normal file
189
Core/App/Graphic/bmfont.c
Normal file
@ -0,0 +1,189 @@
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include "bmfont.h"
|
||||
#include "st7735.h"
|
||||
|
||||
#define malloc(s) malloc(s)
|
||||
#define free(p) free(p)
|
||||
|
||||
#define bmf_TAB_SIZE 2
|
||||
#define bmf_ASCII_EOF 0
|
||||
#define bmf_ASCII_T 9
|
||||
#define bmf_ASCII_N 10
|
||||
#define bmf_ASCII_R 13
|
||||
#define bmf_ASCII_SPACE 32
|
||||
#define bmf_ASCII_START 33 // include
|
||||
#define bmf_ASCII_END 126 //include
|
||||
|
||||
typedef struct {
|
||||
const uint32_t byte_limit;
|
||||
uint32_t byte_offset;
|
||||
const int16_t start_x;
|
||||
const int16_t start_y;
|
||||
const uint16_t width_limit;
|
||||
const uint16_t height_limit;
|
||||
int16_t char_x;
|
||||
int16_t char_y;
|
||||
uint32_t count;
|
||||
uint32_t unicode;
|
||||
uint8_t *utf8_text;
|
||||
uint8_t last_char_width;
|
||||
uint8_t is_looping;
|
||||
} bmf_LoopState;
|
||||
|
||||
void place_next_char(bmf_BitmapFont *font, bmf_LoopState *state) {
|
||||
state->char_x += state->last_char_width;
|
||||
state->last_char_width = 0;
|
||||
// get unicode char
|
||||
uint32_t b_off = state->byte_offset;
|
||||
uint32_t b_lim = state->byte_limit;
|
||||
uint8_t *utf8_text = state->utf8_text;
|
||||
if (b_off >= b_lim) {
|
||||
state->is_looping = 0;
|
||||
state->unicode = bmf_ASCII_EOF;
|
||||
return;
|
||||
}
|
||||
uint8_t lead = state->utf8_text[b_off];
|
||||
b_off ++;
|
||||
uint8_t u8_char_size = 0;
|
||||
uint32_t unicode = 0;
|
||||
while ((b_off < b_lim) && ((utf8_text[b_off] & 0b11000000) == 0b10000000)) {
|
||||
unicode = unicode << 6;
|
||||
unicode = unicode | (utf8_text[b_off] & 0b00111111);
|
||||
b_off ++;
|
||||
u8_char_size ++;
|
||||
}
|
||||
if (u8_char_size == 0) {
|
||||
unicode = lead;
|
||||
} else {
|
||||
lead = (0b00111111 >> u8_char_size) & lead;
|
||||
unicode = unicode | (lead << (u8_char_size * 6));
|
||||
}
|
||||
if (unicode == bmf_ASCII_EOF) {
|
||||
state->is_looping = 0;
|
||||
return;
|
||||
}
|
||||
// get char width
|
||||
if (unicode == bmf_ASCII_SPACE) {
|
||||
u8_char_size = font->char_width / 2; // half width space
|
||||
} else if (unicode == bmf_ASCII_T) {
|
||||
u8_char_size = font->char_width * bmf_TAB_SIZE;
|
||||
} else if (unicode == bmf_ASCII_R || unicode == bmf_ASCII_N) {
|
||||
u8_char_size = 0;
|
||||
} else if (unicode >= bmf_ASCII_START && unicode <= bmf_ASCII_END) {
|
||||
u8_char_size = font->ascii_width[unicode - bmf_ASCII_START];
|
||||
} else {
|
||||
u8_char_size = font->char_width; // now u8_char_size become char_width
|
||||
}
|
||||
// process special character
|
||||
if (unicode == bmf_ASCII_N || (state->width_limit > 0 && state->char_x + u8_char_size - state->start_x > state->width_limit)) {
|
||||
state->char_y += font->char_height;
|
||||
state->char_x = state->start_x;
|
||||
}
|
||||
if (state->height_limit > 0 && (state->char_y + font->char_height - state->start_y > state->width_limit)) {
|
||||
if (unicode == bmf_ASCII_N) {
|
||||
state->byte_offset = b_off;
|
||||
state->unicode = unicode;
|
||||
state->last_char_width = u8_char_size;
|
||||
state->count ++;
|
||||
}
|
||||
state->is_looping = 0;
|
||||
return;
|
||||
}
|
||||
state->byte_offset = b_off;
|
||||
state->count ++;
|
||||
state->unicode = unicode;
|
||||
state->last_char_width = u8_char_size;
|
||||
return;
|
||||
}
|
||||
|
||||
uint16_t bmf_get_text_width(bmf_BitmapFont *font, uint8_t *text, uint32_t bytes_len) {
|
||||
uint16_t total_width = 0;
|
||||
uint32_t b_off = 0;
|
||||
while (b_off < bytes_len) {
|
||||
// get unicode char
|
||||
uint8_t lead = text[b_off];
|
||||
b_off ++;
|
||||
uint8_t u8_char_size = 0;
|
||||
uint32_t unicode = 0;
|
||||
while ((b_off < bytes_len) && ((text[b_off] & 0b11000000) == 0b10000000)) {
|
||||
unicode = unicode << 6;
|
||||
unicode = unicode | (text[b_off] & 0b00111111);
|
||||
b_off ++;
|
||||
u8_char_size ++;
|
||||
}
|
||||
if (u8_char_size == 0) {
|
||||
unicode = lead;
|
||||
} else {
|
||||
lead = (0b00111111 >> u8_char_size) & lead;
|
||||
unicode = unicode | (lead << (u8_char_size * 6));
|
||||
}
|
||||
if (unicode == bmf_ASCII_EOF) {
|
||||
break;
|
||||
}
|
||||
// get char width
|
||||
if (unicode == bmf_ASCII_SPACE) {
|
||||
u8_char_size = font->char_width / 2; // half width space
|
||||
} else if (unicode == bmf_ASCII_T) {
|
||||
u8_char_size = font->char_width * bmf_TAB_SIZE;
|
||||
} else if (unicode == bmf_ASCII_R || unicode == bmf_ASCII_N) {
|
||||
u8_char_size = 0;
|
||||
} else if (unicode >= bmf_ASCII_START && unicode <= bmf_ASCII_END) {
|
||||
u8_char_size = font->ascii_width[unicode - bmf_ASCII_START];
|
||||
} else {
|
||||
u8_char_size = font->char_width; // now u8_char_size become char_width
|
||||
}
|
||||
total_width += u8_char_size;
|
||||
}
|
||||
return total_width;
|
||||
}
|
||||
|
||||
uint32_t bmf_draw_text(bmf_BitmapFont *font, uint8_t *text, uint32_t bytes_len, uint16_t x, uint16_t y, uint16_t width_limit, uint16_t height_limit, uint16_t color) {
|
||||
bmf_LoopState state_obj = {bytes_len, 0, x, y, width_limit, height_limit, x, y, 0, 0, text, 0, 1};
|
||||
bmf_LoopState *state = &state_obj;
|
||||
bmf_FunctionGetCharImage get_char_image = font->get_char_image;
|
||||
uint8_t ch_w = font->char_width;
|
||||
uint8_t ch_h = font->char_height;
|
||||
uint8_t wp = ch_w / 8;
|
||||
wp += (ch_w % 8) ? 1 : 0;
|
||||
uint16_t buffer_size = wp * ch_h;
|
||||
uint8_t *buffer = malloc(buffer_size);
|
||||
while (state_obj.is_looping) {
|
||||
place_next_char(font, state);
|
||||
if (state_obj.is_looping && state_obj.unicode != bmf_ASCII_R && state_obj.unicode != bmf_ASCII_N && state_obj.unicode != bmf_ASCII_T && state_obj.unicode != bmf_ASCII_SPACE) {
|
||||
// draw character
|
||||
if (get_char_image(font, state_obj.unicode, buffer)) {
|
||||
int16_t x = state_obj.char_x;
|
||||
int16_t x_end = x + font->char_width;
|
||||
int16_t y = state_obj.char_y;
|
||||
uint16_t buffer_p;
|
||||
uint8_t hdata;
|
||||
uint8_t bit;
|
||||
for (buffer_p = 0; buffer_p < buffer_size; buffer_p ++) {
|
||||
hdata = buffer[buffer_p];
|
||||
for (bit = 0; bit < 8; bit ++) {
|
||||
if (hdata & (0b10000000 >> bit)) {
|
||||
ST7735_DrawPixel((uint16_t)x, (uint16_t)y, color);
|
||||
}
|
||||
x ++;
|
||||
}
|
||||
if (x >= x_end) {
|
||||
x = state_obj.char_x;
|
||||
y ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
free(buffer);
|
||||
return state_obj.byte_offset;
|
||||
}
|
||||
|
||||
uint32_t bmf_get_text_offset(bmf_BitmapFont *font, uint8_t *text, uint32_t bytes_len, uint16_t width_limit, uint16_t height_limit) {
|
||||
bmf_LoopState state_obj = {bytes_len, 0, 0, 0, width_limit, height_limit, 0, 0, 0, 0, text, 0, 1};
|
||||
bmf_LoopState *state = &state_obj;
|
||||
while (state_obj.is_looping) {
|
||||
place_next_char(font, state);
|
||||
}
|
||||
return state_obj.byte_offset;
|
||||
}
|
19
Core/App/Graphic/bmfont.h
Normal file
19
Core/App/Graphic/bmfont.h
Normal file
@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define u8str(x) ((uint8_t *)x)
|
||||
|
||||
typedef struct bmf_BitmapFont bmf_BitmapFont;
|
||||
typedef uint8_t (*bmf_FunctionGetCharImage)(bmf_BitmapFont *font, uint32_t unicode, uint8_t *buffer); // MONO_HMSB format
|
||||
typedef struct bmf_BitmapFont {
|
||||
bmf_FunctionGetCharImage get_char_image;
|
||||
const uint8_t *font_date;
|
||||
const uint8_t char_width;
|
||||
const uint8_t char_height;
|
||||
const uint8_t *ascii_width; // size [94]
|
||||
} bmf_BitmapFont;
|
||||
|
||||
uint16_t bmf_get_text_width(bmf_BitmapFont *font, uint8_t *text, uint32_t bytes_len);
|
||||
uint32_t bmf_draw_text(bmf_BitmapFont *font, uint8_t *text, uint32_t bytes_len, uint16_t x, uint16_t y, uint16_t width_limit, uint16_t height_limit, uint16_t color);
|
||||
uint32_t bmf_get_text_offset(bmf_BitmapFont *font, uint8_t *text, uint32_t bytes_len, uint16_t width_limit, uint16_t height_limit);
|
52
Core/App/Graphic/monoimg.c
Normal file
52
Core/App/Graphic/monoimg.c
Normal file
@ -0,0 +1,52 @@
|
||||
#include <stdint.h>
|
||||
#include "monoimg.h"
|
||||
|
||||
#define max(a,b) ((a) >= (b) ? (a) : (b))
|
||||
#define min(a,b) ((a) <= (b) ? (a) : (b))
|
||||
|
||||
uint8_t mimg_get_pixel_unsafe(const uint8_t *img, uint8_t x, uint8_t y) {
|
||||
// MVLSB format
|
||||
uint8_t width = img[0] + 1;
|
||||
uint16_t index = (y >> 3) * width + x + 2;
|
||||
uint8_t offset = y & 0x07;
|
||||
uint8_t value = (img[index] >> offset) & 0x01;
|
||||
return value; // return 1 or 0
|
||||
}
|
||||
|
||||
uint8_t mimg_get_pixel(const uint8_t *img, uint16_t x, uint16_t y) {
|
||||
// MVLSB format
|
||||
uint8_t width = img[0] + 1;
|
||||
uint8_t height = img[1] + 1;
|
||||
if (x >= width || y >= height) {
|
||||
return 0;
|
||||
}
|
||||
return mimg_get_pixel_unsafe(img, (uint8_t)x, (uint8_t)y);
|
||||
}
|
||||
|
||||
void mimg_draw(mimg_FunctionSetPixel set_pixel, uint16_t x, uint16_t y, uint16_t color, const uint8_t *img, mimg_Area area) {
|
||||
uint8_t width_s1 = img[0]; // width - 1
|
||||
uint8_t height_s1 = img[1]; // height - 1
|
||||
uint8_t ix = min(area.x, width_s1);
|
||||
uint8_t iy = min(area.y, height_s1);
|
||||
uint8_t iw = min(area.w, width_s1 - ix + 1);
|
||||
uint8_t ih = min(area.h, height_s1 - iy + 1);
|
||||
uint8_t off_x, off_y;
|
||||
for (off_y = 0; off_y < ih; off_y ++) {
|
||||
for (off_x = 0; off_x < iw; off_x ++) {
|
||||
if (mimg_get_pixel_unsafe(img, ix + off_x, iy + off_y)) {
|
||||
set_pixel(x + off_x, y + off_y, color);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mimg_Area mimg_get_tile_area(const uint8_t *img, uint8_t cols, uint8_t rows, uint8_t index) {
|
||||
uint8_t width = img[0] + 1;
|
||||
uint8_t height = img[1] + 1;
|
||||
mimg_Area area;
|
||||
area.w = width / cols;
|
||||
area.h = height / rows;
|
||||
area.y = (index / cols) * area.h;
|
||||
area.x = (index % cols) * area.w;
|
||||
return area;
|
||||
}
|
19
Core/App/Graphic/monoimg.h
Normal file
19
Core/App/Graphic/monoimg.h
Normal file
@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
#include <stdint.h>
|
||||
|
||||
typedef void (*mimg_FunctionSetPixel)(uint16_t x, uint16_t y, uint16_t color);
|
||||
typedef struct mimg_Area
|
||||
{
|
||||
uint8_t x;
|
||||
uint8_t y;
|
||||
uint8_t w;
|
||||
uint8_t h;
|
||||
} mimg_Area;
|
||||
|
||||
|
||||
/** get a pixel from img, return 1 or 0 */
|
||||
uint8_t mimg_get_pixel(const uint8_t *img, uint16_t x, uint16_t y);
|
||||
/** draw a part of img {ix, iy, iw, ih} , at (x, y) with color */
|
||||
void mimg_draw(mimg_FunctionSetPixel set_pixel, uint16_t x, uint16_t y, uint16_t color, const uint8_t *img, mimg_Area area);
|
||||
/** calc tile area */
|
||||
mimg_Area mimg_get_tile_area(const uint8_t *img, uint8_t cols, uint8_t rows, uint8_t index);
|
116
Core/App/Graphic/ui.c
Normal file
116
Core/App/Graphic/ui.c
Normal file
@ -0,0 +1,116 @@
|
||||
#include <stdint.h>
|
||||
#include "global.h"
|
||||
#include "st7735.h"
|
||||
#include "Images/digi18x32.h"
|
||||
#include "monoimg.h"
|
||||
#include "bmfont.h"
|
||||
#include "asciifont.h"
|
||||
|
||||
void ui_text_number18x32(uint32_t num, uint16_t x, uint16_t y, uint16_t color) {
|
||||
uint32_t tmp = num;
|
||||
uint32_t div = 1;
|
||||
uint8_t num_count = 0;
|
||||
while (tmp > 0) {
|
||||
tmp = tmp / 10;
|
||||
num_count ++;
|
||||
div = div * 10;
|
||||
}
|
||||
div = div / 10;
|
||||
if (div == 0) {
|
||||
mimg_Area area = mimg_get_tile_area(IMG_DIGI_18_32, 10, 1, 0);
|
||||
mimg_draw(ST7735_DrawPixel, x, y, color, IMG_DIGI_18_32, area);
|
||||
} else {
|
||||
while (div > 0) {
|
||||
tmp = (num / div) % 10;
|
||||
mimg_Area area = mimg_get_tile_area(IMG_DIGI_18_32, 10, 1, tmp);
|
||||
mimg_draw(ST7735_DrawPixel, x, y, color, IMG_DIGI_18_32, area);
|
||||
x = x + 18;
|
||||
div = div / 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: 绘制界面的函数
|
||||
/* UI元素 */
|
||||
void ui_com_main_border() {
|
||||
// border
|
||||
ST7735_FillRectangle(0, 0, ST7735_WIDTH, 1, ST7735_YELLOW);
|
||||
ST7735_FillRectangle(0, 17, ST7735_WIDTH, 1, ST7735_YELLOW);
|
||||
ST7735_FillRectangle(0, ST7735_HEIGHT - 34, ST7735_WIDTH, 1, ST7735_YELLOW);
|
||||
ST7735_FillRectangle(0, ST7735_HEIGHT - 1, ST7735_WIDTH, 1, ST7735_YELLOW);
|
||||
ST7735_FillRectangle(0, 0, 1, ST7735_HEIGHT, ST7735_YELLOW);
|
||||
ST7735_FillRectangle(ST7735_WIDTH - 1, 0, 1, ST7735_HEIGHT, ST7735_YELLOW);
|
||||
}
|
||||
|
||||
void ui_com_freq_digital(uint8_t clear) {
|
||||
// 5位数字, 即高32,宽90
|
||||
uint16_t off_x = (ST7735_WIDTH - 90) / 2;
|
||||
uint16_t off_y = (ST7735_HEIGHT - 32 - 34 - 18) / 2 + 17;
|
||||
if (clear) {
|
||||
ST7735_FillRectangle(off_x, off_y, 32, 90, ST7735_BLACK);
|
||||
}
|
||||
uint16_t scale = 10000;
|
||||
uint32_t tmp = 0;
|
||||
while (scale > 0) {
|
||||
tmp = (global_data.freq / scale) % 10;
|
||||
ui_text_number18x32(tmp, off_x, off_y, ST7735_COLOR565(0xFF, 0x7F, 0));
|
||||
off_x += 18;
|
||||
scale /= 10;
|
||||
}
|
||||
}
|
||||
|
||||
void ui_com_progress_bar(uint8_t clear, uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t border_color, uint16_t fill_color, uint32_t current, uint32_t total) {
|
||||
if (clear) {
|
||||
ST7735_FillRectangle(x, y, w, h, ST7735_BLACK);
|
||||
}
|
||||
// border
|
||||
ST7735_FillRectangle(x, y, w, 1, border_color);
|
||||
ST7735_FillRectangle(x, y + h - 1, w, 1, border_color);
|
||||
ST7735_FillRectangle(x, y, 1, h, border_color);
|
||||
ST7735_FillRectangle(x + w - 1, y, 1, h, border_color);
|
||||
// bar
|
||||
x += 1;
|
||||
y += 1;
|
||||
w -= 2;
|
||||
h -= 2;
|
||||
uint16_t bar_width = w * current / total;
|
||||
ST7735_FillRectangle(x, y, bar_width, h, fill_color);
|
||||
}
|
||||
|
||||
void ui_com_vol_bar(uint8_t clear) {
|
||||
uint16_t off_x = 1;
|
||||
uint16_t off_y = ST7735_HEIGHT - 33;
|
||||
if (clear) {
|
||||
ST7735_FillRectangle(off_x, off_y, ST7735_WIDTH - 2, 16, ST7735_BLACK);
|
||||
}
|
||||
uint16_t color_skyblue = ST7735_COLOR565(0, 0x7F, 0xFF);
|
||||
// text, 32x16
|
||||
off_x = off_x + (32 - bmf_get_text_width(font_unifont_16x16, u8str("VOL"), 3)) / 2;
|
||||
bmf_draw_text(font_unifont_16x16, u8str("VOL"), 3, off_x, off_y, 32, 16, color_skyblue);
|
||||
// bar
|
||||
off_x = 1 + 32;
|
||||
ui_com_progress_bar(clear, 33, off_y + 2, ST7735_WIDTH - 34 - 3, 13, ST7735_WHITE, color_skyblue, global_data.volumn, 16);
|
||||
}
|
||||
|
||||
void ui_com_sig_bar(uint8_t clear) {
|
||||
uint16_t off_x = 1;
|
||||
uint16_t off_y = ST7735_HEIGHT - 17;
|
||||
if (clear) {
|
||||
ST7735_FillRectangle(off_x, off_y, ST7735_WIDTH - 2, 16, ST7735_BLACK);
|
||||
}
|
||||
// text, 32x16
|
||||
off_x = off_x + (32 - bmf_get_text_width(font_unifont_16x16, u8str("SIG"), 3)) / 2;
|
||||
bmf_draw_text(font_unifont_16x16, u8str("SIG"), 3, off_x, off_y, 32, 16, ST7735_GREEN);
|
||||
// bar
|
||||
off_x = 1 + 32;
|
||||
ui_com_progress_bar(clear, 33, off_y + 1, ST7735_WIDTH - 34 - 3, 13, ST7735_WHITE, ST7735_GREEN, global_data.signal, 255);
|
||||
}
|
||||
|
||||
/* 供外部调用的方法 */
|
||||
void ui_screen_main() {
|
||||
ST7735_FillScreen(ST7735_BLACK);
|
||||
ui_com_main_border();
|
||||
ui_com_freq_digital(0);
|
||||
ui_com_vol_bar(0);
|
||||
ui_com_sig_bar(0);
|
||||
}
|
7
Core/App/Graphic/ui.h
Normal file
7
Core/App/Graphic/ui.h
Normal file
@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
#include <stdint.h>
|
||||
|
||||
void ui_text_number18x32(uint32_t num, uint16_t x, uint16_t y, uint16_t color);
|
||||
|
||||
/* 绘制主界面 */
|
||||
void ui_screen_main();
|
11
Core/App/app.c
Normal file
11
Core/App/app.c
Normal file
@ -0,0 +1,11 @@
|
||||
#include "gpio.h"
|
||||
#include "ui.h"
|
||||
|
||||
void app_init() {
|
||||
ui_screen_main();
|
||||
}
|
||||
|
||||
void app_main_loop() {
|
||||
HAL_GPIO_TogglePin(LED_STATUS_GPIO_Port,LED_STATUS_Pin);
|
||||
HAL_Delay(300);
|
||||
}
|
4
Core/App/app.h
Normal file
4
Core/App/app.h
Normal file
@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
void app_init();
|
||||
void app_main_loop();
|
9
Core/App/global.c
Normal file
9
Core/App/global.c
Normal file
@ -0,0 +1,9 @@
|
||||
#include <stdint.h>
|
||||
#include "global.h"
|
||||
|
||||
GlobalData global_data = {
|
||||
901, // freq
|
||||
0, // freq_float
|
||||
16, // volumn
|
||||
97 //signal
|
||||
};
|
12
Core/App/global.h
Normal file
12
Core/App/global.h
Normal file
@ -0,0 +1,12 @@
|
||||
/** Global Data Define */
|
||||
#pragma once
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct GlobalData {
|
||||
uint32_t freq;
|
||||
uint8_t freq_float;
|
||||
uint8_t volumn;
|
||||
uint8_t signal;
|
||||
} GlobalData;
|
||||
|
||||
extern GlobalData global_data;
|
Reference in New Issue
Block a user