parent
c590e8ac05
commit
47d19bab40
130 changed files with 2853 additions and 69 deletions
|
@ -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::str(text);
|
CLCD::CommandFifo::text(x, y, _font, options);
|
||||||
|
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);
|
||||||
CLCD::CommandFifo::str(text);
|
#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);
|
||||||
|
#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.
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
if (c == '\0' || c == '\n') break;
|
||||||
}
|
}
|
||||||
return width;
|
lw += fm.get_char_width(c);
|
||||||
}
|
}
|
||||||
|
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;
|
||||||
|
|
||||||
cmd.CLCD::CommandFifo::text(x + dx, y + dy, font, options & ~OPT_CENTERY);
|
#ifdef TOUCH_UI_USE_UTF8
|
||||||
cmd.CLCD::CommandFifo::str(line);
|
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::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 |
|
@ -0,0 +1,343 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="38"
|
||||||
|
height="1225"
|
||||||
|
viewBox="0 0 10.054166 324.11458"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
inkscape:version="0.92.1 r15371"
|
||||||
|
sodipodi:docname="western_european_bitmap_31.svg"
|
||||||
|
inkscape:export-filename="/home/aleph/git-repos/marlin-devel/tests/ftdi-eve-lib-examples/unicode_demo/src/ftdi_eve_lib/extended/unicode/font_bitmaps/western_european_bitmap_31.png"
|
||||||
|
inkscape:export-xdpi="96"
|
||||||
|
inkscape:export-ydpi="96">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="1"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="3.6948106"
|
||||||
|
inkscape:cx="25.324413"
|
||||||
|
inkscape:cy="265.38829"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
units="px"
|
||||||
|
inkscape:window-width="1382"
|
||||||
|
inkscape:window-height="815"
|
||||||
|
inkscape:window-x="2126"
|
||||||
|
inkscape:window-y="131"
|
||||||
|
inkscape:window-maximized="0">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid4838"
|
||||||
|
spacingx="10.583333"
|
||||||
|
spacingy="12.964583"
|
||||||
|
originy="0"
|
||||||
|
empspacing="1"
|
||||||
|
color="#000000"
|
||||||
|
opacity="0"
|
||||||
|
originx="0"
|
||||||
|
empcolor="#3fff69"
|
||||||
|
empopacity="0.25098039" />
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid4528"
|
||||||
|
spacingx="10.583333"
|
||||||
|
spacingy="12.964583"
|
||||||
|
originx="0"
|
||||||
|
originy="2.6987499"
|
||||||
|
color="#c93f24"
|
||||||
|
opacity="0.1254902"
|
||||||
|
dotted="false"
|
||||||
|
empspacing="1"
|
||||||
|
visible="true" />
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid4530"
|
||||||
|
spacingx="10.583333"
|
||||||
|
spacingy="12.964583"
|
||||||
|
color="#3f5fff"
|
||||||
|
opacity="0.69019608"
|
||||||
|
originy="8.8106248"
|
||||||
|
empcolor="#593fff"
|
||||||
|
empopacity="0.25098039"
|
||||||
|
empspacing="1"
|
||||||
|
visible="true"
|
||||||
|
enabled="true" />
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid4532"
|
||||||
|
spacingx="10.583333"
|
||||||
|
spacingy="12.964583"
|
||||||
|
empspacing="1"
|
||||||
|
color="#ffa03f"
|
||||||
|
opacity="0.1254902"
|
||||||
|
originy="10.689166"
|
||||||
|
visible="true" />
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid4653"
|
||||||
|
empcolor="#ff663f"
|
||||||
|
empopacity="0.25098039"
|
||||||
|
spacingx="10.583333"
|
||||||
|
spacingy="12.964583"
|
||||||
|
originy="6.6145831"
|
||||||
|
visible="false" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(0,27.114583)">
|
||||||
|
<image
|
||||||
|
y="-947.59998"
|
||||||
|
x="-1.7763568e-15"
|
||||||
|
id="image4606"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAABJgCAYAAACFiF0FAAAABHNCSVQICAgIfAhkiAAAIABJREFU eJztnetu6zrSKJnBev9X9vlxPgWOI6l4aZKt7CpgMNgriVUmdSOb3fx6vV6vkoj/7Rb4RCFCIUIh QiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiHi3/t/fH19 /fjhjkUP6VpIIUIhQiFCIUIhQiFCIUIhQiHixzt1hoXD6VpIIUIhwpEroRDhnZpQiFCIUIhQiFCI UIhQiFCISCdUNQxaOTxK10IKEQoRzxG6urRnj26f00K7OBXa1V2llPJlVQtAIUIhQiFCIUIhQiFC IUIhQiFCIUIhQiFCIUIhQiFCIUIhQiHiH//K/+c9iHc2cUs/ryVdCz1TaFV3VQutRCEindCPaNDn goEIWk/ydC2UTgiXL6+8B5WSsIWqhejbR0VKb4XoqptxVT63y1aRTujr9Xq9MtyhD9K1UDqhf6Xk uEMfpGuhZwjt6q5LoZ0oRChEuAaNUIhQiFCIUIhQiEgnVB1aOJj5+lpKwhZSiEgnVHVSX82OzDjB cUqvdqomakrnUqjnABFSp1129sE0pH7/t+khzpWpOb+EWpu9tuW6hWoO2PM7taS7D6UTan7aX7Hk xljKnHjGHb+Eoq+aVqrPoVVSTTmKLc+2Xm7nh2oOvnQWtuZg0a1WdaeuFYuga0rv7uBbVsfctdpo Sw09OlKOy5a/ftQQ2VJWGyRyC3120eox2S+hqINNHwbdDaWjn/6nj46Rg0x5dPR+aMRt4vIl/6rU zywRFDo72Oz5xVKy34cykE6oaeS64mGbroUUIhQiFCIUIhQiFCLSCQ2Fp2ZQHQ1aMQP7S6jmgLOl cBh0JjIaNbzju4VoiNMiMNK94VfZ1knPTyLOr2n3oe1pFOGZwFdj+OgDEpeXfcv5MC3xtickPj0D 724Vw4rn2WmX1R54+XKd1TKlPOV9iLhrndF3qbB1jHe3ieNnNWIhXRYZgmhqoZoTeTSg17Wyobar 6HOGhGqIWBoWUkQikqbwlLOwn7S2zvRX2EPiToZEP0cg9PtN0aAaUow6aqVrfi98ld7yhythMZvZ KEQoRChEKEQoRChEKEQoRAylBM4YyQ7NU88IUw13WXSksSvmOjOqWBVz/eyWmflD3Rl4LqzcRUho oZSJsY6amfmlVxkxexnG0KMjWqaUgRXnswJ6l102Mq84Qmh6ewS/zqFdIgdd6e0UG3v/XyvfLdR6 Oc9aslN9Uq/KEP5fywe3SvW0YPN9aHZLdWdxfhL1Ktv9tJ9VazhnWmlv5t3Z3179W5PQGbXjsuhL /3SF1d0Bj/+uWcnQw9Qq8D1dF5ISeDeIbJW6XdDUeheOaGFLaBIKEQoRChEKEQoRChEKEQoR6YSs rkMoRChEdM3kz+Q5LbSL0PpDEaRrIdwDbzXpWkghQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFC IUIhIp1QeDGbUbqK2cykuXZMKZvW5F9hMZsrmVVUd9m2qqcHu9IpToV2RqfT3am7cxRnUZXFuZLn ddlqqmpYreSH0O7zp5SnddkOFCIUIhQiFCJ+CKVfjJJ61LEKhQgsIrGaprH9CvJ3WSljibijPKOF StnXSrmHQcTyTWjOWN114WU2Rkk3pefGjoRChEJEU+2YFXyVUr6v5d1vi6VknNLb+TJ2xnCplmhu K6PsIHd4KkPX5bwxvrO7lfK3UCkPyC9z5JqJ56SVXhXTms1zWmgXChEKEQoRChHPEdq1Du05LbSL ZwptX8eYYrIhC7iOcfvCynfSh6dWcDnHuP0lf/fc4sHpPHWqyYbdc435Js5rNpFdyek89U5y34cy oBChEKEQoRChEKEQkU4IV1ilynPdgULEZfVl2pmr5veGha4Oevdv0QwPpaMlv1uodXvUWbeA5l1x thUAuGqlLauFU2eTr9r77qA6eXvVMp7LnZWutiWctV0hCu0i3bNMIUIhQiFCIUIhQiFCIUIhQiFC IUIhQiFCIUIhQiEinVB1AYBVE6HpWkghQiFCISKd0PeNsTV2Qb/fe+NM10LphE5jrmf4LMuCQoRC hEJEOqHqUYdJk1lQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiLhc +7G9UlwWFCIUIk6FUlUb3E1+od3Z7tVLvlaRv8t2oxChEKEQoRChEKEQoRChEKEQoRChEKEQoRCR TuiyLmwNM2ZM0rVQOqEfXZZh0ipdCylEKEQoRChEKEQoRChEKEQoRChEKEQoRChEKEQoRChEKEQo RChEKEQoRChEKEQoRChEKEQoRNwutdgRx0/XQgoRrv0gFCIUIhQiFCIUIhQiFCIUItIJVRfuf+d9 uBT92tvcQq3L5FsZ6rLta/Jnt04pAy3kNj2frOiuUjpbaOYI95ldtqq7SuloodkTEii0snVKaWyh FdM1zzqpV3dXKQ0t5L5Bn+zorlIqW2jlZOip0K7WKaWihVZPFec/qXd2VynQQkaDyofQ7u4q5aaF ttf0zNA6pVy0kPUY3/hfKXm6q5STFtodVUzXZf9K2d8q76RrIYUIhQiFCIUIhQiFCIWIqgDe1Svu jPeoS6Ga9+zjdyLFQuaHIgcJ1bMfr9fr+38zpaomrD4lrsQipG4nG+jc2B5zXcHlZEPtt//8vdFu y9tCWVCIUIhQiFCIUIhQiMgr1PteE50ClreFSmlvpRkxEhy5ng0GZ45kv14nn9LzzaNGICEBvMjh 0GWXHQdZOdFwKzT7wFfkvuwzoBChEKEQoRChEKEQoRDxbKHjdXbmErFfr7A7xmLv5O6yDKv1fg2l j1HG5/9vETrYKZX7HMqAQoRChEKEQoRChEKEQoRChEKEQoRCRDqh6vpDFgDIgkKEQoRChEKEQoRC hEKEQsRQBl4p8a+2t0I7svDCalhFBf9OW+jsw2vWyX59fcWvFq6ROf5tS8Jb60FD88t6FmtvL1Q7 m3RCf297jP9WkkAGhoRmbOvTLTRrj6EuoZmraJqFap91vXQt+ZolU8rgSb01vX3VRllVQqmqL684 b965FVotU0rjS/626su7ZEqpPKlXvifd7oG3g+Gh9BW9rfq33odm8Pde8qNRiFCIUIhQiFCIUIhQ iFCISCf0nBKadyJnP586x/j19bUtgFcVLztYUUazuxDJVeWU0ajicNLk0knP7Vus7MrcfOdXC+2W Snen/lsBvC1FtWoPvDU89cm2aNAVPc++y886KzvWIvLJ1pN6Rkno4S5LFcA7iKzA/Pfu1NFcvjGm 2Edxt0wpHRHF2dxWrKwl8onfFQRu+XkrTRUrV5TRPH39eL1elwsnZ3PZZT1lNCMeI7cvaKsqnVYL zTzwFfkfHbtRiFCIUIhQiFCIUIhQiFCIqH6FfWfmStB0LRSyJj+SZ7fQ1pHrJ6umZp7ZZasyFkrp mB/atiZ/F01zjNuSBM7YPvuRYp76YEdXHeQ/qXe2TinZl1pkSDT5FtrdVQfpTuqv1+v1mtFVpuLM 4l8pfc2bKjV5JgoRChHphLpmP0rZnLy9EoUIhQiFCIUIhQiFCIUIhYh0QtX1GGuxMNtsqkYdTgtn Iv889e76MU1ppStIdw5VTzasKrSFQnddGF3ouJSE+WXdC7xnnfwYDbpaaz8jt+yX0OdB6NxYclKP HiQ0m7yHlBl4kShEmIFHhKe3jxKeEhg6Lmt9HMzo2q41aFdP94ibZFNK4B1Tg8Ct2XSRj4+qDLw0 5X5mHviK/I+O3ShEKEQoRChEKEQoRChEKEQ0rUG7GvpEbKT2fQwqqtUyJJq+b9D26jrv3I1MqZTm CNUj1+2pOO9sHZelC+Dt5ja0sD3zJQPDd+pSNsTLKB4WeQMd3j7183enFNU6Y0sAr1bm+LflBSJr nlePCE9tLxCZLkweiUJEbqFVN787wtZ+vLO1YmU0w0u+lpTQvDvQ7AhRczrX7K3lb0to7gjiVe+1 kGYN2syDn5H7Tp0BhQiFCIUIhQiFCIUIhQiFiO9X2OjxleV+ZvHdZSOjisjuntJCW7MWUm8XNj0q vYNuoVQ1rGZGHp/fZbPjskMtNGOKpkkodW1hS0btoivRZGux49UoRDRHg6xPvRuFCIUIhYju3dtn ka6FFCIUIhQiFCIUIhQiFCIUItIJVa1Bm71U8J1LodoJzujibKdd1jPbOq0wW+2S0qvN1KcvPb06 AK2J7QUrxbUyPdGESBXrmMGzhLYnCWTYrqc78XZpDaurA94xPQi8q4ZVU/J2xO8S1Q9XyiCPkvp1 DrVcNTNO7KHU5KlR6d4mj864CrnKInnWs2wHzxFqHXVE8S0UdRJPXYNG3356Cc2r7PCrIc8MnlNC c4dMKTcDxZqB4JYMPAN4uwU+UYhQiFCIUIhQiFCIUIhQiOjeyGjWq213AO/959MnPVvHZVMnPe+6 aPmkZ+sk5vRJz9YPTznpGc3wpOeyWdhdKEQ8R2j7Vk+7QgmfDM/CTl1q0VKjc1aXDi9oiua0dN2u APCpUO2BZlXwrtpZaSXPuTHu4m+VSJhBaM2GCMJKJJQSc1XermOcUe65Wajn4KlqNkxfnPt+gNXB u1OhFQe942/dh2agEKEQoRChEKEQoRChEKEQoRChEKEQkU7ox8jVLedOUIj4cQ5lCFGlayGFCIUI hQiFCIUIhYh0Qr7CEgoRvsISChEKEQoRChEKEQoRChEKEQoRChEKEQoRzn4QChHOfhAKEQoRChEK EQoRChG+MRIKEQoRw5VRonlOC+3iVGjncMhxGaEQoRChEKEQoRChEKEQoRChEKEQ8feEplYbbOG9 9GGkVFW1wU+RT7aUjLorBrm0hehgaTaYXVbDapfIwb8MEu+kq/J1KpRmwupgVkH1Gv5HB51RjPaO rt25Zrba5W6lpewRu3100AFndOdtC50JXDF9P9erg54deHuByE+xre9D7yw/qXegEKEQoRChEKEQ oRChEKEQoRChEKEQoRChEKEQkU7odsV5D27TMxuXnhIKEc8Q+rwf0X9HgjvetuKNcTbeGAmFCIUI hQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIWI3EIr0yWu+NVCq/M4Prnssl1ieA6tFvshlCEl 5zKvo+bgM2b+MdFktVhY5kspMWJNQj/+8EJuW7zsKi1n9MTvznyZ1UIhqcmRVAmtvNJuhXZk4DVn As8SOWhaP7QiJlt1DpmavFvinerXj1XkfsnPgEKEQoRChEKEQoRChEKEQoRCRHNRrSU1rGpEzn4+ vRBJ61TLjKmZb6G7LrqaLZshdXkO3VXRmTlp9b+zA9C58fnzSMGcl32GMf1Buhb6G0IzN6t5fgvN njhvEppdYLSUxiKjs2VKqRRaJVNKZRB4lUwpHSf17Lv6rVDKuP07K555z78xziZd8CVdCylENAWB vewzkE7I+xChEKEQoRChEKEQoRChEKEQMVQn/+vrq7xer9A5pOYF3r1TNLWHqW6h0bmi4+9JbGj5 cs32GWf/dpuu0Zq10H1uVH5O05TeyLCoNsZ2mxsUJdMiVVUHLXLASJ+FN8YZo9e7zUdO88t2Mjy2 770lvN/h328F0xYS9KZ/XZ5DPTe9kd876Hq41jxMa9Mx8KRu5W4ZRguH2OnaD0oNnMlQC23fN2jF PSrdK+xQBt4MprTQSNdOERppvaG4fc3vtspVC82eRD99uN4x45LvfmMsZV2Y4Vvo/YAj70G1ZX+v zrPqFho5eMvnN71+nL0uXHXv+7+3bHcYfh86DlDT7ae51p8j197XkNqlqSFj+zNqr7rhG+OsDRtr 6VrQNJNToZ1LUauGQStrf9x2WcQy5fBx2d1NbsYq9KZs8hXl6ZsfHbUyvRfG9BtjK39nGDQLhQiF CIWIdEJNd+oV6xqHWmhqwlsWtk42nDHcQtGiz+yylauGQ1poa47i1kSTUtanKIed1FHd9qzMl9ah TkQrPec+tCNjoZSgEOc7o932jC7b1V2lBLVQZLeFFYiMIt1ilGknde8Xq5rSmy3xzu3qmMen4kRc bZd1P3ZNnj/jTj3CaLedFiLZSbrgS3d96ln8/ZN6FIUIhQiFCIUIhQiFCIUIhYimvRauSFeYLXLB U2iXRYgN5QbdrXPt7cbhNIptleLuiNyuJ+wcimqpdPchhYhpAbwtl/0MhtPbzxi54oa2eooUOUj3 LEuXPRVWVOts4W5PF059dIQm3vaQ7qQuJWjiPBMKEX9faPSpH/7oGGXoaX8QGd4Kfdp/0nOjDGmh T6a9D62SeOeHUIZY3t+/D42iEKEQoRChEKEQoRChEKEQMVyx8kh/j3r9bS4QeUeEVPMugXfU1u1s FmoprdJTt/OO28ooVxKnHxRUIiisQOSUeFmGNbFNZTaI0AXeWUi34jx8Omb0i+TtsiwoRChEKESk Ewq/U4cFX2akGfeQrsuGkrfp94dfYR8RWqhppciFlacDxdplOC3DpSEhOtgd017QehZNTh1Kfx5k Rvd0Cc046B3PujHuQCFCIUIhQiFCIUIhQiFCIWI4Ay/61XZ49mNkb44znrX0tGdDo9H4a3cLHQPJ yGS3IaF3HpOBtz1elu4qi8C8DkIhQiFCIUIhQiHib6dzRZDuJX9avn0pkxbFrZQp5a/n24/KlJLw JX94bD91suERYfLVKEQoRChEKEQoRChEKEQoRKQTCimheUaqwmxbwlN3pKjyFUW6k1ohQiFCIUIh wik9It3EuQ9XQiFCIUIhQiEindC0EpoOpe8IG0obwDtBIUIhQiFCIUIhQiFCIUIhIp2QATwi96jj E+cYi0KMQoRChEKEATzCAB6R7qRWiFCIUIhQiFCIUIgwgEcoRChEKEQoRChEKEQoRChEpBMa3gOv lMVl6Wv3WjiYNunZu6HD6Dyje+AReJX9qT3wwkto7tge41vILecuSPfoUIhIJ9R1Us/cdLarhWbe ErqEZm4l1tVlPYW0a0l3UitEfAu5B94Ft0I7WumH0CNCCy3DoSlFRq9a6TjY50EP4ahRR/geeCMy pdw8Omq2mosUOagal9EGfcfPIi6Kyy7bxbNujDtQiFCIUIhQiFCIUIhQiFCIuM3AG3m77f2sdC2k EKEQoRChEKEQkU5oWlGtXtK1UDqhaRl427dPjUIhQiFCIUIhQiFCIcIAHqEQoRChEKEQoRChEKEQ oRCRTujXhNXuDJh0LaQQoRChEKEQoRChEKEQoRChEKEQoRChEKEQoRDxa/ZjdzwvXQspRChEKEQo RChEKEQoRChEpBMarhQXHfBL10IKEQoRChEKEQoRChEKEQoRChF5hd6rCe4qn/lDqJR9dTzfydtl PVVPZyzC7G6hWd1bnd7+/u2jymWi0Ov1uvzmq074X13WUxt/+vYY1D2fvxMJzn64fHm3wCcKEQoR ChEKEQoRChEKEQoR4SU0R4dIoS0UMV4LE1q2w1svvaOVEKHISYdhoVRR6Rnj/dDpmG3zQzOnY0JO 6sjxf7PQ7FzqJqEVid3VQquyzP9GCc3/1JZzt0J3W/TMkqpuoVVSTV22Qqr5HJotle4lP+yyj2ql 7haaJTXUZTOkhs+hrU/7WkZaadoL2vZix1FSoV0WIRV+Do2e5JbQJBQiFCIUIhQiFCIUIhQiFCLS CU3bA6+XdC2kEKEQoRChEKEQoRChEKEQoRChEKEQoRCRTmjacp2tCys/2bqw8oyRlv2VNLmbdCe1 QoRChEKEQoRChEKEQoRCRDqh2wBeKbGvtTWfjy0UtQq49nPSdVmV0Mr8jiUt1PKFntllpWysrhNN 6OLcnjJSLZ/XLDTKlPXU6cv99HZb7Reb1mVT1+Sv7LYpCW8jy36G8stmML1S3LYCAAdLc4N6ira1 8vz09rtvvT2/7E5ie2hha0pgutTkT1JUtZjVSunSuZ476jhja4mEGiIEzcAjFCIUIhQiFCIUIhQi FCIUItIJTcvA6/2s2xZKWXZstVS6c+i5EcU/Ey9rpUloRSs1BfBKmS/1zHhZdKjzjuee1Kta6dmh hRUn+HCsY3s9xjO212NMGVqY1XWh96Ht8bL0E+elJC0QmbIeYy/PfbgSqWqcH2zdJXAW/40Q59Ak hQE8QCFCIUIhQiFCIUIhQiFCISKdEG7jfHA3PJ6+0XWtyNnvTBt1fH19dU0ajM5+VHfZQc3M2fFv Pa11KtQSwD1+Nm1KLzL3Zzh7ajTPdfpuFD3nQMqx/QjfQpGrGkbmsPO2UBYUIhQiFCIUIvIKRcZQ lyTeriJ82WBoiHNGlKH1M09jHT2vssu3Aj8bpx3/HbnU4jYaNLv6wBnpXvJx5Pp+gOis3y6hWQe+ 4lk3xh0oRChEKEQoRChEKEQoRChEYAnNWtItrOyNr32Sbvny7aijphuuAnjbCiK9Xq/nbCffw9TV wtv3t49AIeJvC6W8U7+zvLjfO1HzjM1rPz6JnlWbsm9Qum16RhjuslIWTnq6a3JRiFGIUIhQiFCI cA88QiFCIUIhQiFCIUIhQiFCISKdkBl4hBl4XUJm4F0JmYF3Qroboxl4hEKEQoRChEKEQoQZeIQZ eMR/KwOvq8tnZOB9EnaVRb3kt3yxpoqVLWuFes+paRl4r9cr38LK9y9Q+2VC1g/dsX1P4FEUIhQi FCIUIhQiFCIUItIJmYFHTMnAGxGbkoE3wn8rA2/7uMz9OlagEDE1A+9PJLwNCd3NMW5LeIuUKWXC SZ1uIcH2p/0hEUVIC5098bc/7c/waT8DhQiFCIWI6UKhywZ7GL05ugceoRChEKEQoRChEKEQoRCh EJFOyAw84r+TgdfbUlWLc3sjiyEz+TuKsb2Dl/3QTuzOMU4gfOnp9NBCdFye+CUUGYPv4bSFrqRW iA2tyZ8xtYQTVrWtEiVXPYO2SqxrSm9mVw7PMUZXPXW5DpHu4Xq7Ss+qp2VCBt4ooRl4S1bH1LbS tNUxd0/6lgy80GHQ1UFaCF+u01vxJMUeeBEi1UIzDnrHs26MO1CIUIhQiFCIUIhQiFCIUIj4V8r8 Eerfra6zg3+l9K+9nzEKSddCChEKEQoRChEKEQoRChEKEQoRChEKEQoR6YQM4BEKEQoRChEKEQoR ChEKEQoR6YSmLM7972yPsQOFCIUIhQiFCIUIhQiFCIUIhYhnCbnlXAnOt5+yk0Bvvuoj9sDrYcoe eNPqU+/Y6NoMPOJZd+odKEQoRChEKEQoRChEKEQoRJxm4EW8qvZ+5pQWCo8o7qiqc/C/UmJHE6Gz HzPonv2I2mZnlNAWSrmx4zvD0zEZui2shVJsqHZHWC293d0W0kKRz8JToZ2tlO71Y1go+tXlUmhX t/2tLpvxptk0T72i28K6bPu+0rNaC4VWd1tIl0W+k1cJrWylv3UfKiU+IFMttKpo7d/qshmtZgCP UIhQiFCIUIhQiFCIUIhQiEgnNBzAi/7bdC00FMC72m6u92+/hTJtvp2my45GWRIEbuFSiD50+gza yvPo7sukmPR8/9tpJ/XSrZ5mVtD9uzHXUvr27Pz8m2ahlu7avjtXBH8rCHzWXXdfqKa7m4QeFZ6K oipM3sq0zJeD0USklr9f1mW1519T9lQLny0wvGzw7gN6zpHhFpp5id99oa4WmknuNWizDtJCeAYe QZ+ZbqXn8Aaz0Tzj4boThQiFCIUIhQiFCIUIhQiFiO81aFGVTUY/JzS0EPGlwsv9jBJW7mdZMZvV 9WNCyv1Edu3wHGNUV90K1R74jGWZL2fMuApD8zqmJ5qccVUmalleR2+RrV66shZaf95Cuqf9cJLA tqyFVQzfGKNP8O5o0Cy6umxmXDbs9WNJrvTdk3zWbHJTl5HE1AIANR8+47HyjBvj6LcMXYPW80q6 9OFae7Coe9MPoeg78tBynYjRw5ZX2FZaW8kAHqEQoRChEKEQoRChEKEQoRCRTug0A6+U2MhQcwDv EQUio8ZoYQUie5hej3H0AOH1GFtYVv4wZYiTmF5tkA44k/CY67QQJx346t9GCV2Tv3x+aHuyUkt2 3baY69n+QZGEvA9tL103k+EWSlUpbkbLpXunVohQiFCIUIhQiLCEJqEQoRChEKEQoRChEKEQoRCR Tug2A2+UJYVIZpNO6LvLRkcUqXbnigwiT+myJQlvV2zJ67giOt5fSnCXbV0tvC34UiMTyTODL+/M LDBaytMiisTW4Mvsrjp4xkKCd2bcje9oPoe2VorbXiLhndVddTCcXxbNlPyyEULyyyIJyy+L4ja/ bEce021+2Y5zCaNBI1IOpWcQNpSOIl0LKUQoRChEKEQoRChEpBP68ca4oooXka6F0gndvuRvHQZl QSFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiEindDtlN6OlQ7pWiid0I8uyxC7T9dCChEK EQoRChEKEaclNHc+09K10P9KmbuHSys5W6iUHO9CpTQugV9B3i4rJUe3PSeNYhe/hHbfk/K3UCkP eJalSudazaXQrm7rTgmcxXO6rJQ996RntVApm7Onapjdbc/rslKSZeCdkT7fPpLutNJZrfTcFirl AaGF5Rtd72A4vT1VqZYZNFU9PUhVkWA2ChEKEQoRChEKEZf7l72TftQxk3RC/0rZP/P6TroWUohQ iFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhIJ1Q1C7uSdC2UTuh0FnYn6VpIIUIhQiFCIUIh oroAwNbtMc7YvgT+EelcLoE/SB0mXx3T/yWUfs+XM7atON9e7Pjum2+/U5PA9CXwNQdwxfnBzpHs 1yvTOLo85Vm2E4UIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiF CIUIhQiFCIUIhQiFiHRC4dlTo8uR0rVQOiGzpwiFCIUIhQiFCIUIhYjTrIUUqTifMtvTuV6vV4ra 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 D0RLvqLfhwzgEQoRChEKEQoRChEKEQoRChEKEQoRChEKEZcZeLUzaltygygDL3J65nJ+qCeIty2A dwjMkDIDj8gbwItke7zsquRqD3+zhSJRiFCICBGKfHxMaaF096ER0kUUqwN4pdQF8aa/D71DrRHx 5O+Ol82QQaGag7VGH4nud+pZPOuy34FChEKEQoSbgxIKEQoRChEKEQoRChEKEemEmmY/3rmLDo28 6HXHy2Zk310KjSQIjPJLqKeLpgqRyOe/Tw3g7Vz6fjAcwIsm3X3oMiVw16AxbwtlQSFCIeJSaFdm 8GVK4C6e02Wl1L2kLU8JPDvoDJGDX+9Dr9ereVvmSC4z8GqIjpVdCtUcbNZV2f0KO4tnXfY7UIhQ iFCIaFqMcsWy5O0dKEQoRChEKEQoRChEKESkE6reA2/VxPpwBl40KLR6rnF4CXw0VS/5K2dAsMtS TccYwCsKMQoRChEKEQoRChEKEemETDQhFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiwjLwokiXgXfa ZTsz8H4JnR3gWMp81RrTyo5dyZzJzZLqjpdtjUqvZGhh5YxWSheV7srrmEn3zkqzTurbfYNqWyZS rnojoxVl65qEfvzRxAdu131o5t266ll2xdT70PvlvXOj0L+VozhDGh8dZ9l3VzIR5xTuCVzLtIqV PVl1SypW1tRkWL7z9qyD3pHujVEhQiFCIUIhQiFCIUIhQiFCIeJ24nz7lN47u6Se0WU7UYj4V0p9 bOxg5mg2XQulE/pXCpfHTJXwthqFCIUIhQiFCIUIhQiFiOqaDSkrVq4Qe06XXUUWZ7/OGsAjFCIU IhQiFCIUIhQiFCIUIhQiFCIUIhQiqkto3hEZPUrXQgoRChEKEQoRChEKEQoRuYV6drWdXgCghRmh quoiEncV4SM5TXg74wjezV591RRR7P29FpoDeGc/25K8vYrc96EMKEQoRChEKEQoRChEKEQoRChE KEQoRKQTOs3AaxnMRk8+/O/sQ1LWsNpF6AxaaGG2LN0W1mXTaljVMqsFh6eFownpsu2bpaeYFl4F ttCqSpUHzV22JfNlZ7dVJyudsXwm/5MV96XnPu1TbFL8mP1cLSLxTvr8su0ZeCsk3nneObQahQiF CIUIhQiFCIUIhQiFCIUIhQiFiHRC3QG81r+p3XDktIVWTN1dfYHTiCKxdCa/lyVbzs3irkcuI4qR tLTeZQtdfcj7vy/fcq6VKZthtRK9pc9tiPOTnhZo/ZvbFloh8El3l/WkUdT8XnesYxZdMdfac63n SwzHXKNZttSi9jyrirmubKVpsY7eLxH66Ji6sWPkg7Pls5paaEVUKPwFLWSV3kya39fNwAMUIhQi FCIUIhQiFCIUIhQiFCIUIhQiFCIu98DrCeLV/t0dl/Gy1o36ImS+hSI+bEk6V01EKJqmWMcVU7On aAZ2Sw2rK7YlmtTOU29NxUmRaLKDrswXE012kvtO3XLQJZnAd6yaX69aP3TIrAjs/RJqPcjyEpqf rTK7634I1X7bmV2XN0ex9eE5q5X+F/lhEZ9jAI9QiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIjIWUKT DrKSrgy8gyVTeiNMXQK/i8uYa/p5amJ7Tc9Z3AaBa2Md20toziS/0KPC5CuoCpOvpKqFrlL80mcC R7AknauF7rRSVzaUYk3PUsrTuqyUzUHgMx6bmhzFs9JKU1WBT7+TwKqb5Heh2rsW+U8Xqr0t5bvj WfYtlGWBQ7ouU4hQiFCIUIhQiFCIUIhIJ1T1Tl3L344GZaH7nXrWFF9XC6UqMjore/Ng+Bz6b6YE njG7qw66u2zrxPmqWfxSnjbpueq8eec5k56p5hh3dNVBVZdtnWNceYmf0ZXwNpPL/LJSNk96ntHT YukrVraSTsh5akIhQiFCIUIhQiFCIUIhomsGbeZgoGqT4kNkBSi0emhU3UIHW2c/doxin3OV7Rrj P6eFdqEQoRChEPEMoe1ppcTKyawfrx8ZpoUvawsfbJk431Eq84rbOmg7uvBXHbTdM/qYo7iaqpTA 1Du8zUYhQiFCIUIhYmhB0wyem5q8iqZM4BSL4s6kti+sTJmB93q9LgtnbxE6SLUGbQUKEQoRChEK EemEbmfQHlOIZCYKEQoRChEKEQoRChEKEQoRChEKEQoRChEKEQoRChEKEQoRP+YYdy9mKiVhCylE KEQoRChEfC/OzbCWupSTuh+7xXKuyX9faHKQorpOBqmcV9k7u1spfwvtRiFCIUIh4plC2zNf0u/O Vcq6l7fmFedbly/vyMxrKpFA/x7BZRGJXZl4TQu8V1A16ki5BH4VChEKEQoRChG/hFJOWL2ztZRv Bn7NMb6zrZTv7ioE7+Qcdbxn1u2OKn630G6Rg9xXWQYUIhQiFCIUIhQiFCIUIhQiFCIUIhQimmId pcwfUJ4K3U1aHT+rEXv/nNov0j2DNmumDWucv3+zT4m71uoV/lGxsnbCis6vkYmvripfLfHY1ovg dg3aHbOutl9FRrs+JHBKsLlw/xmpdiuNRiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFC IUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCIUIhQiFCISKd0P8DU3MdyMKZsxcAAAAASUVORK5CYII= "
|
||||||
|
preserveAspectRatio="none"
|
||||||
|
height="1244.6"
|
||||||
|
width="9.5249996"
|
||||||
|
style="display:none" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#fd0000;fill-opacity:0.6350711;stroke:none;stroke-width:0.26458332;stroke-opacity:1"
|
||||||
|
x="-2.5308407e-06"
|
||||||
|
y="-873.23492"
|
||||||
|
id="text4630"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-2.5308407e-06"
|
||||||
|
y="-863.87115"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.58194447px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#fd0000;fill-opacity:0.6350711;stroke:none;stroke-width:0.26458332;stroke-opacity:1"
|
||||||
|
id="tspan4634" /></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:10.26181126px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.20578496"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="-38.800373"
|
||||||
|
id="text4642"
|
||||||
|
inkscape:export-xdpi="91.400002"
|
||||||
|
inkscape:export-ydpi="91.400002"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="-29.721075"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.3770504px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4614" /><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="-16.761999"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4658"> ̀</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="-3.8029218"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4553"> ́</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="9.1561546"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4555"> ̂</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="22.115232"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4557"> ̃</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="35.07431"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4559"> ̈</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="48.033386"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4561"> ̊</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="60.992462"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4609"> ̧</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="73.951538"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan8898">ı</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="86.910614"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4565">ß</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="99.86969"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4742">Ø</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="112.82877"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4750">ø</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="125.78785"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4626">Æ</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="138.74692"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4788">æ</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="151.70599"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4792">Ð</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="164.66507"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4796">ð</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="177.62415"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4798">Þ</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="190.58324"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4637">þ</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="203.54231"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4767">«</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="216.50139"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4771">»</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="229.46046"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4643">¡</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="242.41954"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4720">¿</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="255.37862"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4775">¢</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="268.33768"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4724">£</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="281.29675"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4726">¤</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="-3.5527137e-15"
|
||||||
|
y="294.25583"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.93611145px;line-height:1.16499996;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;fill-opacity:1;stroke-width:0.20578496"
|
||||||
|
id="tspan4654">¥</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||||
|
x="0"
|
||||||
|
y="-1286.5312"
|
||||||
|
id="text5550"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5548"
|
||||||
|
x="0"
|
||||||
|
y="-1277.1675"
|
||||||
|
style="stroke-width:0.26458332" /></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||||
|
x="0"
|
||||||
|
y="-1286.5312"
|
||||||
|
id="text8872"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan8870"
|
||||||
|
x="0"
|
||||||
|
y="-1277.1675"
|
||||||
|
style="stroke-width:0.26458332" /></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||||
|
x="0"
|
||||||
|
y="-1269.8625"
|
||||||
|
id="text8876"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan8874"
|
||||||
|
x="0"
|
||||||
|
y="-1260.4988"
|
||||||
|
style="stroke-width:0.26458332" /></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||||
|
x="0"
|
||||||
|
y="196.98749"
|
||||||
|
id="text4641"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4639"
|
||||||
|
x="0"
|
||||||
|
y="206.35126"
|
||||||
|
style="stroke-width:0.26458332" /></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||||
|
x="0"
|
||||||
|
y="230.325"
|
||||||
|
id="text4649"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4647"
|
||||||
|
x="0"
|
||||||
|
y="239.68877"
|
||||||
|
style="stroke-width:0.26458332" /></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||||
|
x="0"
|
||||||
|
y="10.456248"
|
||||||
|
id="text4532"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4530"
|
||||||
|
x="0"
|
||||||
|
y="19.820017"
|
||||||
|
style="stroke-width:0.26458332" /></text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
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
|
||||||
|
|
|
@ -63,4 +63,4 @@
|
||||||
"id": "AutoBuild",
|
"id": "AutoBuild",
|
||||||
"mnemonic": "A"
|
"mnemonic": "A"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -1218,6 +1218,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
|
||||||
|
|
|
@ -1207,6 +1207,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
|
||||||
|
|
|
@ -1207,6 +1207,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
|
||||||
|
|
|
@ -1207,6 +1207,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
|
||||||
|
|
|
@ -1207,6 +1207,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
|
||||||
|
|
|
@ -1207,6 +1207,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
|
||||||
|
|
|
@ -1207,6 +1207,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
|
||||||
|
|
|
@ -1207,6 +1207,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
|
||||||
|
|
|
@ -1207,6 +1207,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
|
||||||
|
|
|
@ -1207,6 +1207,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
|
||||||
|
|
|
@ -1207,6 +1207,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
|
||||||
|
|
|
@ -1207,6 +1207,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
|
||||||
|
|
|
@ -1207,6 +1207,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
|
||||||
|
|
|
@ -1207,6 +1207,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
|
||||||
|
|
Reference in a new issue