parent
c590e8ac05
commit
47d19bab40
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -76,6 +76,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Parental lock".
|
// Use a numeric passcode for "Parental lock".
|
||||||
// This is a recommended for smaller displays.
|
// This is a recommended for smaller displays.
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
@ -90,7 +96,7 @@
|
||||||
//#define DEVELOPER_SCREENS
|
//#define DEVELOPER_SCREENS
|
||||||
|
|
||||||
// Maximum feed rate for manual extrusion (mm/s)
|
// Maximum feed rate for manual extrusion (mm/s)
|
||||||
//#define MAX_MANUAL_FEEDRATE 240
|
#define MAX_MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60}
|
||||||
|
|
||||||
// Sets the SPI speed in Hz
|
// Sets the SPI speed in Hz
|
||||||
|
|
||||||
|
|
|
@ -159,6 +159,7 @@ class CLCD::FontMetrics {
|
||||||
uint32_t height;
|
uint32_t height;
|
||||||
uint32_t ptr;
|
uint32_t ptr;
|
||||||
|
|
||||||
|
FontMetrics() {}
|
||||||
FontMetrics(uint8_t font) {load(font);}
|
FontMetrics(uint8_t font) {load(font);}
|
||||||
|
|
||||||
void load(uint8_t font);
|
void load(uint8_t font);
|
||||||
|
|
|
@ -67,14 +67,14 @@ class CommandProcessor : public CLCD::CommandFifo {
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCEDINLINE void linear_widget_box(int16_t &x, int16_t &y, int16_t &w, int16_t &h, bool tracker = false) {
|
FORCEDINLINE void linear_widget_box(int16_t &x, int16_t &y, int16_t &w, int16_t &h, bool tracker = false) {
|
||||||
const uint16_t th = widget_thickness()/2;
|
const uint16_t th = widget_thickness() / 2;
|
||||||
if (w > h) {
|
if (w > h) {
|
||||||
x += tracker ? th * 2.5 : th;
|
x += tracker ? th * 2.5 : th;
|
||||||
y += h/2 - th/2;
|
y += (h - th) / 2;
|
||||||
w -= tracker ? th * 5.0 : th * 2;
|
w -= tracker ? th * 5.0 : th * 2;
|
||||||
h = th;
|
h = th;
|
||||||
} else {
|
} else {
|
||||||
x += w/2 - th/2;
|
x += (w - th) / 2;
|
||||||
y += tracker ? th * 2.5 : th;
|
y += tracker ? th * 2.5 : th;
|
||||||
w = th;
|
w = th;
|
||||||
h -= tracker ? th * 5.0 : th * 2;
|
h -= tracker ? th * 5.0 : th * 2;
|
||||||
|
@ -82,9 +82,9 @@ class CommandProcessor : public CLCD::CommandFifo {
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCEDINLINE uint16_t circular_widget_box(int16_t &x, int16_t &y, int16_t &w, int16_t &h) {
|
FORCEDINLINE uint16_t circular_widget_box(int16_t &x, int16_t &y, int16_t &w, int16_t &h) {
|
||||||
const uint16_t r = min(w,h)/2;
|
const uint16_t r = min(w,h) / 2;
|
||||||
x += w/2;
|
x += w / 2;
|
||||||
y += h/2;
|
y += h / 2;
|
||||||
w = 1;
|
w = 1;
|
||||||
h = 1;
|
h = 1;
|
||||||
return r;
|
return r;
|
||||||
|
@ -200,22 +200,22 @@ class CommandProcessor : public CLCD::CommandFifo {
|
||||||
inline CommandProcessor& rectangle(int16_t x, int16_t y, int16_t w, int16_t h) {
|
inline CommandProcessor& rectangle(int16_t x, int16_t y, int16_t w, int16_t h) {
|
||||||
using namespace FTDI;
|
using namespace FTDI;
|
||||||
CLCD::CommandFifo::cmd(BEGIN(RECTS));
|
CLCD::CommandFifo::cmd(BEGIN(RECTS));
|
||||||
CLCD::CommandFifo::cmd(VERTEX2F(x*16,y*16));
|
CLCD::CommandFifo::cmd(VERTEX2F(x * 16, y * 16));
|
||||||
CLCD::CommandFifo::cmd(VERTEX2F((x+w)*16,(y+h)*16));
|
CLCD::CommandFifo::cmd(VERTEX2F((x + w) * 16, (y + h) * 16));
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
FORCEDINLINE CommandProcessor& toggle(int16_t x, int16_t y, int16_t w, int16_t h, T text, bool state, uint16_t options = FTDI::OPT_3D) {
|
FORCEDINLINE CommandProcessor& toggle(int16_t x, int16_t y, int16_t w, int16_t h, T text, bool state, uint16_t options = FTDI::OPT_3D) {
|
||||||
CLCD::FontMetrics fm(_font);
|
CLCD::FontMetrics fm(_font);
|
||||||
const int16_t widget_h = fm.height * 20.0/16;
|
const int16_t widget_h = fm.height * 20.0 / 16;
|
||||||
//const int16_t outer_bar_r = widget_h / 2;
|
//const int16_t outer_bar_r = widget_h / 2;
|
||||||
//const int16_t knob_r = outer_bar_r - 1.5;
|
//const int16_t knob_r = outer_bar_r - 1.5;
|
||||||
// The y coordinate of the toggle is the baseline of the text,
|
// The y coordinate of the toggle is the baseline of the text,
|
||||||
// so we must introduce a fudge factor based on the line height to
|
// so we must introduce a fudge factor based on the line height to
|
||||||
// actually center the control.
|
// actually center the control.
|
||||||
const int16_t fudge_y = fm.height*5/16;
|
const int16_t fudge_y = fm.height * 5 / 16;
|
||||||
CLCD::CommandFifo::toggle(x + h/2, y + h/2 - widget_h/2 + fudge_y, w - h, _font, options, state);
|
CLCD::CommandFifo::toggle(x + h / 2, y + (h - widget_h) / 2 + fudge_y, w - h, _font, options, state);
|
||||||
CLCD::CommandFifo::str(text);
|
CLCD::CommandFifo::str(text);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
@ -286,23 +286,29 @@ class CommandProcessor : public CLCD::CommandFifo {
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void apply_text_alignment(int16_t &x, int16_t &y, int16_t w, int16_t h, uint16_t options) {
|
||||||
|
using namespace FTDI;
|
||||||
|
x += ((options & OPT_CENTERX) ? w / 2 : ((options & OPT_RIGHTX) ? w : 0));
|
||||||
|
y += ((options & OPT_CENTERY) ? h / 2 : h);
|
||||||
|
}
|
||||||
|
|
||||||
CommandProcessor& number(int16_t x, int16_t y, int16_t w, int16_t h, int32_t n, uint16_t options = FTDI::OPT_CENTER) {
|
CommandProcessor& number(int16_t x, int16_t y, int16_t w, int16_t h, int32_t n, uint16_t options = FTDI::OPT_CENTER) {
|
||||||
using namespace FTDI;
|
using namespace FTDI;
|
||||||
CLCD::CommandFifo::number(
|
apply_text_alignment(x, y, w, h, options);
|
||||||
x + ((options & OPT_CENTERX) ? w/2 : ((options & OPT_RIGHTX) ? w : 0)),
|
CLCD::CommandFifo::number(x, y, _font, options, n);
|
||||||
y + ((options & OPT_CENTERY) ? h/2 : h),
|
|
||||||
_font, options, n);
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T> FORCEDINLINE
|
template<typename T> FORCEDINLINE
|
||||||
CommandProcessor& text(int16_t x, int16_t y, int16_t w, int16_t h, T text, uint16_t options = FTDI::OPT_CENTER) {
|
CommandProcessor& text(int16_t x, int16_t y, int16_t w, int16_t h, T text, uint16_t options = FTDI::OPT_CENTER) {
|
||||||
using namespace FTDI;
|
using namespace FTDI;
|
||||||
CLCD::CommandFifo::text(
|
apply_text_alignment(x, y, w, h, options);
|
||||||
x + ((options & OPT_CENTERX) ? w/2 : ((options & OPT_RIGHTX) ? w : 0)),
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
y + ((options & OPT_CENTERY) ? h/2 : h),
|
draw_utf8_text(*this, x, y, text, font_size_t::from_romfont(_font), options);
|
||||||
_font, options);
|
#else
|
||||||
|
CLCD::CommandFifo::text(x, y, _font, options);
|
||||||
CLCD::CommandFifo::str(text);
|
CLCD::CommandFifo::str(text);
|
||||||
|
#endif
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,8 +319,8 @@ class CommandProcessor : public CLCD::CommandFifo {
|
||||||
cmd(BITMAP_TRANSFORM_A(uint32_t(float(256)/scale)));
|
cmd(BITMAP_TRANSFORM_A(uint32_t(float(256)/scale)));
|
||||||
cmd(BITMAP_TRANSFORM_E(uint32_t(float(256)/scale)));
|
cmd(BITMAP_TRANSFORM_E(uint32_t(float(256)/scale)));
|
||||||
}
|
}
|
||||||
cmd(BITMAP_SIZE(info.filter, info.wrapx, info.wrapy, info.width*scale, info.height*scale));
|
cmd(BITMAP_SIZE(info.filter, info.wrapx, info.wrapy, info.width * scale, info.height * scale));
|
||||||
cmd(VERTEX2F((x + w/2 - info.width*scale/2)*16, (y + h/2 - info.height*scale/2)*16));
|
cmd(VERTEX2F((x + w / 2 - info.width * scale / 2) * 16, (y + h / 2 - info.height * scale / 2) * 16));
|
||||||
if (scale != 1) {
|
if (scale != 1) {
|
||||||
cmd(BITMAP_TRANSFORM_A(256));
|
cmd(BITMAP_TRANSFORM_A(256));
|
||||||
cmd(BITMAP_TRANSFORM_E(256));
|
cmd(BITMAP_TRANSFORM_E(256));
|
||||||
|
@ -328,7 +334,13 @@ class CommandProcessor : public CLCD::CommandFifo {
|
||||||
bool styleModified = false;
|
bool styleModified = false;
|
||||||
if (_btn_style_callback) styleModified = _btn_style_callback(*this, _tag, _style, options, false);
|
if (_btn_style_callback) styleModified = _btn_style_callback(*this, _tag, _style, options, false);
|
||||||
CLCD::CommandFifo::button(x, y, w, h, _font, options);
|
CLCD::CommandFifo::button(x, y, w, h, _font, options);
|
||||||
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
|
apply_text_alignment(x, y, w, h, OPT_CENTER);
|
||||||
|
CLCD::CommandFifo::str(F(""));
|
||||||
|
draw_utf8_text(*this, x, y, text, font_size_t::from_romfont(_font), OPT_CENTER);
|
||||||
|
#else
|
||||||
CLCD::CommandFifo::str(text);
|
CLCD::CommandFifo::str(text);
|
||||||
|
#endif
|
||||||
if (_btn_style_callback && styleModified) _btn_style_callback(*this, _tag, _style, options, true);
|
if (_btn_style_callback && styleModified) _btn_style_callback(*this, _tag, _style, options, true);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,14 +30,19 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FTDI_EXTENDED
|
#ifdef FTDI_EXTENDED
|
||||||
|
#include "unicode/font_size_t.h"
|
||||||
|
#include "unicode/unicode.h"
|
||||||
|
#include "unicode/standard_char_set.h"
|
||||||
|
#include "unicode/western_char_set.h"
|
||||||
|
#include "unicode/font_bitmaps.h"
|
||||||
#include "rgb_t.h"
|
#include "rgb_t.h"
|
||||||
#include "bitmap_info.h"
|
#include "bitmap_info.h"
|
||||||
#include "tiny_timer.h"
|
#include "tiny_timer.h"
|
||||||
#include "grid_layout.h"
|
#include "grid_layout.h"
|
||||||
#include "dl_cache.h"
|
#include "dl_cache.h"
|
||||||
#include "screen_types.h"
|
|
||||||
#include "event_loop.h"
|
#include "event_loop.h"
|
||||||
#include "command_processor.h"
|
#include "command_processor.h"
|
||||||
|
#include "screen_types.h"
|
||||||
#include "sound_player.h"
|
#include "sound_player.h"
|
||||||
#include "sound_list.h"
|
#include "sound_list.h"
|
||||||
#include "polygon.h"
|
#include "polygon.h"
|
||||||
|
|
|
@ -156,8 +156,11 @@ class UncachedScreen {
|
||||||
public:
|
public:
|
||||||
static void onRefresh() {
|
static void onRefresh() {
|
||||||
using namespace FTDI;
|
using namespace FTDI;
|
||||||
CLCD::CommandFifo cmd;
|
CommandProcessor cmd;
|
||||||
cmd.cmd(CMD_DLSTART);
|
cmd.cmd(CMD_DLSTART);
|
||||||
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
|
load_utf8_bitmaps(cmd);
|
||||||
|
#endif
|
||||||
|
|
||||||
current_screen.onRedraw(BOTH);
|
current_screen.onRedraw(BOTH);
|
||||||
|
|
||||||
|
@ -183,9 +186,12 @@ class CachedScreen {
|
||||||
static void repaintBackground() {
|
static void repaintBackground() {
|
||||||
using namespace FTDI;
|
using namespace FTDI;
|
||||||
DLCache dlcache(DL_SLOT);
|
DLCache dlcache(DL_SLOT);
|
||||||
CLCD::CommandFifo cmd;
|
CommandProcessor cmd;
|
||||||
|
|
||||||
cmd.cmd(CMD_DLSTART);
|
cmd.cmd(CMD_DLSTART);
|
||||||
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
|
load_utf8_bitmaps(cmd);
|
||||||
|
#endif
|
||||||
current_screen.onRedraw(BACKGROUND);
|
current_screen.onRedraw(BACKGROUND);
|
||||||
|
|
||||||
dlcache.store(DL_SIZE);
|
dlcache.store(DL_SIZE);
|
||||||
|
@ -195,14 +201,16 @@ class CachedScreen {
|
||||||
static void onRefresh() {
|
static void onRefresh() {
|
||||||
using namespace FTDI;
|
using namespace FTDI;
|
||||||
DLCache dlcache(DL_SLOT);
|
DLCache dlcache(DL_SLOT);
|
||||||
CLCD::CommandFifo cmd;
|
CommandProcessor cmd;
|
||||||
|
|
||||||
cmd.cmd(CMD_DLSTART);
|
cmd.cmd(CMD_DLSTART);
|
||||||
|
|
||||||
if (dlcache.has_data()) {
|
if (dlcache.has_data()) {
|
||||||
dlcache.append();
|
dlcache.append();
|
||||||
}
|
} else {
|
||||||
else {
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
|
load_utf8_bitmaps(cmd);
|
||||||
|
#endif
|
||||||
current_screen.onRedraw(BACKGROUND);
|
current_screen.onRedraw(BACKGROUND);
|
||||||
dlcache.store(DL_SIZE);
|
dlcache.store(DL_SIZE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,41 +29,33 @@ namespace FTDI {
|
||||||
* be broken so that the display width is less than w. The line will also
|
* be broken so that the display width is less than w. The line will also
|
||||||
* be broken after a '\n'. Returns the display width of the line.
|
* be broken after a '\n'. Returns the display width of the line.
|
||||||
*/
|
*/
|
||||||
static uint16_t find_line_break(const CLCD::FontMetrics &fm, uint16_t w, const char *str, const char *&end) {
|
static uint16_t find_line_break(const FontMetrics &fm, uint16_t w, const char *str, const char *&end) {
|
||||||
|
w -= fm.get_char_width(' ');
|
||||||
const char *p = str;
|
const char *p = str;
|
||||||
end = str + strlen(str);
|
end = str;
|
||||||
uint16_t width = fm.get_text_width(str);
|
uint16_t lw = 0, result = 0;
|
||||||
for(;;) {
|
for(;;) {
|
||||||
// Find next tentative line break.
|
utf8_char_t c = get_utf8_char_and_inc(p);
|
||||||
char delim = *(p);
|
if (c == ' ' || c == '\n' || c == '\0') {
|
||||||
while (delim && delim != ' ' && delim != '\n') {
|
if (lw < w || end == str) {
|
||||||
delim = *(++p);
|
end = (c == '\0') ? p-1 : p;
|
||||||
|
result = lw;
|
||||||
}
|
}
|
||||||
// Check to see whether to break the line.
|
if (c == '\0' || c == '\n') break;
|
||||||
const uint16_t margin = fm.get_text_width(" ");
|
|
||||||
const uint16_t lw = p > str ? fm.get_text_width(str, p - str) + margin : 0;
|
|
||||||
if (lw < w) {
|
|
||||||
width = lw;
|
|
||||||
switch (delim) {
|
|
||||||
case '\0':
|
|
||||||
end = p;
|
|
||||||
break;
|
|
||||||
case '\n':
|
|
||||||
end = ++p;
|
|
||||||
break;
|
|
||||||
case ' ':
|
|
||||||
end = ++p;
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
lw += fm.get_char_width(c);
|
||||||
}
|
}
|
||||||
return width;
|
if (end == str) {
|
||||||
|
end = p-1;
|
||||||
|
result = lw;
|
||||||
}
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function returns a measurements of the word-wrapped text box.
|
* This function returns a measurements of the word-wrapped text box.
|
||||||
*/
|
*/
|
||||||
static void measure_text_box(const CLCD::FontMetrics &fm, const char *str, uint16_t &width, uint16_t &height) {
|
static void measure_text_box(const FontMetrics &fm, const char *str, uint16_t &width, uint16_t &height) {
|
||||||
const char *line_start = (const char*)str;
|
const char *line_start = (const char*)str;
|
||||||
const char *line_end;
|
const char *line_end;
|
||||||
const uint16_t wrap_width = width;
|
const uint16_t wrap_width = width;
|
||||||
|
@ -72,7 +64,7 @@ namespace FTDI {
|
||||||
uint16_t line_width = find_line_break(fm, wrap_width, line_start, line_end);
|
uint16_t line_width = find_line_break(fm, wrap_width, line_start, line_end);
|
||||||
if (line_end == line_start) break;
|
if (line_end == line_start) break;
|
||||||
width = max(width, line_width);
|
width = max(width, line_width);
|
||||||
height += fm.height;
|
height += fm.get_height();
|
||||||
line_start = line_end;
|
line_start = line_end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,10 +73,11 @@ namespace FTDI {
|
||||||
* This function draws text inside a bounding box, doing word wrapping and using the largest font that will fit.
|
* This function draws text inside a bounding box, doing word wrapping and using the largest font that will fit.
|
||||||
*/
|
*/
|
||||||
void draw_text_box(CommandProcessor& cmd, int x, int y, int w, int h, const char *str, uint16_t options, uint8_t font) {
|
void draw_text_box(CommandProcessor& cmd, int x, int y, int w, int h, const char *str, uint16_t options, uint8_t font) {
|
||||||
CLCD::FontMetrics fm(font);
|
|
||||||
|
|
||||||
uint16_t box_width, box_height;
|
uint16_t box_width, box_height;
|
||||||
|
|
||||||
|
FontMetrics fm(font);
|
||||||
|
|
||||||
|
// Shrink the font until we find a font that fits
|
||||||
for(;;) {
|
for(;;) {
|
||||||
box_width = w;
|
box_width = w;
|
||||||
measure_text_box(fm, str, box_width, box_height);
|
measure_text_box(fm, str, box_width, box_height);
|
||||||
|
@ -110,10 +103,14 @@ namespace FTDI {
|
||||||
if (line[line_len - 1] == '\n' || line[line_len - 1] == ' ')
|
if (line[line_len - 1] == '\n' || line[line_len - 1] == ' ')
|
||||||
line[line_len - 1] = 0;
|
line[line_len - 1] = 0;
|
||||||
|
|
||||||
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
|
draw_utf8_text(cmd, x + dx, y + dy, line, fm.fs, options & ~OPT_CENTERY);
|
||||||
|
#else
|
||||||
cmd.CLCD::CommandFifo::text(x + dx, y + dy, font, options & ~OPT_CENTERY);
|
cmd.CLCD::CommandFifo::text(x + dx, y + dy, font, options & ~OPT_CENTERY);
|
||||||
cmd.CLCD::CommandFifo::str(line);
|
cmd.CLCD::CommandFifo::str(line);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
y += fm.height;
|
y += fm.get_height();
|
||||||
|
|
||||||
line_start = line_end;
|
line_start = line_end;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
|
||||||
|
FTDI EVE Unicode Rendering
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
The FTDI EVE chips have several fonts in ROM, but these fonts only contain a
|
||||||
|
subset of ASCII characters. Notably, this excludes diacritics and accents
|
||||||
|
used in most Western languages.
|
||||||
|
|
||||||
|
While the FTDI EVE has the capability for user-defined fonts, such fonts only
|
||||||
|
support 127 character positions, making them as limiting as the built-in fonts.
|
||||||
|
|
||||||
|
As a further complication, high resolution TFT displays require high resolution
|
||||||
|
fonts. It is not feasible to put a complete international font into the limited
|
||||||
|
flash memory of most microprocessors.
|
||||||
|
|
||||||
|
To work around these limitations, this library uses a custom font renderer with
|
||||||
|
the following characteristics:
|
||||||
|
|
||||||
|
1) Rather than providing bitmaps for different font sizes, it uses a single
|
||||||
|
bitmap for the largest font size (romfont 31) and emulates other sizes by
|
||||||
|
scaling the bitmaps using BITMAP_TRANSFORM.
|
||||||
|
|
||||||
|
2) Rather than loading an entire font, it combines symbols from romfont 31
|
||||||
|
with a limited number of symbols from a custom font. For accented letters,
|
||||||
|
the rendering code combine basic letter shapes from romfont 31 with
|
||||||
|
bitmaps containing only the accent themselves.
|
||||||
|
|
||||||
|
3) The custom bitmap is RLE compressed into PROGMEM. For accents, which have
|
||||||
|
a fairly small number of non-white pixels, the savings are significant.
|
||||||
|
|
||||||
|
These characteristics enable an alphabet for Western languages to be
|
||||||
|
synthesized from only a few dozen custom symbols and modest PROGMEM use (~10k)
|
||||||
|
|
||||||
|
The text layout is done by the code in "unicode.cpp" with the help of one of
|
||||||
|
more character renderers (e.g. "western_char_set.cpp"). Each character render
|
||||||
|
is responsible for loading the necessary bitmap data into RAMG and drawing
|
||||||
|
characters as requested.
|
||||||
|
|
||||||
|
To add symbols for other languages, it will only be necessary to make a bitmap
|
||||||
|
and implement a corresponding character renderer.
|
|
@ -0,0 +1,55 @@
|
||||||
|
/*******************
|
||||||
|
* font_bitmap.cpp *
|
||||||
|
*******************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Written By Marcio Teixeira 2019 - Aleph Objects, Inc. *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* To view a copy of the GNU General Public License, go to the following *
|
||||||
|
* location: <http://www.gnu.org/licenses/>. *
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "../ftdi_extended.h"
|
||||||
|
|
||||||
|
#ifdef FTDI_EXTENDED
|
||||||
|
|
||||||
|
namespace FTDI {
|
||||||
|
|
||||||
|
void write_rle_data(uint16_t addr, const uint8_t *data, size_t n) {
|
||||||
|
for (; n > 2; n -= 2) {
|
||||||
|
uint8_t count = pgm_read_byte(data++);
|
||||||
|
uint8_t value = pgm_read_byte(data++);
|
||||||
|
while (count--) CLCD::mem_write_8(addr++, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_font_bitmap(CommandProcessor& cmd, CLCD::FontMetrics &fm, uint8_t handle) {
|
||||||
|
cmd.cmd(BITMAP_HANDLE(handle));
|
||||||
|
cmd.cmd(BITMAP_SOURCE(fm.ptr));
|
||||||
|
cmd.bitmap_layout(fm.format, fm.stride, fm.height);
|
||||||
|
cmd.bitmap_size(BILINEAR, BORDER, BORDER, fm.width, fm.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ext_vertex2ii(CommandProcessor &cmd, int x, int y, uint8_t handle, uint8_t cell) {
|
||||||
|
if (x < 0 || y < 0 || x > 511 || y > 511) {
|
||||||
|
cmd.cmd(BITMAP_HANDLE(handle));
|
||||||
|
cmd.cmd(CELL(cell));
|
||||||
|
cmd.cmd(VERTEX2F(x * 16, y * 16));
|
||||||
|
} else {
|
||||||
|
cmd.cmd(VERTEX2II(x, y, handle, cell));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace FTDI
|
||||||
|
|
||||||
|
#endif // FTDI_EXTENDED
|
|
@ -0,0 +1,30 @@
|
||||||
|
/******************
|
||||||
|
* font_bitmaps.h *
|
||||||
|
******************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Written By Marcio Teixeira 2019 - Aleph Objects, Inc. *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* To view a copy of the GNU General Public License, go to the following *
|
||||||
|
* location: <http://www.gnu.org/licenses/>. *
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
class CommandProcessor;
|
||||||
|
|
||||||
|
namespace FTDI {
|
||||||
|
void write_rle_data(uint16_t addr, const uint8_t *data, size_t n);
|
||||||
|
void set_font_bitmap(CommandProcessor& cmd, CLCD::FontMetrics &fm, uint8_t handle);
|
||||||
|
void ext_vertex2ii(CommandProcessor &cmd, int x, int y, uint8_t handle, uint8_t cell);
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 33 KiB |
|
@ -0,0 +1,46 @@
|
||||||
|
/*******************
|
||||||
|
* font_size_t.cpp *
|
||||||
|
*******************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Written By Marcio Teixeira 2019 - Aleph Objects, Inc. *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* To view a copy of the GNU General Public License, go to the following *
|
||||||
|
* location: <http://www.gnu.org/licenses/>. *
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "../ftdi_extended.h"
|
||||||
|
|
||||||
|
#if defined(FTDI_EXTENDED) && defined(TOUCH_UI_USE_UTF8)
|
||||||
|
|
||||||
|
namespace FTDI {
|
||||||
|
// Returns the height of a standard FTDI romfont
|
||||||
|
uint8_t font_size_t::get_romfont_height(uint8_t font) {
|
||||||
|
static const uint8_t tbl[] PROGMEM = {
|
||||||
|
8, 8, 16, 16, 13, 17, 20, 22, 29, 38, 16, 20, 25, 28, 36, 49, 63, 83, 108
|
||||||
|
};
|
||||||
|
return pgm_read_byte(&tbl[font - 16]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sets the scaling coefficient to match a romfont size
|
||||||
|
font_size_t font_size_t::from_romfont(uint8_t font) {
|
||||||
|
return font_size_t(uint32_t(std_height) * 256 / get_romfont_height(font));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the height of the font
|
||||||
|
uint8_t font_size_t::get_height() const {
|
||||||
|
return scale(std_height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // FTDI_EXTENDED && TOUCH_UI_USE_UTF8
|
|
@ -0,0 +1,55 @@
|
||||||
|
/*****************
|
||||||
|
* font_size_t.h *
|
||||||
|
*****************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Written By Marcio Teixeira 2019 - Aleph Objects, Inc. *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* To view a copy of the GNU General Public License, go to the following *
|
||||||
|
* location: <http://www.gnu.org/licenses/>. *
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
class CommandProcessor;
|
||||||
|
|
||||||
|
namespace FTDI {
|
||||||
|
|
||||||
|
/* The unicode rendering of different font sizes happens by scaling a
|
||||||
|
* large-sized font bitmap using the FTDI bitmap transformation matrix.
|
||||||
|
* This keeps us from having to have load bitmaps for all font sizes.
|
||||||
|
*
|
||||||
|
* The font_size_t class helps manage this scaling factor.
|
||||||
|
*/
|
||||||
|
class font_size_t {
|
||||||
|
private:
|
||||||
|
// Standard height for font bitmaps
|
||||||
|
static constexpr uint8_t std_height = 49;
|
||||||
|
|
||||||
|
// 8.8 fixed point scaling coefficient
|
||||||
|
uint16_t coefficient;
|
||||||
|
|
||||||
|
font_size_t(uint16_t v) : coefficient(v) {}
|
||||||
|
public:
|
||||||
|
font_size_t() : coefficient(256) {}
|
||||||
|
|
||||||
|
static uint8_t get_romfont_height(uint8_t font);
|
||||||
|
|
||||||
|
static font_size_t from_romfont(uint8_t size);
|
||||||
|
|
||||||
|
template<typename T> T scale(T val) const {return (int32_t(val) * 256 / coefficient);}
|
||||||
|
|
||||||
|
uint8_t get_height() const;
|
||||||
|
uint16_t get_coefficient() const {return coefficient;}
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,100 @@
|
||||||
|
/*************************
|
||||||
|
* standard_char_set.cpp *
|
||||||
|
*************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Written By Marcio Teixeira 2019 - Aleph Objects, Inc. *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* To view a copy of the GNU General Public License, go to the following *
|
||||||
|
* location: <http://www.gnu.org/licenses/>. *
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "../ftdi_extended.h"
|
||||||
|
|
||||||
|
#if defined(FTDI_EXTENDED) && defined(TOUCH_UI_USE_UTF8)
|
||||||
|
|
||||||
|
constexpr static uint8_t std_font = 31;
|
||||||
|
|
||||||
|
/* Lookup table of the char widths for standard ROMFONT 31 */
|
||||||
|
|
||||||
|
uint8_t FTDI::StandardCharSet::std_char_width(char c) {
|
||||||
|
static const uint8_t tbl[] PROGMEM = {
|
||||||
|
10, 11, 15, 26, 25, 31, 26, 10, 15, 14, 18, 24, 9, 18, 11, 17, 24, 24,
|
||||||
|
24, 24, 24, 24, 24, 24, 24, 24, 10, 10, 21, 23, 22, 20, 37, 27, 27, 26,
|
||||||
|
28, 23, 22, 28, 29, 12, 23, 26, 22, 35, 29, 28, 26, 29, 27, 26, 26, 28,
|
||||||
|
27, 36, 27, 26, 25, 12, 18, 12, 18, 21, 13, 23, 24, 22, 24, 22, 15, 24,
|
||||||
|
24, 10, 11, 22, 10, 36, 24, 24, 24, 24, 15, 22, 14, 24, 21, 32, 21, 21,
|
||||||
|
22, 15, 10, 15, 29, 10
|
||||||
|
};
|
||||||
|
return pgm_read_byte(&tbl[c - ' ']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load bitmap data into RAMG. This function is called once at the start
|
||||||
|
* of the program.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* addr - Address in RAMG where the font data is written
|
||||||
|
*/
|
||||||
|
|
||||||
|
void FTDI::StandardCharSet::load_data(uint32_t) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Populates the bitmap handles for the custom into the display list.
|
||||||
|
* This function is called once at the start of each display list.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* cmd - Object used for writing to the FTDI chip command queue.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void FTDI::StandardCharSet::load_bitmaps(CommandProcessor& cmd) {
|
||||||
|
CLCD::FontMetrics std_fm(std_font);
|
||||||
|
set_font_bitmap(cmd, std_fm, std_font);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders a character at location x and y. The x position is incremented
|
||||||
|
* by the width of the character.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* cmd - If non-NULL the symbol is drawn to the screen.
|
||||||
|
* If NULL, only increment position for text measurement.
|
||||||
|
*
|
||||||
|
* x, y - The location at which to draw the character. On output,
|
||||||
|
* incremented to the location of the next character.
|
||||||
|
*
|
||||||
|
* fs - A scaling object used to scale the font. The display will
|
||||||
|
* already be configured to scale bitmaps, but positions
|
||||||
|
* must be scaled using fs.scale()
|
||||||
|
*
|
||||||
|
* c - The unicode code point to draw. If the renderer does not
|
||||||
|
* support the character, it should draw nothing.
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool FTDI::StandardCharSet::render_glyph(CommandProcessor* cmd, int &x, int &y, font_size_t fs, utf8_char_t c) {
|
||||||
|
uint8_t which = (c >= ' ' && c < 128) ? c : '?';
|
||||||
|
uint8_t width = std_char_width(which);
|
||||||
|
|
||||||
|
// Draw the character
|
||||||
|
if (cmd) ext_vertex2ii(*cmd, x, y, std_font, which);
|
||||||
|
|
||||||
|
// Increment X to the next character position
|
||||||
|
x += fs.scale(width);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // FTDI_EXTENDED
|
|
@ -0,0 +1,30 @@
|
||||||
|
/***********************
|
||||||
|
* standard_char_set.h *
|
||||||
|
***********************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Written By Marcio Teixeira 2019 - Aleph Objects, Inc. *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* To view a copy of the GNU General Public License, go to the following *
|
||||||
|
* location: <http://www.gnu.org/licenses/>. *
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
namespace FTDI {
|
||||||
|
class StandardCharSet {
|
||||||
|
public:
|
||||||
|
static uint8_t std_char_width(char);
|
||||||
|
static void load_data(uint32_t addr);
|
||||||
|
static void load_bitmaps(CommandProcessor&);
|
||||||
|
static bool render_glyph(CommandProcessor*, int &x, int &y, font_size_t, utf8_char_t);
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,190 @@
|
||||||
|
/***************
|
||||||
|
* unicode.cpp *
|
||||||
|
***************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Written By Marcio Teixeira 2019 - Aleph Objects, Inc. *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* To view a copy of the GNU General Public License, go to the following *
|
||||||
|
* location: <http://www.gnu.org/licenses/>. *
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "../ftdi_extended.h"
|
||||||
|
|
||||||
|
#if defined(FTDI_EXTENDED) && defined(TOUCH_UI_USE_UTF8)
|
||||||
|
|
||||||
|
using namespace FTDI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a character in a UTF8 string and increment the
|
||||||
|
* pointer to the next character
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* c - Pointer to a UTF8 encoded string.
|
||||||
|
*
|
||||||
|
* Returns: The packed bytes of a UTF8 encoding of a single
|
||||||
|
* character (this is not the unicode codepoint)
|
||||||
|
*/
|
||||||
|
|
||||||
|
utf8_char_t FTDI::get_utf8_char_and_inc(const char *&c) {
|
||||||
|
utf8_char_t val = *(uint8_t*)c++;
|
||||||
|
while ((*c & 0xC0) == 0x80)
|
||||||
|
val = (val << 8) | *(uint8_t*)c++;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function to draw and/or measure a UTF8 string
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* cmd - If non-NULL the symbol is drawn to the screen.
|
||||||
|
* If NULL, only increment position for text measurement.
|
||||||
|
*
|
||||||
|
* x, y - The location at which to draw the string.
|
||||||
|
*
|
||||||
|
* str - The UTF8 string to draw or measure.
|
||||||
|
*
|
||||||
|
* fs - A scaling object used to specify the font size.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static uint16_t render_utf8_text(CommandProcessor* cmd, int x, int y, const char *str, font_size_t fs) {
|
||||||
|
const int start_x = x;
|
||||||
|
while (*str) {
|
||||||
|
const utf8_char_t c = get_utf8_char_and_inc(str);
|
||||||
|
#ifdef TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
WesternCharSet::render_glyph(cmd, x, y, fs, c) ||
|
||||||
|
#endif
|
||||||
|
StandardCharSet::render_glyph(cmd, x, y, fs, c);
|
||||||
|
}
|
||||||
|
return x - start_x;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the font bitmap data into RAMG. Called once at program start.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* addr - Address in RAMG where the font data is written
|
||||||
|
*/
|
||||||
|
|
||||||
|
void FTDI::load_utf8_data(uint16_t addr) {
|
||||||
|
#ifdef TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
WesternCharSet::load_data(addr);
|
||||||
|
#endif
|
||||||
|
StandardCharSet::load_data(addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Populate the bitmap handles for the custom fonts into the display list.
|
||||||
|
* Called once at the start of each display list.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* cmd - Object used for writing to the FTDI chip command queue.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void FTDI::load_utf8_bitmaps(CommandProcessor &cmd) {
|
||||||
|
#ifdef TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
WesternCharSet::load_bitmaps(cmd);
|
||||||
|
#endif
|
||||||
|
StandardCharSet::load_bitmaps(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Measure a UTF8 text character
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* c - The unicode code point to measure.
|
||||||
|
*
|
||||||
|
* fs - A scaling object used to specify the font size.
|
||||||
|
*
|
||||||
|
* Returns: A width in pixels
|
||||||
|
*/
|
||||||
|
|
||||||
|
uint16_t FTDI::get_utf8_char_width(utf8_char_t c, font_size_t fs) {
|
||||||
|
int x = 0, y = 0;
|
||||||
|
#ifdef TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
WesternCharSet::render_glyph(NULL, x, y, fs, c) ||
|
||||||
|
#endif
|
||||||
|
StandardCharSet::render_glyph(NULL, x, y, fs, c);
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Measure a UTF8 text string
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* str - The UTF8 string to measure.
|
||||||
|
*
|
||||||
|
* fs - A scaling object used to specify the font size.
|
||||||
|
*
|
||||||
|
* Returns: A width in pixels
|
||||||
|
*/
|
||||||
|
|
||||||
|
uint16_t FTDI::get_utf8_text_width(const char *str, font_size_t fs) {
|
||||||
|
return render_utf8_text(NULL, 0, 0, str, fs);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t FTDI::get_utf8_text_width(progmem_str pstr, font_size_t fs) {
|
||||||
|
char str[strlen_P((const char*)pstr) + 1];
|
||||||
|
strcpy_P(str, (const char*)pstr);
|
||||||
|
return get_utf8_text_width((const char*) pstr, fs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draw a UTF8 text string
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* cmd - Object used for writing to the FTDI chip command queue.
|
||||||
|
*
|
||||||
|
* x, y - The location at which to draw the string.
|
||||||
|
*
|
||||||
|
* str - The UTF8 string to draw.
|
||||||
|
*
|
||||||
|
* fs - A scaling object used to specify the font size.
|
||||||
|
*
|
||||||
|
* options - Text alignment options (i.e. OPT_CENTERX, OPT_CENTERY, OPT_CENTER or OPT_RIGHTX)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
void FTDI::draw_utf8_text(CommandProcessor& cmd, int x, int y, const char *str, font_size_t fs, uint16_t options) {
|
||||||
|
cmd.cmd(SAVE_CONTEXT());
|
||||||
|
cmd.cmd(BITMAP_TRANSFORM_A(fs.get_coefficient()));
|
||||||
|
cmd.cmd(BITMAP_TRANSFORM_E(fs.get_coefficient()));
|
||||||
|
cmd.cmd(BEGIN(BITMAPS));
|
||||||
|
|
||||||
|
// Apply alignment options
|
||||||
|
if (options & OPT_CENTERX)
|
||||||
|
x -= get_utf8_text_width(str, fs) / 2;
|
||||||
|
else if (options & OPT_RIGHTX)
|
||||||
|
x -= get_utf8_text_width(str, fs);
|
||||||
|
if (options & OPT_CENTERY)
|
||||||
|
y -= fs.get_height()/2;
|
||||||
|
|
||||||
|
// Render the text
|
||||||
|
render_utf8_text(&cmd, x, y, str, fs);
|
||||||
|
cmd.cmd(RESTORE_CONTEXT());
|
||||||
|
}
|
||||||
|
|
||||||
|
void FTDI::draw_utf8_text(CommandProcessor& cmd, int x, int y, progmem_str pstr, font_size_t fs, uint16_t options) {
|
||||||
|
char str[strlen_P((const char*)pstr) + 1];
|
||||||
|
strcpy_P(str, (const char*)pstr);
|
||||||
|
draw_utf8_text(cmd, x, y, (const char*) str, fs, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // FTDI_EXTENDED && TOUCH_UI_USE_UTF8
|
|
@ -0,0 +1,106 @@
|
||||||
|
/*************
|
||||||
|
* unicode.h *
|
||||||
|
*************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Written By Marcio Teixeira 2019 - Aleph Objects, Inc. *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* To view a copy of the GNU General Public License, go to the following *
|
||||||
|
* location: <http://www.gnu.org/licenses/>. *
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
class CommandProcessor;
|
||||||
|
|
||||||
|
namespace FTDI {
|
||||||
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
|
typedef uint16_t utf8_char_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a 32-bit codepoint into UTF-8. This compile-time function
|
||||||
|
* will be useful until the u8'a' character literal becomes more common.
|
||||||
|
*/
|
||||||
|
constexpr uint32_t utf8(const uint32_t c) {
|
||||||
|
return (c < 0x7F ) ? c :
|
||||||
|
(c < 0x7FF) ? (0x0000C080 | ((c & 0b011111000000) << 2) | (c & 0b111111)) :
|
||||||
|
(c < 0xFFFF) ? (0x00E08080 | ((c & 0b001111000000000000) << 4) | ((c & 0b111111000000) << 2) | (c & 0b111111)) :
|
||||||
|
(0xF0808080 | ((c & 0b000111000000000000000000) << 6) | ((c & 0b111111000000000000) << 4) | ((c & 0b111111000000) << 2) | (c & 0b111111));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the next character in a UTF8 string and increments the
|
||||||
|
* pointer to the next character */
|
||||||
|
|
||||||
|
utf8_char_t get_utf8_char_and_inc(const char *&c);
|
||||||
|
|
||||||
|
/* Returns the next character in a UTF8 string, without incrementing */
|
||||||
|
|
||||||
|
inline utf8_char_t get_utf8_char(const char *c) {return get_utf8_char_and_inc(c);}
|
||||||
|
|
||||||
|
void load_utf8_data(uint16_t addr);
|
||||||
|
#else
|
||||||
|
typedef char utf8_char_t;
|
||||||
|
|
||||||
|
inline utf8_char_t get_utf8_char_and_inc(const char *&c) {return *c++;}
|
||||||
|
inline utf8_char_t get_utf8_char(const char *c) {return *c;}
|
||||||
|
|
||||||
|
inline void load_utf8_data(uint16_t) {}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void load_utf8_bitmaps(CommandProcessor& cmd);
|
||||||
|
|
||||||
|
uint16_t get_utf8_char_width(utf8_char_t, font_size_t);
|
||||||
|
uint16_t get_utf8_text_width(progmem_str, font_size_t);
|
||||||
|
uint16_t get_utf8_text_width(const char *, font_size_t);
|
||||||
|
|
||||||
|
void draw_utf8_text(CommandProcessor&, int x, int y, progmem_str, font_size_t, uint16_t options = 0);
|
||||||
|
void draw_utf8_text(CommandProcessor&, int x, int y, const char *, font_size_t, uint16_t options = 0);
|
||||||
|
|
||||||
|
// Similar to CLCD::FontMetrics, but can be used with UTF8 encoded strings.
|
||||||
|
|
||||||
|
struct FontMetrics {
|
||||||
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
|
font_size_t fs;
|
||||||
|
#else
|
||||||
|
CLCD::FontMetrics fm;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
inline void load(uint8_t rom_font_size) {
|
||||||
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
|
fs = font_size_t::from_romfont(rom_font_size);
|
||||||
|
#else
|
||||||
|
fm.load(rom_font_size);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint16_t get_char_width(utf8_char_t c) const {
|
||||||
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
|
return get_utf8_char_width(c, fs);
|
||||||
|
#else
|
||||||
|
return fm.char_widths[(uint8_t)c];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint8_t get_height() const {
|
||||||
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
|
return fs.get_height();
|
||||||
|
#else
|
||||||
|
return fm.height;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
inline FontMetrics(uint8_t rom_font_size) {
|
||||||
|
load(rom_font_size);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,338 @@
|
||||||
|
/************************
|
||||||
|
* western_char_set.cpp *
|
||||||
|
************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Written By Marcio Teixeira 2019 - Aleph Objects, Inc. *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* To view a copy of the GNU General Public License, go to the following *
|
||||||
|
* location: <http://www.gnu.org/licenses/>. *
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "../ftdi_extended.h"
|
||||||
|
|
||||||
|
#if defined(FTDI_EXTENDED) && defined(TOUCH_UI_USE_UTF8) && defined(TOUCH_UI_UTF8_WESTERN_CHARSET)
|
||||||
|
#include "western_char_set_bitmap_31.h"
|
||||||
|
|
||||||
|
#define NUM_ELEMENTS(a) (sizeof(a)/sizeof(a[0]))
|
||||||
|
|
||||||
|
using namespace FTDI;
|
||||||
|
|
||||||
|
constexpr static uint8_t std_font = 31;
|
||||||
|
constexpr static uint8_t alt_font = 1;
|
||||||
|
|
||||||
|
static uint32_t bitmap_addr;
|
||||||
|
|
||||||
|
/* Glyphs in the WesternCharSet bitmap */
|
||||||
|
|
||||||
|
enum {
|
||||||
|
GRAVE,
|
||||||
|
ACUTE,
|
||||||
|
CIRCUMFLEX,
|
||||||
|
TILDE,
|
||||||
|
DIAERESIS,
|
||||||
|
DOT_ABOVE,
|
||||||
|
CEDILLA,
|
||||||
|
NO_DOT_I,
|
||||||
|
SHARP_S,
|
||||||
|
LRG_O_STROKE,
|
||||||
|
SML_O_STROKE,
|
||||||
|
LRG_AE,
|
||||||
|
SML_AE,
|
||||||
|
LRG_ETH,
|
||||||
|
SML_ETH,
|
||||||
|
LRG_THORN,
|
||||||
|
SML_THORN,
|
||||||
|
LEFT_DBL_QUOTE,
|
||||||
|
RIGHT_DBL_QUOTE,
|
||||||
|
INV_EXCLAMATION,
|
||||||
|
INV_QUESTION,
|
||||||
|
CENT_SIGN,
|
||||||
|
POUND_SIGN,
|
||||||
|
CURRENCY_SIGN,
|
||||||
|
YEN_SIGN
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Centerline of characters that can take accents */
|
||||||
|
|
||||||
|
constexpr int8_t mid_a = 12;
|
||||||
|
constexpr int8_t mid_e = 12;
|
||||||
|
constexpr int8_t mid_i = 5;
|
||||||
|
constexpr int8_t mid_o = 12;
|
||||||
|
constexpr int8_t mid_u = 12;
|
||||||
|
constexpr int8_t mid_y = 11;
|
||||||
|
constexpr int8_t mid_n = 12;
|
||||||
|
constexpr int8_t mid_c = 12;
|
||||||
|
constexpr int8_t mid_A = 13;
|
||||||
|
constexpr int8_t mid_E = 13;
|
||||||
|
constexpr int8_t mid_I = 6;
|
||||||
|
constexpr int8_t mid_O = 14;
|
||||||
|
constexpr int8_t mid_U = 14;
|
||||||
|
constexpr int8_t mid_Y = 13;
|
||||||
|
constexpr int8_t mid_N = 15;
|
||||||
|
constexpr int8_t mid_C = 13;
|
||||||
|
|
||||||
|
/* Centerline of accent glyphs */
|
||||||
|
|
||||||
|
constexpr int8_t mid_accent = 16;
|
||||||
|
|
||||||
|
/* When reusing the DOT_ABOVE accent glyph for the degree sign, we need to trim the leading space */
|
||||||
|
constexpr uint8_t deg_sign_leading = 9;
|
||||||
|
|
||||||
|
/* Look-up table for constructing characters (must be ordered by unicode)
|
||||||
|
*
|
||||||
|
* Characters are either complete symbols from the Western Char Set bitmap,
|
||||||
|
* or they are constructed using a standard letter from the romfont and
|
||||||
|
* drawing an accent from the Western Char Set bitmap over it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define UTF8(A) uint16_t(utf8(U##A))
|
||||||
|
|
||||||
|
PROGMEM constexpr struct {
|
||||||
|
uint16_t unicode;
|
||||||
|
uint8_t std_char; // Glyph from standard ROMFONT (zero if none)
|
||||||
|
uint8_t alt_char; // Glyph from Western Char Set bitmap
|
||||||
|
uint8_t alt_data; // For accented characters, the centerline; else char width
|
||||||
|
} char_recipe[] = {
|
||||||
|
{0, 0, NO_DOT_I, 10 },
|
||||||
|
{UTF8('¡'), 0 , INV_EXCLAMATION, 13 },
|
||||||
|
{UTF8('¢'), 0 , CENT_SIGN, 23 },
|
||||||
|
{UTF8('£'), 0 , POUND_SIGN, 24 },
|
||||||
|
{UTF8('¤'), 0 , CURRENCY_SIGN, 26 },
|
||||||
|
{UTF8('¥'), 0 , YEN_SIGN, 26 },
|
||||||
|
{UTF8('«'), 0 , LEFT_DBL_QUOTE, 23 },
|
||||||
|
{UTF8('°'), 0 , DOT_ABOVE, 24 },
|
||||||
|
{UTF8('»'), 0 , RIGHT_DBL_QUOTE, 24 },
|
||||||
|
{UTF8('¿'), 0 , INV_QUESTION, 21 },
|
||||||
|
{UTF8('À'), 'A', GRAVE, mid_A},
|
||||||
|
{UTF8('Á'), 'A', ACUTE, mid_A},
|
||||||
|
{UTF8('Â'), 'A', CIRCUMFLEX, mid_A},
|
||||||
|
{UTF8('Ã'), 'A', TILDE, mid_A},
|
||||||
|
{UTF8('Ä'), 'A', DIAERESIS, mid_A},
|
||||||
|
{UTF8('Å'), 'A', DOT_ABOVE, mid_A},
|
||||||
|
{UTF8('Æ'), 0 , LRG_AE, mid_E},
|
||||||
|
{UTF8('Ç'), 'C', CEDILLA, mid_C},
|
||||||
|
{UTF8('È'), 'E', GRAVE, mid_E},
|
||||||
|
{UTF8('É'), 'E', ACUTE, mid_E},
|
||||||
|
{UTF8('Ê'), 'E', CIRCUMFLEX, mid_E},
|
||||||
|
{UTF8('Ë'), 'E', DIAERESIS, mid_E},
|
||||||
|
{UTF8('Ì'), 'I', GRAVE, mid_I},
|
||||||
|
{UTF8('Í'), 'I', ACUTE, mid_I},
|
||||||
|
{UTF8('Î'), 'I', CIRCUMFLEX, mid_I},
|
||||||
|
{UTF8('Ï'), 'I', DIAERESIS, mid_I},
|
||||||
|
{UTF8('Ð'), 0, LRG_ETH, 31 },
|
||||||
|
{UTF8('Ñ'), 'N', TILDE, mid_N},
|
||||||
|
{UTF8('Ò'), 'O', GRAVE, mid_O},
|
||||||
|
{UTF8('Ó'), 'O', ACUTE, mid_O},
|
||||||
|
{UTF8('Ô'), 'O', CIRCUMFLEX, mid_O},
|
||||||
|
{UTF8('Õ'), 'O', TILDE, mid_O},
|
||||||
|
{UTF8('Ö'), 'O', DIAERESIS, mid_O},
|
||||||
|
{UTF8('Ø'), 0 , LRG_O_STROKE, 32 },
|
||||||
|
{UTF8('Ù'), 'U', GRAVE, mid_U},
|
||||||
|
{UTF8('Ú'), 'U', ACUTE, mid_U},
|
||||||
|
{UTF8('Û'), 'U', CIRCUMFLEX, mid_U},
|
||||||
|
{UTF8('Ü'), 'U', DIAERESIS, mid_U},
|
||||||
|
{UTF8('Ý'), 'Y', ACUTE, mid_Y},
|
||||||
|
{UTF8('Þ'), 0 , LRG_THORN, 25 },
|
||||||
|
{UTF8('ß'), 0 , SHARP_S, 26 },
|
||||||
|
{UTF8('à'), 'a', GRAVE, mid_a},
|
||||||
|
{UTF8('á'), 'a', ACUTE, mid_a},
|
||||||
|
{UTF8('â'), 'a', CIRCUMFLEX, mid_a},
|
||||||
|
{UTF8('ã'), 'a', TILDE, mid_a},
|
||||||
|
{UTF8('ä'), 'a', DIAERESIS, mid_a},
|
||||||
|
{UTF8('å'), 'a', DOT_ABOVE, mid_a},
|
||||||
|
{UTF8('æ'), 0 , SML_AE, 40 },
|
||||||
|
{UTF8('ç'), 'c', CEDILLA, mid_c},
|
||||||
|
{UTF8('è'), 'e', GRAVE, mid_e},
|
||||||
|
{UTF8('é'), 'e', ACUTE, mid_e},
|
||||||
|
{UTF8('ê'), 'e', CIRCUMFLEX, mid_e},
|
||||||
|
{UTF8('ë'), 'e', DIAERESIS, mid_e},
|
||||||
|
{UTF8('ì'), 'i', GRAVE, mid_i},
|
||||||
|
{UTF8('í'), 'i', ACUTE, mid_i},
|
||||||
|
{UTF8('î'), 'i', CIRCUMFLEX, mid_i},
|
||||||
|
{UTF8('ï'), 'i', DIAERESIS, mid_i},
|
||||||
|
{UTF8('ð'), 0, SML_ETH, 24 },
|
||||||
|
{UTF8('ñ'), 'n', TILDE, mid_n},
|
||||||
|
{UTF8('ò'), 'o', GRAVE, mid_o},
|
||||||
|
{UTF8('ó'), 'o', ACUTE, mid_o},
|
||||||
|
{UTF8('ô'), 'o', CIRCUMFLEX, mid_o},
|
||||||
|
{UTF8('õ'), 'o', TILDE, mid_o},
|
||||||
|
{UTF8('ö'), 'o', DIAERESIS, mid_o},
|
||||||
|
{UTF8('ø'), 0 , SML_O_STROKE, 25 },
|
||||||
|
{UTF8('ù'), 'u', GRAVE, mid_u},
|
||||||
|
{UTF8('ú'), 'u', ACUTE, mid_u},
|
||||||
|
{UTF8('û'), 'u', CIRCUMFLEX, mid_u},
|
||||||
|
{UTF8('ü'), 'u', DIAERESIS, mid_u},
|
||||||
|
{UTF8('ý'), 'y', ACUTE, mid_y},
|
||||||
|
{UTF8('þ'), 0 , SML_THORN, 25 },
|
||||||
|
{UTF8('ÿ'), 'y', DIAERESIS, mid_y}
|
||||||
|
};
|
||||||
|
|
||||||
|
static_assert(UTF8('¡') == 0xC2A1, "Incorrect encoding for character");
|
||||||
|
|
||||||
|
/* Compile-time check that the table is in sorted order */
|
||||||
|
|
||||||
|
constexpr bool is_sorted(size_t n) {
|
||||||
|
return n < 2 ? true : char_recipe[n-2].unicode < char_recipe[n-1].unicode && is_sorted(n-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static_assert(is_sorted(NUM_ELEMENTS(char_recipe)), "The table must be sorted by unicode value");
|
||||||
|
|
||||||
|
/* Performs a binary search to find a unicode character in the table */
|
||||||
|
|
||||||
|
static int8_t find_char_data(FTDI::utf8_char_t c) {
|
||||||
|
int8_t min = 0, max = NUM_ELEMENTS(char_recipe), index;
|
||||||
|
for (;;) {
|
||||||
|
index = (min + max)/2;
|
||||||
|
const uint16_t char_at = pgm_read_word(&char_recipe[index].unicode);
|
||||||
|
if (char_at == c) break;
|
||||||
|
if (min == max) return -1;
|
||||||
|
if (c > char_at)
|
||||||
|
min = index + 1;
|
||||||
|
else
|
||||||
|
max = index;
|
||||||
|
}
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void get_char_data(uint8_t index, uint8_t &std_char, uint8_t &alt_char, uint8_t &alt_data) {
|
||||||
|
std_char = pgm_read_byte(&char_recipe[index].std_char);
|
||||||
|
alt_char = pgm_read_byte(&char_recipe[index].alt_char);
|
||||||
|
alt_data = pgm_read_byte(&char_recipe[index].alt_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load bitmap data into RAMG. This function is called once at the start
|
||||||
|
* of the program.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* addr - Address in RAMG where the font data is written
|
||||||
|
*/
|
||||||
|
|
||||||
|
void FTDI::WesternCharSet::load_data(uint32_t addr) {
|
||||||
|
// Load the alternative font metrics
|
||||||
|
CLCD::FontMetrics alt_fm;
|
||||||
|
alt_fm.ptr = addr + 148;
|
||||||
|
alt_fm.format = L4;
|
||||||
|
alt_fm.stride = 19;
|
||||||
|
alt_fm.width = 38;
|
||||||
|
alt_fm.height = 49;
|
||||||
|
for (uint8_t i = 0; i < 127; i++) {
|
||||||
|
alt_fm.char_widths[i] = 0;
|
||||||
|
}
|
||||||
|
// For special characters, copy the character widths from the char tables
|
||||||
|
for (uint8_t i = 0; i < NUM_ELEMENTS(char_recipe); i++) {
|
||||||
|
uint8_t std_char, alt_char, alt_data;
|
||||||
|
get_char_data(i, std_char, alt_char, alt_data);
|
||||||
|
if (std_char == 0)
|
||||||
|
alt_fm.char_widths[alt_char] = alt_data;
|
||||||
|
}
|
||||||
|
CLCD::mem_write_bulk(addr, &alt_fm, 148);
|
||||||
|
|
||||||
|
// Decode the RLE data and load it into RAMG as a bitmap
|
||||||
|
write_rle_data(addr + 148, font, sizeof(font));
|
||||||
|
|
||||||
|
bitmap_addr = addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Populates the bitmap handles for the custom into the display list.
|
||||||
|
* This function is called once at the start of each display list.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* cmd - Object used for writing to the FTDI chip command queue.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void FTDI::WesternCharSet::load_bitmaps(CommandProcessor& cmd) {
|
||||||
|
CLCD::FontMetrics alt_fm;
|
||||||
|
alt_fm.ptr = bitmap_addr + 148;
|
||||||
|
alt_fm.format = L4;
|
||||||
|
alt_fm.stride = 19;
|
||||||
|
alt_fm.width = 38;
|
||||||
|
alt_fm.height = 49;
|
||||||
|
set_font_bitmap(cmd, alt_fm, alt_font);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders a character at location x and y. The x position is incremented
|
||||||
|
* by the width of the character.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* cmd - If non-NULL the symbol is drawn to the screen.
|
||||||
|
* If NULL, only increment position for text measurement.
|
||||||
|
*
|
||||||
|
* x, y - The location at which to draw the character. On output,
|
||||||
|
* incremented to the location of the next character.
|
||||||
|
*
|
||||||
|
* fs - A scaling object used to scale the font. The display will
|
||||||
|
* already be configured to scale bitmaps, but positions
|
||||||
|
* must be scaled using fs.scale()
|
||||||
|
*
|
||||||
|
* c - The unicode code point to draw. If the renderer does not
|
||||||
|
* support the character, it should return false.
|
||||||
|
|
||||||
|
* Returns: Whether the character was supported.
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool FTDI::WesternCharSet::render_glyph(CommandProcessor* cmd, int &x, int &y, font_size_t fs, utf8_char_t c) {
|
||||||
|
|
||||||
|
// A supported character?
|
||||||
|
if (c < UTF8('¡') || c > UTF8('ÿ')) return false;
|
||||||
|
|
||||||
|
int8_t index = find_char_data(c);
|
||||||
|
if (index == -1) return false;
|
||||||
|
|
||||||
|
// Determine character characteristics
|
||||||
|
uint8_t std_char, alt_char, alt_data;
|
||||||
|
get_char_data(index, std_char, alt_char, alt_data);
|
||||||
|
|
||||||
|
bool base_special;
|
||||||
|
uint8_t base_width;
|
||||||
|
uint8_t base_char;
|
||||||
|
uint8_t accent_char;
|
||||||
|
int8_t accent_dx, accent_dy;
|
||||||
|
|
||||||
|
if (std_char == 0) {
|
||||||
|
// Special character, non-accented
|
||||||
|
base_width = alt_data;
|
||||||
|
base_special = true;
|
||||||
|
base_char = alt_char;
|
||||||
|
accent_char = 0;
|
||||||
|
if (c == UTF8('°'))
|
||||||
|
x -= fs.scale(deg_sign_leading);
|
||||||
|
} else {
|
||||||
|
// Regular character with accent:
|
||||||
|
accent_dx = alt_data - mid_accent;
|
||||||
|
accent_dy = isupper(std_char) ? -7 : 0;
|
||||||
|
accent_char = alt_char;
|
||||||
|
base_width = StandardCharSet::std_char_width(std_char);
|
||||||
|
base_special = std_char == 'i';
|
||||||
|
base_char = base_special ? NO_DOT_I : std_char;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If cmd != NULL, draw the glyph to the screen
|
||||||
|
if (cmd) {
|
||||||
|
ext_vertex2ii(*cmd, x, y, base_special ? alt_font : std_font, base_char);
|
||||||
|
if (accent_char)
|
||||||
|
ext_vertex2ii(*cmd, x + fs.scale(accent_dx), y + fs.scale(accent_dy), alt_font, accent_char);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Increment X to the next character position
|
||||||
|
x += fs.scale(base_width);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // FTDI_EXTENDED && TOUCH_UI_USE_UTF8 && TOUCH_UI_UTF8_WESTERN_CHARSET
|
|
@ -0,0 +1,29 @@
|
||||||
|
/**********************
|
||||||
|
* western_char_set.h *
|
||||||
|
**********************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Written By Marcio Teixeira 2019 - Aleph Objects, Inc. *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* To view a copy of the GNU General Public License, go to the following *
|
||||||
|
* location: <http://www.gnu.org/licenses/>. *
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
namespace FTDI {
|
||||||
|
class WesternCharSet {
|
||||||
|
public:
|
||||||
|
static void load_data(uint32_t addr);
|
||||||
|
static void load_bitmaps(CommandProcessor&);
|
||||||
|
static bool render_glyph(CommandProcessor*, int &x, int &y, font_size_t, utf8_char_t);
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,665 @@
|
||||||
|
/********************************
|
||||||
|
* western_european_bitmap_31.h *
|
||||||
|
********************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Written By Marcio Teixeira 2019 - Aleph Objects, Inc. *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* To view a copy of the GNU General Public License, go to the following *
|
||||||
|
* location: <http://www.gnu.org/licenses/>. *
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
/* This is a dump of "font_bitmaps/western_european_bitmap_31.png"
|
||||||
|
* using the tool "bitmap2cpp.py". The tool converts the image into
|
||||||
|
* 16-level grayscale and packs two pixels per byte. The resulting
|
||||||
|
* bytes are then RLE compressed to yield (count, byte) pairs.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const unsigned char font[] PROGMEM = {
|
||||||
|
0x76, 0x00, 0x01, 0x08, 0x01, 0xee, 0x01, 0xe5, 0x11, 0x00, 0x01, 0xaf,
|
||||||
|
0x01, 0xff, 0x01, 0x20, 0x10, 0x00, 0x01, 0x0c, 0x01, 0xff, 0x01, 0xd0,
|
||||||
|
0x10, 0x00, 0x01, 0x01, 0x01, 0xdf, 0x01, 0xf9, 0x11, 0x00, 0x01, 0x2e,
|
||||||
|
0x01, 0xff, 0x01, 0x50, 0x10, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf2,
|
||||||
|
0x11, 0x00, 0x01, 0x5f, 0x01, 0xfd, 0x11, 0x00, 0x01, 0x06, 0x01, 0x99,
|
||||||
|
0x01, 0x40, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0x20, 0x00, 0x01, 0x9e,
|
||||||
|
0x01, 0xee, 0x01, 0x50, 0x0f, 0x00, 0x01, 0x05, 0x01, 0xff, 0x01, 0xf8,
|
||||||
|
0x10, 0x00, 0x01, 0x2f, 0x01, 0xff, 0x01, 0xa0, 0x10, 0x00, 0x01, 0xcf,
|
||||||
|
0x01, 0xfc, 0x10, 0x00, 0x01, 0x09, 0x01, 0xff, 0x01, 0xd1, 0x10, 0x00,
|
||||||
|
0x01, 0x4f, 0x01, 0xfe, 0x01, 0x20, 0x0f, 0x00, 0x01, 0x01, 0x01, 0xef,
|
||||||
|
0x01, 0xf3, 0x10, 0x00, 0x01, 0x07, 0x01, 0xaa, 0x01, 0x40, 0xff, 0x00,
|
||||||
|
0xff, 0x00, 0xff, 0x00, 0x1f, 0x00, 0x01, 0xcf, 0x01, 0xfc, 0x10, 0x00,
|
||||||
|
0x01, 0x07, 0x02, 0xff, 0x01, 0x60, 0x0f, 0x00, 0x01, 0x2f, 0x02, 0xff,
|
||||||
|
0x01, 0xf2, 0x0f, 0x00, 0x01, 0xcf, 0x01, 0xf6, 0x01, 0x6f, 0x01, 0xfb,
|
||||||
|
0x0e, 0x00, 0x01, 0x06, 0x01, 0xff, 0x01, 0xa0, 0x01, 0x0a, 0x01, 0xff,
|
||||||
|
0x01, 0x60, 0x0d, 0x00, 0x01, 0x1f, 0x01, 0xfd, 0x01, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xdf, 0x01, 0xf1, 0x0d, 0x00, 0x01, 0xbf, 0x01, 0xf3, 0x02, 0x00,
|
||||||
|
0x01, 0x3f, 0x01, 0xfb, 0x0c, 0x00, 0x01, 0x02, 0x01, 0x99, 0x01, 0x50,
|
||||||
|
0x02, 0x00, 0x01, 0x05, 0x01, 0x99, 0x01, 0x20, 0xff, 0x00, 0xff, 0x00,
|
||||||
|
0xff, 0x00, 0x1f, 0x00, 0x01, 0x11, 0x0d, 0x00, 0x01, 0x09, 0x01, 0xff,
|
||||||
|
0x01, 0xc3, 0x02, 0x00, 0x01, 0xff, 0x01, 0x80, 0x0c, 0x00, 0x01, 0xaf,
|
||||||
|
0x02, 0xff, 0x01, 0x50, 0x01, 0x01, 0x01, 0xff, 0x01, 0x60, 0x0b, 0x00,
|
||||||
|
0x01, 0x02, 0x01, 0xff, 0x01, 0xd9, 0x01, 0xff, 0x01, 0xf7, 0x01, 0x07,
|
||||||
|
0x01, 0xff, 0x01, 0x40, 0x0b, 0x00, 0x01, 0x07, 0x01, 0xff, 0x01, 0x20,
|
||||||
|
0x01, 0x3e, 0x02, 0xff, 0x01, 0xfd, 0x0c, 0x00, 0x01, 0x09, 0x01, 0xfe,
|
||||||
|
0x01, 0x00, 0x01, 0x02, 0x01, 0xdf, 0x01, 0xff, 0x01, 0xf4, 0x0c, 0x00,
|
||||||
|
0x01, 0x07, 0x01, 0xa8, 0x02, 0x00, 0x01, 0x06, 0x01, 0x98, 0x01, 0x20,
|
||||||
|
0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0x41, 0x00, 0x02, 0x44, 0x02, 0x00,
|
||||||
|
0x02, 0x44, 0x0d, 0x00, 0x02, 0xff, 0x01, 0x10, 0x01, 0x01, 0x02, 0xff,
|
||||||
|
0x0d, 0x00, 0x02, 0xff, 0x01, 0x10, 0x01, 0x01, 0x02, 0xff, 0x0d, 0x00,
|
||||||
|
0x02, 0xff, 0x01, 0x10, 0x01, 0x01, 0x02, 0xff, 0x0d, 0x00, 0x02, 0xcc,
|
||||||
|
0x01, 0x10, 0x01, 0x01, 0x02, 0xcc, 0xff, 0x00, 0xff, 0x00, 0xf6, 0x00,
|
||||||
|
0x01, 0x13, 0x01, 0x30, 0x10, 0x00, 0x01, 0x2b, 0x02, 0xff, 0x01, 0xa1,
|
||||||
|
0x0e, 0x00, 0x01, 0x02, 0x01, 0xef, 0x02, 0xff, 0x01, 0xfd, 0x01, 0x10,
|
||||||
|
0x0d, 0x00, 0x01, 0x0d, 0x01, 0xff, 0x01, 0x94, 0x01, 0x5a, 0x01, 0xff,
|
||||||
|
0x01, 0xb0, 0x0d, 0x00, 0x01, 0x4f, 0x01, 0xf7, 0x02, 0x00, 0x01, 0x9f,
|
||||||
|
0x01, 0xf2, 0x0d, 0x00, 0x01, 0x8f, 0x01, 0xf0, 0x02, 0x00, 0x01, 0x2f,
|
||||||
|
0x01, 0xf6, 0x0d, 0x00, 0x01, 0x8f, 0x01, 0xe0, 0x02, 0x00, 0x01, 0x0f,
|
||||||
|
0x01, 0xf7, 0x0d, 0x00, 0x01, 0x7f, 0x01, 0xf2, 0x02, 0x00, 0x01, 0x4f,
|
||||||
|
0x01, 0xf5, 0x0d, 0x00, 0x01, 0x2f, 0x01, 0xfc, 0x01, 0x10, 0x01, 0x02,
|
||||||
|
0x01, 0xdf, 0x01, 0xf0, 0x0d, 0x00, 0x01, 0x08, 0x01, 0xff, 0x01, 0xfb,
|
||||||
|
0x01, 0xcf, 0x01, 0xff, 0x01, 0x60, 0x0e, 0x00, 0x01, 0x9f, 0x02, 0xff,
|
||||||
|
0x01, 0xf8, 0x0f, 0x00, 0x01, 0x03, 0x01, 0x9c, 0x01, 0xc9, 0x01, 0x30,
|
||||||
|
0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0x93, 0x00,
|
||||||
|
0x01, 0x06, 0x01, 0xff, 0x01, 0x20, 0x11, 0x00, 0x01, 0xcf, 0x01, 0xc0,
|
||||||
|
0x11, 0x00, 0x01, 0x3f, 0x01, 0xf6, 0x11, 0x00, 0x01, 0x0f, 0x01, 0xfb,
|
||||||
|
0x11, 0x00, 0x01, 0x3f, 0x01, 0xfd, 0x0e, 0x00, 0x01, 0x07, 0x01, 0xd9,
|
||||||
|
0x01, 0x89, 0x01, 0xff, 0x01, 0xfb, 0x0e, 0x00, 0x01, 0x07, 0x03, 0xff,
|
||||||
|
0x01, 0xf3, 0x0e, 0x00, 0x01, 0x04, 0x01, 0xbd, 0x01, 0xee, 0x01, 0xd9,
|
||||||
|
0x01, 0x20, 0xff, 0x00, 0x61, 0x00, 0x01, 0x01, 0x01, 0x99, 0x01, 0x96,
|
||||||
|
0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9,
|
||||||
|
0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9,
|
||||||
|
0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9,
|
||||||
|
0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9,
|
||||||
|
0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9,
|
||||||
|
0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9,
|
||||||
|
0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xff, 0x01, 0xf9, 0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9,
|
||||||
|
0x10, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf9, 0xff, 0x00, 0x58, 0x00,
|
||||||
|
0x01, 0x35, 0x01, 0x66, 0x01, 0x52, 0x0e, 0x00, 0x01, 0x03, 0x01, 0xaf,
|
||||||
|
0x03, 0xff, 0x01, 0xe7, 0x0d, 0x00, 0x01, 0x7f, 0x05, 0xff, 0x01, 0xc1,
|
||||||
|
0x0b, 0x00, 0x01, 0x07, 0x02, 0xff, 0x01, 0xfc, 0x01, 0xaa, 0x01, 0xdf,
|
||||||
|
0x01, 0xff, 0x01, 0xfc, 0x0b, 0x00, 0x01, 0x2f, 0x01, 0xff, 0x01, 0xf9,
|
||||||
|
0x01, 0x10, 0x01, 0x00, 0x01, 0x02, 0x01, 0xcf, 0x01, 0xff, 0x01, 0x70,
|
||||||
|
0x0a, 0x00, 0x01, 0xaf, 0x01, 0xff, 0x01, 0x80, 0x03, 0x00, 0x01, 0x0d,
|
||||||
|
0x01, 0xff, 0x01, 0xe0, 0x0a, 0x00, 0x01, 0xef, 0x01, 0xff, 0x04, 0x00,
|
||||||
|
0x01, 0x05, 0x01, 0xff, 0x01, 0xf3, 0x09, 0x00, 0x01, 0x02, 0x01, 0xff,
|
||||||
|
0x01, 0xfb, 0x04, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xf7, 0x09, 0x00,
|
||||||
|
0x01, 0x03, 0x01, 0xff, 0x01, 0xf9, 0x03, 0x00, 0x01, 0x03, 0x01, 0x9e,
|
||||||
|
0x01, 0xff, 0x01, 0xf8, 0x09, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf8,
|
||||||
|
0x02, 0x00, 0x01, 0x01, 0x01, 0xaf, 0x02, 0xff, 0x01, 0xd7, 0x09, 0x00,
|
||||||
|
0x01, 0x03, 0x01, 0xff, 0x01, 0xf8, 0x02, 0x00, 0x01, 0x1d, 0x01, 0xff,
|
||||||
|
0x01, 0xfc, 0x01, 0x50, 0x0a, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf8,
|
||||||
|
0x02, 0x00, 0x01, 0xaf, 0x01, 0xff, 0x01, 0x70, 0x0b, 0x00, 0x01, 0x03,
|
||||||
|
0x01, 0xff, 0x01, 0xf8, 0x01, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xfa,
|
||||||
|
0x0c, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf8, 0x01, 0x00, 0x01, 0x05,
|
||||||
|
0x01, 0xff, 0x01, 0xf4, 0x0c, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf8,
|
||||||
|
0x01, 0x00, 0x01, 0x06, 0x01, 0xff, 0x01, 0xf4, 0x0c, 0x00, 0x01, 0x03,
|
||||||
|
0x01, 0xff, 0x01, 0xf8, 0x01, 0x00, 0x01, 0x05, 0x01, 0xff, 0x01, 0xf9,
|
||||||
|
0x0c, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf8, 0x01, 0x00, 0x01, 0x02,
|
||||||
|
0x02, 0xff, 0x01, 0x50, 0x0b, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf8,
|
||||||
|
0x02, 0x00, 0x01, 0xbf, 0x01, 0xff, 0x01, 0xf8, 0x0b, 0x00, 0x01, 0x03,
|
||||||
|
0x01, 0xff, 0x01, 0xf8, 0x02, 0x00, 0x01, 0x1d, 0x02, 0xff, 0x01, 0xd3,
|
||||||
|
0x0a, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf8, 0x02, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xcf, 0x02, 0xff, 0x01, 0x70, 0x09, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xf8, 0x03, 0x00, 0x01, 0x07, 0x02, 0xff, 0x01, 0xfb, 0x09, 0x00,
|
||||||
|
0x01, 0x03, 0x01, 0xff, 0x01, 0xf8, 0x04, 0x00, 0x01, 0x2b, 0x02, 0xff,
|
||||||
|
0x01, 0xb0, 0x08, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf8, 0x05, 0x00,
|
||||||
|
0x01, 0x6f, 0x01, 0xff, 0x01, 0xf6, 0x08, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xf8, 0x05, 0x00, 0x01, 0x06, 0x01, 0xff, 0x01, 0xfd, 0x08, 0x00,
|
||||||
|
0x01, 0x03, 0x01, 0xff, 0x01, 0xf8, 0x06, 0x00, 0x01, 0xdf, 0x01, 0xff,
|
||||||
|
0x08, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf8, 0x06, 0x00, 0x01, 0xbf,
|
||||||
|
0x01, 0xff, 0x01, 0x10, 0x07, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf8,
|
||||||
|
0x06, 0x00, 0x01, 0xcf, 0x01, 0xff, 0x08, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xf8, 0x05, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0xfd, 0x08, 0x00,
|
||||||
|
0x01, 0x03, 0x01, 0xff, 0x01, 0xf8, 0x01, 0x02, 0x01, 0x84, 0x03, 0x00,
|
||||||
|
0x01, 0x2d, 0x01, 0xff, 0x01, 0xf8, 0x08, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xf8, 0x01, 0x02, 0x01, 0xff, 0x01, 0xec, 0x01, 0xa9, 0x01, 0xac,
|
||||||
|
0x02, 0xff, 0x01, 0xe0, 0x08, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf8,
|
||||||
|
0x01, 0x02, 0x05, 0xff, 0x01, 0xfe, 0x01, 0x20, 0x08, 0x00, 0x01, 0x03,
|
||||||
|
0x01, 0xee, 0x01, 0xe7, 0x01, 0x01, 0x01, 0xbf, 0x03, 0xff, 0x01, 0xfe,
|
||||||
|
0x01, 0x80, 0x0e, 0x00, 0x01, 0x35, 0x01, 0x78, 0x01, 0x76, 0x01, 0x30,
|
||||||
|
0xff, 0x00, 0x48, 0x00, 0x01, 0x40, 0x0a, 0x00, 0x01, 0x47, 0x01, 0x9a,
|
||||||
|
0x01, 0xba, 0x01, 0x95, 0x01, 0x10, 0x02, 0x00, 0x01, 0x07, 0x01, 0xf8,
|
||||||
|
0x08, 0x00, 0x01, 0x02, 0x01, 0xae, 0x04, 0xff, 0x01, 0xfc, 0x01, 0x50,
|
||||||
|
0x01, 0x00, 0x01, 0x5f, 0x01, 0xff, 0x01, 0x30, 0x07, 0x00, 0x01, 0x8f,
|
||||||
|
0x06, 0xff, 0x01, 0xfc, 0x01, 0x23, 0x01, 0xff, 0x01, 0xf6, 0x07, 0x00,
|
||||||
|
0x01, 0x1c, 0x03, 0xff, 0x01, 0xca, 0x01, 0x9b, 0x01, 0xdf, 0x02, 0xff,
|
||||||
|
0x01, 0xfe, 0x01, 0xff, 0x01, 0x80, 0x07, 0x00, 0x01, 0xcf, 0x01, 0xff,
|
||||||
|
0x01, 0xfd, 0x01, 0x50, 0x02, 0x00, 0x01, 0x02, 0x01, 0x9f, 0x02, 0xff,
|
||||||
|
0x01, 0xfa, 0x07, 0x00, 0x01, 0x09, 0x02, 0xff, 0x01, 0x90, 0x04, 0x00,
|
||||||
|
0x01, 0x03, 0x01, 0xef, 0x01, 0xff, 0x01, 0xf3, 0x07, 0x00, 0x01, 0x5f,
|
||||||
|
0x01, 0xff, 0x01, 0xf9, 0x06, 0x00, 0x01, 0x9f, 0x01, 0xff, 0x01, 0xfc,
|
||||||
|
0x07, 0x00, 0x01, 0xdf, 0x01, 0xff, 0x01, 0xc0, 0x05, 0x00, 0x01, 0x06,
|
||||||
|
0x03, 0xff, 0x01, 0x60, 0x05, 0x00, 0x01, 0x04, 0x02, 0xff, 0x01, 0x30,
|
||||||
|
0x05, 0x00, 0x01, 0x4f, 0x01, 0xff, 0x01, 0xdf, 0x01, 0xff, 0x01, 0xc0,
|
||||||
|
0x05, 0x00, 0x01, 0x0b, 0x01, 0xff, 0x01, 0xfc, 0x05, 0x00, 0x01, 0x02,
|
||||||
|
0x01, 0xef, 0x01, 0xf7, 0x01, 0x3f, 0x01, 0xff, 0x01, 0xf3, 0x05, 0x00,
|
||||||
|
0x01, 0x0f, 0x01, 0xff, 0x01, 0xf6, 0x05, 0x00, 0x01, 0x1d, 0x01, 0xff,
|
||||||
|
0x01, 0xa0, 0x01, 0x0d, 0x01, 0xff, 0x01, 0xf8, 0x05, 0x00, 0x01, 0x3f,
|
||||||
|
0x01, 0xff, 0x01, 0xf2, 0x05, 0x00, 0x01, 0xcf, 0x01, 0xfc, 0x01, 0x00,
|
||||||
|
0x01, 0x09, 0x01, 0xff, 0x01, 0xfb, 0x05, 0x00, 0x01, 0x6f, 0x01, 0xff,
|
||||||
|
0x01, 0xe0, 0x04, 0x00, 0x01, 0x0a, 0x01, 0xff, 0x01, 0xd1, 0x01, 0x00,
|
||||||
|
0x01, 0x06, 0x01, 0xff, 0x01, 0xfe, 0x05, 0x00, 0x01, 0x8f, 0x01, 0xff,
|
||||||
|
0x01, 0xc0, 0x04, 0x00, 0x01, 0x7f, 0x01, 0xfe, 0x01, 0x20, 0x01, 0x00,
|
||||||
|
0x01, 0x03, 0x02, 0xff, 0x05, 0x00, 0x01, 0x9f, 0x01, 0xff, 0x01, 0xb0,
|
||||||
|
0x03, 0x00, 0x01, 0x05, 0x01, 0xff, 0x01, 0xf4, 0x02, 0x00, 0x01, 0x02,
|
||||||
|
0x02, 0xff, 0x01, 0x10, 0x04, 0x00, 0x01, 0xaf, 0x01, 0xff, 0x01, 0xa0,
|
||||||
|
0x03, 0x00, 0x01, 0x3f, 0x01, 0xff, 0x01, 0x60, 0x02, 0x00, 0x01, 0x01,
|
||||||
|
0x02, 0xff, 0x01, 0x30, 0x04, 0x00, 0x01, 0xaf, 0x01, 0xff, 0x01, 0xa0,
|
||||||
|
0x02, 0x00, 0x01, 0x01, 0x01, 0xef, 0x01, 0xf8, 0x03, 0x00, 0x01, 0x02,
|
||||||
|
0x02, 0xff, 0x01, 0x20, 0x04, 0x00, 0x01, 0x9f, 0x01, 0xff, 0x01, 0xb0,
|
||||||
|
0x02, 0x00, 0x01, 0x0d, 0x01, 0xff, 0x01, 0xb0, 0x03, 0x00, 0x01, 0x03,
|
||||||
|
0x02, 0xff, 0x01, 0x10, 0x04, 0x00, 0x01, 0x8f, 0x01, 0xff, 0x01, 0xc0,
|
||||||
|
0x02, 0x00, 0x01, 0xbf, 0x01, 0xfd, 0x04, 0x00, 0x01, 0x04, 0x02, 0xff,
|
||||||
|
0x05, 0x00, 0x01, 0x6f, 0x01, 0xff, 0x01, 0xe0, 0x01, 0x00, 0x01, 0x08,
|
||||||
|
0x01, 0xff, 0x01, 0xe1, 0x04, 0x00, 0x01, 0x06, 0x01, 0xff, 0x01, 0xfe,
|
||||||
|
0x05, 0x00, 0x01, 0x2f, 0x01, 0xff, 0x01, 0xf2, 0x01, 0x00, 0x01, 0x6f,
|
||||||
|
0x01, 0xff, 0x01, 0x30, 0x04, 0x00, 0x01, 0x0a, 0x01, 0xff, 0x01, 0xfa,
|
||||||
|
0x05, 0x00, 0x01, 0x0f, 0x01, 0xff, 0x01, 0xf6, 0x01, 0x04, 0x01, 0xff,
|
||||||
|
0x01, 0xf5, 0x05, 0x00, 0x01, 0x0e, 0x01, 0xff, 0x01, 0xf7, 0x05, 0x00,
|
||||||
|
0x01, 0x09, 0x01, 0xff, 0x01, 0xfc, 0x01, 0x2e, 0x01, 0xff, 0x01, 0x70,
|
||||||
|
0x05, 0x00, 0x01, 0x5f, 0x01, 0xff, 0x01, 0xf2, 0x05, 0x00, 0x01, 0x03,
|
||||||
|
0x02, 0xff, 0x01, 0xef, 0x01, 0xf9, 0x06, 0x00, 0x01, 0xcf, 0x01, 0xff,
|
||||||
|
0x01, 0xb0, 0x06, 0x00, 0x01, 0xcf, 0x02, 0xff, 0x01, 0xc0, 0x05, 0x00,
|
||||||
|
0x01, 0x06, 0x02, 0xff, 0x01, 0x40, 0x06, 0x00, 0x01, 0x2f, 0x02, 0xff,
|
||||||
|
0x01, 0x20, 0x05, 0x00, 0x01, 0x4f, 0x01, 0xff, 0x01, 0xfb, 0x07, 0x00,
|
||||||
|
0x01, 0x0b, 0x02, 0xff, 0x01, 0xd2, 0x04, 0x00, 0x01, 0x06, 0x02, 0xff,
|
||||||
|
0x01, 0xe1, 0x07, 0x00, 0x01, 0x5f, 0x03, 0xff, 0x01, 0x93, 0x02, 0x00,
|
||||||
|
0x01, 0x05, 0x01, 0xcf, 0x02, 0xff, 0x01, 0x30, 0x06, 0x00, 0x01, 0x03,
|
||||||
|
0x01, 0xff, 0x01, 0xfb, 0x03, 0xff, 0x01, 0xfd, 0x01, 0xde, 0x03, 0xff,
|
||||||
|
0x01, 0xe3, 0x07, 0x00, 0x01, 0x1e, 0x01, 0xff, 0x01, 0x80, 0x01, 0x4d,
|
||||||
|
0x06, 0xff, 0x01, 0xfa, 0x01, 0x10, 0x07, 0x00, 0x01, 0xbf, 0x01, 0xfb,
|
||||||
|
0x02, 0x00, 0x01, 0x5c, 0x04, 0xff, 0x01, 0xe9, 0x01, 0x30, 0x08, 0x00,
|
||||||
|
0x01, 0x1c, 0x01, 0xc0, 0x03, 0x00, 0x01, 0x04, 0x01, 0x67, 0x01, 0x86,
|
||||||
|
0x01, 0x53, 0x0b, 0x00, 0x01, 0x10, 0xff, 0x00, 0xbd, 0x00, 0x01, 0x02,
|
||||||
|
0x01, 0x20, 0x0c, 0x00, 0x01, 0x02, 0x01, 0x32, 0x01, 0x10, 0x02, 0x00,
|
||||||
|
0x01, 0x1e, 0x01, 0xe3, 0x0a, 0x00, 0x01, 0x01, 0x01, 0x7c, 0x02, 0xff,
|
||||||
|
0x01, 0xfd, 0x01, 0x82, 0x01, 0x00, 0x01, 0xcf, 0x01, 0xf7, 0x0a, 0x00,
|
||||||
|
0x01, 0x6e, 0x05, 0xff, 0x01, 0x8a, 0x01, 0xff, 0x01, 0xa0, 0x09, 0x00,
|
||||||
|
0x01, 0x08, 0x07, 0xff, 0x01, 0xfc, 0x0a, 0x00, 0x01, 0x6f, 0x01, 0xff,
|
||||||
|
0x01, 0xfc, 0x01, 0x50, 0x01, 0x00, 0x01, 0x3a, 0x02, 0xff, 0x01, 0xf1,
|
||||||
|
0x09, 0x00, 0x01, 0x01, 0x02, 0xff, 0x01, 0x90, 0x03, 0x00, 0x01, 0x7f,
|
||||||
|
0x01, 0xff, 0x01, 0xf5, 0x09, 0x00, 0x01, 0x08, 0x01, 0xff, 0x01, 0xfc,
|
||||||
|
0x03, 0x00, 0x01, 0x01, 0x01, 0xdf, 0x01, 0xff, 0x01, 0xfd, 0x09, 0x00,
|
||||||
|
0x01, 0x0e, 0x01, 0xff, 0x01, 0xf3, 0x03, 0x00, 0x01, 0x0b, 0x03, 0xff,
|
||||||
|
0x01, 0x30, 0x08, 0x00, 0x01, 0x3f, 0x01, 0xff, 0x01, 0xd0, 0x03, 0x00,
|
||||||
|
0x01, 0x9f, 0x01, 0xfa, 0x01, 0x8f, 0x01, 0xff, 0x01, 0x80, 0x08, 0x00,
|
||||||
|
0x01, 0x7f, 0x01, 0xff, 0x01, 0x80, 0x02, 0x00, 0x01, 0x06, 0x01, 0xff,
|
||||||
|
0x01, 0xc0, 0x01, 0x3f, 0x01, 0xff, 0x01, 0xb0, 0x08, 0x00, 0x01, 0x9f,
|
||||||
|
0x01, 0xff, 0x01, 0x50, 0x02, 0x00, 0x01, 0x3f, 0x01, 0xfe, 0x01, 0x10,
|
||||||
|
0x01, 0x1f, 0x01, 0xff, 0x01, 0xe0, 0x08, 0x00, 0x01, 0xaf, 0x01, 0xff,
|
||||||
|
0x01, 0x40, 0x01, 0x00, 0x01, 0x02, 0x01, 0xef, 0x01, 0xf3, 0x01, 0x00,
|
||||||
|
0x01, 0x0f, 0x01, 0xff, 0x01, 0xf0, 0x08, 0x00, 0x01, 0xbf, 0x01, 0xff,
|
||||||
|
0x01, 0x30, 0x01, 0x00, 0x01, 0x0d, 0x01, 0xff, 0x01, 0x50, 0x01, 0x00,
|
||||||
|
0x01, 0x0e, 0x01, 0xff, 0x01, 0xf0, 0x08, 0x00, 0x01, 0xaf, 0x01, 0xff,
|
||||||
|
0x01, 0x30, 0x01, 0x00, 0x01, 0xbf, 0x01, 0xf8, 0x02, 0x00, 0x01, 0x0f,
|
||||||
|
0x01, 0xff, 0x01, 0xf0, 0x08, 0x00, 0x01, 0x9f, 0x01, 0xff, 0x01, 0x40,
|
||||||
|
0x01, 0x08, 0x01, 0xff, 0x01, 0xb0, 0x02, 0x00, 0x01, 0x0f, 0x01, 0xff,
|
||||||
|
0x01, 0xe0, 0x08, 0x00, 0x01, 0x7f, 0x01, 0xff, 0x01, 0x60, 0x01, 0x5f,
|
||||||
|
0x01, 0xfd, 0x03, 0x00, 0x01, 0x3f, 0x01, 0xff, 0x01, 0xc0, 0x08, 0x00,
|
||||||
|
0x01, 0x4f, 0x01, 0xff, 0x01, 0xa3, 0x01, 0xff, 0x01, 0xe2, 0x03, 0x00,
|
||||||
|
0x01, 0x7f, 0x01, 0xff, 0x01, 0x90, 0x08, 0x00, 0x01, 0x0f, 0x01, 0xff,
|
||||||
|
0x01, 0xfe, 0x01, 0xff, 0x01, 0x40, 0x03, 0x00, 0x01, 0xcf, 0x01, 0xff,
|
||||||
|
0x01, 0x50, 0x08, 0x00, 0x01, 0x0a, 0x02, 0xff, 0x01, 0xf6, 0x03, 0x00,
|
||||||
|
0x01, 0x05, 0x01, 0xff, 0x01, 0xfe, 0x09, 0x00, 0x01, 0x02, 0x02, 0xff,
|
||||||
|
0x01, 0xb0, 0x03, 0x00, 0x01, 0x2e, 0x01, 0xff, 0x01, 0xf8, 0x0a, 0x00,
|
||||||
|
0x01, 0xbf, 0x01, 0xff, 0x01, 0xf7, 0x02, 0x00, 0x01, 0x05, 0x01, 0xef,
|
||||||
|
0x01, 0xff, 0x01, 0xd0, 0x09, 0x00, 0x01, 0x04, 0x03, 0xff, 0x01, 0xfc,
|
||||||
|
0x01, 0xab, 0x01, 0xef, 0x01, 0xff, 0x01, 0xfe, 0x01, 0x20, 0x09, 0x00,
|
||||||
|
0x01, 0x2f, 0x01, 0xff, 0x01, 0xaf, 0x05, 0xff, 0x01, 0xd2, 0x09, 0x00,
|
||||||
|
0x01, 0x01, 0x01, 0xdf, 0x01, 0xf5, 0x01, 0x04, 0x01, 0xbf, 0x03, 0xff,
|
||||||
|
0x01, 0xd6, 0x0a, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0x70, 0x01, 0x00,
|
||||||
|
0x01, 0x01, 0x01, 0x46, 0x01, 0x76, 0x01, 0x52, 0x0c, 0x00, 0x01, 0x28,
|
||||||
|
0xff, 0x00, 0x48, 0x00, 0x01, 0x14, 0x0b, 0x44, 0x01, 0x41, 0x06, 0x00,
|
||||||
|
0x01, 0x8f, 0x0b, 0xff, 0x01, 0xf3, 0x06, 0x00, 0x01, 0xef, 0x0b, 0xff,
|
||||||
|
0x01, 0xf3, 0x05, 0x00, 0x01, 0x05, 0x02, 0xff, 0x01, 0xee, 0x09, 0xff,
|
||||||
|
0x01, 0xf3, 0x05, 0x00, 0x01, 0x0c, 0x01, 0xff, 0x01, 0xf5, 0x01, 0x00,
|
||||||
|
0x01, 0xdf, 0x01, 0xff, 0x01, 0x63, 0x06, 0x33, 0x01, 0x30, 0x05, 0x00,
|
||||||
|
0x01, 0x3f, 0x01, 0xff, 0x01, 0xe0, 0x01, 0x00, 0x01, 0xdf, 0x01, 0xff,
|
||||||
|
0x01, 0x40, 0x0c, 0x00, 0x01, 0xaf, 0x01, 0xff, 0x01, 0x80, 0x01, 0x00,
|
||||||
|
0x01, 0xdf, 0x01, 0xff, 0x01, 0x40, 0x0b, 0x00, 0x01, 0x01, 0x02, 0xff,
|
||||||
|
0x01, 0x10, 0x01, 0x00, 0x01, 0xdf, 0x01, 0xff, 0x01, 0x40, 0x0b, 0x00,
|
||||||
|
0x01, 0x07, 0x01, 0xff, 0x01, 0xfa, 0x02, 0x00, 0x01, 0xdf, 0x01, 0xff,
|
||||||
|
0x01, 0x40, 0x0b, 0x00, 0x01, 0x0d, 0x01, 0xff, 0x01, 0xf3, 0x02, 0x00,
|
||||||
|
0x01, 0xdf, 0x01, 0xff, 0x01, 0x40, 0x0b, 0x00, 0x01, 0x4f, 0x01, 0xff,
|
||||||
|
0x01, 0xd0, 0x02, 0x00, 0x01, 0xdf, 0x01, 0xff, 0x01, 0x40, 0x0b, 0x00,
|
||||||
|
0x01, 0xbf, 0x01, 0xff, 0x01, 0x60, 0x02, 0x00, 0x01, 0xdf, 0x01, 0xff,
|
||||||
|
0x01, 0x40, 0x0a, 0x00, 0x01, 0x02, 0x01, 0xff, 0x01, 0xfe, 0x03, 0x00,
|
||||||
|
0x01, 0xdf, 0x01, 0xff, 0x01, 0x40, 0x0a, 0x00, 0x01, 0x08, 0x01, 0xff,
|
||||||
|
0x01, 0xf9, 0x03, 0x00, 0x01, 0xdf, 0x01, 0xff, 0x01, 0xed, 0x06, 0xdd,
|
||||||
|
0x01, 0x80, 0x03, 0x00, 0x01, 0x0e, 0x01, 0xff, 0x01, 0xf2, 0x03, 0x00,
|
||||||
|
0x01, 0xdf, 0x08, 0xff, 0x01, 0xa0, 0x03, 0x00, 0x01, 0x6f, 0x01, 0xff,
|
||||||
|
0x01, 0xb0, 0x03, 0x00, 0x01, 0xdf, 0x08, 0xff, 0x01, 0xa0, 0x03, 0x00,
|
||||||
|
0x01, 0xcf, 0x01, 0xff, 0x01, 0x40, 0x03, 0x00, 0x01, 0xdf, 0x01, 0xff,
|
||||||
|
0x01, 0xa8, 0x06, 0x88, 0x01, 0x50, 0x02, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xfe, 0x04, 0x00, 0x01, 0xdf, 0x01, 0xff, 0x01, 0x40, 0x09, 0x00,
|
||||||
|
0x01, 0x0a, 0x01, 0xff, 0x01, 0xf7, 0x04, 0x00, 0x01, 0xdf, 0x01, 0xff,
|
||||||
|
0x01, 0x40, 0x09, 0x00, 0x01, 0x1f, 0x01, 0xff, 0x01, 0xf4, 0x04, 0x33,
|
||||||
|
0x01, 0xdf, 0x01, 0xff, 0x01, 0x40, 0x09, 0x00, 0x01, 0x7f, 0x08, 0xff,
|
||||||
|
0x01, 0x40, 0x09, 0x00, 0x01, 0xef, 0x08, 0xff, 0x01, 0x40, 0x08, 0x00,
|
||||||
|
0x01, 0x05, 0x09, 0xff, 0x01, 0x40, 0x08, 0x00, 0x01, 0x0b, 0x01, 0xff,
|
||||||
|
0x01, 0xf7, 0x05, 0x33, 0x01, 0xdf, 0x01, 0xff, 0x01, 0x40, 0x08, 0x00,
|
||||||
|
0x01, 0x2f, 0x01, 0xff, 0x01, 0xe0, 0x05, 0x00, 0x01, 0xdf, 0x01, 0xff,
|
||||||
|
0x01, 0x40, 0x08, 0x00, 0x01, 0x9f, 0x01, 0xff, 0x01, 0x80, 0x05, 0x00,
|
||||||
|
0x01, 0xdf, 0x01, 0xff, 0x01, 0x40, 0x08, 0x00, 0x02, 0xff, 0x01, 0x20,
|
||||||
|
0x05, 0x00, 0x01, 0xdf, 0x01, 0xff, 0x01, 0x40, 0x07, 0x00, 0x01, 0x06,
|
||||||
|
0x01, 0xff, 0x01, 0xfb, 0x06, 0x00, 0x01, 0xdf, 0x01, 0xff, 0x01, 0xa8,
|
||||||
|
0x06, 0x88, 0x01, 0x85, 0x01, 0x0d, 0x01, 0xff, 0x01, 0xf4, 0x06, 0x00,
|
||||||
|
0x01, 0xdf, 0x08, 0xff, 0x01, 0xf9, 0x01, 0x4f, 0x01, 0xff, 0x01, 0xe0,
|
||||||
|
0x06, 0x00, 0x01, 0xdf, 0x08, 0xff, 0x01, 0xf9, 0x01, 0x8d, 0x01, 0xdd,
|
||||||
|
0x01, 0x60, 0x06, 0x00, 0x01, 0xbd, 0x08, 0xdd, 0x01, 0xd8, 0xff, 0x00,
|
||||||
|
0xe0, 0x00, 0x01, 0x01, 0x01, 0x34, 0x01, 0x31, 0x06, 0x00, 0x01, 0x12,
|
||||||
|
0x01, 0x42, 0x01, 0x10, 0x05, 0x00, 0x01, 0x02, 0x01, 0x7b, 0x01, 0xef,
|
||||||
|
0x02, 0xff, 0x01, 0xfb, 0x01, 0x60, 0x02, 0x00, 0x01, 0x03, 0x01, 0x9e,
|
||||||
|
0x02, 0xff, 0x01, 0xfd, 0x01, 0x81, 0x04, 0x00, 0x01, 0xbf, 0x05, 0xff,
|
||||||
|
0x01, 0xfe, 0x01, 0x40, 0x01, 0x01, 0x01, 0x9f, 0x05, 0xff, 0x01, 0x60,
|
||||||
|
0x03, 0x00, 0x01, 0xdf, 0x02, 0xff, 0x01, 0xee, 0x03, 0xff, 0x01, 0xf5,
|
||||||
|
0x01, 0x1d, 0x03, 0xff, 0x01, 0xef, 0x02, 0xff, 0x01, 0xf8, 0x03, 0x00,
|
||||||
|
0x01, 0xdf, 0x01, 0xb6, 0x01, 0x20, 0x01, 0x00, 0x01, 0x01, 0x01, 0x5d,
|
||||||
|
0x02, 0xff, 0x01, 0xdf, 0x01, 0xff, 0x01, 0xe7, 0x01, 0x20, 0x01, 0x00,
|
||||||
|
0x01, 0x29, 0x02, 0xff, 0x01, 0x50, 0x02, 0x00, 0x01, 0x71, 0x05, 0x00,
|
||||||
|
0x01, 0xaf, 0x02, 0xff, 0x01, 0xfb, 0x01, 0x10, 0x03, 0x00, 0x01, 0x4f,
|
||||||
|
0x01, 0xff, 0x01, 0xe0, 0x08, 0x00, 0x01, 0x0d, 0x02, 0xff, 0x01, 0xd0,
|
||||||
|
0x04, 0x00, 0x01, 0x07, 0x01, 0xff, 0x01, 0xf7, 0x08, 0x00, 0x01, 0x06,
|
||||||
|
0x02, 0xff, 0x01, 0x40, 0x05, 0x00, 0x01, 0xef, 0x01, 0xfd, 0x08, 0x00,
|
||||||
|
0x01, 0x03, 0x01, 0xff, 0x01, 0xfd, 0x06, 0x00, 0x01, 0x9f, 0x01, 0xff,
|
||||||
|
0x04, 0x00, 0x01, 0x02, 0x01, 0x45, 0x02, 0x66, 0x01, 0x67, 0x01, 0xff,
|
||||||
|
0x01, 0xf9, 0x06, 0x00, 0x01, 0x6f, 0x01, 0xff, 0x03, 0x00, 0x01, 0x4a,
|
||||||
|
0x06, 0xff, 0x01, 0xfb, 0x03, 0x66, 0x01, 0x67, 0x02, 0x77, 0x01, 0xaf,
|
||||||
|
0x01, 0xff, 0x02, 0x00, 0x01, 0x1b, 0x10, 0xff, 0x01, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xdf, 0x02, 0xff, 0x01, 0xcb, 0x01, 0xa8, 0x01, 0x88, 0x01, 0x89,
|
||||||
|
0x0a, 0xff, 0x01, 0x00, 0x01, 0x09, 0x01, 0xff, 0x01, 0xfd, 0x01, 0x40,
|
||||||
|
0x03, 0x00, 0x01, 0x02, 0x01, 0xff, 0x01, 0xfa, 0x08, 0x77, 0x01, 0x00,
|
||||||
|
0x01, 0x1f, 0x01, 0xff, 0x01, 0xd0, 0x04, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xf7, 0x09, 0x00, 0x01, 0x5f, 0x01, 0xff, 0x01, 0x60, 0x04, 0x00,
|
||||||
|
0x01, 0x05, 0x01, 0xff, 0x01, 0xfa, 0x09, 0x00, 0x01, 0x7f, 0x01, 0xff,
|
||||||
|
0x01, 0x30, 0x04, 0x00, 0x01, 0x09, 0x01, 0xff, 0x01, 0xfe, 0x09, 0x00,
|
||||||
|
0x01, 0x7f, 0x01, 0xff, 0x01, 0x30, 0x04, 0x00, 0x01, 0x0f, 0x02, 0xff,
|
||||||
|
0x01, 0x50, 0x08, 0x00, 0x01, 0x6f, 0x01, 0xff, 0x01, 0x60, 0x04, 0x00,
|
||||||
|
0x01, 0x8f, 0x02, 0xff, 0x01, 0xe1, 0x08, 0x00, 0x01, 0x3f, 0x01, 0xff,
|
||||||
|
0x01, 0xd0, 0x03, 0x00, 0x01, 0x06, 0x01, 0xff, 0x01, 0xfe, 0x01, 0xff,
|
||||||
|
0x01, 0xfc, 0x01, 0x10, 0x05, 0x00, 0x01, 0x45, 0x01, 0x00, 0x01, 0x0d,
|
||||||
|
0x01, 0xff, 0x01, 0xfc, 0x01, 0x20, 0x01, 0x00, 0x01, 0x01, 0x01, 0x9f,
|
||||||
|
0x01, 0xff, 0x01, 0xa2, 0x02, 0xff, 0x01, 0xe6, 0x01, 0x10, 0x02, 0x00,
|
||||||
|
0x01, 0x02, 0x01, 0x8d, 0x01, 0xf8, 0x01, 0x00, 0x01, 0x05, 0x02, 0xff,
|
||||||
|
0x01, 0xfd, 0x01, 0xab, 0x01, 0xcf, 0x01, 0xff, 0x01, 0xfc, 0x01, 0x00,
|
||||||
|
0x01, 0x3f, 0x02, 0xff, 0x01, 0xfd, 0x01, 0xba, 0x01, 0xbc, 0x02, 0xff,
|
||||||
|
0x01, 0xf8, 0x02, 0x00, 0x01, 0x7f, 0x05, 0xff, 0x01, 0xa0, 0x01, 0x00,
|
||||||
|
0x01, 0x02, 0x01, 0xcf, 0x06, 0xff, 0x01, 0xf7, 0x02, 0x00, 0x01, 0x03,
|
||||||
|
0x01, 0xbf, 0x03, 0xff, 0x01, 0xb4, 0x03, 0x00, 0x01, 0x05, 0x01, 0xbf,
|
||||||
|
0x04, 0xff, 0x01, 0xb7, 0x01, 0x10, 0x03, 0x00, 0x01, 0x01, 0x01, 0x46,
|
||||||
|
0x01, 0x76, 0x01, 0x41, 0x06, 0x00, 0x01, 0x35, 0x01, 0x67, 0x01, 0x64,
|
||||||
|
0x01, 0x20, 0xff, 0x00, 0x48, 0x00, 0x01, 0x34, 0x03, 0x44, 0x01, 0x43,
|
||||||
|
0x01, 0x21, 0x0d, 0x00, 0x01, 0xbf, 0x05, 0xff, 0x01, 0xfe, 0x01, 0xb8,
|
||||||
|
0x01, 0x40, 0x0a, 0x00, 0x01, 0xbf, 0x07, 0xff, 0x01, 0xfe, 0x01, 0x81,
|
||||||
|
0x09, 0x00, 0x01, 0xbf, 0x08, 0xff, 0x01, 0xfe, 0x01, 0x60, 0x08, 0x00,
|
||||||
|
0x01, 0xbf, 0x01, 0xff, 0x01, 0x61, 0x02, 0x11, 0x01, 0x23, 0x01, 0x58,
|
||||||
|
0x01, 0xcf, 0x02, 0xff, 0x01, 0xf9, 0x08, 0x00, 0x01, 0xbf, 0x01, 0xff,
|
||||||
|
0x01, 0x50, 0x04, 0x00, 0x01, 0x02, 0x01, 0x9f, 0x02, 0xff, 0x01, 0x80,
|
||||||
|
0x07, 0x00, 0x01, 0xbf, 0x01, 0xff, 0x01, 0x50, 0x05, 0x00, 0x01, 0x04,
|
||||||
|
0x01, 0xef, 0x01, 0xff, 0x01, 0xf4, 0x07, 0x00, 0x01, 0xbf, 0x01, 0xff,
|
||||||
|
0x01, 0x50, 0x06, 0x00, 0x01, 0x2f, 0x01, 0xff, 0x01, 0xfd, 0x07, 0x00,
|
||||||
|
0x01, 0xbf, 0x01, 0xff, 0x01, 0x50, 0x06, 0x00, 0x01, 0x06, 0x02, 0xff,
|
||||||
|
0x01, 0x50, 0x06, 0x00, 0x01, 0xbf, 0x01, 0xff, 0x01, 0x50, 0x07, 0x00,
|
||||||
|
0x01, 0xef, 0x01, 0xff, 0x01, 0xb0, 0x06, 0x00, 0x01, 0xbf, 0x01, 0xff,
|
||||||
|
0x01, 0x50, 0x07, 0x00, 0x01, 0x7f, 0x01, 0xff, 0x01, 0xf0, 0x06, 0x00,
|
||||||
|
0x01, 0xbf, 0x01, 0xff, 0x01, 0x50, 0x07, 0x00, 0x01, 0x3f, 0x01, 0xff,
|
||||||
|
0x01, 0xf3, 0x06, 0x00, 0x01, 0xbf, 0x01, 0xff, 0x01, 0x50, 0x07, 0x00,
|
||||||
|
0x01, 0x0f, 0x01, 0xff, 0x01, 0xf5, 0x04, 0x00, 0x01, 0x23, 0x01, 0x33,
|
||||||
|
0x01, 0xcf, 0x01, 0xff, 0x01, 0x73, 0x02, 0x33, 0x01, 0x30, 0x04, 0x00,
|
||||||
|
0x01, 0x0d, 0x01, 0xff, 0x01, 0xf6, 0x04, 0x00, 0x01, 0xcf, 0x06, 0xff,
|
||||||
|
0x01, 0xf2, 0x04, 0x00, 0x01, 0x0c, 0x01, 0xff, 0x01, 0xf7, 0x04, 0x00,
|
||||||
|
0x01, 0xcf, 0x06, 0xff, 0x01, 0xf2, 0x04, 0x00, 0x01, 0x0b, 0x01, 0xff,
|
||||||
|
0x01, 0xf9, 0x04, 0x00, 0x01, 0x9b, 0x01, 0xbb, 0x01, 0xef, 0x01, 0xff,
|
||||||
|
0x01, 0xdb, 0x02, 0xbb, 0x01, 0xb1, 0x04, 0x00, 0x01, 0x0c, 0x01, 0xff,
|
||||||
|
0x01, 0xf8, 0x06, 0x00, 0x01, 0xbf, 0x01, 0xff, 0x01, 0x50, 0x07, 0x00,
|
||||||
|
0x01, 0x0d, 0x01, 0xff, 0x01, 0xf7, 0x06, 0x00, 0x01, 0xbf, 0x01, 0xff,
|
||||||
|
0x01, 0x50, 0x07, 0x00, 0x01, 0x0e, 0x01, 0xff, 0x01, 0xf6, 0x06, 0x00,
|
||||||
|
0x01, 0xbf, 0x01, 0xff, 0x01, 0x50, 0x07, 0x00, 0x01, 0x1f, 0x01, 0xff,
|
||||||
|
0x01, 0xf4, 0x06, 0x00, 0x01, 0xbf, 0x01, 0xff, 0x01, 0x50, 0x07, 0x00,
|
||||||
|
0x01, 0x5f, 0x01, 0xff, 0x01, 0xf1, 0x06, 0x00, 0x01, 0xbf, 0x01, 0xff,
|
||||||
|
0x01, 0x50, 0x07, 0x00, 0x01, 0xaf, 0x01, 0xff, 0x01, 0xd0, 0x06, 0x00,
|
||||||
|
0x01, 0xbf, 0x01, 0xff, 0x01, 0x50, 0x06, 0x00, 0x01, 0x01, 0x02, 0xff,
|
||||||
|
0x01, 0x80, 0x06, 0x00, 0x01, 0xbf, 0x01, 0xff, 0x01, 0x50, 0x06, 0x00,
|
||||||
|
0x01, 0x0b, 0x02, 0xff, 0x01, 0x20, 0x06, 0x00, 0x01, 0xbf, 0x01, 0xff,
|
||||||
|
0x01, 0x50, 0x06, 0x00, 0x01, 0x8f, 0x01, 0xff, 0x01, 0xf9, 0x07, 0x00,
|
||||||
|
0x01, 0xbf, 0x01, 0xff, 0x01, 0x50, 0x05, 0x00, 0x01, 0x1a, 0x02, 0xff,
|
||||||
|
0x01, 0xe1, 0x07, 0x00, 0x01, 0xbf, 0x01, 0xff, 0x01, 0x50, 0x04, 0x00,
|
||||||
|
0x01, 0x29, 0x03, 0xff, 0x01, 0x30, 0x07, 0x00, 0x01, 0xbf, 0x01, 0xff,
|
||||||
|
0x01, 0xa7, 0x01, 0x77, 0x01, 0x78, 0x01, 0x9a, 0x01, 0xbf, 0x03, 0xff,
|
||||||
|
0x01, 0xe3, 0x08, 0x00, 0x01, 0xbf, 0x08, 0xff, 0x01, 0xf9, 0x01, 0x10,
|
||||||
|
0x08, 0x00, 0x01, 0xbf, 0x07, 0xff, 0x01, 0xd8, 0x01, 0x10, 0x09, 0x00,
|
||||||
|
0x01, 0xad, 0x03, 0xdd, 0x01, 0xdc, 0x01, 0xbb, 0x01, 0xa7, 0x01, 0x41,
|
||||||
|
0xff, 0x00, 0x50, 0x00, 0x01, 0x38, 0x01, 0x88, 0x01, 0x81, 0x10, 0x00,
|
||||||
|
0x01, 0x0b, 0x01, 0xff, 0x01, 0xfc, 0x03, 0x00, 0x01, 0x5a, 0x01, 0x40,
|
||||||
|
0x0c, 0x00, 0x01, 0xdf, 0x01, 0xff, 0x01, 0xb0, 0x01, 0x04, 0x01, 0xaf,
|
||||||
|
0x01, 0xff, 0x01, 0xa0, 0x0c, 0x00, 0x01, 0x1e, 0x01, 0xff, 0x01, 0xfc,
|
||||||
|
0x02, 0xff, 0x01, 0xd8, 0x01, 0x20, 0x0c, 0x00, 0x01, 0x07, 0x02, 0xff,
|
||||||
|
0x01, 0xfd, 0x01, 0x82, 0x0d, 0x00, 0x01, 0x5a, 0x03, 0xff, 0x01, 0xf4,
|
||||||
|
0x0d, 0x00, 0x01, 0x7f, 0x01, 0xff, 0x01, 0xfd, 0x01, 0x87, 0x02, 0xff,
|
||||||
|
0x01, 0x30, 0x0c, 0x00, 0x01, 0x6f, 0x01, 0xe9, 0x01, 0x30, 0x01, 0x00,
|
||||||
|
0x01, 0x8f, 0x01, 0xff, 0x01, 0xe2, 0x0c, 0x00, 0x01, 0x03, 0x03, 0x00,
|
||||||
|
0x01, 0x0a, 0x01, 0xff, 0x01, 0xfd, 0x01, 0x10, 0x0e, 0x00, 0x01, 0x23,
|
||||||
|
0x01, 0x44, 0x01, 0xdf, 0x01, 0xff, 0x01, 0xb0, 0x0c, 0x00, 0x01, 0x02,
|
||||||
|
0x01, 0x9e, 0x04, 0xff, 0x01, 0xf7, 0x0c, 0x00, 0x01, 0x7f, 0x06, 0xff,
|
||||||
|
0x01, 0x30, 0x0a, 0x00, 0x01, 0x09, 0x02, 0xff, 0x01, 0xfe, 0x01, 0xcb,
|
||||||
|
0x01, 0xdf, 0x02, 0xff, 0x01, 0xd0, 0x0a, 0x00, 0x01, 0x6f, 0x01, 0xff,
|
||||||
|
0x01, 0xfb, 0x01, 0x30, 0x02, 0x00, 0x01, 0x4e, 0x01, 0xff, 0x01, 0xf5,
|
||||||
|
0x09, 0x00, 0x01, 0x02, 0x02, 0xff, 0x01, 0x70, 0x03, 0x00, 0x01, 0x05,
|
||||||
|
0x01, 0xff, 0x01, 0xfd, 0x09, 0x00, 0x01, 0x09, 0x01, 0xff, 0x01, 0xfa,
|
||||||
|
0x05, 0x00, 0x01, 0xef, 0x01, 0xff, 0x01, 0x20, 0x08, 0x00, 0x01, 0x0f,
|
||||||
|
0x01, 0xff, 0x01, 0xf1, 0x05, 0x00, 0x01, 0x8f, 0x01, 0xff, 0x01, 0x70,
|
||||||
|
0x08, 0x00, 0x01, 0x4f, 0x01, 0xff, 0x01, 0xa0, 0x05, 0x00, 0x01, 0x4f,
|
||||||
|
0x01, 0xff, 0x01, 0xb0, 0x08, 0x00, 0x01, 0x8f, 0x01, 0xff, 0x01, 0x70,
|
||||||
|
0x05, 0x00, 0x01, 0x1f, 0x01, 0xff, 0x01, 0xd0, 0x08, 0x00, 0x01, 0x9f,
|
||||||
|
0x01, 0xff, 0x01, 0x40, 0x05, 0x00, 0x01, 0x0f, 0x01, 0xff, 0x01, 0xf0,
|
||||||
|
0x08, 0x00, 0x01, 0xaf, 0x01, 0xff, 0x01, 0x30, 0x05, 0x00, 0x01, 0x0e,
|
||||||
|
0x01, 0xff, 0x01, 0xf0, 0x08, 0x00, 0x01, 0xaf, 0x01, 0xff, 0x01, 0x30,
|
||||||
|
0x05, 0x00, 0x01, 0x0f, 0x01, 0xff, 0x01, 0xf0, 0x08, 0x00, 0x01, 0x9f,
|
||||||
|
0x01, 0xff, 0x01, 0x40, 0x05, 0x00, 0x01, 0x0f, 0x01, 0xff, 0x01, 0xe0,
|
||||||
|
0x08, 0x00, 0x01, 0x8f, 0x01, 0xff, 0x01, 0x70, 0x05, 0x00, 0x01, 0x2f,
|
||||||
|
0x01, 0xff, 0x01, 0xd0, 0x08, 0x00, 0x01, 0x4f, 0x01, 0xff, 0x01, 0xa0,
|
||||||
|
0x05, 0x00, 0x01, 0x6f, 0x01, 0xff, 0x01, 0x90, 0x08, 0x00, 0x01, 0x0f,
|
||||||
|
0x01, 0xff, 0x01, 0xf1, 0x05, 0x00, 0x01, 0xcf, 0x01, 0xff, 0x01, 0x50,
|
||||||
|
0x08, 0x00, 0x01, 0x09, 0x01, 0xff, 0x01, 0xf9, 0x04, 0x00, 0x01, 0x05,
|
||||||
|
0x01, 0xff, 0x01, 0xfe, 0x09, 0x00, 0x01, 0x02, 0x02, 0xff, 0x01, 0x60,
|
||||||
|
0x03, 0x00, 0x01, 0x3e, 0x01, 0xff, 0x01, 0xf6, 0x0a, 0x00, 0x01, 0x7f,
|
||||||
|
0x01, 0xff, 0x01, 0xf9, 0x01, 0x20, 0x01, 0x00, 0x01, 0x07, 0x02, 0xff,
|
||||||
|
0x01, 0xb0, 0x0a, 0x00, 0x01, 0x09, 0x02, 0xff, 0x01, 0xfd, 0x01, 0xbd,
|
||||||
|
0x02, 0xff, 0x01, 0xfd, 0x01, 0x10, 0x0b, 0x00, 0x01, 0x7f, 0x05, 0xff,
|
||||||
|
0x01, 0xb0, 0x0c, 0x00, 0x01, 0x02, 0x01, 0xae, 0x03, 0xff, 0x01, 0xb4,
|
||||||
|
0x0f, 0x00, 0x01, 0x35, 0x01, 0x65, 0x01, 0x40, 0xff, 0x00, 0x51, 0x00,
|
||||||
|
0x02, 0x55, 0x11, 0x00, 0x02, 0xff, 0x01, 0x20, 0x10, 0x00, 0x02, 0xff,
|
||||||
|
0x01, 0x20, 0x10, 0x00, 0x02, 0xff, 0x01, 0x20, 0x10, 0x00, 0x02, 0xff,
|
||||||
|
0x01, 0x20, 0x10, 0x00, 0x02, 0xff, 0x01, 0x20, 0x10, 0x00, 0x05, 0xff,
|
||||||
|
0x01, 0xed, 0x01, 0xa7, 0x01, 0x10, 0x0b, 0x00, 0x07, 0xff, 0x01, 0xfa,
|
||||||
|
0x01, 0x10, 0x0a, 0x00, 0x08, 0xff, 0x01, 0xe2, 0x0a, 0x00, 0x02, 0xff,
|
||||||
|
0x01, 0x65, 0x01, 0x55, 0x01, 0x56, 0x01, 0x7a, 0x02, 0xff, 0x01, 0xfe,
|
||||||
|
0x01, 0x10, 0x09, 0x00, 0x02, 0xff, 0x01, 0x20, 0x03, 0x00, 0x01, 0x1b,
|
||||||
|
0x02, 0xff, 0x01, 0x80, 0x09, 0x00, 0x02, 0xff, 0x01, 0x20, 0x04, 0x00,
|
||||||
|
0x01, 0xcf, 0x01, 0xff, 0x01, 0xf0, 0x09, 0x00, 0x02, 0xff, 0x01, 0x20,
|
||||||
|
0x04, 0x00, 0x01, 0x4f, 0x01, 0xff, 0x01, 0xf3, 0x09, 0x00, 0x02, 0xff,
|
||||||
|
0x01, 0x20, 0x04, 0x00, 0x01, 0x0f, 0x01, 0xff, 0x01, 0xf6, 0x09, 0x00,
|
||||||
|
0x02, 0xff, 0x01, 0x20, 0x04, 0x00, 0x01, 0x0d, 0x01, 0xff, 0x01, 0xf7,
|
||||||
|
0x09, 0x00, 0x02, 0xff, 0x01, 0x20, 0x04, 0x00, 0x01, 0x0d, 0x01, 0xff,
|
||||||
|
0x01, 0xf7, 0x09, 0x00, 0x02, 0xff, 0x01, 0x20, 0x04, 0x00, 0x01, 0x0f,
|
||||||
|
0x01, 0xff, 0x01, 0xf6, 0x09, 0x00, 0x02, 0xff, 0x01, 0x20, 0x04, 0x00,
|
||||||
|
0x01, 0x4f, 0x01, 0xff, 0x01, 0xf3, 0x09, 0x00, 0x02, 0xff, 0x01, 0x20,
|
||||||
|
0x04, 0x00, 0x01, 0xcf, 0x01, 0xff, 0x01, 0xf0, 0x09, 0x00, 0x02, 0xff,
|
||||||
|
0x01, 0x20, 0x03, 0x00, 0x01, 0x1b, 0x02, 0xff, 0x01, 0x80, 0x09, 0x00,
|
||||||
|
0x02, 0xff, 0x01, 0x65, 0x02, 0x55, 0x01, 0x7a, 0x02, 0xff, 0x01, 0xfe,
|
||||||
|
0x01, 0x10, 0x09, 0x00, 0x08, 0xff, 0x01, 0xe2, 0x0a, 0x00, 0x07, 0xff,
|
||||||
|
0x01, 0xfa, 0x01, 0x10, 0x0a, 0x00, 0x05, 0xff, 0x01, 0xed, 0x01, 0xa7,
|
||||||
|
0x01, 0x10, 0x0b, 0x00, 0x02, 0xff, 0x01, 0x20, 0x10, 0x00, 0x02, 0xff,
|
||||||
|
0x01, 0x20, 0x10, 0x00, 0x02, 0xff, 0x01, 0x20, 0x10, 0x00, 0x02, 0xff,
|
||||||
|
0x01, 0x20, 0x10, 0x00, 0x02, 0xff, 0x01, 0x20, 0x10, 0x00, 0x02, 0xff,
|
||||||
|
0x01, 0x20, 0x10, 0x00, 0x02, 0xcc, 0x01, 0x10, 0xff, 0x00, 0x53, 0x00,
|
||||||
|
0x01, 0x02, 0x01, 0x99, 0x01, 0x94, 0x10, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xf7, 0x10, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf7, 0x10, 0x00,
|
||||||
|
0x01, 0x03, 0x01, 0xff, 0x01, 0xf7, 0x10, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xf7, 0x10, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf7, 0x10, 0x00,
|
||||||
|
0x01, 0x03, 0x01, 0xff, 0x01, 0xf7, 0x10, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xf7, 0x10, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf7, 0x02, 0x00,
|
||||||
|
0x01, 0x13, 0x01, 0x54, 0x01, 0x20, 0x0b, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xf7, 0x01, 0x00, 0x01, 0x5c, 0x02, 0xff, 0x01, 0xfd, 0x01, 0x70,
|
||||||
|
0x0a, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf7, 0x01, 0x0a, 0x04, 0xff,
|
||||||
|
0x01, 0xfd, 0x01, 0x20, 0x09, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf7,
|
||||||
|
0x01, 0xaf, 0x01, 0xff, 0x01, 0xec, 0x01, 0xdf, 0x02, 0xff, 0x01, 0xe1,
|
||||||
|
0x09, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xfd, 0x01, 0xff, 0x01, 0xc3,
|
||||||
|
0x02, 0x00, 0x01, 0x6f, 0x01, 0xff, 0x01, 0xfc, 0x09, 0x00, 0x01, 0x03,
|
||||||
|
0x02, 0xff, 0x01, 0xfa, 0x03, 0x00, 0x01, 0x02, 0x01, 0xef, 0x01, 0xff,
|
||||||
|
0x01, 0x60, 0x08, 0x00, 0x01, 0x03, 0x02, 0xff, 0x01, 0xe0, 0x04, 0x00,
|
||||||
|
0x01, 0x5f, 0x01, 0xff, 0x01, 0xd0, 0x08, 0x00, 0x01, 0x03, 0x02, 0xff,
|
||||||
|
0x01, 0x60, 0x04, 0x00, 0x01, 0x0c, 0x01, 0xff, 0x01, 0xf3, 0x08, 0x00,
|
||||||
|
0x01, 0x03, 0x02, 0xff, 0x05, 0x00, 0x01, 0x06, 0x01, 0xff, 0x01, 0xf7,
|
||||||
|
0x08, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xfc, 0x05, 0x00, 0x01, 0x02,
|
||||||
|
0x01, 0xff, 0x01, 0xfb, 0x08, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf9,
|
||||||
|
0x06, 0x00, 0x01, 0xff, 0x01, 0xfd, 0x08, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xf8, 0x06, 0x00, 0x01, 0xef, 0x01, 0xfe, 0x08, 0x00, 0x01, 0x03,
|
||||||
|
0x01, 0xff, 0x01, 0xf8, 0x06, 0x00, 0x01, 0xef, 0x01, 0xff, 0x08, 0x00,
|
||||||
|
0x01, 0x03, 0x01, 0xff, 0x01, 0xf8, 0x06, 0x00, 0x01, 0xef, 0x01, 0xfe,
|
||||||
|
0x08, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf9, 0x06, 0x00, 0x01, 0xff,
|
||||||
|
0x01, 0xfd, 0x08, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xfc, 0x05, 0x00,
|
||||||
|
0x01, 0x02, 0x01, 0xff, 0x01, 0xfb, 0x08, 0x00, 0x01, 0x03, 0x02, 0xff,
|
||||||
|
0x05, 0x00, 0x01, 0x06, 0x01, 0xff, 0x01, 0xf8, 0x08, 0x00, 0x01, 0x03,
|
||||||
|
0x02, 0xff, 0x01, 0x60, 0x04, 0x00, 0x01, 0x0c, 0x01, 0xff, 0x01, 0xf3,
|
||||||
|
0x08, 0x00, 0x01, 0x03, 0x02, 0xff, 0x01, 0xd0, 0x04, 0x00, 0x01, 0x5f,
|
||||||
|
0x01, 0xff, 0x01, 0xd0, 0x08, 0x00, 0x01, 0x03, 0x02, 0xff, 0x01, 0xfa,
|
||||||
|
0x03, 0x00, 0x01, 0x02, 0x01, 0xef, 0x01, 0xff, 0x01, 0x60, 0x08, 0x00,
|
||||||
|
0x01, 0x03, 0x01, 0xff, 0x01, 0xfd, 0x01, 0xff, 0x01, 0xc3, 0x02, 0x00,
|
||||||
|
0x01, 0x6e, 0x01, 0xff, 0x01, 0xfc, 0x09, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xf7, 0x01, 0xaf, 0x01, 0xff, 0x01, 0xec, 0x01, 0xcf, 0x02, 0xff,
|
||||||
|
0x01, 0xe2, 0x09, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf7, 0x01, 0x0b,
|
||||||
|
0x04, 0xff, 0x01, 0xfd, 0x01, 0x20, 0x09, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xf7, 0x01, 0x00, 0x01, 0x6c, 0x02, 0xff, 0x01, 0xfe, 0x01, 0x70,
|
||||||
|
0x0a, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf7, 0x02, 0x00, 0x01, 0x23,
|
||||||
|
0x01, 0x54, 0x01, 0x20, 0x0b, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf7,
|
||||||
|
0x10, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf7, 0x10, 0x00, 0x01, 0x03,
|
||||||
|
0x01, 0xff, 0x01, 0xf7, 0x10, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf7,
|
||||||
|
0x10, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf7, 0x10, 0x00, 0x01, 0x03,
|
||||||
|
0x01, 0xff, 0x01, 0xf7, 0x10, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf7,
|
||||||
|
0x10, 0x00, 0x01, 0x01, 0x01, 0x66, 0x01, 0x63, 0xff, 0x00, 0x6c, 0x00,
|
||||||
|
0x01, 0x30, 0x03, 0x00, 0x01, 0x02, 0x0d, 0x00, 0x01, 0x08, 0x01, 0xa0,
|
||||||
|
0x02, 0x00, 0x01, 0x01, 0x01, 0xc6, 0x0d, 0x00, 0x01, 0xaf, 0x01, 0xa0,
|
||||||
|
0x02, 0x00, 0x01, 0x1d, 0x01, 0xf6, 0x0c, 0x00, 0x01, 0x1c, 0x01, 0xff,
|
||||||
|
0x01, 0xa0, 0x01, 0x00, 0x01, 0x02, 0x01, 0xef, 0x01, 0xf6, 0x0b, 0x00,
|
||||||
|
0x01, 0x01, 0x01, 0xdf, 0x01, 0xff, 0x01, 0x50, 0x01, 0x00, 0x01, 0x3e,
|
||||||
|
0x01, 0xff, 0x01, 0xe2, 0x0b, 0x00, 0x01, 0x2e, 0x01, 0xff, 0x01, 0xf4,
|
||||||
|
0x01, 0x00, 0x01, 0x05, 0x01, 0xff, 0x01, 0xfd, 0x01, 0x20, 0x0a, 0x00,
|
||||||
|
0x01, 0x04, 0x01, 0xef, 0x01, 0xfe, 0x01, 0x30, 0x01, 0x00, 0x01, 0x6f,
|
||||||
|
0x01, 0xff, 0x01, 0xd1, 0x0b, 0x00, 0x01, 0x5f, 0x01, 0xff, 0x01, 0xd2,
|
||||||
|
0x01, 0x00, 0x01, 0x08, 0x01, 0xff, 0x01, 0xfb, 0x0b, 0x00, 0x01, 0x06,
|
||||||
|
0x01, 0xff, 0x01, 0xfc, 0x01, 0x10, 0x01, 0x00, 0x01, 0xaf, 0x01, 0xff,
|
||||||
|
0x01, 0xa0, 0x0b, 0x00, 0x01, 0x0c, 0x01, 0xff, 0x01, 0xd0, 0x02, 0x00,
|
||||||
|
0x01, 0xff, 0x01, 0xfa, 0x0c, 0x00, 0x01, 0x0a, 0x01, 0xff, 0x01, 0xf8,
|
||||||
|
0x02, 0x00, 0x01, 0xef, 0x01, 0xff, 0x01, 0x50, 0x0c, 0x00, 0x01, 0xaf,
|
||||||
|
0x01, 0xff, 0x01, 0xa0, 0x01, 0x00, 0x01, 0x1c, 0x01, 0xff, 0x01, 0xf6,
|
||||||
|
0x0c, 0x00, 0x01, 0x08, 0x01, 0xff, 0x01, 0xfb, 0x02, 0x00, 0x01, 0xbf,
|
||||||
|
0x01, 0xff, 0x01, 0x90, 0x0c, 0x00, 0x01, 0x6f, 0x01, 0xff, 0x01, 0xd1,
|
||||||
|
0x01, 0x00, 0x01, 0x0a, 0x01, 0xff, 0x01, 0xfa, 0x0c, 0x00, 0x01, 0x05,
|
||||||
|
0x01, 0xff, 0x01, 0xfd, 0x01, 0x20, 0x01, 0x00, 0x01, 0x8f, 0x01, 0xff,
|
||||||
|
0x01, 0xb0, 0x0c, 0x00, 0x01, 0x4f, 0x01, 0xff, 0x01, 0xa0, 0x01, 0x00,
|
||||||
|
0x01, 0x07, 0x01, 0xff, 0x01, 0xf6, 0x0c, 0x00, 0x01, 0x02, 0x01, 0xef,
|
||||||
|
0x01, 0xa0, 0x02, 0x00, 0x01, 0x5f, 0x01, 0xf6, 0x0d, 0x00, 0x01, 0x1d,
|
||||||
|
0x01, 0xa0, 0x02, 0x00, 0x01, 0x04, 0x01, 0xe6, 0x0d, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0x60, 0x03, 0x00, 0x01, 0x24, 0xff, 0x00, 0xff, 0x00, 0x46, 0x00,
|
||||||
|
0x01, 0x20, 0x03, 0x00, 0x01, 0x20, 0x0d, 0x00, 0x01, 0x01, 0x01, 0xe3,
|
||||||
|
0x03, 0x00, 0x01, 0x5d, 0x01, 0x10, 0x0c, 0x00, 0x01, 0x01, 0x01, 0xff,
|
||||||
|
0x01, 0x50, 0x02, 0x00, 0x01, 0x5f, 0x01, 0xe2, 0x0c, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xff, 0x01, 0xf6, 0x02, 0x00, 0x01, 0x5f, 0x01, 0xfe, 0x01, 0x30,
|
||||||
|
0x0c, 0x00, 0x01, 0xbf, 0x01, 0xff, 0x01, 0x80, 0x01, 0x00, 0x01, 0x2e,
|
||||||
|
0x01, 0xff, 0x01, 0xf5, 0x0c, 0x00, 0x01, 0x0a, 0x01, 0xff, 0x01, 0xfa,
|
||||||
|
0x01, 0x00, 0x01, 0x01, 0x01, 0xcf, 0x01, 0xff, 0x01, 0x60, 0x0c, 0x00,
|
||||||
|
0x01, 0x8f, 0x01, 0xff, 0x01, 0xb0, 0x01, 0x00, 0x01, 0x0b, 0x01, 0xff,
|
||||||
|
0x01, 0xf9, 0x0c, 0x00, 0x01, 0x06, 0x01, 0xff, 0x01, 0xfc, 0x01, 0x10,
|
||||||
|
0x01, 0x00, 0x01, 0xaf, 0x01, 0xff, 0x01, 0xa0, 0x0c, 0x00, 0x01, 0x5f,
|
||||||
|
0x01, 0xff, 0x01, 0xd1, 0x01, 0x00, 0x01, 0x08, 0x01, 0xff, 0x01, 0xfb,
|
||||||
|
0x0c, 0x00, 0x01, 0x05, 0x01, 0xff, 0x01, 0xf5, 0x02, 0x00, 0x01, 0x9f,
|
||||||
|
0x01, 0xff, 0x01, 0x10, 0x0b, 0x00, 0x01, 0x2d, 0x01, 0xff, 0x01, 0xf3,
|
||||||
|
0x01, 0x00, 0x01, 0x04, 0x01, 0xff, 0x01, 0xfe, 0x01, 0x10, 0x0a, 0x00,
|
||||||
|
0x01, 0x03, 0x01, 0xef, 0x01, 0xff, 0x01, 0x40, 0x01, 0x00, 0x01, 0x5f,
|
||||||
|
0x01, 0xff, 0x01, 0xd2, 0x0b, 0x00, 0x01, 0x4f, 0x01, 0xff, 0x01, 0xe3,
|
||||||
|
0x01, 0x00, 0x01, 0x06, 0x01, 0xff, 0x01, 0xfc, 0x01, 0x10, 0x0a, 0x00,
|
||||||
|
0x01, 0x05, 0x01, 0xff, 0x01, 0xfd, 0x01, 0x10, 0x01, 0x00, 0x01, 0x9f,
|
||||||
|
0x01, 0xff, 0x01, 0xb0, 0x0b, 0x00, 0x01, 0x6f, 0x01, 0xff, 0x01, 0xc1,
|
||||||
|
0x01, 0x00, 0x01, 0x0a, 0x01, 0xff, 0x01, 0xf9, 0x0b, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xff, 0x01, 0xfa, 0x02, 0x00, 0x01, 0x5f, 0x01, 0xff, 0x01, 0x70,
|
||||||
|
0x0b, 0x00, 0x01, 0x01, 0x01, 0xff, 0x01, 0x90, 0x02, 0x00, 0x01, 0x5f,
|
||||||
|
0x01, 0xf6, 0x0c, 0x00, 0x01, 0x01, 0x01, 0xf8, 0x03, 0x00, 0x01, 0x5f,
|
||||||
|
0x01, 0x40, 0x0c, 0x00, 0x01, 0x01, 0x01, 0x50, 0x03, 0x00, 0x01, 0x43,
|
||||||
|
0xff, 0x00, 0xff, 0x00, 0x38, 0x00, 0x01, 0xad, 0x01, 0xdd, 0x01, 0x40,
|
||||||
|
0x10, 0x00, 0x01, 0xcf, 0x01, 0xff, 0x01, 0x50, 0x10, 0x00, 0x01, 0xcf,
|
||||||
|
0x01, 0xff, 0x01, 0x50, 0x10, 0x00, 0x01, 0xcf, 0x01, 0xff, 0x01, 0x50,
|
||||||
|
0x10, 0x00, 0x01, 0xcf, 0x01, 0xff, 0x01, 0x50, 0x10, 0x00, 0x01, 0x34,
|
||||||
|
0x01, 0x44, 0x01, 0x10, 0x49, 0x00, 0x01, 0x02, 0x01, 0x22, 0x11, 0x00,
|
||||||
|
0x01, 0x6f, 0x01, 0xff, 0x11, 0x00, 0x01, 0x7f, 0x01, 0xff, 0x11, 0x00,
|
||||||
|
0x01, 0x7f, 0x01, 0xff, 0x01, 0x10, 0x10, 0x00, 0x01, 0x8f, 0x01, 0xff,
|
||||||
|
0x01, 0x20, 0x10, 0x00, 0x01, 0x9f, 0x01, 0xff, 0x01, 0x30, 0x10, 0x00,
|
||||||
|
0x01, 0xaf, 0x01, 0xff, 0x01, 0x30, 0x10, 0x00, 0x01, 0xbf, 0x01, 0xff,
|
||||||
|
0x01, 0x40, 0x10, 0x00, 0x01, 0xcf, 0x01, 0xff, 0x01, 0x50, 0x10, 0x00,
|
||||||
|
0x01, 0xcf, 0x01, 0xff, 0x01, 0x50, 0x10, 0x00, 0x01, 0xcf, 0x01, 0xff,
|
||||||
|
0x01, 0x50, 0x10, 0x00, 0x01, 0xcf, 0x01, 0xff, 0x01, 0x50, 0x10, 0x00,
|
||||||
|
0x01, 0xcf, 0x01, 0xff, 0x01, 0x50, 0x10, 0x00, 0x01, 0xcf, 0x01, 0xff,
|
||||||
|
0x01, 0x50, 0x10, 0x00, 0x01, 0xcf, 0x01, 0xff, 0x01, 0x50, 0x10, 0x00,
|
||||||
|
0x01, 0xcf, 0x01, 0xff, 0x01, 0x50, 0x10, 0x00, 0x01, 0xcf, 0x01, 0xff,
|
||||||
|
0x01, 0x50, 0x10, 0x00, 0x01, 0xcf, 0x01, 0xff, 0x01, 0x50, 0x10, 0x00,
|
||||||
|
0x01, 0xcf, 0x01, 0xff, 0x01, 0x50, 0x10, 0x00, 0x01, 0xcf, 0x01, 0xff,
|
||||||
|
0x01, 0x50, 0x10, 0x00, 0x01, 0xcf, 0x01, 0xff, 0x01, 0x50, 0x10, 0x00,
|
||||||
|
0x01, 0x34, 0x01, 0x44, 0x01, 0x10, 0xff, 0x00, 0x69, 0x00, 0x02, 0xdd,
|
||||||
|
0x11, 0x00, 0x02, 0xff, 0x11, 0x00, 0x02, 0xff, 0x11, 0x00, 0x02, 0xff,
|
||||||
|
0x11, 0x00, 0x02, 0xff, 0x11, 0x00, 0x02, 0x44, 0x37, 0x00, 0x01, 0xbc,
|
||||||
|
0x01, 0xcb, 0x11, 0x00, 0x01, 0xef, 0x01, 0xfe, 0x11, 0x00, 0x01, 0xef,
|
||||||
|
0x01, 0xfe, 0x11, 0x00, 0x01, 0xef, 0x01, 0xfe, 0x11, 0x00, 0x01, 0xff,
|
||||||
|
0x01, 0xfd, 0x10, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xfb, 0x10, 0x00,
|
||||||
|
0x01, 0x0c, 0x01, 0xff, 0x01, 0xf6, 0x10, 0x00, 0x01, 0xaf, 0x01, 0xff,
|
||||||
|
0x01, 0xd0, 0x0f, 0x00, 0x01, 0x0a, 0x02, 0xff, 0x01, 0x30, 0x0f, 0x00,
|
||||||
|
0x01, 0xaf, 0x01, 0xff, 0x01, 0xf4, 0x0f, 0x00, 0x01, 0x09, 0x02, 0xff,
|
||||||
|
0x01, 0x40, 0x0f, 0x00, 0x01, 0x7f, 0x01, 0xff, 0x01, 0xf4, 0x0f, 0x00,
|
||||||
|
0x01, 0x03, 0x02, 0xff, 0x01, 0x40, 0x0f, 0x00, 0x01, 0x0a, 0x01, 0xff,
|
||||||
|
0x01, 0xf8, 0x10, 0x00, 0x01, 0x0f, 0x01, 0xff, 0x01, 0xf2, 0x10, 0x00,
|
||||||
|
0x01, 0x1f, 0x01, 0xff, 0x01, 0xf0, 0x10, 0x00, 0x01, 0x0f, 0x01, 0xff,
|
||||||
|
0x01, 0xf2, 0x10, 0x00, 0x01, 0x0e, 0x01, 0xff, 0x01, 0xf8, 0x04, 0x00,
|
||||||
|
0x01, 0x05, 0x01, 0xd0, 0x0a, 0x00, 0x01, 0x08, 0x02, 0xff, 0x01, 0x70,
|
||||||
|
0x02, 0x00, 0x01, 0x05, 0x01, 0xcf, 0x01, 0xf0, 0x0a, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xef, 0x01, 0xff, 0x01, 0xfe, 0x01, 0x98, 0x01, 0x8b, 0x02, 0xff,
|
||||||
|
0x01, 0xf0, 0x0b, 0x00, 0x01, 0x3f, 0x06, 0xff, 0x01, 0xc0, 0x0b, 0x00,
|
||||||
|
0x01, 0x02, 0x01, 0xcf, 0x04, 0xff, 0x01, 0xc5, 0x0d, 0x00, 0x01, 0x03,
|
||||||
|
0x01, 0x8b, 0x01, 0xcc, 0x01, 0xb9, 0x01, 0x62, 0xe2, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0x32, 0x11, 0x00, 0x01, 0x05, 0x01, 0xfb, 0x11, 0x00, 0x01, 0x05,
|
||||||
|
0x01, 0xfb, 0x11, 0x00, 0x01, 0x05, 0x01, 0xfb, 0x11, 0x00, 0x01, 0x05,
|
||||||
|
0x01, 0xfc, 0x11, 0x00, 0x01, 0x05, 0x01, 0xfc, 0x11, 0x00, 0x01, 0x39,
|
||||||
|
0x01, 0xfd, 0x01, 0x42, 0x0e, 0x00, 0x01, 0x05, 0x01, 0xbf, 0x03, 0xff,
|
||||||
|
0x01, 0xfb, 0x01, 0x50, 0x0b, 0x00, 0x01, 0x03, 0x01, 0xcf, 0x05, 0xff,
|
||||||
|
0x01, 0xf6, 0x0b, 0x00, 0x01, 0x4f, 0x02, 0xff, 0x02, 0xfe, 0x01, 0xce,
|
||||||
|
0x01, 0xff, 0x01, 0xf6, 0x0a, 0x00, 0x01, 0x02, 0x02, 0xff, 0x01, 0xe6,
|
||||||
|
0x01, 0x05, 0x01, 0xfc, 0x01, 0x00, 0x01, 0x38, 0x01, 0xe6, 0x0a, 0x00,
|
||||||
|
0x01, 0x0c, 0x01, 0xff, 0x01, 0xfd, 0x01, 0x10, 0x01, 0x05, 0x01, 0xfc,
|
||||||
|
0x02, 0x00, 0x01, 0x02, 0x0a, 0x00, 0x01, 0x5f, 0x01, 0xff, 0x01, 0xe1,
|
||||||
|
0x01, 0x00, 0x01, 0x05, 0x01, 0xfc, 0x0d, 0x00, 0x01, 0xcf, 0x01, 0xff,
|
||||||
|
0x01, 0x60, 0x01, 0x00, 0x01, 0x05, 0x01, 0xfc, 0x0d, 0x00, 0x02, 0xff,
|
||||||
|
0x02, 0x00, 0x01, 0x05, 0x01, 0xfc, 0x0c, 0x00, 0x01, 0x04, 0x01, 0xff,
|
||||||
|
0x01, 0xfb, 0x02, 0x00, 0x01, 0x05, 0x01, 0xfc, 0x0c, 0x00, 0x01, 0x06,
|
||||||
|
0x01, 0xff, 0x01, 0xf8, 0x02, 0x00, 0x01, 0x05, 0x01, 0xfc, 0x0c, 0x00,
|
||||||
|
0x01, 0x07, 0x01, 0xff, 0x01, 0xf7, 0x02, 0x00, 0x01, 0x05, 0x01, 0xfb,
|
||||||
|
0x0c, 0x00, 0x01, 0x08, 0x01, 0xff, 0x01, 0xf6, 0x02, 0x00, 0x01, 0x05,
|
||||||
|
0x01, 0xfc, 0x0c, 0x00, 0x01, 0x07, 0x01, 0xff, 0x01, 0xf7, 0x02, 0x00,
|
||||||
|
0x01, 0x05, 0x01, 0xfb, 0x0c, 0x00, 0x01, 0x06, 0x01, 0xff, 0x01, 0xf9,
|
||||||
|
0x02, 0x00, 0x01, 0x05, 0x01, 0xfb, 0x0c, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xfc, 0x02, 0x00, 0x01, 0x05, 0x01, 0xfb, 0x0d, 0x00, 0x02, 0xff,
|
||||||
|
0x01, 0x10, 0x01, 0x00, 0x01, 0x05, 0x01, 0xfb, 0x0d, 0x00, 0x01, 0xaf,
|
||||||
|
0x01, 0xff, 0x01, 0x80, 0x01, 0x00, 0x01, 0x05, 0x01, 0xfb, 0x0d, 0x00,
|
||||||
|
0x01, 0x4f, 0x01, 0xff, 0x01, 0xf3, 0x01, 0x00, 0x01, 0x05, 0x01, 0xfb,
|
||||||
|
0x0d, 0x00, 0x01, 0x0b, 0x01, 0xff, 0x01, 0xfe, 0x01, 0x30, 0x01, 0x05,
|
||||||
|
0x01, 0xfb, 0x02, 0x00, 0x01, 0x33, 0x0a, 0x00, 0x01, 0x01, 0x01, 0xef,
|
||||||
|
0x01, 0xff, 0x01, 0xf9, 0x01, 0x35, 0x01, 0xfb, 0x01, 0x02, 0x01, 0x6c,
|
||||||
|
0x01, 0xf6, 0x0b, 0x00, 0x01, 0x2d, 0x06, 0xff, 0x01, 0xf6, 0x0b, 0x00,
|
||||||
|
0x01, 0x01, 0x01, 0x9f, 0x05, 0xff, 0x01, 0xf5, 0x0c, 0x00, 0x01, 0x02,
|
||||||
|
0x01, 0x8d, 0x03, 0xff, 0x01, 0xc7, 0x01, 0x20, 0x0e, 0x00, 0x01, 0x06,
|
||||||
|
0x01, 0xfc, 0x01, 0x20, 0x10, 0x00, 0x01, 0x05, 0x01, 0xfb, 0x11, 0x00,
|
||||||
|
0x01, 0x05, 0x01, 0xfb, 0x11, 0x00, 0x01, 0x05, 0x01, 0xfb, 0x11, 0x00,
|
||||||
|
0x01, 0x05, 0x01, 0xfb, 0x11, 0x00, 0x01, 0x05, 0x01, 0xfb, 0xf5, 0x00,
|
||||||
|
0x01, 0x6b, 0x01, 0xdf, 0x01, 0xfd, 0x01, 0xc9, 0x01, 0x40, 0x0d, 0x00,
|
||||||
|
0x01, 0x6e, 0x05, 0xff, 0x01, 0x30, 0x0b, 0x00, 0x01, 0x07, 0x06, 0xff,
|
||||||
|
0x01, 0x30, 0x0b, 0x00, 0x01, 0x3f, 0x01, 0xff, 0x01, 0xfe, 0x01, 0x85,
|
||||||
|
0x01, 0x34, 0x01, 0x7b, 0x01, 0xff, 0x01, 0x30, 0x0b, 0x00, 0x01, 0xaf,
|
||||||
|
0x01, 0xff, 0x01, 0xc1, 0x03, 0x00, 0x01, 0x18, 0x01, 0x30, 0x0a, 0x00,
|
||||||
|
0x01, 0x01, 0x02, 0xff, 0x01, 0x30, 0x0f, 0x00, 0x01, 0x04, 0x01, 0xff,
|
||||||
|
0x01, 0xfd, 0x10, 0x00, 0x01, 0x07, 0x01, 0xff, 0x01, 0xfa, 0x10, 0x00,
|
||||||
|
0x01, 0x08, 0x01, 0xff, 0x01, 0xf8, 0x10, 0x00, 0x01, 0x09, 0x01, 0xff,
|
||||||
|
0x01, 0xf7, 0x10, 0x00, 0x01, 0x0a, 0x01, 0xff, 0x01, 0xf6, 0x10, 0x00,
|
||||||
|
0x01, 0x0a, 0x01, 0xff, 0x01, 0xf6, 0x10, 0x00, 0x01, 0x0a, 0x01, 0xff,
|
||||||
|
0x01, 0xf6, 0x10, 0x00, 0x01, 0x0a, 0x01, 0xff, 0x01, 0xf6, 0x10, 0x00,
|
||||||
|
0x01, 0x0a, 0x01, 0xff, 0x01, 0xf6, 0x0e, 0x00, 0x01, 0x0a, 0x07, 0xff,
|
||||||
|
0x01, 0xf4, 0x0a, 0x00, 0x01, 0x0a, 0x07, 0xff, 0x01, 0xf4, 0x0a, 0x00,
|
||||||
|
0x01, 0x08, 0x01, 0xdd, 0x01, 0xdf, 0x01, 0xff, 0x01, 0xfe, 0x03, 0xdd,
|
||||||
|
0x01, 0xd4, 0x0c, 0x00, 0x01, 0x0a, 0x01, 0xff, 0x01, 0xf6, 0x10, 0x00,
|
||||||
|
0x01, 0x0a, 0x01, 0xff, 0x01, 0xf6, 0x10, 0x00, 0x01, 0x0a, 0x01, 0xff,
|
||||||
|
0x01, 0xf6, 0x10, 0x00, 0x01, 0x0a, 0x01, 0xff, 0x01, 0xf6, 0x10, 0x00,
|
||||||
|
0x01, 0x0a, 0x01, 0xff, 0x01, 0xf6, 0x10, 0x00, 0x01, 0x0a, 0x01, 0xff,
|
||||||
|
0x01, 0xf6, 0x10, 0x00, 0x01, 0x0a, 0x01, 0xff, 0x01, 0xf6, 0x10, 0x00,
|
||||||
|
0x01, 0x0a, 0x01, 0xff, 0x01, 0xf6, 0x10, 0x00, 0x01, 0x0a, 0x01, 0xff,
|
||||||
|
0x01, 0xf6, 0x0e, 0x00, 0x01, 0x4b, 0x01, 0xbb, 0x01, 0xbe, 0x01, 0xff,
|
||||||
|
0x01, 0xfd, 0x05, 0xbb, 0x01, 0x70, 0x08, 0x00, 0x01, 0x6f, 0x09, 0xff,
|
||||||
|
0x01, 0xa0, 0x08, 0x00, 0x01, 0x6f, 0x09, 0xff, 0x01, 0xa0, 0x08, 0x00,
|
||||||
|
0x01, 0x4a, 0x09, 0xaa, 0x01, 0x60, 0xff, 0x00, 0xd2, 0x00, 0x01, 0x30,
|
||||||
|
0x07, 0x00, 0x01, 0x01, 0x01, 0x40, 0x08, 0x00, 0x01, 0x0b, 0x01, 0xf5,
|
||||||
|
0x07, 0x00, 0x01, 0x1d, 0x01, 0xf4, 0x08, 0x00, 0x01, 0xbf, 0x01, 0xff,
|
||||||
|
0x01, 0x40, 0x05, 0x00, 0x01, 0x01, 0x01, 0xdf, 0x01, 0xff, 0x01, 0x30,
|
||||||
|
0x07, 0x00, 0x01, 0x5f, 0x01, 0xff, 0x01, 0xf4, 0x01, 0x00, 0x01, 0x6b,
|
||||||
|
0x01, 0xdd, 0x01, 0xc8, 0x01, 0x20, 0x01, 0x1d, 0x01, 0xff, 0x01, 0xfa,
|
||||||
|
0x08, 0x00, 0x01, 0x05, 0x02, 0xff, 0x01, 0x8e, 0x03, 0xff, 0x01, 0xfa,
|
||||||
|
0x01, 0xdf, 0x01, 0xff, 0x01, 0xa0, 0x09, 0x00, 0x01, 0x5f, 0x07, 0xff,
|
||||||
|
0x01, 0xfa, 0x0a, 0x00, 0x01, 0x05, 0x02, 0xff, 0x01, 0xe9, 0x01, 0x55,
|
||||||
|
0x01, 0x7c, 0x02, 0xff, 0x01, 0xa0, 0x0a, 0x00, 0x01, 0x03, 0x01, 0xff,
|
||||||
|
0x01, 0xfb, 0x01, 0x10, 0x02, 0x00, 0x01, 0x6f, 0x01, 0xff, 0x01, 0xa0,
|
||||||
|
0x0a, 0x00, 0x01, 0x0b, 0x01, 0xff, 0x01, 0xc0, 0x03, 0x00, 0x01, 0x07,
|
||||||
|
0x01, 0xff, 0x01, 0xf2, 0x0a, 0x00, 0x01, 0x1f, 0x01, 0xff, 0x01, 0x30,
|
||||||
|
0x04, 0x00, 0x01, 0xdf, 0x01, 0xf7, 0x0a, 0x00, 0x01, 0x4f, 0x01, 0xfd,
|
||||||
|
0x05, 0x00, 0x01, 0x8f, 0x01, 0xfa, 0x0a, 0x00, 0x01, 0x6f, 0x01, 0xfc,
|
||||||
|
0x05, 0x00, 0x01, 0x6f, 0x01, 0xfc, 0x0a, 0x00, 0x01, 0x5f, 0x01, 0xfc,
|
||||||
|
0x05, 0x00, 0x01, 0x7f, 0x01, 0xfb, 0x0a, 0x00, 0x01, 0x3f, 0x01, 0xff,
|
||||||
|
0x01, 0x10, 0x04, 0x00, 0x01, 0xbf, 0x01, 0xf8, 0x0a, 0x00, 0x01, 0x0e,
|
||||||
|
0x01, 0xff, 0x01, 0x80, 0x03, 0x00, 0x01, 0x03, 0x01, 0xff, 0x01, 0xf3,
|
||||||
|
0x0a, 0x00, 0x01, 0x07, 0x01, 0xff, 0x01, 0xf5, 0x03, 0x00, 0x01, 0x1d,
|
||||||
|
0x01, 0xff, 0x01, 0xc0, 0x0a, 0x00, 0x01, 0x01, 0x02, 0xff, 0x01, 0x92,
|
||||||
|
0x01, 0x00, 0x01, 0x16, 0x01, 0xef, 0x01, 0xff, 0x01, 0x60, 0x0a, 0x00,
|
||||||
|
0x01, 0x1d, 0x03, 0xff, 0x01, 0xfe, 0x03, 0xff, 0x01, 0xf4, 0x09, 0x00,
|
||||||
|
0x01, 0x01, 0x01, 0xdf, 0x05, 0xff, 0x01, 0xfe, 0x02, 0xff, 0x01, 0x40,
|
||||||
|
0x08, 0x00, 0x01, 0x1d, 0x01, 0xff, 0x01, 0xfa, 0x01, 0x06, 0x01, 0xdf,
|
||||||
|
0x01, 0xff, 0x01, 0xfe, 0x01, 0x81, 0x01, 0x5f, 0x01, 0xff, 0x01, 0xf4,
|
||||||
|
0x08, 0x00, 0x01, 0xcf, 0x01, 0xff, 0x01, 0xa0, 0x01, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0x44, 0x01, 0x20, 0x01, 0x00, 0x01, 0x05, 0x02, 0xff, 0x01, 0x20,
|
||||||
|
0x07, 0x00, 0x01, 0x4f, 0x01, 0xfa, 0x07, 0x00, 0x01, 0x4f, 0x01, 0xf8,
|
||||||
|
0x08, 0x00, 0x01, 0x05, 0x01, 0xa0, 0x07, 0x00, 0x01, 0x05, 0x01, 0x80,
|
||||||
|
0xff, 0x00, 0x84, 0x00, 0x01, 0x01, 0x01, 0x88, 0x01, 0x85, 0x07, 0x00,
|
||||||
|
0x01, 0x38, 0x01, 0x88, 0x01, 0x40, 0x07, 0x00, 0x01, 0xcf, 0x01, 0xff,
|
||||||
|
0x01, 0x10, 0x06, 0x00, 0x01, 0xcf, 0x01, 0xff, 0x01, 0x10, 0x07, 0x00,
|
||||||
|
0x01, 0x3f, 0x01, 0xff, 0x01, 0x90, 0x05, 0x00, 0x01, 0x05, 0x01, 0xff,
|
||||||
|
0x01, 0xf8, 0x08, 0x00, 0x01, 0x0b, 0x01, 0xff, 0x01, 0xf2, 0x05, 0x00,
|
||||||
|
0x01, 0x0d, 0x01, 0xff, 0x01, 0xe0, 0x08, 0x00, 0x01, 0x02, 0x01, 0xff,
|
||||||
|
0x01, 0xfa, 0x05, 0x00, 0x01, 0x6f, 0x01, 0xff, 0x01, 0x60, 0x09, 0x00,
|
||||||
|
0x01, 0xaf, 0x01, 0xff, 0x01, 0x30, 0x04, 0x00, 0x01, 0xef, 0x01, 0xfd,
|
||||||
|
0x0a, 0x00, 0x01, 0x1f, 0x01, 0xff, 0x01, 0xc0, 0x03, 0x00, 0x01, 0x07,
|
||||||
|
0x01, 0xff, 0x01, 0xf5, 0x0a, 0x00, 0x01, 0x08, 0x01, 0xff, 0x01, 0xf4,
|
||||||
|
0x03, 0x00, 0x01, 0x1f, 0x01, 0xff, 0x01, 0xc0, 0x0a, 0x00, 0x01, 0x01,
|
||||||
|
0x01, 0xef, 0x01, 0xfd, 0x03, 0x00, 0x01, 0x9f, 0x01, 0xff, 0x01, 0x40,
|
||||||
|
0x0b, 0x00, 0x01, 0x7f, 0x01, 0xff, 0x01, 0x50, 0x01, 0x00, 0x01, 0x02,
|
||||||
|
0x01, 0xff, 0x01, 0xfb, 0x0c, 0x00, 0x01, 0x0e, 0x01, 0xff, 0x01, 0xe0,
|
||||||
|
0x01, 0x00, 0x01, 0x0a, 0x01, 0xff, 0x01, 0xf3, 0x0c, 0x00, 0x01, 0x06,
|
||||||
|
0x01, 0xff, 0x01, 0xf7, 0x01, 0x00, 0x01, 0x2f, 0x01, 0xff, 0x01, 0xa0,
|
||||||
|
0x0a, 0x00, 0x01, 0x2a, 0x02, 0xaa, 0x01, 0xff, 0x01, 0xfe, 0x01, 0x10,
|
||||||
|
0x01, 0xbf, 0x01, 0xff, 0x01, 0xca, 0x01, 0xaa, 0x01, 0xa5, 0x08, 0x00,
|
||||||
|
0x01, 0x4f, 0x04, 0xff, 0x01, 0x83, 0x04, 0xff, 0x01, 0xf8, 0x08, 0x00,
|
||||||
|
0x01, 0x3c, 0x02, 0xcc, 0x01, 0xce, 0x01, 0xff, 0x01, 0xfd, 0x01, 0xff,
|
||||||
|
0x01, 0xfc, 0x02, 0xcc, 0x01, 0xc6, 0x0b, 0x00, 0x01, 0x03, 0x03, 0xff,
|
||||||
|
0x01, 0x70, 0x0f, 0x00, 0x01, 0xaf, 0x01, 0xff, 0x01, 0xfe, 0x10, 0x00,
|
||||||
|
0x01, 0x2f, 0x01, 0xff, 0x01, 0xf5, 0x0c, 0x00, 0x01, 0x01, 0x03, 0x11,
|
||||||
|
0x01, 0x1e, 0x01, 0xff, 0x01, 0xf3, 0x03, 0x11, 0x01, 0x10, 0x08, 0x00,
|
||||||
|
0x01, 0x4f, 0x09, 0xff, 0x01, 0xf8, 0x08, 0x00, 0x01, 0x4f, 0x09, 0xff,
|
||||||
|
0x01, 0xf8, 0x08, 0x00, 0x01, 0x27, 0x03, 0x77, 0x01, 0x7e, 0x01, 0xff,
|
||||||
|
0x01, 0xf8, 0x03, 0x77, 0x01, 0x73, 0x0c, 0x00, 0x01, 0x0e, 0x01, 0xff,
|
||||||
|
0x01, 0xf2, 0x10, 0x00, 0x01, 0x0e, 0x01, 0xff, 0x01, 0xf2, 0x10, 0x00,
|
||||||
|
0x01, 0x0e, 0x01, 0xff, 0x01, 0xf2, 0x10, 0x00, 0x01, 0x0e, 0x01, 0xff,
|
||||||
|
0x01, 0xf2, 0x10, 0x00, 0x01, 0x0e, 0x01, 0xff, 0x01, 0xf2, 0x10, 0x00,
|
||||||
|
0x01, 0x0e, 0x01, 0xff, 0x01, 0xf2, 0x10, 0x00, 0x01, 0x0e, 0x01, 0xff,
|
||||||
|
0x01, 0xf2, 0x10, 0x00, 0x01, 0x0e, 0x01, 0xff, 0x01, 0xf2, 0x10, 0x00,
|
||||||
|
0x01, 0x08, 0x01, 0x99, 0x01, 0x91, 0xc9, 0x00
|
||||||
|
};
|
89
Marlin/src/lcd/extensible_ui/lib/lulzbot/ftdi_eve_lib/extras/bitmap2cpp.py
Executable file
89
Marlin/src/lcd/extensible_ui/lib/lulzbot/ftdi_eve_lib/extras/bitmap2cpp.py
Executable file
|
@ -0,0 +1,89 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
# Written By Marcio Teixeira 2018 - Aleph Objects, Inc.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# To view a copy of the GNU General Public License, go to the following
|
||||||
|
# location: <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
from PIL import Image
|
||||||
|
import argparse
|
||||||
|
import textwrap
|
||||||
|
|
||||||
|
def pack_rle(data):
|
||||||
|
"""Use run-length encoding to pack the bytes"""
|
||||||
|
rle = []
|
||||||
|
value = data[0]
|
||||||
|
count = 0
|
||||||
|
for i in data:
|
||||||
|
if i != value or count == 255:
|
||||||
|
rle.append(count)
|
||||||
|
rle.append(value)
|
||||||
|
value = i
|
||||||
|
count = 1
|
||||||
|
else:
|
||||||
|
count += 1
|
||||||
|
rle.append(count)
|
||||||
|
rle.append(value)
|
||||||
|
return rle
|
||||||
|
|
||||||
|
class WriteSource:
|
||||||
|
def __init__(self):
|
||||||
|
self.values = []
|
||||||
|
|
||||||
|
def add_pixel(self, value):
|
||||||
|
self.values.append(value)
|
||||||
|
|
||||||
|
def convert_to_4bpp(self, data):
|
||||||
|
# Invert the image
|
||||||
|
data = map(lambda i: 255 - i, data)
|
||||||
|
# Quanitize 8-bit values into 4-bits
|
||||||
|
data = map(lambda i: i >> 4, data)
|
||||||
|
# Make sure there is an even number of elements
|
||||||
|
if (len(data) & 1) == 1:
|
||||||
|
result.append(0)
|
||||||
|
# Combine each two adjacent values into one
|
||||||
|
i = iter(data)
|
||||||
|
data = map(lambda a, b: a << 4 | b, i ,i)
|
||||||
|
# Pack the data
|
||||||
|
data = pack_rle(data)
|
||||||
|
# Convert values into hex strings
|
||||||
|
return map(lambda a: "0x" + format(a, '02x'), data)
|
||||||
|
|
||||||
|
def end_row(self):
|
||||||
|
# Pad each row into even number of values
|
||||||
|
if len(self.values) & 1:
|
||||||
|
self.values.append(0)
|
||||||
|
|
||||||
|
def write(self):
|
||||||
|
data = self.convert_to_4bpp(self.values)
|
||||||
|
data = ', '.join(data)
|
||||||
|
data = textwrap.fill(data, 75, initial_indent = ' ', subsequent_indent = ' ')
|
||||||
|
|
||||||
|
print("const unsigned char font[] PROGMEM = {")
|
||||||
|
print(data);
|
||||||
|
print("};")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(description='Converts a grayscale bitmap into a 16-level RLE packed C array for use as font data')
|
||||||
|
parser.add_argument("input")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
img = Image.open(args.input).convert('L')
|
||||||
|
|
||||||
|
writer = WriteSource()
|
||||||
|
for y in range(img.height):
|
||||||
|
for x in range(img.width):
|
||||||
|
writer.add_pixel(img.getpixel((x,y)))
|
||||||
|
writer.end_row()
|
||||||
|
writer.write()
|
|
@ -62,6 +62,7 @@ void BootScreen::onIdle() {
|
||||||
PUSH_SCREEN(StatusScreen);
|
PUSH_SCREEN(StatusScreen);
|
||||||
} else {
|
} else {
|
||||||
if (!UIFlashStorage::is_valid()) {
|
if (!UIFlashStorage::is_valid()) {
|
||||||
|
StatusScreen::loadBitmaps();
|
||||||
SpinnerDialogBox::show(F("Please wait..."));
|
SpinnerDialogBox::show(F("Please wait..."));
|
||||||
UIFlashStorage::format_flash();
|
UIFlashStorage::format_flash();
|
||||||
SpinnerDialogBox::hide();
|
SpinnerDialogBox::hide();
|
||||||
|
@ -73,12 +74,16 @@ void BootScreen::onIdle() {
|
||||||
if (!MediaPlayerScreen::playBootMedia())
|
if (!MediaPlayerScreen::playBootMedia())
|
||||||
showSplashScreen();
|
showSplashScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StatusScreen::loadBitmaps();
|
||||||
|
|
||||||
#ifdef LULZBOT_USE_BIOPRINTER_UI
|
#ifdef LULZBOT_USE_BIOPRINTER_UI
|
||||||
GOTO_SCREEN(BioConfirmHomeXYZ);
|
GOTO_SCREEN(BioConfirmHomeXYZ);
|
||||||
current_screen.forget();
|
current_screen.forget();
|
||||||
PUSH_SCREEN(StatusScreen);
|
PUSH_SCREEN(StatusScreen);
|
||||||
PUSH_SCREEN(BioConfirmHomeE);
|
PUSH_SCREEN(BioConfirmHomeE);
|
||||||
#else
|
#else
|
||||||
|
StatusScreen::setStatusMessage(F(WELCOME_MSG));
|
||||||
GOTO_SCREEN(StatusScreen);
|
GOTO_SCREEN(StatusScreen);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,7 +161,7 @@ void MediaPlayerScreen::playStream(void *obj, media_streamer_func_t *data_stream
|
||||||
// everything that is stored in RAMG.
|
// everything that is stored in RAMG.
|
||||||
cmd.cmd(CMD_DLSTART).execute();
|
cmd.cmd(CMD_DLSTART).execute();
|
||||||
DLCache::init();
|
DLCache::init();
|
||||||
StatusScreen::onStartup();
|
StatusScreen::loadBitmaps();
|
||||||
}
|
}
|
||||||
#endif // FTDI_API_LEVEL >= 810
|
#endif // FTDI_API_LEVEL >= 810
|
||||||
}
|
}
|
||||||
|
|
|
@ -193,8 +193,13 @@ void StatusScreen::draw_temperature(draw_mode_t what) {
|
||||||
int8_t(getActualFan_percent(FAN0))
|
int8_t(getActualFan_percent(FAN0))
|
||||||
);
|
);
|
||||||
|
|
||||||
const char *idle = PSTR("%-3d C / idle");
|
#if defined(TOUCH_UI_USE_UTF8) && defined(TOUCH_UI_UTF8_WESTERN_CHARSET)
|
||||||
const char *not_idle = PSTR("%-3d / %-3d C");
|
const char *idle = PSTR(u8"%3d°C / idle");
|
||||||
|
const char *not_idle = PSTR(u8"%3d / %3d°C");
|
||||||
|
#else
|
||||||
|
const char *idle = PSTR("%3d C / idle");
|
||||||
|
const char *not_idle = PSTR("%3d / %3d C");
|
||||||
|
#endif
|
||||||
|
|
||||||
sprintf_P(
|
sprintf_P(
|
||||||
bed_str,
|
bed_str,
|
||||||
|
@ -353,10 +358,14 @@ void StatusScreen::setStatusMessage(const char* message) {
|
||||||
.cmd(CLEAR(true,true,true));
|
.cmd(CLEAR(true,true,true));
|
||||||
|
|
||||||
draw_temperature(BACKGROUND);
|
draw_temperature(BACKGROUND);
|
||||||
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
|
load_utf8_bitmaps(cmd);
|
||||||
|
#endif
|
||||||
draw_progress(BACKGROUND);
|
draw_progress(BACKGROUND);
|
||||||
draw_axis_position(BACKGROUND);
|
draw_axis_position(BACKGROUND);
|
||||||
draw_status_message(BACKGROUND, message);
|
draw_status_message(BACKGROUND, message);
|
||||||
draw_interaction_buttons(BACKGROUND);
|
draw_interaction_buttons(BACKGROUND);
|
||||||
|
|
||||||
storeBackground();
|
storeBackground();
|
||||||
|
|
||||||
#ifdef UI_FRAMEWORK_DEBUG
|
#ifdef UI_FRAMEWORK_DEBUG
|
||||||
|
@ -369,9 +378,8 @@ void StatusScreen::setStatusMessage(const char* message) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void StatusScreen::onStartup() {
|
void StatusScreen::loadBitmaps() {
|
||||||
// Load the bitmaps for the status screen
|
// Load the bitmaps for the status screen
|
||||||
|
|
||||||
using namespace Theme;
|
using namespace Theme;
|
||||||
constexpr uint32_t base = ftdi_memory_map::RAM_G;
|
constexpr uint32_t base = ftdi_memory_map::RAM_G;
|
||||||
CLCD::mem_write_pgm(base + TD_Icon_Info.RAMG_offset, TD_Icon, sizeof(TD_Icon));
|
CLCD::mem_write_pgm(base + TD_Icon_Info.RAMG_offset, TD_Icon, sizeof(TD_Icon));
|
||||||
|
@ -379,8 +387,13 @@ void StatusScreen::onStartup() {
|
||||||
CLCD::mem_write_pgm(base + Bed_Heat_Icon_Info.RAMG_offset, Bed_Heat_Icon, sizeof(Bed_Heat_Icon));
|
CLCD::mem_write_pgm(base + Bed_Heat_Icon_Info.RAMG_offset, Bed_Heat_Icon, sizeof(Bed_Heat_Icon));
|
||||||
CLCD::mem_write_pgm(base + Fan_Icon_Info.RAMG_offset, Fan_Icon, sizeof(Fan_Icon));
|
CLCD::mem_write_pgm(base + Fan_Icon_Info.RAMG_offset, Fan_Icon, sizeof(Fan_Icon));
|
||||||
|
|
||||||
setStatusMessage(F(WELCOME_MSG));
|
// Load fonts for internationalization
|
||||||
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
|
load_utf8_data(base + UTF8_FONT_OFFSET);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void StatusScreen::onStartup() {
|
||||||
UIFlashStorage::initialize();
|
UIFlashStorage::initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,14 @@ using namespace ExtUI;
|
||||||
|
|
||||||
void TemperatureScreen::onRedraw(draw_mode_t what) {
|
void TemperatureScreen::onRedraw(draw_mode_t what) {
|
||||||
widgets_t w(what);
|
widgets_t w(what);
|
||||||
w.precision(0).color(temp).units(PSTR("C"));
|
w.precision(0).color(temp).units(
|
||||||
|
PSTR(
|
||||||
|
#if defined(TOUCH_UI_USE_UTF8) && defined(TOUCH_UI_UTF8_WESTERN_CHARSET)
|
||||||
|
u8"°C"
|
||||||
|
#else
|
||||||
|
"C"
|
||||||
|
#endif
|
||||||
|
));
|
||||||
w.heading( PSTR("Temperature:"));
|
w.heading( PSTR("Temperature:"));
|
||||||
w.button(30, PSTR("Cooldown (All Off)"));
|
w.button(30, PSTR("Cooldown (All Off)"));
|
||||||
#ifndef LULZBOT_DISABLE_TOOLHEAD_HEATER
|
#ifndef LULZBOT_DISABLE_TOOLHEAD_HEATER
|
||||||
|
|
|
@ -178,4 +178,6 @@ namespace Theme {
|
||||||
0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||||
0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFC, 0x00
|
0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFC, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
|
constexpr PROGMEM uint32_t UTF8_FONT_OFFSET = 10000;
|
||||||
}; // namespace Theme
|
}; // namespace Theme
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1209,6 +1209,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1208,6 +1208,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1209,6 +1209,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1213,6 +1213,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1204,6 +1204,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1209,6 +1209,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1209,6 +1209,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1210,6 +1210,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1210,6 +1210,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1206,6 +1206,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1201,6 +1201,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
|
@ -1205,6 +1205,12 @@
|
||||||
//#define TOUCH_UI_PORTRAIT
|
//#define TOUCH_UI_PORTRAIT
|
||||||
//#define TOUCH_UI_MIRRORED
|
//#define TOUCH_UI_MIRRORED
|
||||||
|
|
||||||
|
// Enable UTF8 rendering capabilities.
|
||||||
|
//#define TOUCH_UI_USE_UTF8
|
||||||
|
#if ENABLED(TOUCH_UI_USE_UTF8)
|
||||||
|
#define TOUCH_UI_UTF8_WESTERN_CHARSET
|
||||||
|
#endif
|
||||||
|
|
||||||
// Use a numeric passcode for "Screen lock" keypad.
|
// Use a numeric passcode for "Screen lock" keypad.
|
||||||
// (recommended for smaller displays)
|
// (recommended for smaller displays)
|
||||||
//#define TOUCH_UI_PASSCODE
|
//#define TOUCH_UI_PASSCODE
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue