Remove usage blit16bitWidthBitmap

Now need use blit8BitWidthBitmap for draw image
Now big bitmap image need define as uint8_t bitmap array, for more easy use _BMP16, _BMP24, _BMP32 macro
Redefine bitmaps arrays vs this macro
Now bitmap image can be any width and height
Now any bitmap image can be draw transparent on cell
Result code more compact
pull/4/head
DiSlord 5 years ago
parent 4435c46c34
commit 037453fc8d

@ -598,13 +598,14 @@ void ili9341_set_rotation(uint8_t r)
}
void blit8BitWidthBitmap(uint16_t x, uint16_t y, uint16_t width, uint16_t height,
const uint8_t *bitmap)
const void *bitmap)
{
uint16_t *buf = spi_buffer;
uint8_t bits = 0;
const uint8_t *b = bitmap;
for (uint16_t c = 0; c < height; c++) {
for (uint16_t r = 0; r < width; r++) {
if ((r&7) == 0) bits = *bitmap++;
if ((r&7) == 0) bits = *b++;
*buf++ = (0x80 & bits) ? foreground_color : background_color;
bits <<= 1;
}
@ -612,6 +613,7 @@ void blit8BitWidthBitmap(uint16_t x, uint16_t y, uint16_t width, uint16_t height
ili9341_bulk(x, y, width, height);
}
#if 0
void blit16BitWidthBitmap(uint16_t x, uint16_t y, uint16_t width, uint16_t height,
const uint16_t *bitmap)
{
@ -625,6 +627,7 @@ void blit16BitWidthBitmap(uint16_t x, uint16_t y, uint16_t width, uint16_t heigh
}
ili9341_bulk(x, y, width, height);
}
#endif
void ili9341_drawchar(uint8_t ch, int x, int y)
{
@ -683,7 +686,7 @@ int ili9341_drawchar_size(uint8_t ch, int x, int y, uint8_t size)
void ili9341_drawfont(uint8_t ch, int x, int y)
{
blit16BitWidthBitmap(x, y, NUM_FONT_GET_WIDTH, NUM_FONT_GET_HEIGHT,
blit8BitWidthBitmap(x, y, NUM_FONT_GET_WIDTH, NUM_FONT_GET_HEIGHT,
NUM_FONT_GET_DATA(ch));
}

@ -345,8 +345,8 @@ extern const uint8_t x7x11b_bits [];
#define bFONT_GET_HEIGHT 11
#define bFONT_STR_HEIGHT 11
extern const uint16_t numfont16x22[];
#define NUM_FONT_GET_DATA(ch) (&numfont16x22[ch*22])
extern const uint8_t numfont16x22[];
#define NUM_FONT_GET_DATA(ch) (&numfont16x22[ch*2*22])
#define NUM_FONT_GET_WIDTH 16
#define NUM_FONT_GET_HEIGHT 22
@ -557,6 +557,11 @@ extern uint16_t background_color;
extern uint16_t spi_buffer[SPI_BUFFER_SIZE];
// Used for easy define big Bitmap as 0bXXXXXXXXX image
#define _BMP16(d) ((d>>8)&0xFF), ((d)&0xFF)
#define _BMP24(d) ((d>>16)&0xFF), ((d>>8)&0xFF), ((d)&0xFF)
#define _BMP32(d) ((d>>24)&0xFF), ((d>>16)&0xFF), ((d>>8)&0xFF), ((d)&0xFF)
void ili9341_init(void);
void ili9341_test(int mode);
void ili9341_bulk(int x, int y, int w, int h);
@ -571,7 +576,7 @@ void ili9341_set_background(uint16_t fg);
#endif
void ili9341_clear_screen(void);
void blit8BitWidthBitmap(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint8_t *bitmap);
void blit8BitWidthBitmap(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const void *bitmap);
void blit16BitWidthBitmap(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint16_t *bitmap);
void ili9341_drawchar(uint8_t ch, int x, int y);
void ili9341_drawstring(const char *str, int x, int y);

File diff suppressed because it is too large Load Diff

155
ui.c

@ -1634,80 +1634,81 @@ static bool menuDisabled(uint8_t type){
#define ICON_WIDTH 16
#define ICON_HEIGHT 11
static const uint16_t check_box[] = {
0b0011111111110000,
0b0010000000010000,
0b0010000000010000,
0b0010000000010000,
0b0010000000010000,
0b0010000000010000,
0b0010000000010000,
0b0010000000010000,
0b0010000000010000,
0b0010000000010000,
0b0011111111110000,
0b0011111111110000,
0b0010000000001000,
0b0010000000011000,
0b0010000000110000,
0b0010000001100000,
0b0010100011010000,
0b0010110110010000,
0b0010011100010000,
0b0010001000010000,
0b0010000000010000,
0b0011111111110000,
0b0011111111111000,
0b0010000000001000,
0b0010001111101000,
0b0010011001101000,
0b0010110001101000,
0b0010110001101000,
0b0010111111101000,
0b0010110001101000,
0b0010110001101000,
0b0010000000001000,
0b0011111111111000,
0b0011111111111000,
0b0010000000001000,
0b0010110001101000,
0b0010110001101000,
0b0010111011101000,
0b0010111111101000,
0b0010110101101000,
0b0010110101101000,
0b0010110001101000,
0b0010000000001000,
0b0011111111111000,
0b0000000000000000,
0b0000011110000000,
0b0000100001000000,
0b0001000000100000,
0b0010000000010000,
0b0010000000010000,
0b0010000000010000,
0b0010000000010000,
0b0001000000100000,
0b0000100001000000,
0b0000011110000000,
0b0000000000000000,
0b0000011110000000,
0b0000100001000000,
0b0001001100100000,
0b0010011110010000,
0b0010111111010000,
0b0010111111010000,
0b0010011110010000,
0b0001001100100000,
0b0000100001000000,
0b0000011110000000,
static const uint8_t check_box[] = {
_BMP16(0b0011111111110000),
_BMP16(0b0010000000010000),
_BMP16(0b0010000000010000),
_BMP16(0b0010000000010000),
_BMP16(0b0010000000010000),
_BMP16(0b0010000000010000),
_BMP16(0b0010000000010000),
_BMP16(0b0010000000010000),
_BMP16(0b0010000000010000),
_BMP16(0b0010000000010000),
_BMP16(0b0011111111110000),
_BMP16(0b0011111111110000),
_BMP16(0b0010000000001000),
_BMP16(0b0010000000011000),
_BMP16(0b0010000000110000),
_BMP16(0b0010000001100000),
_BMP16(0b0010100011010000),
_BMP16(0b0010110110010000),
_BMP16(0b0010011100010000),
_BMP16(0b0010001000010000),
_BMP16(0b0010000000010000),
_BMP16(0b0011111111110000),
_BMP16(0b0011111111111000),
_BMP16(0b0010000000001000),
_BMP16(0b0010001111101000),
_BMP16(0b0010011001101000),
_BMP16(0b0010110001101000),
_BMP16(0b0010110001101000),
_BMP16(0b0010111111101000),
_BMP16(0b0010110001101000),
_BMP16(0b0010110001101000),
_BMP16(0b0010000000001000),
_BMP16(0b0011111111111000),
_BMP16(0b0011111111111000),
_BMP16(0b0010000000001000),
_BMP16(0b0010110001101000),
_BMP16(0b0010110001101000),
_BMP16(0b0010111011101000),
_BMP16(0b0010111111101000),
_BMP16(0b0010110101101000),
_BMP16(0b0010110101101000),
_BMP16(0b0010110001101000),
_BMP16(0b0010000000001000),
_BMP16(0b0011111111111000),
_BMP16(0b0000000000000000),
_BMP16(0b0000011110000000),
_BMP16(0b0000100001000000),
_BMP16(0b0001000000100000),
_BMP16(0b0010000000010000),
_BMP16(0b0010000000010000),
_BMP16(0b0010000000010000),
_BMP16(0b0010000000010000),
_BMP16(0b0001000000100000),
_BMP16(0b0000100001000000),
_BMP16(0b0000011110000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000011110000000),
_BMP16(0b0000100001000000),
_BMP16(0b0001001100100000),
_BMP16(0b0010011110010000),
_BMP16(0b0010111111010000),
_BMP16(0b0010111111010000),
_BMP16(0b0010011110010000),
_BMP16(0b0001001100100000),
_BMP16(0b0000100001000000),
_BMP16(0b0000011110000000),
};
//103492 680 15896 120068 1d504 build/tinySA.elf
static void
draw_menu_buttons(const menuitem_t *menu)
{
@ -1766,15 +1767,15 @@ draw_menu_buttons(const menuitem_t *menu)
draw_button(button_start, y, button_width, button_height, &button);
uint16_t text_offs = button_start + 6;
if (button.icon >=0){
blit16BitWidthBitmap(button_start+3, y+(MENU_BUTTON_HEIGHT-ICON_HEIGHT)/2, ICON_WIDTH, ICON_HEIGHT, &check_box[button.icon*ICON_HEIGHT]);
blit8BitWidthBitmap(button_start+3, y+(MENU_BUTTON_HEIGHT-ICON_HEIGHT)/2, ICON_WIDTH, ICON_HEIGHT, &check_box[button.icon*2*ICON_HEIGHT]);
text_offs = button_start+6+ICON_WIDTH+1;
}
ili9341_drawstring_size(button.text, text_offs, y+(button_height-2*FONT_GET_HEIGHT)/2, 2);
// ili9341_drawstring_7x13(button.text, text_offs, y+(button_height-bFONT_GET_HEIGHT)/2);
#ifdef __ICONS__
if (menu[i].type & MT_ICON) {
blit16BitWidthBitmap(button_start+MENU_FORM_WIDTH-2*FORM_ICON_WIDTH-8,y+(button_height-FORM_ICON_HEIGHT)/2,FORM_ICON_WIDTH,FORM_ICON_HEIGHT,& left_icons[((menu[i].data >>4)&0xf)*FORM_ICON_HEIGHT]);
blit16BitWidthBitmap(button_start+MENU_FORM_WIDTH- FORM_ICON_WIDTH-8,y+(button_height-FORM_ICON_HEIGHT)/2,FORM_ICON_WIDTH,FORM_ICON_HEIGHT,&right_icons[((menu[i].data >>0)&0xf)*FORM_ICON_HEIGHT]);
blit8BitWidthBitmap(button_start+MENU_FORM_WIDTH-2*FORM_ICON_WIDTH-8,y+(button_height-FORM_ICON_HEIGHT)/2,FORM_ICON_WIDTH,FORM_ICON_HEIGHT,& left_icons[((menu[i].data >>4)&0xf)*2*FORM_ICON_HEIGHT]);
blit8BitWidthBitmap(button_start+MENU_FORM_WIDTH- FORM_ICON_WIDTH-8,y+(button_height-FORM_ICON_HEIGHT)/2,FORM_ICON_WIDTH,FORM_ICON_HEIGHT,&right_icons[((menu[i].data >>0)&0xf)*2*FORM_ICON_HEIGHT]);
}
#endif
} else {
@ -1784,7 +1785,7 @@ draw_menu_buttons(const menuitem_t *menu)
draw_button(button_start, y, button_width, button_height, &button);
uint16_t text_offs = button_start + 7;
if (button.icon >=0){
blit16BitWidthBitmap(button_start+2, y+(MENU_BUTTON_HEIGHT-ICON_HEIGHT)/2, ICON_WIDTH, ICON_HEIGHT, &check_box[button.icon*ICON_HEIGHT]);
blit8BitWidthBitmap(button_start+2, y+(MENU_BUTTON_HEIGHT-ICON_HEIGHT)/2, ICON_WIDTH, ICON_HEIGHT, &check_box[button.icon*2*ICON_HEIGHT]);
text_offs = button_start+2+ICON_WIDTH;
}
int lines = menu_is_multiline(button.text);

@ -20,195 +20,195 @@
#define FORM_ICON_WIDTH 16
#define FORM_ICON_HEIGHT 16
static const uint16_t left_icons [] =
static const uint8_t left_icons [] =
{
#define I_EMPTY (0*16)
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000001,
0b0000000000000001,
0b0000000000000001,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000001,
0b0000000000000001,
0b0000000000000001,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000001),
_BMP16(0b0000000000000001),
_BMP16(0b0000000000000001),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000001),
_BMP16(0b0000000000000001),
_BMP16(0b0000000000000001),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
#define I_HIGH_INPUT (1*16)
// +----------------+
0b0000000000000000, // | |
0b0000000000000000, // | |
0b0000000001100000, // | ** |
0b0000000000111001, // | *** *|
0b0000111111111111, // | *************|
0b0000000000111001, // | *** *|
0b0000000001100000, // | ** |
0b0000000000000000, // | |
0b0000000000000000, // | |
0b0000000000000000, // | |
0b0000000000000001, // | |
0b0000000000000001, // | |
0b0000000000000001, // | |
0b0000000000000000, // | |
0b0000000000000000, // | |
0b0000000000000000, // | |
// +----------------+
// +----------------+
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000001100000), // | ** |
_BMP16(0b0000000000111001), // | *** *|
_BMP16(0b0000111111111111), // | *************|
_BMP16(0b0000000000111001), // | *** *|
_BMP16(0b0000000001100000), // | ** |
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000000000001), // | |
_BMP16(0b0000000000000001), // | |
_BMP16(0b0000000000000001), // | |
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000000000000), // | |
// +----------------+
#define I_LOW_INPUT (2*16)
// +----------------+
0b0000000000000000, // | |
0b0000000000000000, // | |
0b0000000000000000, // | |
0b0000000000000001, // | |
0b0000000000000001, // | |
0b0000000000000001, // | |
0b0000000000000000, // | |
0b0000000000000000, // | |
0b0000000000000000, // | |
0b0000000001100000, // | ** |
0b0000000000111001, // | **** *|
0b0000111111111111, // | *************|
0b0000000000111001, // | **** *|
0b0000000001100000, // | ** |
0b0000000000000000, // | |
0b0000000000000000, // | |
// +----------------+
// +----------------+
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000000000001), // | |
_BMP16(0b0000000000000001), // | |
_BMP16(0b0000000000000001), // | |
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000001100000), // | ** |
_BMP16(0b0000000000111001), // | **** *|
_BMP16(0b0000111111111111), // | *************|
_BMP16(0b0000000000111001), // | **** *|
_BMP16(0b0000000001100000), // | ** |
_BMP16(0b0000000000000000), // | |
_BMP16(0b0000000000000000), // | |
// +----------------+
#define I_LOW_OUTPUT (3*16)
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000001,
0b0000000000000001,
0b0000000000000001,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000110000000,
0b0000011100000001,
0b0000111111111111,
0b0000011100000001,
0b0000000110000000,
0b0000000000000000,
0b0000000000000000,
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000001),
_BMP16(0b0000000000000001),
_BMP16(0b0000000000000001),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000110000000),
_BMP16(0b0000011100000001),
_BMP16(0b0000111111111111),
_BMP16(0b0000011100000001),
_BMP16(0b0000000110000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
#define I_HIGH_OUTPUT (4*16)
0b0000000000000000,
0b0000000000000000,
0b0000000110000000,
0b0000011100000001,
0b0000111111111111,
0b0000011100000001,
0b0000000110000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000001,
0b0000000000000001,
0b0000000000000001,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000110000000),
_BMP16(0b0000011100000001),
_BMP16(0b0000111111111111),
_BMP16(0b0000011100000001),
_BMP16(0b0000000110000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000001),
_BMP16(0b0000000000000001),
_BMP16(0b0000000000000001),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
#define I_CONNECT (5*16)
0b0000000000000000,
0b0000000000000000,
0b0000000000110000,
0b0000000000111101,
0b0000001111111111,
0b0000010000111101,
0b0000100000110000,
0b0001000000000000,
0b0001000000000000,
0b0000100000110000,
0b0000010000111101,
0b0000001111111111,
0b0000000000111101,
0b0000000000110000,
0b0000000000000000,
0b0000000000000000,
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000110000),
_BMP16(0b0000000000111101),
_BMP16(0b0000001111111111),
_BMP16(0b0000010000111101),
_BMP16(0b0000100000110000),
_BMP16(0b0001000000000000),
_BMP16(0b0001000000000000),
_BMP16(0b0000100000110000),
_BMP16(0b0000010000111101),
_BMP16(0b0000001111111111),
_BMP16(0b0000000000111101),
_BMP16(0b0000000000110000),
_BMP16(0b0000000000000000),
_BMP16(0b0000000000000000),
};
const uint16_t right_icons [] =
const uint8_t right_icons [] =
{
#define I_SA 0
// +----------------+
0b0000000000000000, // | |
0b0111111111111111, // | ***************|
0b0100000000000001, // | * *|
0b1100000000000001, // |** *|
0b1100000000000001, // |** * *|
0b1100000000000001, // |** * *|
0b0100100000000001, // | * * * *|
0b0100100000000001, // | * * * *|
0b0100101010001001, // | * * * * *|
0b0100101010101001, // | * * * * * *|
0b1100101010101001, // |** * * * * * *|
0b1101111111111101, // |** * * * * * *|
0b1100000000000001, // |** *********** *|
0b0100000000000001, // | * *|
0b0111111111111111, // | ***************|
0b0000000000000000, // | |
// +----------------+
// +----------------+
_BMP16(0b0000000000000000), // | |
_BMP16(0b0111111111111111), // | ***************|
_BMP16(0b0100000000000001), // | * *|
_BMP16(0b1100000000000001), // |** *|
_BMP16(0b1100000000000001), // |** * *|
_BMP16(0b1100000000000001), // |** * *|
_BMP16(0b0100100000000001), // | * * * *|
_BMP16(0b0100100000000001), // | * * * *|
_BMP16(0b0100101010001001), // | * * * * *|
_BMP16(0b0100101010101001), // | * * * * * *|
_BMP16(0b1100101010101001), // |** * * * * * *|
_BMP16(0b1101111111111101), // |** * * * * * *|
_BMP16(0b1100000000000001), // |** *********** *|
_BMP16(0b0100000000000001), // | * *|
_BMP16(0b0111111111111111), // | ***************|
_BMP16(0b0000000000000000), // | |
// +----------------+
#define I_GEN 1
// +----------------+
0b0000000000000000, // | |
0b0111111111111111, // | ***************|
0b0100000000000001, // | * *|
0b1100000000000001, // |** *|
0b1100111110001101, // |** ***** ** *|
0b1100100010001001, // |** * * * *|
0b0100100010001001, // | * * * * *|
0b0100100010001001, // | * * * * *|
0b0100100010001001, // | * * * * *|
0b0100100010001001, // | * * * * *|
0b1100100010001001, // |** * * * *|
0b1101100011111001, // |** ** ***** *|
0b1100000000000001, // |** *|
0b0100000000000001, // | * *|
0b0111111111111111, // | ***************|
0b0000000000000000, // | |
// +----------------+
// +----------------+
_BMP16(0b0000000000000000), // | |
_BMP16(0b0111111111111111), // | ***************|
_BMP16(0b0100000000000001), // | * *|
_BMP16(0b1100000000000001), // |** *|
_BMP16(0b1100111110001101), // |** ***** ** *|
_BMP16(0b1100100010001001), // |** * * * *|
_BMP16(0b0100100010001001), // | * * * * *|
_BMP16(0b0100100010001001), // | * * * * *|
_BMP16(0b0100100010001001), // | * * * * *|
_BMP16(0b0100100010001001), // | * * * * *|
_BMP16(0b1100100010001001), // |** * * * *|
_BMP16(0b1101100011111001), // |** ** ***** *|
_BMP16(0b1100000000000001), // |** *|
_BMP16(0b0100000000000001), // | * *|
_BMP16(0b0111111111111111), // | ***************|
_BMP16(0b0000000000000000), // | |
// +----------------+
#define I_CONFIG 2
0b0000000000000000,
0b0111111111111111,
0b0100000000000001,
0b1100000010000001,
0b1100001111000001,
0b1100011110001001,
0b0100011100011101,
0b0100011110111001,
0b0100001111111001,
0b0100011111110001,
0b1100111110000001,
0b1101111100000001,
0b1100111000000001,
0b0100000000000001,
0b0111111111111111,
0b0000000000000000,
_BMP16(0b0000000000000000),
_BMP16(0b0111111111111111),
_BMP16(0b0100000000000001),
_BMP16(0b1100000010000001),
_BMP16(0b1100001111000001),
_BMP16(0b1100011110001001),
_BMP16(0b0100011100011101),
_BMP16(0b0100011110111001),
_BMP16(0b0100001111111001),
_BMP16(0b0100011111110001),
_BMP16(0b1100111110000001),
_BMP16(0b1101111100000001),
_BMP16(0b1100111000000001),
_BMP16(0b0100000000000001),
_BMP16(0b0111111111111111),
_BMP16(0b0000000000000000),
#define I_SINUS 3
0b0000000000000000,
0b0111111111111111, // 1
0b0100000000000001, // 2
0b1100000000000001, // 3
0b1100000000110001, // 4
0b1100000001001001, // 5
0b0100000010000101, // 6
0b0101000010000101, // 7
0b0101000010000101, // 8
0b0101000010000001, // 9
0b1100100100000001, //10
0b1100011000000001, //11
0b1100000000000001, //12
0b0100000000000001, //13
0b0111111111111111, //14
0b0000000000000000,
_BMP16(0b0000000000000000),
_BMP16(0b0111111111111111), // 1
_BMP16(0b0100000000000001), // 2
_BMP16(0b1100000000000001), // 3
_BMP16(0b1100000000110001), // 4
_BMP16(0b1100000001001001), // 5
_BMP16(0b0100000010000101), // 6
_BMP16(0b0101000010000101), // 7
_BMP16(0b0101000010000101), // 8
_BMP16(0b0101000010000001), // 9
_BMP16(0b1100100100000001), //10
_BMP16(0b1100011000000001), //11
_BMP16(0b1100000000000001), //12
_BMP16(0b0100000000000001), //13
_BMP16(0b0111111111111111), //14
_BMP16(0b0000000000000000),
};
enum {

Loading…
Cancel
Save

Powered by TurnKey Linux.