Skip to content

Commit

Permalink
[Painter] Update frame again and add some truncation functions(?)
Browse files Browse the repository at this point in the history
  • Loading branch information
drashna committed Aug 2, 2024
1 parent 115ffc1 commit c57c466
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 15 deletions.
28 changes: 15 additions & 13 deletions users/drashna/display/painter/graphics/frame.qgf.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,23 @@

#include <qp.h>

const uint32_t gfx_frame_length = 1744;
const uint32_t gfx_frame_length = 1761;

// clang-format off
const uint8_t gfx_frame[1744] = {
0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0xD0, 0x06, 0x00, 0x00, 0x2F, 0xF9, 0xFF,
const uint8_t gfx_frame[1761] = {
0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0xE1, 0x06, 0x00, 0x00, 0x1E, 0xF9, 0xFF,
0xFF, 0xF0, 0x00, 0x40, 0x01, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0xA0, 0x06, 0x00,
0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0xB1, 0x06, 0x00,
0x80, 0x80, 0x1C, 0xFF, 0x82, 0x01, 0x40, 0x80, 0x1A, 0xFF, 0x83, 0x00, 0x02, 0x20, 0x00, 0x19,
0xFF, 0x85, 0x7F, 0x00, 0x04, 0x10, 0x00, 0xFE, 0x18, 0xFF, 0x81, 0x3F, 0x00, 0x02, 0x08, 0x81,
0x00, 0xFC, 0x18, 0xFF, 0x85, 0x1F, 0x00, 0x10, 0x04, 0x00, 0xF8, 0x18, 0xFF, 0x85, 0x0F, 0x00,
0x20, 0x02, 0x00, 0xF0, 0x18, 0xFF, 0x85, 0x07, 0x00, 0x40, 0x02, 0x00, 0xE0, 0x18, 0xFF, 0x85,
0x03, 0x00, 0x40, 0x02, 0x00, 0xC0, 0x18, 0xFF, 0x85, 0x01, 0x00, 0x40, 0x02, 0x00, 0x80, 0x18,
0xFF, 0x02, 0x00, 0x81, 0x40, 0x02, 0x02, 0x00, 0x17, 0xFF, 0x80, 0x7F, 0x02, 0x00, 0x81, 0x40,
0x02, 0x02, 0x00, 0x80, 0xFE, 0x16, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x81, 0x40, 0x02, 0x02, 0x00,
0x80, 0xFC, 0x16, 0xFF, 0x80, 0x1F, 0x02, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02,
0x80, 0xFC, 0x16, 0xFF, 0x80, 0x1F, 0x02, 0x00, 0x81, 0x40, 0x02, 0x02, 0x00, 0x80, 0xF8, 0x16,
0xFF, 0x80, 0x0F, 0x02, 0x00, 0x81, 0x40, 0x02, 0x04, 0x00, 0x81, 0x20, 0x02, 0x05, 0x00, 0x80,
0x02, 0x10, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02,
0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C,
0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00,
0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81,
Expand Down Expand Up @@ -116,13 +118,13 @@ const uint8_t gfx_frame[1744] = {
0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81,
0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40,
0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02,
0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C,
0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x02, 0x00, 0x17, 0xFF, 0x80, 0x7F, 0x02,
0x00, 0x83, 0x40, 0x02, 0x00, 0x80, 0x18, 0xFF, 0x02, 0x00, 0x83, 0x40, 0x02, 0x00, 0xC0, 0x18,
0xFF, 0x85, 0x01, 0x00, 0x40, 0x02, 0x00, 0xE0, 0x18, 0xFF, 0x85, 0x03, 0x00, 0x40, 0x02, 0x00,
0xF0, 0x18, 0xFF, 0x85, 0x07, 0x00, 0x40, 0x02, 0x00, 0xF8, 0x18, 0xFF, 0x85, 0x0F, 0x00, 0x40,
0x04, 0x00, 0xFC, 0x18, 0xFF, 0x85, 0x1F, 0x00, 0x20, 0x08, 0x00, 0xFE, 0x18, 0xFF, 0x81, 0x3F,
0x00, 0x02, 0x10, 0x80, 0x00, 0x19, 0xFF, 0x84, 0x7F, 0x00, 0x08, 0x20, 0x80, 0x1A, 0xFF, 0x83,
0x00, 0x04, 0x40, 0xC0, 0x1A, 0xFF, 0x82, 0x01, 0x02, 0x80, 0x1C, 0xFF, 0x80, 0x01, 0x1E, 0x00,
0x1C, 0x00, 0x81, 0x40, 0x02, 0x1C, 0x00, 0x81, 0x40, 0x02, 0x02, 0x00, 0x17, 0xFF, 0x80, 0x7F,
0x02, 0x00, 0x83, 0x40, 0x02, 0x00, 0x80, 0x18, 0xFF, 0x02, 0x00, 0x83, 0x40, 0x02, 0x00, 0xC0,
0x18, 0xFF, 0x85, 0x01, 0x00, 0x40, 0x02, 0x00, 0xE0, 0x18, 0xFF, 0x85, 0x03, 0x00, 0x40, 0x02,
0x00, 0xF0, 0x18, 0xFF, 0x85, 0x07, 0x00, 0x40, 0x02, 0x00, 0xF8, 0x18, 0xFF, 0x85, 0x0F, 0x00,
0x40, 0x04, 0x00, 0xFC, 0x18, 0xFF, 0x85, 0x1F, 0x00, 0x20, 0x08, 0x00, 0xFE, 0x18, 0xFF, 0x81,
0x3F, 0x00, 0x02, 0x10, 0x80, 0x00, 0x19, 0xFF, 0x84, 0x7F, 0x00, 0x08, 0x20, 0x80, 0x1A, 0xFF,
0x83, 0x00, 0x04, 0x40, 0xC0, 0x1A, 0xFF, 0x82, 0x01, 0x02, 0x80, 0x1C, 0xFF, 0x80, 0x01, 0x1E,
0x00,
};
// clang-format on
2 changes: 1 addition & 1 deletion users/drashna/display/painter/graphics/frame.qgf.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
#include <qp.h>

extern const uint32_t gfx_frame_length;
extern const uint8_t gfx_frame[1744];
extern const uint8_t gfx_frame[1761];
63 changes: 62 additions & 1 deletion users/drashna/display/painter/ili9341_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,67 @@ static painter_image_handle_t cg_on;
static painter_image_handle_t cg_off;
static painter_image_handle_t mouse_icon;

/**
* @brief Truncates text to fit within a certain width
*
* @param text original text
* @param max_width max width in pixels
* @param font font being used
* @return char* truncated text
*/
char* truncate_text(const char* text, uint16_t max_width, const font_t* font) {
static char truncated_text[256];
strncpy(truncated_text, text, sizeof(truncated_text) - 1);
truncated_text[sizeof(truncated_text) - 1] = '\0';

uint16_t text_width = qp_textwidth(font, truncated_text);
if (text_width <= max_width) {
return truncated_text;
}

size_t len = strlen(truncated_text);
while (len > 0 && text_width > max_width) {
truncated_text[--len] = '\0';
text_width = qp_textwidth(font, truncated_text);
}

if (len > 3) {
truncated_text[len - 3] = '.';
truncated_text[len - 2] = '.';
truncated_text[len - 1] = '.';
}

return truncated_text;
}

/**
* @brief Truncate text, but from start of string, instead of end
*
* @param text
* @param max_width
* @param font
* @return char*
*/
char* truncate_text_from_start(const char* text, uint16_t max_width, const font_t* font) {
static char truncated_text[256];
strncpy(truncated_text, text, sizeof(truncated_text) - 1);
truncated_text[sizeof(truncated_text) - 1] = '\0';

uint16_t text_width = qp_textwidth(font, truncated_text);
if (text_width <= max_width) {
return truncated_text;
}

size_t len = strlen(truncated_text);
size_t start_index = 0;
while (start_index < len && text_width > max_width) {
start_index++;
text_width = qp_textwidth(font, truncated_text + start_index);
}

return truncated_text + start_index;
}

void init_and_clear(painter_device_t device, painter_rotation_t rotation) {
uint16_t width;
uint16_t height;
Expand All @@ -51,7 +112,7 @@ void init_and_clear(painter_device_t device, painter_rotation_t rotation) {
title_width = width - 50;
}
uint8_t title_xpos = (width - title_width) / 2;
qp_drawtext_recolor(device, title_xpos, 1, font, title, 0, 0, 0, 0, 0, 255);
qp_drawtext_recolor(device, title_xpos, 2, font, title, 0, 0, 0, 0, 0, 255);
qp_close_image(frame);
}

Expand Down

0 comments on commit c57c466

Please sign in to comment.