Improve textView on colorlcd (#7395)

This commit is contained in:
3djc
2020-02-18 12:42:24 +01:00
committed by GitHub
parent f6075b3c0b
commit a4125582f1
3 changed files with 19 additions and 8 deletions
+18
View File
@@ -41,6 +41,14 @@ typedef int coord_t;
typedef uint32_t LcdFlags;
typedef uint16_t display_t;
int getTextWidth(const char * s, int len=0, LcdFlags flags=0);
#if LCD_W >= 480
#define LCD_COLS 80
#else
#define LCD_COLS 30
#endif
enum BitmapFormats
{
BMP_RGB565,
@@ -275,6 +283,16 @@ class BitmapBuffer: public BitmapBufferBase<uint16_t>
uint8_t drawCharWithCache(coord_t x, coord_t y, const BitmapBuffer * font, const uint16_t * spec, int index, LcdFlags flags);
void drawTextMaxWidth(coord_t x, coord_t y, const char * s, LcdFlags flags, coord_t maxWidth)
{
for (int col = LCD_COLS; col > 0; col--) {
if (getTextWidth(s, col, flags) <= maxWidth) {
drawSizedText(x, y, s, col, flags);
return;
}
}
}
void drawText(coord_t x, coord_t y, const char * s, LcdFlags flags)
{
drawSizedText(x, y, s, 255, flags);
-7
View File
@@ -24,12 +24,6 @@
#include "bitmapbuffer.h"
#include "opentx_types.h"
#if LCD_W >= 480
#define LCD_COLS 40
#else
#define LCD_COLS 30
#endif
#define CENTER
/* lcd common flags */
@@ -254,7 +248,6 @@ inline int getBitmapHeight(const uint8_t * bmp)
uint8_t getMappedChar(uint8_t c);
uint8_t getFontHeight(LcdFlags flags);
int getTextWidth(const char * s, int len=0, LcdFlags flags=0);
inline void lcdDrawBitmapPattern(coord_t x, coord_t y, const uint8_t * img, LcdFlags flags=0, coord_t offset=0, coord_t width=0)
{
+1 -1
View File
@@ -56,7 +56,7 @@ bool menuTextView(event_t event)
}
for (int i=0; i<NUM_BODY_LINES; i++) {
lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + i*FH, reusableBuffer.viewText.lines[i]);
lcd->drawTextMaxWidth(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + i * FH, reusableBuffer.viewText.lines[i], 0, LCD_W - 2 * MENUS_MARGIN_LEFT);
}
#if 0