Improve textView on colorlcd (#7395)
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user