update code base to Marlin 2.0.9.2
This commit is contained in:
40
Marlin/src/lcd/HD44780/lcdprint_hd44780.cpp
Executable file → Normal file
40
Marlin/src/lcd/HD44780/lcdprint_hd44780.cpp
Executable file → Normal file
@@ -1,3 +1,25 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file lcdprint_hd44780.cpp
|
||||
* @brief LCD print api for HD44780
|
||||
@@ -14,19 +36,15 @@
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if HAS_CHARACTER_LCD
|
||||
#if HAS_MARLINUI_HD44780
|
||||
|
||||
#include "../ultralcd.h"
|
||||
#include "../marlinui.h"
|
||||
#include "../../MarlinCore.h"
|
||||
|
||||
#include "ultralcd_HD44780.h"
|
||||
#include "marlinui_HD44780.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#ifndef LCD_CLASS
|
||||
#include <LiquidCrystal.h>
|
||||
#define LCD_CLASS LiquidCrystal
|
||||
#endif
|
||||
extern LCD_CLASS lcd;
|
||||
|
||||
int lcd_glyph_height() { return 1; }
|
||||
@@ -678,6 +696,8 @@ static const hd44780_charmap_t g_hd44780_charmap_common[] PROGMEM = {
|
||||
{IV('ď'), 'd', 0}, // 010F
|
||||
{IV('đ'), 'd', 0}, // 0111
|
||||
{IV('ę'), 'e', 0}, // 0119
|
||||
{IV('Ě'), 'E', 0}, // 011A
|
||||
{IV('ě'), 'e', 0}, // 011B
|
||||
{IV('ğ'), 'g', 0}, // 011F
|
||||
{IV('İ'), 'I', 0}, // 0130
|
||||
{IV('ı'), 'i', 0}, // 0131
|
||||
@@ -688,6 +708,7 @@ static const hd44780_charmap_t g_hd44780_charmap_common[] PROGMEM = {
|
||||
{IV('ń'), 'n', 0}, // 0144
|
||||
{IV('ň'), 'n', 0}, // 0148
|
||||
|
||||
{IV('Ř'), 'R', 0}, // 0158
|
||||
{IV('ř'), 'r', 0}, // 0159
|
||||
{IV('Ś'), 'S', 0}, // 015A
|
||||
{IV('ś'), 's', 0}, // 015B
|
||||
@@ -924,6 +945,7 @@ static const hd44780_charmap_t g_hd44780_charmap_common[] PROGMEM = {
|
||||
{IV('ю'), '|', 'o'},
|
||||
{IV('я'), 'g', 0}, // 044F
|
||||
{IV('ё'), 'e', 0}, // 0451
|
||||
|
||||
#endif
|
||||
|
||||
{IV('•'), '.', 0}, // 2022 ·
|
||||
@@ -982,7 +1004,7 @@ int lcd_put_wchar_max(wchar_t c, pixel_len_t max_length) {
|
||||
|
||||
if (max_length < 1) return 0;
|
||||
|
||||
// TODO: fix the '\\' that doesnt exist in the HD44870
|
||||
// TODO: fix the '\\' that doesn't exist in the HD44870
|
||||
if (c < 128) {
|
||||
lcd.write((uint8_t)c);
|
||||
return 1;
|
||||
@@ -1119,4 +1141,4 @@ int lcd_put_u8str_max_P(PGM_P utf8_str_P, pixel_len_t max_length) {
|
||||
|
||||
#endif // DEBUG_LCDPRINT
|
||||
|
||||
#endif // HAS_CHARACTER_LCD
|
||||
#endif // HAS_MARLINUI_HD44780
|
||||
|
||||
404
Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp → Marlin/src/lcd/HD44780/marlinui_HD44780.cpp
Executable file → Normal file
404
Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp → Marlin/src/lcd/HD44780/marlinui_HD44780.cpp
Executable file → Normal file
@@ -16,23 +16,23 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if HAS_CHARACTER_LCD
|
||||
#if HAS_MARLINUI_HD44780
|
||||
|
||||
/**
|
||||
* ultralcd_HD44780.cpp
|
||||
* marlinui_HD44780.cpp
|
||||
*
|
||||
* LCD display implementations for Hitachi HD44780.
|
||||
* These are the most common LCD character displays.
|
||||
*/
|
||||
|
||||
#include "ultralcd_HD44780.h"
|
||||
#include "../ultralcd.h"
|
||||
#include "marlinui_HD44780.h"
|
||||
#include "../marlinui.h"
|
||||
#include "../../libs/numtostr.h"
|
||||
|
||||
#include "../../sd/cardreader.h"
|
||||
@@ -46,6 +46,14 @@
|
||||
#include "../../gcode/parser.h"
|
||||
#endif
|
||||
|
||||
#if EITHER(HAS_COOLER, LASER_COOLANT_FLOW_METER)
|
||||
#include "../../feature/cooler.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(I2C_AMMETER)
|
||||
#include "../../feature/ammeter.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||
#include "../../feature/bedlevel/bedlevel.h"
|
||||
#endif
|
||||
@@ -60,11 +68,7 @@
|
||||
|
||||
#elif EITHER(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008)
|
||||
|
||||
LCD_CLASS lcd(LCD_I2C_ADDRESS
|
||||
#ifdef DETECT_DEVICE
|
||||
, 1
|
||||
#endif
|
||||
);
|
||||
LCD_CLASS lcd(LCD_I2C_ADDRESS OPTARG(DETECT_I2C_LCD_DEVICE, 1));
|
||||
|
||||
#elif ENABLED(LCD_I2C_TYPE_PCA8574)
|
||||
|
||||
@@ -93,6 +97,10 @@
|
||||
|
||||
LCD_CLASS lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
|
||||
|
||||
#elif ENABLED(YHCB2004)
|
||||
|
||||
LCD_CLASS lcd(YHCB2004_CLK, 20, 4, YHCB2004_MOSI, YHCB2004_MISO); // CLK, cols, rows, MOSI, MISO
|
||||
|
||||
#else
|
||||
|
||||
// Standard direct-connected LCD implementations
|
||||
@@ -113,6 +121,7 @@ static void createChar_P(const char c, const byte * const ptr) {
|
||||
|
||||
#if ENABLED(LCD_USE_I2C_BUZZER)
|
||||
void MarlinUI::buzz(const long duration, const uint16_t freq) {
|
||||
if (!buzzer_enabled) return;
|
||||
lcd.buzz(duration, freq);
|
||||
}
|
||||
#endif
|
||||
@@ -275,7 +284,7 @@ void MarlinUI::set_custom_characters(const HD44780CharSet screen_charset/*=CHARS
|
||||
|
||||
#endif // LCD_PROGRESS_BAR
|
||||
|
||||
#if ENABLED(SDSUPPORT) && HAS_LCD_MENU
|
||||
#if BOTH(SDSUPPORT, HAS_LCD_MENU)
|
||||
|
||||
// CHARSET_MENU
|
||||
const static PROGMEM byte refresh[8] = {
|
||||
@@ -325,7 +334,7 @@ void MarlinUI::set_custom_characters(const HD44780CharSet screen_charset/*=CHARS
|
||||
#endif
|
||||
{
|
||||
createChar_P(LCD_STR_UPLEVEL[0], uplevel);
|
||||
#if ENABLED(SDSUPPORT) && HAS_LCD_MENU
|
||||
#if BOTH(SDSUPPORT, HAS_LCD_MENU)
|
||||
// SD Card sub-menu special characters
|
||||
createChar_P(LCD_STR_REFRESH[0], refresh);
|
||||
createChar_P(LCD_STR_FOLDER[0], folder);
|
||||
@@ -367,11 +376,7 @@ void MarlinUI::init_lcd() {
|
||||
}
|
||||
|
||||
bool MarlinUI::detected() {
|
||||
return true
|
||||
#if EITHER(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008) && defined(DETECT_DEVICE)
|
||||
&& lcd.LcdDetected() == 1
|
||||
#endif
|
||||
;
|
||||
return TERN1(DETECT_I2C_LCD_DEVICE, lcd.LcdDetected() == 1);
|
||||
}
|
||||
|
||||
#if HAS_SLOW_BUTTONS
|
||||
@@ -470,7 +475,6 @@ void MarlinUI::clear_lcd() { lcd.clear(); }
|
||||
// Show the Marlin logo and short build version
|
||||
// After a delay show the website URL
|
||||
//
|
||||
extern const char NUL_STR[];
|
||||
logo_lines(NUL_STR);
|
||||
CENTER_OR_SCROLL(SHORT_BUILD_VERSION, 1500);
|
||||
CENTER_OR_SCROLL(MARLIN_WEBSITE_URL, 1500);
|
||||
@@ -478,7 +482,9 @@ void MarlinUI::clear_lcd() { lcd.clear(); }
|
||||
CENTER_OR_SCROLL(STRING_SPLASH_LINE3, 1500);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void MarlinUI::bootscreen_completion(const millis_t) {
|
||||
lcd.clear();
|
||||
safe_delay(100);
|
||||
set_custom_characters(CHARSET_INFO);
|
||||
@@ -505,52 +511,40 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const
|
||||
lcd_put_wchar('X' + uint8_t(axis));
|
||||
if (blink)
|
||||
lcd_put_u8str(value);
|
||||
else {
|
||||
if (!TEST(axis_homed, axis))
|
||||
while (const char c = *value++) lcd_put_wchar(c <= '.' ? c : '?');
|
||||
else {
|
||||
#if NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING)
|
||||
if (!TEST(axis_known_position, axis))
|
||||
lcd_put_u8str_P(axis == Z_AXIS ? PSTR(" ") : PSTR(" "));
|
||||
else
|
||||
#endif
|
||||
lcd_put_u8str(value);
|
||||
}
|
||||
}
|
||||
else if (axis_should_home(axis))
|
||||
while (const char c = *value++) lcd_put_wchar(c <= '.' ? c : '?');
|
||||
else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !axis_is_trusted(axis))
|
||||
lcd_put_u8str_P(axis == Z_AXIS ? PSTR(" ") : PSTR(" "));
|
||||
else
|
||||
lcd_put_u8str(value);
|
||||
}
|
||||
|
||||
FORCE_INLINE void _draw_heater_status(const heater_ind_t heater, const char prefix, const bool blink) {
|
||||
|
||||
FORCE_INLINE void _draw_heater_status(const heater_id_t heater_id, const char prefix, const bool blink) {
|
||||
#if HAS_HEATED_BED
|
||||
const bool isBed = heater < 0;
|
||||
const float t1 = (isBed ? thermalManager.degBed() : thermalManager.degHotend(heater)),
|
||||
t2 = (isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater));
|
||||
const bool isBed = TERN(HAS_HEATED_CHAMBER, heater_id == H_BED, heater_id < 0);
|
||||
const celsius_t t1 = (isBed ? thermalManager.wholeDegBed() : thermalManager.wholeDegHotend(heater_id)),
|
||||
t2 = (isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater_id));
|
||||
#else
|
||||
const float t1 = thermalManager.degHotend(heater), t2 = thermalManager.degTargetHotend(heater);
|
||||
const celsius_t t1 = thermalManager.wholeDegHotend(heater_id), t2 = thermalManager.degTargetHotend(heater_id);
|
||||
#endif
|
||||
|
||||
if (prefix >= 0) lcd_put_wchar(prefix);
|
||||
|
||||
lcd_put_u8str(i16tostr3rj(t1 + 0.5));
|
||||
lcd_put_u8str(t1 < 0 ? "err" : i16tostr3rj(t1));
|
||||
lcd_put_wchar('/');
|
||||
|
||||
#if !HEATER_IDLE_HANDLER
|
||||
UNUSED(blink);
|
||||
#else
|
||||
const bool is_idle = (
|
||||
#if HAS_HEATED_BED
|
||||
isBed ? thermalManager.bed_idle.timed_out :
|
||||
#endif
|
||||
thermalManager.hotend_idle[heater].timed_out
|
||||
);
|
||||
|
||||
if (!blink && is_idle) {
|
||||
if (!blink && thermalManager.heater_idle[thermalManager.idle_index_for_id(heater_id)].timed_out) {
|
||||
lcd_put_wchar(' ');
|
||||
if (t2 >= 10) lcd_put_wchar(' ');
|
||||
if (t2 >= 100) lcd_put_wchar(' ');
|
||||
}
|
||||
else
|
||||
#endif
|
||||
lcd_put_u8str(i16tostr3left(t2 + 0.5));
|
||||
lcd_put_u8str(i16tostr3left(t2));
|
||||
|
||||
if (prefix >= 0) {
|
||||
lcd_put_wchar(LCD_STR_DEGREE[0]);
|
||||
@@ -559,28 +553,67 @@ FORCE_INLINE void _draw_heater_status(const heater_ind_t heater, const char pref
|
||||
}
|
||||
}
|
||||
|
||||
#if HAS_COOLER
|
||||
FORCE_INLINE void _draw_cooler_status(const char prefix, const bool blink) {
|
||||
const celsius_t t2 = thermalManager.degTargetCooler();
|
||||
|
||||
if (prefix >= 0) lcd_put_wchar(prefix);
|
||||
|
||||
lcd_put_u8str(i16tostr3rj(thermalManager.wholeDegCooler()));
|
||||
lcd_put_wchar('/');
|
||||
|
||||
#if !HEATER_IDLE_HANDLER
|
||||
UNUSED(blink);
|
||||
#else
|
||||
if (!blink && thermalManager.heater_idle[thermalManager.idle_index_for_id(heater_id)].timed_out) {
|
||||
lcd_put_wchar(' ');
|
||||
if (t2 >= 10) lcd_put_wchar(' ');
|
||||
if (t2 >= 100) lcd_put_wchar(' ');
|
||||
}
|
||||
else
|
||||
#endif
|
||||
lcd_put_u8str(i16tostr3left(t2));
|
||||
|
||||
if (prefix >= 0) {
|
||||
lcd_put_wchar(LCD_STR_DEGREE[0]);
|
||||
lcd_put_wchar(' ');
|
||||
if (t2 < 10) lcd_put_wchar(' ');
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if ENABLED(LASER_COOLANT_FLOW_METER)
|
||||
FORCE_INLINE void _draw_flowmeter_status() {
|
||||
lcd_put_u8str("~");
|
||||
lcd_put_u8str(ftostr11ns(cooler.flowrate));
|
||||
lcd_put_wchar('L');
|
||||
}
|
||||
#endif
|
||||
|
||||
#if ENABLED(I2C_AMMETER)
|
||||
FORCE_INLINE void _draw_ammeter_status() {
|
||||
lcd_put_u8str(" ");
|
||||
ammeter.read();
|
||||
if (ammeter.current <= 0.999f) {
|
||||
lcd_put_u8str(ui16tostr3rj(uint16_t(ammeter.current * 1000 + 0.5f)));
|
||||
lcd_put_u8str("mA");
|
||||
}
|
||||
else {
|
||||
lcd_put_u8str(ftostr12ns(ammeter.current));
|
||||
lcd_put_wchar('A');
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
FORCE_INLINE void _draw_bed_status(const bool blink) {
|
||||
_draw_heater_status(H_BED, (
|
||||
#if HAS_LEVELING
|
||||
planner.leveling_active && blink ? '_' :
|
||||
#endif
|
||||
LCD_STR_BEDTEMP[0]
|
||||
),
|
||||
blink
|
||||
);
|
||||
_draw_heater_status(H_BED, TERN0(HAS_LEVELING, blink && planner.leveling_active) ? '_' : LCD_STR_BEDTEMP[0], blink);
|
||||
}
|
||||
|
||||
#if HAS_PRINT_PROGRESS
|
||||
|
||||
FORCE_INLINE void _draw_print_progress() {
|
||||
const uint8_t progress = ui.get_progress_percent();
|
||||
lcd_put_u8str_P(PSTR(
|
||||
#if ENABLED(SDSUPPORT)
|
||||
"SD"
|
||||
#elif ENABLED(LCD_SET_PROGRESS_MANUALLY)
|
||||
"P:"
|
||||
#endif
|
||||
));
|
||||
lcd_put_u8str_P(PSTR(TERN(SDSUPPORT, "SD", "P:")));
|
||||
if (progress)
|
||||
lcd_put_u8str(ui8tostr3rj(progress));
|
||||
else
|
||||
@@ -593,9 +626,9 @@ FORCE_INLINE void _draw_bed_status(const bool blink) {
|
||||
#if ENABLED(LCD_PROGRESS_BAR)
|
||||
|
||||
void MarlinUI::draw_progress_bar(const uint8_t percent) {
|
||||
const int16_t tix = (int16_t)(percent * (LCD_WIDTH) * 3) / 100,
|
||||
cel = tix / 3,
|
||||
rem = tix % 3;
|
||||
const int16_t tix = int16_t(percent * (LCD_WIDTH) * 3) / 100,
|
||||
cel = tix / 3,
|
||||
rem = tix % 3;
|
||||
uint8_t i = LCD_WIDTH;
|
||||
char msg[LCD_WIDTH + 1], b = ' ';
|
||||
msg[LCD_WIDTH] = '\0';
|
||||
@@ -664,12 +697,15 @@ void MarlinUI::draw_status_message(const bool blink) {
|
||||
|
||||
// If the remaining string doesn't completely fill the screen
|
||||
if (rlen < LCD_WIDTH) {
|
||||
lcd_put_wchar('.'); // Always at 1+ spaces left, draw a dot
|
||||
uint8_t chars = LCD_WIDTH - rlen; // Amount of space left in characters
|
||||
if (--chars) { // Draw a second dot if there's space
|
||||
lcd_put_wchar('.');
|
||||
if (--chars)
|
||||
lcd_put_u8str_max(status_message, chars); // Print a second copy of the message
|
||||
lcd_put_wchar(' '); // Always at 1+ spaces left, draw a space
|
||||
if (--chars) { // Draw a second space if there's room
|
||||
lcd_put_wchar(' ');
|
||||
if (--chars) { // Draw a third space if there's room
|
||||
lcd_put_wchar(' ');
|
||||
if (--chars)
|
||||
lcd_put_u8str_max(status_message, chars); // Print a second copy of the message
|
||||
}
|
||||
}
|
||||
}
|
||||
if (last_blink != blink) {
|
||||
@@ -726,6 +762,35 @@ void MarlinUI::draw_status_message(const bool blink) {
|
||||
* |01234567890123456789|
|
||||
*/
|
||||
|
||||
inline uint8_t draw_elapsed_or_remaining_time(uint8_t timepos, const bool blink) {
|
||||
char buffer[14];
|
||||
|
||||
#if ENABLED(SHOW_REMAINING_TIME)
|
||||
const bool show_remain = TERN1(ROTATE_PROGRESS_DISPLAY, blink) && printingIsActive();
|
||||
if (show_remain) {
|
||||
#if ENABLED(USE_M73_REMAINING_TIME)
|
||||
duration_t remaining = ui.get_remaining_time();
|
||||
#else
|
||||
uint8_t progress = ui.get_progress_percent();
|
||||
uint32_t elapsed = print_job_timer.duration();
|
||||
duration_t remaining = (progress > 0) ? ((elapsed * 25600 / progress) >> 8) - elapsed : 0;
|
||||
#endif
|
||||
timepos -= remaining.toDigital(buffer);
|
||||
lcd_put_wchar(timepos, 2, 'R');
|
||||
}
|
||||
#else
|
||||
constexpr bool show_remain = false;
|
||||
#endif
|
||||
|
||||
if (!show_remain) {
|
||||
duration_t elapsed = print_job_timer.duration();
|
||||
timepos -= elapsed.toDigital(buffer);
|
||||
lcd_put_wchar(timepos, 2, LCD_STR_CLOCK[0]);
|
||||
}
|
||||
lcd_put_u8str(buffer);
|
||||
return timepos;
|
||||
}
|
||||
|
||||
void MarlinUI::draw_status_screen() {
|
||||
|
||||
const bool blink = get_blink();
|
||||
@@ -740,17 +805,19 @@ void MarlinUI::draw_status_screen() {
|
||||
//
|
||||
// Hotend 0 Temperature
|
||||
//
|
||||
_draw_heater_status(H_E0, -1, blink);
|
||||
#if HAS_HOTEND
|
||||
_draw_heater_status(H_E0, -1, blink);
|
||||
|
||||
//
|
||||
// Hotend 1 or Bed Temperature
|
||||
//
|
||||
#if HOTENDS > 1
|
||||
lcd_moveto(8, 0);
|
||||
_draw_heater_status(H_E1, LCD_STR_THERMOMETER[0], blink);
|
||||
#elif HAS_HEATED_BED
|
||||
lcd_moveto(8, 0);
|
||||
_draw_bed_status(blink);
|
||||
//
|
||||
// Hotend 1 or Bed Temperature
|
||||
//
|
||||
#if HAS_MULTI_HOTEND
|
||||
lcd_moveto(8, 0);
|
||||
_draw_heater_status(H_E1, LCD_STR_THERMOMETER[0], blink);
|
||||
#elif HAS_HEATED_BED
|
||||
lcd_moveto(8, 0);
|
||||
_draw_bed_status(blink);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#else // LCD_WIDTH >= 20
|
||||
@@ -758,19 +825,25 @@ void MarlinUI::draw_status_screen() {
|
||||
//
|
||||
// Hotend 0 Temperature
|
||||
//
|
||||
_draw_heater_status(H_E0, LCD_STR_THERMOMETER[0], blink);
|
||||
#if HAS_HOTEND
|
||||
_draw_heater_status(H_E0, LCD_STR_THERMOMETER[0], blink);
|
||||
|
||||
//
|
||||
// Hotend 1 or Bed Temperature
|
||||
//
|
||||
#if HOTENDS > 1
|
||||
lcd_moveto(10, 0);
|
||||
_draw_heater_status(H_E1, LCD_STR_THERMOMETER[0], blink);
|
||||
#elif HAS_HEATED_BED
|
||||
lcd_moveto(10, 0);
|
||||
_draw_bed_status(blink);
|
||||
//
|
||||
// Hotend 1 or Bed Temperature
|
||||
//
|
||||
#if HAS_MULTI_HOTEND
|
||||
lcd_moveto(10, 0);
|
||||
_draw_heater_status(H_E1, LCD_STR_THERMOMETER[0], blink);
|
||||
#elif HAS_HEATED_BED
|
||||
lcd_moveto(10, 0);
|
||||
_draw_bed_status(blink);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
TERN_(HAS_COOLER, _draw_cooler_status('*', blink));
|
||||
TERN_(LASER_COOLANT_FLOW_METER, _draw_flowmeter_status());
|
||||
TERN_(I2C_AMMETER, _draw_ammeter_status());
|
||||
|
||||
#endif // LCD_WIDTH >= 20
|
||||
|
||||
// ========== Line 2 ==========
|
||||
@@ -791,7 +864,7 @@ void MarlinUI::draw_status_screen() {
|
||||
// If the first line has two extruder temps,
|
||||
// show more temperatures on the next line
|
||||
|
||||
#if HOTENDS > 2 || (HOTENDS > 1 && HAS_HEATED_BED)
|
||||
#if HOTENDS > 2 || (HAS_MULTI_HOTEND && HAS_HEATED_BED)
|
||||
|
||||
#if HOTENDS > 2
|
||||
_draw_heater_status(H_E2, LCD_STR_THERMOMETER[0], blink);
|
||||
@@ -802,7 +875,7 @@ void MarlinUI::draw_status_screen() {
|
||||
|
||||
#else // HOTENDS <= 2 && (HOTENDS <= 1 || !HAS_HEATED_BED)
|
||||
|
||||
#if DUAL_MIXING_EXTRUDER
|
||||
#if HAS_DUAL_MIXING
|
||||
|
||||
// Two-component mix / gradient instead of XY
|
||||
|
||||
@@ -822,19 +895,11 @@ void MarlinUI::draw_status_screen() {
|
||||
sprintf_P(mixer_messages, PSTR("%s %d;%d%% "), mix_label, int(mixer.mix[0]), int(mixer.mix[1]));
|
||||
lcd_put_u8str(mixer_messages);
|
||||
|
||||
#else // !DUAL_MIXING_EXTRUDER
|
||||
#else // !HAS_DUAL_MIXING
|
||||
|
||||
if (true
|
||||
#if ENABLED(LCD_SHOW_E_TOTAL)
|
||||
&& !printingIsActive()
|
||||
#endif
|
||||
) {
|
||||
const xy_pos_t lpos = current_position.asLogical();
|
||||
_draw_axis_value(X_AXIS, ftostr4sign(lpos.x), blink);
|
||||
lcd_put_wchar(' ');
|
||||
_draw_axis_value(Y_AXIS, ftostr4sign(lpos.y), blink);
|
||||
}
|
||||
else {
|
||||
const bool show_e_total = TERN0(LCD_SHOW_E_TOTAL, printingIsActive());
|
||||
|
||||
if (show_e_total) {
|
||||
#if ENABLED(LCD_SHOW_E_TOTAL)
|
||||
char tmp[20];
|
||||
const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm
|
||||
@@ -842,8 +907,14 @@ void MarlinUI::draw_status_screen() {
|
||||
lcd_put_u8str(tmp);
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
const xy_pos_t lpos = current_position.asLogical();
|
||||
_draw_axis_value(X_AXIS, ftostr4sign(lpos.x), blink);
|
||||
lcd_put_wchar(' ');
|
||||
_draw_axis_value(Y_AXIS, ftostr4sign(lpos.y), blink);
|
||||
}
|
||||
|
||||
#endif // !DUAL_MIXING_EXTRUDER
|
||||
#endif // !HAS_DUAL_MIXING
|
||||
|
||||
#endif // HOTENDS <= 2 && (HOTENDS <= 1 || !HAS_HEATED_BED)
|
||||
|
||||
@@ -866,12 +937,7 @@ void MarlinUI::draw_status_screen() {
|
||||
lcd_put_u8str(i16tostr3rj(feedrate_percentage));
|
||||
lcd_put_wchar('%');
|
||||
|
||||
char buffer[14];
|
||||
duration_t elapsed = print_job_timer.duration();
|
||||
const uint8_t len = elapsed.toDigital(buffer),
|
||||
timepos = LCD_WIDTH - len - 1;
|
||||
lcd_put_wchar(timepos, 2, LCD_STR_CLOCK[0]);
|
||||
lcd_put_u8str(buffer);
|
||||
const uint8_t timepos = draw_elapsed_or_remaining_time(LCD_WIDTH - 1, blink);
|
||||
|
||||
#if LCD_WIDTH >= 20
|
||||
lcd_moveto(timepos - 7, 2);
|
||||
@@ -891,12 +957,12 @@ void MarlinUI::draw_status_screen() {
|
||||
#if ENABLED(ADAPTIVE_FAN_SLOWING)
|
||||
else { c = '*'; spd = thermalManager.scaledFanSpeed(0, spd); }
|
||||
#endif
|
||||
per = thermalManager.fanPercent(spd);
|
||||
per = thermalManager.pwmToPercent(spd);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
#if EXTRUDERS
|
||||
#if HAS_EXTRUDERS
|
||||
c = 'E';
|
||||
per = planner.flow_percentage[0];
|
||||
#endif
|
||||
@@ -924,7 +990,7 @@ void MarlinUI::draw_status_screen() {
|
||||
lcd_moveto(LCD_WIDTH - 9, 0);
|
||||
_draw_axis_value(Z_AXIS, ftostr52sp(LOGICAL_Z_POSITION(current_position.z)), blink);
|
||||
|
||||
#if HAS_LEVELING && (HOTENDS > 1 || !HAS_HEATED_BED)
|
||||
#if HAS_LEVELING && (HAS_MULTI_HOTEND || !HAS_HEATED_BED)
|
||||
lcd_put_wchar(LCD_WIDTH - 1, 0, planner.leveling_active || blink ? '_' : ' ');
|
||||
#endif
|
||||
|
||||
@@ -934,7 +1000,7 @@ void MarlinUI::draw_status_screen() {
|
||||
// Hotend 1 or Bed Temperature
|
||||
//
|
||||
lcd_moveto(0, 1);
|
||||
#if HOTENDS > 1
|
||||
#if HAS_MULTI_HOTEND
|
||||
_draw_heater_status(H_E1, LCD_STR_THERMOMETER[0], blink);
|
||||
#elif HAS_HEATED_BED
|
||||
_draw_bed_status(blink);
|
||||
@@ -952,10 +1018,10 @@ void MarlinUI::draw_status_screen() {
|
||||
lcd_moveto(0, 2);
|
||||
#if HOTENDS > 2
|
||||
_draw_heater_status(H_E2, LCD_STR_THERMOMETER[0], blink);
|
||||
#elif HOTENDS > 1 && HAS_HEATED_BED
|
||||
#elif HAS_MULTI_HOTEND && HAS_HEATED_BED
|
||||
_draw_bed_status(blink);
|
||||
#elif HAS_PRINT_PROGRESS
|
||||
#define DREW_PRINT_PROGRESS
|
||||
#define DREW_PRINT_PROGRESS 1
|
||||
_draw_print_progress();
|
||||
#endif
|
||||
|
||||
@@ -963,14 +1029,15 @@ void MarlinUI::draw_status_screen() {
|
||||
// Elapsed Time or SD Percent
|
||||
//
|
||||
lcd_moveto(LCD_WIDTH - 9, 2);
|
||||
#if HAS_PRINT_PROGRESS && !defined(DREW_PRINT_PROGRESS)
|
||||
|
||||
#if HAS_PRINT_PROGRESS && !DREW_PRINT_PROGRESS
|
||||
|
||||
_draw_print_progress();
|
||||
|
||||
#else
|
||||
duration_t elapsed = print_job_timer.duration();
|
||||
char buffer[14];
|
||||
(void)elapsed.toDigital(buffer);
|
||||
lcd_put_wchar(LCD_STR_CLOCK[0]);
|
||||
lcd_put_u8str(buffer);
|
||||
|
||||
(void)draw_elapsed_or_remaining_time(LCD_WIDTH - 4, blink);
|
||||
|
||||
#endif
|
||||
|
||||
#endif // LCD_INFO_SCREEN_STYLE 1
|
||||
@@ -992,55 +1059,56 @@ void MarlinUI::draw_status_screen() {
|
||||
void MarlinUI::draw_hotend_status(const uint8_t row, const uint8_t extruder) {
|
||||
if (row < LCD_HEIGHT) {
|
||||
lcd_moveto(LCD_WIDTH - 9, row);
|
||||
_draw_heater_status((heater_ind_t)extruder, LCD_STR_THERMOMETER[0], get_blink());
|
||||
_draw_heater_status((heater_id_t)extruder, LCD_STR_THERMOMETER[0], get_blink());
|
||||
}
|
||||
}
|
||||
|
||||
#endif // ADVANCED_PAUSE_FEATURE
|
||||
|
||||
// Draw a static item with no left-right margin required. Centered by default.
|
||||
void MenuItem_static::draw(const uint8_t row, PGM_P const pstr, const uint8_t style/*=SS_DEFAULT*/, const char * const valstr/*=nullptr*/) {
|
||||
void MenuItem_static::draw(const uint8_t row, PGM_P const pstr, const uint8_t style/*=SS_DEFAULT*/, const char * const vstr/*=nullptr*/) {
|
||||
int8_t n = LCD_WIDTH;
|
||||
lcd_moveto(0, row);
|
||||
if ((style & SS_CENTER) && !valstr) {
|
||||
int8_t pad = (LCD_WIDTH - utf8_strlen_P(pstr)) / 2;
|
||||
const int8_t plen = pstr ? utf8_strlen_P(pstr) : 0,
|
||||
vlen = vstr ? utf8_strlen(vstr) : 0;
|
||||
if (style & SS_CENTER) {
|
||||
int8_t pad = (LCD_WIDTH - plen - vlen) / 2;
|
||||
while (--pad >= 0) { lcd_put_wchar(' '); n--; }
|
||||
}
|
||||
n = lcd_put_u8str_ind_P(pstr, itemIndex, n);
|
||||
if (valstr) n -= lcd_put_u8str_max(valstr, n);
|
||||
if (plen) n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, n);
|
||||
if (vlen) n -= lcd_put_u8str_max(vstr, n);
|
||||
for (; n > 0; --n) lcd_put_wchar(' ');
|
||||
}
|
||||
|
||||
// Draw a generic menu item with pre_char (if selected) and post_char
|
||||
void MenuItemBase::_draw(const bool sel, const uint8_t row, PGM_P const pstr, const char pre_char, const char post_char) {
|
||||
lcd_put_wchar(0, row, sel ? pre_char : ' ');
|
||||
uint8_t n = lcd_put_u8str_ind_P(pstr, itemIndex, LCD_WIDTH - 2);
|
||||
uint8_t n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, LCD_WIDTH - 2);
|
||||
for (; n; --n) lcd_put_wchar(' ');
|
||||
lcd_put_wchar(post_char);
|
||||
}
|
||||
|
||||
// Draw a menu item with a (potentially) editable value
|
||||
void MenuEditItemBase::draw(const bool sel, const uint8_t row, PGM_P const pstr, const char* const data, const bool pgm) {
|
||||
const uint8_t vlen = data ? (pgm ? utf8_strlen_P(data) : utf8_strlen(data)) : 0;
|
||||
void MenuEditItemBase::draw(const bool sel, const uint8_t row, PGM_P const pstr, const char * const inStr, const bool pgm) {
|
||||
const uint8_t vlen = inStr ? (pgm ? utf8_strlen_P(inStr) : utf8_strlen(inStr)) : 0;
|
||||
lcd_put_wchar(0, row, sel ? LCD_STR_ARROW_RIGHT[0] : ' ');
|
||||
uint8_t n = lcd_put_u8str_ind_P(pstr, itemIndex, LCD_WIDTH - 2 - vlen);
|
||||
uint8_t n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, LCD_WIDTH - 2 - vlen);
|
||||
if (vlen) {
|
||||
lcd_put_wchar(':');
|
||||
for (; n; --n) lcd_put_wchar(' ');
|
||||
if (pgm) lcd_put_u8str_P(data); else lcd_put_u8str(data);
|
||||
if (pgm) lcd_put_u8str_P(inStr); else lcd_put_u8str(inStr);
|
||||
}
|
||||
}
|
||||
|
||||
// Low-level draw_edit_screen can be used to draw an edit screen from anyplace
|
||||
void MenuEditItemBase::draw_edit_screen(PGM_P const pstr, const char* const value/*=nullptr*/) {
|
||||
void MenuEditItemBase::draw_edit_screen(PGM_P const pstr, const char * const value/*=nullptr*/) {
|
||||
ui.encoder_direction_normal();
|
||||
|
||||
uint8_t n = lcd_put_u8str_ind_P(0, 1, pstr, itemIndex, LCD_WIDTH - 1);
|
||||
if (value != nullptr) {
|
||||
lcd_put_wchar(':');
|
||||
int len = utf8_strlen(value);
|
||||
const lcd_uint_t valrow = (n < len + 1) ? 2 : 1; // Value on the next row if it won't fit
|
||||
lcd_put_wchar((LCD_WIDTH - 1) - (len + 1), valrow, ' '); // Right-justified, padded, leading space
|
||||
uint8_t n = lcd_put_u8str_ind_P(0, 1, pstr, itemIndex, itemString, LCD_WIDTH - 1);
|
||||
if (value) {
|
||||
lcd_put_wchar(':'); n--;
|
||||
const uint8_t len = utf8_strlen(value) + 1; // Plus one for a leading space
|
||||
const lcd_uint_t valrow = n < len ? 2 : 1; // Value on the next row if it won't fit
|
||||
lcd_put_wchar(LCD_WIDTH - len, valrow, ' '); // Right-justified, padded, leading space
|
||||
lcd_put_u8str(value);
|
||||
}
|
||||
}
|
||||
@@ -1073,46 +1141,22 @@ void MarlinUI::draw_status_screen() {
|
||||
static uint8_t ledsprev = 0;
|
||||
uint8_t leds = 0;
|
||||
|
||||
#if HAS_HEATED_BED
|
||||
if (thermalManager.degTargetBed() > 0) leds |= LED_A;
|
||||
#endif
|
||||
if (TERN0(HAS_HEATED_BED, thermalManager.degTargetBed() > 0)) leds |= LED_A;
|
||||
if (TERN0(HAS_HOTEND, thermalManager.degTargetHotend(0) > 0)) leds |= LED_B;
|
||||
|
||||
#if HOTENDS
|
||||
if (thermalManager.degTargetHotend(0) > 0) leds |= LED_B;
|
||||
#endif
|
||||
|
||||
#if FAN_COUNT > 0
|
||||
if (0
|
||||
#if HAS_FAN0
|
||||
|| thermalManager.fan_speed[0]
|
||||
#endif
|
||||
#if HAS_FAN1
|
||||
|| thermalManager.fan_speed[1]
|
||||
#endif
|
||||
#if HAS_FAN2
|
||||
|| thermalManager.fan_speed[2]
|
||||
#endif
|
||||
#if HAS_FAN3
|
||||
|| thermalManager.fan_speed[3]
|
||||
#endif
|
||||
#if HAS_FAN4
|
||||
|| thermalManager.fan_speed[4]
|
||||
#endif
|
||||
#if HAS_FAN5
|
||||
|| thermalManager.fan_speed[5]
|
||||
#endif
|
||||
#if HAS_FAN6
|
||||
|| thermalManager.fan_speed[6]
|
||||
#endif
|
||||
#if HAS_FAN7
|
||||
|| thermalManager.fan_speed[7]
|
||||
#endif
|
||||
#if HAS_FAN
|
||||
if ( TERN0(HAS_FAN0, thermalManager.fan_speed[0])
|
||||
|| TERN0(HAS_FAN1, thermalManager.fan_speed[1])
|
||||
|| TERN0(HAS_FAN2, thermalManager.fan_speed[2])
|
||||
|| TERN0(HAS_FAN3, thermalManager.fan_speed[3])
|
||||
|| TERN0(HAS_FAN4, thermalManager.fan_speed[4])
|
||||
|| TERN0(HAS_FAN5, thermalManager.fan_speed[5])
|
||||
|| TERN0(HAS_FAN6, thermalManager.fan_speed[6])
|
||||
|| TERN0(HAS_FAN7, thermalManager.fan_speed[7])
|
||||
) leds |= LED_C;
|
||||
#endif // FAN_COUNT > 0
|
||||
#endif // HAS_FAN
|
||||
|
||||
#if HOTENDS > 1
|
||||
if (thermalManager.degTargetHotend(1) > 0) leds |= LED_C;
|
||||
#endif
|
||||
if (TERN0(HAS_MULTI_HOTEND, thermalManager.degTargetHotend(1) > 0)) leds |= LED_C;
|
||||
|
||||
if (leds != ledsprev) {
|
||||
lcd.setBacklight(leds);
|
||||
@@ -1248,7 +1292,7 @@ void MarlinUI::draw_status_screen() {
|
||||
pixels_per_x_mesh_pnt, pixels_per_y_mesh_pnt,
|
||||
suppress_x_offset = 0, suppress_y_offset = 0;
|
||||
|
||||
const uint8_t y_plot_inv = (GRID_MAX_POINTS_Y - 1) - y_plot;
|
||||
const uint8_t y_plot_inv = (GRID_MAX_POINTS_Y) - 1 - y_plot;
|
||||
|
||||
upper_left.column = 0;
|
||||
upper_left.row = 0;
|
||||
@@ -1277,7 +1321,7 @@ void MarlinUI::draw_status_screen() {
|
||||
y_map_pixels = pixels_per_y_mesh_pnt * (GRID_MAX_POINTS_Y); // Directions fit nicely
|
||||
|
||||
right_edge = pixels_per_x_mesh_pnt * (GRID_MAX_POINTS_X) + 1; // Find location of right edge within the character cell
|
||||
bottom_line = pixels_per_y_mesh_pnt * (GRID_MAX_POINTS_Y) + 1; // Find location of bottome line within the character cell
|
||||
bottom_line = pixels_per_y_mesh_pnt * (GRID_MAX_POINTS_Y) + 1; // Find location of bottom line within the character cell
|
||||
|
||||
n_rows = bottom_line / (HD44780_CHAR_HEIGHT) + 1;
|
||||
n_cols = right_edge / (HD44780_CHAR_WIDTH) + 1;
|
||||
@@ -1541,4 +1585,4 @@ void MarlinUI::draw_status_screen() {
|
||||
|
||||
#endif // HAS_LCD_MENU
|
||||
|
||||
#endif // HAS_CHARACTER_LCD
|
||||
#endif // HAS_MARLINUI_HD44780
|
||||
38
Marlin/src/lcd/HD44780/ultralcd_HD44780.h → Marlin/src/lcd/HD44780/marlinui_HD44780.h
Executable file → Normal file
38
Marlin/src/lcd/HD44780/ultralcd_HD44780.h → Marlin/src/lcd/HD44780/marlinui_HD44780.h
Executable file → Normal file
@@ -16,32 +16,19 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* Implementation of the LCD display routines for a Hitachi HD44780 display.
|
||||
* These are the most common LCD character displays.
|
||||
* Hitachi HD44780 display defines and headers
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
|
||||
#if LCD_HEIGHT > 3
|
||||
#include "../../libs/duration_t.h"
|
||||
#endif
|
||||
|
||||
////////////////////////////////////
|
||||
// Setup button and encode mappings for each panel (into 'buttons' variable
|
||||
//
|
||||
// This is just to map common functions (across different panels) onto the same
|
||||
// macro name. The mapping is independent of whether the button is directly connected or
|
||||
// via a shift/i2c register.
|
||||
|
||||
////////////////////////////////////
|
||||
// Create LCD class instance and chipset-specific information
|
||||
#if ENABLED(LCD_I2C_TYPE_PCF8575)
|
||||
|
||||
// NOTE: These are register-mapped pins on the PCF8575 controller, not Arduino pins.
|
||||
#define LCD_I2C_PIN_BL 3
|
||||
#define LCD_I2C_PIN_EN 2
|
||||
@@ -58,6 +45,7 @@
|
||||
#define LCD_CLASS LiquidCrystal_I2C
|
||||
|
||||
#elif ENABLED(LCD_I2C_TYPE_MCP23017)
|
||||
|
||||
// For the LED indicators (which may be mapped to different events in update_indicators())
|
||||
#define LCD_HAS_STATUS_INDICATORS
|
||||
#define LED_A 0x04 //100
|
||||
@@ -69,40 +57,50 @@
|
||||
#define LCD_CLASS LiquidTWI2
|
||||
|
||||
#elif ENABLED(LCD_I2C_TYPE_MCP23008)
|
||||
|
||||
#include <Wire.h>
|
||||
#include <LiquidTWI2.h>
|
||||
#define LCD_CLASS LiquidTWI2
|
||||
|
||||
#elif ENABLED(LCD_I2C_TYPE_PCA8574)
|
||||
|
||||
#include <LiquidCrystal_I2C.h>
|
||||
#define LCD_CLASS LiquidCrystal_I2C
|
||||
|
||||
#elif ENABLED(SR_LCD_2W_NL)
|
||||
|
||||
// 2 wire Non-latching LCD SR from:
|
||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||
// extern "C" void __cxa_pure_virtual() { while (1); }
|
||||
#include <LCD.h>
|
||||
#include <LiquidCrystal_SR.h>
|
||||
#define LCD_CLASS LiquidCrystal_SR
|
||||
|
||||
#elif ENABLED(SR_LCD_3W_NL)
|
||||
|
||||
//NewLiquidCrystal was not working for me, but this worked first try
|
||||
//https://github.com/mikeshub/SailfishLCD
|
||||
//uses the code directly from Sailfish
|
||||
// NewLiquidCrystal didn't work, so this uses
|
||||
// https://github.com/mikeshub/SailfishLCD
|
||||
|
||||
#include <SailfishLCD.h>
|
||||
#define LCD_CLASS LiquidCrystalSerial
|
||||
|
||||
#elif ENABLED(LCM1602)
|
||||
|
||||
#include <Wire.h>
|
||||
#include <LCD.h>
|
||||
#include <LiquidCrystal_I2C.h>
|
||||
#define LCD_CLASS LiquidCrystal_I2C
|
||||
|
||||
#elif ENABLED(YHCB2004)
|
||||
|
||||
#include <LiquidCrystal_AIP31068_SPI.h>
|
||||
#define LCD_CLASS LiquidCrystal_AIP31068_SPI
|
||||
|
||||
#else
|
||||
|
||||
// Standard directly connected LCD implementations
|
||||
#include <LiquidCrystal.h>
|
||||
#define LCD_CLASS LiquidCrystal
|
||||
|
||||
#endif
|
||||
|
||||
#include "../fontutils.h"
|
||||
1142
Marlin/src/lcd/TFTGLCD/lcdprint_TFTGLCD.cpp
Normal file
1142
Marlin/src/lcd/TFTGLCD/lcdprint_TFTGLCD.cpp
Normal file
File diff suppressed because it is too large
Load Diff
1089
Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp
Normal file
1089
Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp
Normal file
File diff suppressed because it is too large
Load Diff
72
Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.h
Normal file
72
Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.h
Normal file
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* Implementation of the LCD display routines for a TFT GLCD displays with external controller.
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
|
||||
#if IS_TFTGLCD_PANEL
|
||||
|
||||
#include "../../libs/duration_t.h"
|
||||
|
||||
////////////////////////////////////
|
||||
// Set up button and encode mappings for each panel (into 'buttons' variable)
|
||||
//
|
||||
// This is just to map common functions (across different panels) onto the same
|
||||
// macro name. The mapping is independent of whether the button is directly connected or
|
||||
// via a shift/i2c register.
|
||||
|
||||
////////////////////////////////////
|
||||
// Create LCD class instance and chipset-specific information
|
||||
class TFTGLCD {
|
||||
private:
|
||||
public:
|
||||
TFTGLCD();
|
||||
void clear_buffer();
|
||||
void clr_screen();
|
||||
void setCursor(uint8_t col, uint8_t row);
|
||||
void write(char c);
|
||||
void print(const char *line);
|
||||
void print_line();
|
||||
void print_screen();
|
||||
void redraw_screen();
|
||||
void setContrast(uint16_t contrast);
|
||||
};
|
||||
|
||||
extern TFTGLCD lcd;
|
||||
|
||||
#include "../fontutils.h"
|
||||
#include "../lcdprint.h"
|
||||
|
||||
// Use panel encoder - free old encoder pins
|
||||
#undef BTN_EN1
|
||||
#undef BTN_EN2
|
||||
#undef BTN_ENC
|
||||
|
||||
#ifndef EN_C
|
||||
#define EN_C 4 // for click
|
||||
#endif
|
||||
|
||||
#endif // IS_TFTGLCD_PANEL
|
||||
@@ -28,7 +28,6 @@
|
||||
#include "../gcode/parser.h"
|
||||
#include "../feature/e_parser.h"
|
||||
#include "../feature/pause.h"
|
||||
#include "../module/configuration_store.h"
|
||||
#include "../feature/bedlevel/bedlevel.h"
|
||||
#include "../feature/bedlevel/abl/abl.h"
|
||||
#include "../libs/buzzer.h"
|
||||
@@ -37,6 +36,8 @@
|
||||
#include "../module/temperature.h"
|
||||
#include "../module/motion.h"
|
||||
#include "../module/probe.h"
|
||||
#include "../module/settings.h"
|
||||
#include "../module/stepper.h"
|
||||
#include "../sd/cardreader.h"
|
||||
|
||||
#ifdef ANYCUBIC_TOUCHSCREEN
|
||||
@@ -66,10 +67,10 @@ char _conv[8];
|
||||
|
||||
void setupMyZoffset() {
|
||||
#if ENABLED(AUTO_BED_LEVELING_BILINEAR)
|
||||
SERIAL_ECHOPAIR("MEANL_L:", 0x55);
|
||||
SERIAL_ECHOPGM("MEANL_L:", 0x55);
|
||||
SAVE_zprobe_zoffset = probe.offset.z;
|
||||
#else
|
||||
SERIAL_ECHOPAIR("MEANL_L:", 0xaa);
|
||||
SERIAL_ECHOPGM("MEANL_L:", 0xaa);
|
||||
constexpr float dpo[] = NOZZLE_TO_PROBE_OFFSET;
|
||||
probe.offset.z = dpo[Z_AXIS];
|
||||
#endif
|
||||
@@ -334,7 +335,7 @@ void AnycubicTouchscreenClass::StartPrint()
|
||||
case 0:
|
||||
// no pause, just a regular start
|
||||
starttime = millis();
|
||||
card.startFileprint();
|
||||
card.startOrResumeFilePrinting();
|
||||
TFTstate = ANYCUBIC_TFT_STATE_SDPRINT;
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
|
||||
@@ -354,7 +355,7 @@ void AnycubicTouchscreenClass::StartPrint()
|
||||
wait_for_heatup = false;
|
||||
wait_for_user = false;
|
||||
starttime = millis();
|
||||
card.startFileprint(); // resume regularly
|
||||
card.startOrResumeFilePrinting(); // resume regularly
|
||||
TFTstate = ANYCUBIC_TFT_STATE_SDPRINT;
|
||||
ai3m_pause_state = 0;
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
@@ -476,7 +477,7 @@ inline void AnycubicTouchscreenClass::StopPrint()
|
||||
wait_for_heatup = false;
|
||||
IsParked = false;
|
||||
if(card.isFileOpen) {
|
||||
card.endFilePrint();
|
||||
card.endFilePrintNow();
|
||||
card.closefile();
|
||||
}
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
@@ -507,7 +508,7 @@ void AnycubicTouchscreenClass::FilamentChangeResume()
|
||||
wait_for_user = false;
|
||||
wait_for_heatup = false;
|
||||
// resume with proper progress state
|
||||
card.startFileprint();
|
||||
card.startOrResumeFilePrinting();
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("DEBUG: M108 Resume done");
|
||||
#endif
|
||||
@@ -566,7 +567,7 @@ void AnycubicTouchscreenClass::ReheatNozzle()
|
||||
void AnycubicTouchscreenClass::ParkAfterStop()
|
||||
{
|
||||
// only park the nozzle if homing was done before
|
||||
if (!axis_unhomed_error())
|
||||
if (!homing_needed_error())
|
||||
{
|
||||
// raize nozzle by 25mm respecting Z_MAX_POS
|
||||
do_blocking_move_to_z(_MIN(current_position[Z_AXIS] + 25, Z_MAX_POS), 5);
|
||||
@@ -1811,7 +1812,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
FlagResumFromOutage = true;
|
||||
|
||||
ResumingFlag = 1;
|
||||
card.startFileprint();
|
||||
card.startOrResumeFilePrinting();
|
||||
starttime = millis();
|
||||
HARDWARE_SERIAL_SUCC_START;
|
||||
}
|
||||
@@ -1872,7 +1873,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
)
|
||||
{
|
||||
quickstop_stepper();
|
||||
disable_all_steppers();
|
||||
stepper.disable_all_steppers();
|
||||
}
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
break;
|
||||
@@ -2105,7 +2106,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
|
||||
if ((!planner.movesplanned()) && (TFTstate != ANYCUBIC_TFT_STATE_SDPAUSE) && (TFTstate != ANYCUBIC_TFT_STATE_SDOUTAGE))
|
||||
{
|
||||
if (!all_axes_known())
|
||||
if (!all_axes_trusted())
|
||||
{
|
||||
queue.inject_P(PSTR("G28\n"));
|
||||
/*
|
||||
|
||||
224
Marlin/src/lcd/buttons.h
Normal file
224
Marlin/src/lcd/buttons.h
Normal file
@@ -0,0 +1,224 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "../inc/MarlinConfig.h"
|
||||
|
||||
#if ((!HAS_ADC_BUTTONS && IS_NEWPANEL) || BUTTONS_EXIST(EN1, EN2)) && !IS_TFTGLCD_PANEL
|
||||
#define HAS_ENCODER_WHEEL 1
|
||||
#endif
|
||||
#if HAS_ENCODER_WHEEL || ANY_BUTTON(ENC, BACK, UP, DWN, LFT, RT)
|
||||
#define HAS_DIGITAL_BUTTONS 1
|
||||
#endif
|
||||
#if !HAS_ADC_BUTTONS && (IS_RRW_KEYPAD || (HAS_WIRED_LCD && !IS_NEWPANEL))
|
||||
#define HAS_SHIFT_ENCODER 1
|
||||
#endif
|
||||
|
||||
// I2C buttons must be read in the main thread
|
||||
#if ANY(LCD_I2C_VIKI, LCD_I2C_PANELOLU2, IS_TFTGLCD_PANEL)
|
||||
#define HAS_SLOW_BUTTONS 1
|
||||
#endif
|
||||
|
||||
#if HAS_ENCODER_WHEEL
|
||||
#define ENCODER_PHASE_0 0
|
||||
#define ENCODER_PHASE_1 2
|
||||
#define ENCODER_PHASE_2 3
|
||||
#define ENCODER_PHASE_3 1
|
||||
#endif
|
||||
|
||||
#if IS_RRW_KEYPAD
|
||||
#define BTN_OFFSET 0 // Bit offset into buttons for shift register values
|
||||
|
||||
#define BLEN_KEYPAD_F3 0
|
||||
#define BLEN_KEYPAD_F2 1
|
||||
#define BLEN_KEYPAD_F1 2
|
||||
#define BLEN_KEYPAD_DOWN 3
|
||||
#define BLEN_KEYPAD_RIGHT 4
|
||||
#define BLEN_KEYPAD_MIDDLE 5
|
||||
#define BLEN_KEYPAD_UP 6
|
||||
#define BLEN_KEYPAD_LEFT 7
|
||||
|
||||
#define EN_KEYPAD_F1 _BV(BTN_OFFSET + BLEN_KEYPAD_F1)
|
||||
#define EN_KEYPAD_F2 _BV(BTN_OFFSET + BLEN_KEYPAD_F2)
|
||||
#define EN_KEYPAD_F3 _BV(BTN_OFFSET + BLEN_KEYPAD_F3)
|
||||
#define EN_KEYPAD_DOWN _BV(BTN_OFFSET + BLEN_KEYPAD_DOWN)
|
||||
#define EN_KEYPAD_RIGHT _BV(BTN_OFFSET + BLEN_KEYPAD_RIGHT)
|
||||
#define EN_KEYPAD_MIDDLE _BV(BTN_OFFSET + BLEN_KEYPAD_MIDDLE)
|
||||
#define EN_KEYPAD_UP _BV(BTN_OFFSET + BLEN_KEYPAD_UP)
|
||||
#define EN_KEYPAD_LEFT _BV(BTN_OFFSET + BLEN_KEYPAD_LEFT)
|
||||
|
||||
#define RRK(B) (keypad_buttons & (B))
|
||||
|
||||
#ifdef EN_C
|
||||
#define BUTTON_CLICK() ((buttons & EN_C) || RRK(EN_KEYPAD_MIDDLE))
|
||||
#else
|
||||
#define BUTTON_CLICK() RRK(EN_KEYPAD_MIDDLE)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if EITHER(HAS_DIGITAL_BUTTONS, HAS_DWIN_E3V2)
|
||||
// Wheel spin pins where BA is 00, 10, 11, 01 (1 bit always changes)
|
||||
#define BLEN_A 0
|
||||
#define BLEN_B 1
|
||||
|
||||
#define EN_A _BV(BLEN_A)
|
||||
#define EN_B _BV(BLEN_B)
|
||||
|
||||
#define _BUTTON_PRESSED(BN) !READ(BTN_##BN)
|
||||
|
||||
#if BUTTON_EXISTS(ENC) || HAS_TOUCH_BUTTONS
|
||||
#define BLEN_C 2
|
||||
#define EN_C _BV(BLEN_C)
|
||||
#endif
|
||||
|
||||
#if ENABLED(LCD_I2C_VIKI)
|
||||
#include <LiquidTWI2.h>
|
||||
#define B_I2C_BTN_OFFSET 3 // (the first three bit positions reserved for EN_A, EN_B, EN_C)
|
||||
|
||||
// button and encoder bit positions within 'buttons'
|
||||
#define B_LE (BUTTON_LEFT << B_I2C_BTN_OFFSET) // The remaining normalized buttons are all read via I2C
|
||||
#define B_UP (BUTTON_UP << B_I2C_BTN_OFFSET)
|
||||
#define B_MI (BUTTON_SELECT << B_I2C_BTN_OFFSET)
|
||||
#define B_DW (BUTTON_DOWN << B_I2C_BTN_OFFSET)
|
||||
#define B_RI (BUTTON_RIGHT << B_I2C_BTN_OFFSET)
|
||||
|
||||
#if BUTTON_EXISTS(ENC) // The pause/stop/restart button is connected to BTN_ENC when used
|
||||
#define B_ST (EN_C) // Map the pause/stop/resume button into its normalized functional name
|
||||
#define BUTTON_CLICK() (buttons & (B_MI|B_RI|B_ST)) // Pause/stop also acts as click until a proper pause/stop is implemented.
|
||||
#else
|
||||
#define BUTTON_CLICK() (buttons & (B_MI|B_RI))
|
||||
#endif
|
||||
|
||||
// I2C buttons take too long to read inside an interrupt context and so we read them during lcd_update
|
||||
|
||||
#elif ENABLED(LCD_I2C_PANELOLU2)
|
||||
#if !BUTTON_EXISTS(ENC) // Use I2C if not directly connected to a pin
|
||||
#define B_I2C_BTN_OFFSET 3 // (the first three bit positions reserved for EN_A, EN_B, EN_C)
|
||||
|
||||
#define B_MI (PANELOLU2_ENCODER_C << B_I2C_BTN_OFFSET) // requires LiquidTWI2 library v1.2.3 or later
|
||||
|
||||
#define BUTTON_CLICK() (buttons & B_MI)
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#undef BUTTON_EXISTS
|
||||
#define BUTTON_EXISTS(...) false
|
||||
|
||||
// Dummy button, never pressed
|
||||
#define _BUTTON_PRESSED(BN) false
|
||||
|
||||
// Shift register bits correspond to buttons:
|
||||
#define BL_LE 7 // Left
|
||||
#define BL_UP 6 // Up
|
||||
#define BL_MI 5 // Middle
|
||||
#define BL_DW 4 // Down
|
||||
#define BL_RI 3 // Right
|
||||
#define BL_ST 2 // Red Button
|
||||
#define B_LE _BV(BL_LE)
|
||||
#define B_UP _BV(BL_UP)
|
||||
#define B_MI _BV(BL_MI)
|
||||
#define B_DW _BV(BL_DW)
|
||||
#define B_RI _BV(BL_RI)
|
||||
#define B_ST _BV(BL_ST)
|
||||
|
||||
#ifndef BUTTON_CLICK
|
||||
#define BUTTON_CLICK() (buttons & (B_MI|B_ST))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef EN_A
|
||||
#define EN_A 0
|
||||
#endif
|
||||
#ifndef EN_B
|
||||
#define EN_B 0
|
||||
#endif
|
||||
#ifndef EN_C
|
||||
#define EN_C 0
|
||||
#endif
|
||||
#if BUTTON_EXISTS(BACK) || EITHER(HAS_TOUCH_BUTTONS, IS_TFTGLCD_PANEL)
|
||||
#define BLEN_D 3
|
||||
#define EN_D _BV(BLEN_D)
|
||||
#else
|
||||
#define EN_D 0
|
||||
#endif
|
||||
|
||||
#define BUTTON_PRESSED(BN) (_BUTTON_PRESSED_##BN)
|
||||
|
||||
#if BUTTON_EXISTS(EN1)
|
||||
#define _BUTTON_PRESSED_EN1 _BUTTON_PRESSED(EN1)
|
||||
#else
|
||||
#define _BUTTON_PRESSED_EN1 false
|
||||
#endif
|
||||
#if BUTTON_EXISTS(EN2)
|
||||
#define _BUTTON_PRESSED_EN2 _BUTTON_PRESSED(EN2)
|
||||
#else
|
||||
#define _BUTTON_PRESSED_EN2 false
|
||||
#endif
|
||||
#if BUTTON_EXISTS(ENC_EN)
|
||||
#define _BUTTON_PRESSED_ENC_EN _BUTTON_PRESSED(ENC_EN)
|
||||
#else
|
||||
#define _BUTTON_PRESSED_ENC_EN false
|
||||
#endif
|
||||
#if BUTTON_EXISTS(ENC)
|
||||
#define _BUTTON_PRESSED_ENC _BUTTON_PRESSED(ENC)
|
||||
#else
|
||||
#define _BUTTON_PRESSED_ENC false
|
||||
#endif
|
||||
#if BUTTON_EXISTS(UP)
|
||||
#define _BUTTON_PRESSED_UP _BUTTON_PRESSED(UP)
|
||||
#else
|
||||
#define _BUTTON_PRESSED_UP false
|
||||
#endif
|
||||
#if BUTTON_EXISTS(DWN)
|
||||
#define _BUTTON_PRESSED_DWN _BUTTON_PRESSED(DWN)
|
||||
#else
|
||||
#define _BUTTON_PRESSED_DWN false
|
||||
#endif
|
||||
#if BUTTON_EXISTS(LFT)
|
||||
#define _BUTTON_PRESSED_LFT _BUTTON_PRESSED(LFT)
|
||||
#else
|
||||
#define _BUTTON_PRESSED_LFT false
|
||||
#endif
|
||||
#if BUTTON_EXISTS(RT)
|
||||
#define _BUTTON_PRESSED_RT _BUTTON_PRESSED(RT)
|
||||
#else
|
||||
#define _BUTTON_PRESSED_RT false
|
||||
#endif
|
||||
#if BUTTON_EXISTS(BACK)
|
||||
#define _BUTTON_PRESSED_BACK _BUTTON_PRESSED(BACK)
|
||||
#else
|
||||
#define _BUTTON_PRESSED_BACK false
|
||||
#endif
|
||||
|
||||
#ifndef BUTTON_CLICK
|
||||
#if EN_C > 0
|
||||
#define BUTTON_CLICK() (buttons & EN_C)
|
||||
#else
|
||||
#define BUTTON_CLICK() false
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if EN_D > 0
|
||||
#define LCD_BACK_CLICKED() (buttons & EN_D)
|
||||
#else
|
||||
#define LCD_BACK_CLICKED() false
|
||||
#endif
|
||||
89
Marlin/src/lcd/dogm/HAL_LCD_class_defines.h
Executable file → Normal file
89
Marlin/src/lcd/dogm/HAL_LCD_class_defines.h
Executable file → Normal file
@@ -16,7 +16,7 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
@@ -30,12 +30,15 @@ extern u8g_dev_t u8g_dev_st7565_64128n_HAL_2x_hw_spi;
|
||||
|
||||
class U8GLIB_64128N_2X_HAL : public U8GLIB {
|
||||
public:
|
||||
U8GLIB_64128N_2X_HAL(pin_t sck, pin_t mosi, pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE)
|
||||
: U8GLIB(&u8g_dev_st7565_64128n_HAL_2x_sw_spi, (uint8_t)sck, (uint8_t)mosi, (uint8_t)cs, (uint8_t)a0, (uint8_t)reset)
|
||||
{ }
|
||||
U8GLIB_64128N_2X_HAL(pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE)
|
||||
: U8GLIB(&u8g_dev_st7565_64128n_HAL_2x_hw_spi, (uint8_t)cs, (uint8_t)a0, (uint8_t)reset)
|
||||
{ }
|
||||
U8GLIB_64128N_2X_HAL() : U8GLIB() { }
|
||||
U8GLIB_64128N_2X_HAL(pin_t sck, pin_t mosi, pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE) { init(sck, mosi, cs, a0, reset); }
|
||||
U8GLIB_64128N_2X_HAL(pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE) { init(cs, a0, reset); }
|
||||
void init(pin_t sck, pin_t mosi, pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE) {
|
||||
U8GLIB::init(&u8g_dev_st7565_64128n_HAL_2x_sw_spi, (uint8_t)sck, (uint8_t)mosi, (uint8_t)cs, (uint8_t)a0, (uint8_t)reset);
|
||||
}
|
||||
void init(pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE) {
|
||||
U8GLIB::init(&u8g_dev_st7565_64128n_HAL_2x_hw_spi, (uint8_t)cs, (uint8_t)a0, (uint8_t)reset);
|
||||
}
|
||||
};
|
||||
|
||||
extern u8g_dev_t u8g_dev_st7920_128x64_HAL_4x_sw_spi;
|
||||
@@ -43,12 +46,15 @@ extern u8g_dev_t u8g_dev_st7920_128x64_HAL_4x_hw_spi;
|
||||
|
||||
class U8GLIB_ST7920_128X64_4X_HAL : public U8GLIB {
|
||||
public:
|
||||
U8GLIB_ST7920_128X64_4X_HAL(pin_t sck, pin_t mosi, pin_t cs, pin_t reset = U8G_PIN_NONE)
|
||||
: U8GLIB(&u8g_dev_st7920_128x64_HAL_4x_sw_spi, (uint8_t)sck, (uint8_t)mosi, (uint8_t)cs, U8G_PIN_NONE, (uint8_t)reset) // a0 = U8G_PIN_NONE
|
||||
{ }
|
||||
U8GLIB_ST7920_128X64_4X_HAL(pin_t cs, pin_t reset = U8G_PIN_NONE)
|
||||
: U8GLIB(&u8g_dev_st7920_128x64_HAL_4x_hw_spi, (uint8_t)cs, U8G_PIN_NONE, (uint8_t)reset) // a0 = U8G_PIN_NONE
|
||||
{ }
|
||||
U8GLIB_ST7920_128X64_4X_HAL() : U8GLIB() { }
|
||||
U8GLIB_ST7920_128X64_4X_HAL(pin_t sck, pin_t mosi, pin_t cs, pin_t reset = U8G_PIN_NONE) { init(sck, mosi, cs, reset); }
|
||||
U8GLIB_ST7920_128X64_4X_HAL(pin_t cs, pin_t reset = U8G_PIN_NONE) { init(cs, reset); }
|
||||
void init(pin_t sck, pin_t mosi, pin_t cs, pin_t reset = U8G_PIN_NONE) {
|
||||
U8GLIB::init(&u8g_dev_st7920_128x64_HAL_4x_sw_spi, (uint8_t)sck, (uint8_t)mosi, (uint8_t)cs, U8G_PIN_NONE, (uint8_t)reset); // a0 = U8G_PIN_NONE
|
||||
}
|
||||
void init(pin_t cs, pin_t reset = U8G_PIN_NONE) {
|
||||
U8GLIB::init(&u8g_dev_st7920_128x64_HAL_4x_hw_spi, (uint8_t)cs, U8G_PIN_NONE, (uint8_t)reset); // a0 = U8G_PIN_NONE
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
@@ -59,27 +65,29 @@ extern u8g_dev_t u8g_dev_st7920_128x64_rrd_sw_spi;
|
||||
|
||||
class U8GLIB_ST7920_128X64_RRD : public U8GLIB {
|
||||
public:
|
||||
U8GLIB_ST7920_128X64_RRD(pin_t sck, pin_t mosi, pin_t cs, pin_t reset = U8G_PIN_NONE)
|
||||
: U8GLIB(&u8g_dev_st7920_128x64_rrd_sw_spi, (uint8_t)sck, (uint8_t)mosi, (uint8_t)cs, U8G_PIN_NONE, (uint8_t)reset) // a0 = U8G_PIN_NONE
|
||||
{ }
|
||||
U8GLIB_ST7920_128X64_RRD() : U8GLIB() { }
|
||||
U8GLIB_ST7920_128X64_RRD(pin_t sck, pin_t mosi, pin_t cs, pin_t reset = U8G_PIN_NONE) { init(sck, mosi, cs, reset); }
|
||||
void init(pin_t sck, pin_t mosi, pin_t cs, pin_t reset = U8G_PIN_NONE) {
|
||||
U8GLIB::init(&u8g_dev_st7920_128x64_rrd_sw_spi, (uint8_t)sck, (uint8_t)mosi, (uint8_t)cs, U8G_PIN_NONE, (uint8_t)reset); // a0 = U8G_PIN_NONE
|
||||
}
|
||||
};
|
||||
|
||||
extern u8g_dev_t u8g_dev_sh1106_128x64_2x_i2c_2_wire;
|
||||
|
||||
class U8GLIB_SH1106_128X64_2X_I2C_2_WIRE : public U8GLIB {
|
||||
public:
|
||||
U8GLIB_SH1106_128X64_2X_I2C_2_WIRE(uint8_t options = U8G_I2C_OPT_NONE)
|
||||
: U8GLIB(&u8g_dev_sh1106_128x64_2x_i2c_2_wire, options)
|
||||
{ }
|
||||
U8GLIB_SH1106_128X64_2X_I2C_2_WIRE() : U8GLIB() { }
|
||||
U8GLIB_SH1106_128X64_2X_I2C_2_WIRE(uint8_t options) { init(options); }
|
||||
void init(uint8_t options = U8G_I2C_OPT_NONE) { U8GLIB::init(&u8g_dev_sh1106_128x64_2x_i2c_2_wire, options); }
|
||||
};
|
||||
|
||||
extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_i2c_2_wire;
|
||||
|
||||
class U8GLIB_SSD1306_128X64_2X_I2C_2_WIRE : public U8GLIB {
|
||||
public:
|
||||
U8GLIB_SSD1306_128X64_2X_I2C_2_WIRE(uint8_t options = U8G_I2C_OPT_NONE)
|
||||
: U8GLIB(&u8g_dev_ssd1306_128x64_2x_i2c_2_wire, options)
|
||||
{ }
|
||||
U8GLIB_SSD1306_128X64_2X_I2C_2_WIRE() : U8GLIB() { }
|
||||
U8GLIB_SSD1306_128X64_2X_I2C_2_WIRE(uint8_t options) { init(options); }
|
||||
void init(uint8_t options = U8G_I2C_OPT_NONE) { U8GLIB::init(&u8g_dev_ssd1306_128x64_2x_i2c_2_wire, options); }
|
||||
};
|
||||
|
||||
//
|
||||
@@ -90,9 +98,9 @@ extern u8g_dev_t u8g_dev_tft_320x240_upscale_from_128x64;
|
||||
|
||||
class U8GLIB_TFT_320X240_UPSCALE_FROM_128X64 : public U8GLIB {
|
||||
public:
|
||||
U8GLIB_TFT_320X240_UPSCALE_FROM_128X64(uint8_t cs, uint8_t rs, uint8_t reset = U8G_PIN_NONE)
|
||||
: U8GLIB(&u8g_dev_tft_320x240_upscale_from_128x64, cs, rs, reset)
|
||||
{ }
|
||||
U8GLIB_TFT_320X240_UPSCALE_FROM_128X64() : U8GLIB() { }
|
||||
U8GLIB_TFT_320X240_UPSCALE_FROM_128X64(uint8_t cs, uint8_t rs, uint8_t reset = U8G_PIN_NONE) { init(cs, rs, reset); }
|
||||
void init(uint8_t cs, uint8_t rs, uint8_t reset = U8G_PIN_NONE) { U8GLIB::init(&u8g_dev_tft_320x240_upscale_from_128x64, cs, rs, reset); }
|
||||
};
|
||||
|
||||
|
||||
@@ -100,10 +108,29 @@ extern u8g_dev_t u8g_dev_uc1701_mini12864_HAL_2x_sw_spi, u8g_dev_uc1701_mini1286
|
||||
|
||||
class U8GLIB_MINI12864_2X_HAL : public U8GLIB {
|
||||
public:
|
||||
U8GLIB_MINI12864_2X_HAL(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
|
||||
: U8GLIB(&u8g_dev_uc1701_mini12864_HAL_2x_sw_spi, sck, mosi, cs, a0, reset)
|
||||
{ }
|
||||
U8GLIB_MINI12864_2X_HAL(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
|
||||
: U8GLIB(&u8g_dev_uc1701_mini12864_HAL_2x_hw_spi, cs, a0, reset)
|
||||
{ }
|
||||
U8GLIB_MINI12864_2X_HAL() : U8GLIB() { }
|
||||
U8GLIB_MINI12864_2X_HAL(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) { init(sck, mosi, cs, a0, reset); }
|
||||
U8GLIB_MINI12864_2X_HAL(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) { init(cs, a0, reset); }
|
||||
void init(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) {
|
||||
U8GLIB::init(&u8g_dev_uc1701_mini12864_HAL_2x_sw_spi, sck, mosi, cs, a0, reset);
|
||||
}
|
||||
void init(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) {
|
||||
U8GLIB::init(&u8g_dev_uc1701_mini12864_HAL_2x_hw_spi, cs, a0, reset);
|
||||
}
|
||||
};
|
||||
|
||||
extern u8g_dev_t u8g_dev_ssd1309_sw_spi;
|
||||
extern u8g_dev_t u8g_dev_ssd1309_hw_spi;
|
||||
|
||||
class U8GLIB_SSD1309_128X64_HAL : public U8GLIB {
|
||||
public:
|
||||
U8GLIB_SSD1309_128X64_HAL() : U8GLIB() { }
|
||||
U8GLIB_SSD1309_128X64_HAL(pin_t sck, pin_t mosi, pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE) { init(sck, mosi, cs, a0, reset); }
|
||||
U8GLIB_SSD1309_128X64_HAL(pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE) { init(cs, a0, reset); }
|
||||
void init(pin_t sck, pin_t mosi, pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE) {
|
||||
U8GLIB::init(&u8g_dev_ssd1309_sw_spi, (uint8_t)sck, (uint8_t)mosi, (uint8_t)cs, (uint8_t)a0, (uint8_t)reset);
|
||||
}
|
||||
void init(pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE) {
|
||||
U8GLIB::init(&u8g_dev_ssd1309_hw_spi, (uint8_t)cs, (uint8_t)a0, (uint8_t)reset);
|
||||
}
|
||||
};
|
||||
|
||||
23
Marlin/src/lcd/dogm/HAL_LCD_com_defines.h
Executable file → Normal file
23
Marlin/src/lcd/dogm/HAL_LCD_com_defines.h
Executable file → Normal file
@@ -16,14 +16,14 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
// Use this file to select the com driver for device drivers that are NOT in the U8G library
|
||||
|
||||
#include <U8glib.h>
|
||||
#include <U8glib-HAL.h>
|
||||
|
||||
#ifndef U8G_HAL_LINKS // Defined by LPC1768/9 environments in platform.ini
|
||||
|
||||
@@ -52,7 +52,9 @@
|
||||
|
||||
#elif defined(ARDUINO_ARCH_STM32)
|
||||
|
||||
uint8_t u8g_com_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
|
||||
uint8_t u8g_com_stm32duino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
|
||||
#define U8G_COM_HAL_SW_SPI_FN u8g_com_std_sw_spi_fn
|
||||
#define U8G_COM_HAL_HW_SPI_FN u8g_com_stm32duino_hw_spi_fn
|
||||
|
||||
#elif defined(__AVR__)
|
||||
@@ -82,11 +84,6 @@
|
||||
|
||||
#define U8G_COM_SSD_I2C_HAL u8g_com_arduino_ssd_i2c_fn
|
||||
|
||||
#if PIN_EXISTS(FSMC_CS)
|
||||
uint8_t u8g_com_stm32duino_fsmc_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
|
||||
#define U8G_COM_HAL_FSMC_FN u8g_com_stm32duino_fsmc_fn
|
||||
#endif
|
||||
|
||||
#elif defined(TARGET_LPC1768)
|
||||
|
||||
uint8_t u8g_com_HAL_LPC1768_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
|
||||
@@ -100,6 +97,11 @@
|
||||
#define U8G_COM_ST7920_HAL_HW_SPI u8g_com_HAL_LPC1768_ST7920_hw_spi_fn
|
||||
#define U8G_COM_SSD_I2C_HAL u8g_com_HAL_LPC1768_ssd_hw_i2c_fn
|
||||
|
||||
#elif defined(__PLAT_NATIVE_SIM__)
|
||||
uint8_t u8g_com_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
|
||||
uint8_t u8g_com_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
|
||||
#define U8G_COM_HAL_SW_SPI_FN u8g_com_sw_spi_fn
|
||||
#define U8G_COM_ST7920_HAL_SW_SPI u8g_com_ST7920_sw_spi_fn
|
||||
#endif
|
||||
|
||||
#ifndef U8G_COM_HAL_SW_SPI_FN
|
||||
@@ -117,6 +119,9 @@
|
||||
#ifndef U8G_COM_SSD_I2C_HAL
|
||||
#define U8G_COM_SSD_I2C_HAL u8g_com_null_fn
|
||||
#endif
|
||||
#ifndef U8G_COM_HAL_FSMC_FN
|
||||
#define U8G_COM_HAL_FSMC_FN u8g_com_null_fn
|
||||
#if HAS_FSMC_GRAPHICAL_TFT || HAS_SPI_GRAPHICAL_TFT
|
||||
uint8_t u8g_com_hal_tft_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
|
||||
#define U8G_COM_HAL_TFT_FN u8g_com_hal_tft_fn
|
||||
#else
|
||||
#define U8G_COM_HAL_TFT_FN u8g_com_null_fn
|
||||
#endif
|
||||
|
||||
23
Marlin/src/lcd/dogm/dogm_Bootscreen.h
Executable file → Normal file
23
Marlin/src/lcd/dogm/dogm_Bootscreen.h
Executable file → Normal file
@@ -16,7 +16,7 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
@@ -25,15 +25,27 @@
|
||||
* Standard Marlin Boot Screen bitmaps
|
||||
*
|
||||
* Use the Marlin Bitmap Converter to make your own:
|
||||
* http://marlinfw.org/tools/u8glib/converter.html
|
||||
* https://marlinfw.org/tools/u8glib/converter.html
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
|
||||
#if ENABLED(SHOW_CUSTOM_BOOTSCREEN)
|
||||
|
||||
typedef struct {
|
||||
const unsigned char *bitmap;
|
||||
const unsigned short duration;
|
||||
} boot_frame_t;
|
||||
|
||||
#include "../../../_Bootscreen.h"
|
||||
|
||||
#if ENABLED(CUSTOM_BOOTSCREEN_ANIMATED) && DISABLED(CUSTOM_BOOTSCREEN_ANIMATED_FRAME_TIME) && !defined(CUSTOM_BOOTSCREEN_FRAME_TIME)
|
||||
#define CUSTOM_BOOTSCREEN_FRAME_TIME 500 // (ms)
|
||||
#endif
|
||||
|
||||
#ifndef CUSTOM_BOOTSCREEN_BMPWIDTH
|
||||
#define CUSTOM_BOOTSCREEN_BMPWIDTH 128
|
||||
#endif
|
||||
#ifndef CUSTOM_BOOTSCREEN_BMP_BYTEWIDTH
|
||||
#define CUSTOM_BOOTSCREEN_BMP_BYTEWIDTH CEILING(CUSTOM_BOOTSCREEN_BMPWIDTH, 8)
|
||||
#endif
|
||||
@@ -41,6 +53,13 @@
|
||||
#define CUSTOM_BOOTSCREEN_BMPHEIGHT (sizeof(custom_start_bmp) / (CUSTOM_BOOTSCREEN_BMP_BYTEWIDTH))
|
||||
#endif
|
||||
|
||||
#ifndef CUSTOM_BOOTSCREEN_Y
|
||||
#if ENABLED(CUSTOM_BOOTSCREEN_BOTTOM_JUSTIFY)
|
||||
#define CUSTOM_BOOTSCREEN_Y (LCD_PIXEL_HEIGHT - (CUSTOM_BOOTSCREEN_BMPHEIGHT))
|
||||
#else
|
||||
#define CUSTOM_BOOTSCREEN_Y ((LCD_PIXEL_HEIGHT - (CUSTOM_BOOTSCREEN_BMPHEIGHT)) / 2)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(BOOT_MARLIN_LOGO_SMALL)
|
||||
|
||||
1566
Marlin/src/lcd/dogm/dogm_Statusscreen.h
Executable file → Normal file
1566
Marlin/src/lcd/dogm/dogm_Statusscreen.h
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
306
Marlin/src/lcd/dogm/fontdata/fontdata_6x9_marlin.h
Executable file → Normal file
306
Marlin/src/lcd/dogm/fontdata/fontdata_6x9_marlin.h
Executable file → Normal file
@@ -16,7 +16,7 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
@@ -25,157 +25,165 @@
|
||||
Fontname: -Misc-Fixed-Medium-R-Normal--9-90-75-75-C-60-ISO10646-1
|
||||
Copyright: Public domain font. Share and enjoy.
|
||||
Capital A Height: 6, '1' Height: 6
|
||||
Calculated Max Values w= 6 h= 9 x= 2 y= 7 dx= 6 dy= 0 ascent= 7 len= 9
|
||||
Calculated Max Values w= 6 h= 9 x= 5 y= 5 dx= 6 dy= 0 ascent= 7 len= 9
|
||||
Font Bounding box w= 6 h= 9 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-2 dx= 0 dy= 0
|
||||
Pure Font ascent = 6 descent=-2
|
||||
X Font ascent = 6 descent=-2
|
||||
Max Font ascent = 7 descent=-2
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
const u8g_fntpgm_uint8_t u8g_font_6x9[2300] U8G_SECTION(".progmem.u8g_font_6x9") = {
|
||||
0, 6, 9, 0, 254, 6, 1, 137, 2, 254, 32, 255, 254, 7, 254, 6,
|
||||
254, 0, 0, 0, 6, 0, 7, 1, 6, 6, 6, 2, 0, 128, 128, 128,
|
||||
128, 0, 128, 3, 3, 3, 6, 1, 3, 160, 160, 160, 5, 7, 7, 6,
|
||||
0, 255, 80, 80, 248, 80, 248, 80, 80, 5, 9, 9, 6, 0, 254, 32,
|
||||
112, 168, 160, 112, 40, 168, 112, 32, 6, 8, 8, 6, 0, 255, 64, 168,
|
||||
72, 16, 32, 72, 84, 8, 5, 7, 7, 6, 0, 255, 96, 144, 144, 96,
|
||||
152, 144, 104, 1, 3, 3, 6, 2, 3, 128, 128, 128, 2, 7, 7, 6,
|
||||
2, 255, 64, 128, 128, 128, 128, 128, 64, 2, 7, 7, 6, 2, 255, 128,
|
||||
64, 64, 64, 64, 64, 128, 5, 5, 5, 6, 0, 0, 136, 80, 248, 80,
|
||||
136, 5, 5, 5, 6, 0, 0, 32, 32, 248, 32, 32, 2, 4, 4, 6,
|
||||
2, 254, 192, 64, 64, 128, 5, 1, 1, 6, 0, 2, 248, 2, 2, 2,
|
||||
6, 2, 0, 192, 192, 4, 6, 6, 6, 1, 0, 16, 16, 32, 64, 128,
|
||||
128, 4, 6, 6, 6, 1, 0, 96, 144, 144, 144, 144, 96, 3, 6, 6,
|
||||
6, 1, 0, 64, 192, 64, 64, 64, 224, 4, 6, 6, 6, 1, 0, 96,
|
||||
144, 16, 32, 64, 240, 4, 6, 6, 6, 1, 0, 240, 32, 96, 16, 16,
|
||||
224, 5, 6, 6, 6, 0, 0, 16, 48, 80, 144, 248, 16, 4, 6, 6,
|
||||
6, 1, 0, 240, 128, 224, 16, 16, 224, 4, 6, 6, 6, 1, 0, 96,
|
||||
128, 224, 144, 144, 96, 4, 6, 6, 6, 1, 0, 240, 16, 16, 32, 64,
|
||||
64, 4, 6, 6, 6, 1, 0, 96, 144, 96, 144, 144, 96, 4, 6, 6,
|
||||
6, 1, 0, 96, 144, 144, 112, 16, 96, 2, 5, 5, 6, 2, 0, 192,
|
||||
192, 0, 192, 192, 2, 7, 7, 6, 2, 254, 192, 192, 0, 192, 64, 64,
|
||||
128, 5, 5, 5, 6, 0, 0, 24, 96, 128, 96, 24, 5, 3, 3, 6,
|
||||
0, 1, 248, 0, 248, 5, 5, 5, 6, 0, 0, 192, 48, 8, 48, 192,
|
||||
4, 7, 7, 6, 1, 0, 96, 144, 16, 96, 64, 0, 64, 5, 6, 6,
|
||||
6, 0, 0, 112, 144, 168, 176, 128, 112, 5, 6, 6, 6, 0, 0, 32,
|
||||
80, 136, 248, 136, 136, 5, 6, 6, 6, 0, 0, 240, 136, 240, 136, 136,
|
||||
240, 4, 6, 6, 6, 1, 0, 96, 144, 128, 128, 144, 96, 4, 6, 6,
|
||||
6, 1, 0, 224, 144, 144, 144, 144, 224, 4, 6, 6, 6, 1, 0, 240,
|
||||
128, 224, 128, 128, 240, 4, 6, 6, 6, 1, 0, 240, 128, 224, 128, 128,
|
||||
128, 4, 6, 6, 6, 1, 0, 96, 144, 128, 176, 144, 96, 4, 6, 6,
|
||||
6, 1, 0, 144, 144, 240, 144, 144, 144, 3, 6, 6, 6, 1, 0, 224,
|
||||
64, 64, 64, 64, 224, 5, 6, 6, 6, 0, 0, 56, 16, 16, 16, 144,
|
||||
96, 4, 6, 6, 6, 1, 0, 144, 160, 192, 160, 144, 144, 4, 6, 6,
|
||||
6, 1, 0, 128, 128, 128, 128, 128, 240, 5, 6, 6, 6, 0, 0, 136,
|
||||
216, 168, 168, 136, 136, 4, 6, 6, 6, 1, 0, 144, 208, 176, 144, 144,
|
||||
144, 5, 6, 6, 6, 0, 0, 112, 136, 136, 136, 136, 112, 4, 6, 6,
|
||||
6, 1, 0, 224, 144, 144, 224, 128, 128, 4, 7, 7, 6, 1, 255, 96,
|
||||
144, 144, 208, 176, 96, 16, 4, 6, 6, 6, 1, 0, 224, 144, 144, 224,
|
||||
144, 144, 4, 6, 6, 6, 1, 0, 96, 144, 64, 32, 144, 96, 5, 6,
|
||||
6, 6, 0, 0, 248, 32, 32, 32, 32, 32, 4, 6, 6, 6, 1, 0,
|
||||
144, 144, 144, 144, 144, 96, 4, 6, 6, 6, 1, 0, 144, 144, 144, 240,
|
||||
96, 96, 5, 6, 6, 6, 0, 0, 136, 136, 168, 168, 216, 136, 5, 6,
|
||||
6, 6, 0, 0, 136, 80, 32, 32, 80, 136, 5, 6, 6, 6, 0, 0,
|
||||
136, 136, 80, 32, 32, 32, 4, 6, 6, 6, 1, 0, 240, 16, 32, 64,
|
||||
128, 240, 3, 6, 6, 6, 1, 0, 224, 128, 128, 128, 128, 224, 4, 6,
|
||||
6, 6, 1, 0, 128, 128, 64, 32, 16, 16, 3, 6, 6, 6, 1, 0,
|
||||
224, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 3, 32, 80, 136, 5,
|
||||
1, 1, 6, 0, 254, 248, 2, 2, 2, 6, 2, 4, 128, 64, 4, 4,
|
||||
4, 6, 1, 0, 112, 144, 144, 112, 4, 6, 6, 6, 1, 0, 128, 128,
|
||||
224, 144, 144, 224, 4, 4, 4, 6, 1, 0, 112, 128, 128, 112, 4, 6,
|
||||
6, 6, 1, 0, 16, 16, 112, 144, 144, 112, 4, 4, 4, 6, 1, 0,
|
||||
96, 176, 192, 112, 4, 6, 6, 6, 1, 0, 32, 80, 64, 224, 64, 64,
|
||||
4, 6, 6, 6, 1, 254, 96, 144, 144, 112, 16, 96, 4, 6, 6, 6,
|
||||
1, 0, 128, 128, 224, 144, 144, 144, 3, 6, 6, 6, 1, 0, 64, 0,
|
||||
192, 64, 64, 224, 3, 8, 8, 6, 1, 254, 32, 0, 96, 32, 32, 32,
|
||||
160, 64, 4, 6, 6, 6, 1, 0, 128, 128, 160, 192, 160, 144, 3, 6,
|
||||
6, 6, 1, 0, 192, 64, 64, 64, 64, 224, 5, 4, 4, 6, 0, 0,
|
||||
208, 168, 168, 136, 4, 4, 4, 6, 1, 0, 224, 144, 144, 144, 4, 4,
|
||||
4, 6, 1, 0, 96, 144, 144, 96, 4, 6, 6, 6, 1, 254, 224, 144,
|
||||
144, 224, 128, 128, 4, 6, 6, 6, 1, 254, 112, 144, 144, 112, 16, 16,
|
||||
4, 4, 4, 6, 1, 0, 160, 208, 128, 128, 4, 4, 4, 6, 1, 0,
|
||||
112, 192, 48, 224, 4, 6, 6, 6, 1, 0, 64, 64, 224, 64, 80, 32,
|
||||
4, 4, 4, 6, 1, 0, 144, 144, 144, 112, 4, 4, 4, 6, 1, 0,
|
||||
144, 144, 96, 96, 5, 4, 4, 6, 0, 0, 136, 168, 168, 80, 4, 4,
|
||||
4, 6, 1, 0, 144, 96, 96, 144, 4, 6, 6, 6, 1, 254, 144, 144,
|
||||
144, 112, 144, 96, 4, 4, 4, 6, 1, 0, 240, 32, 64, 240, 3, 7,
|
||||
7, 6, 1, 0, 32, 64, 64, 128, 64, 64, 32, 1, 7, 7, 6, 2,
|
||||
255, 128, 128, 128, 128, 128, 128, 128, 3, 7, 7, 6, 1, 0, 128, 64,
|
||||
64, 32, 64, 64, 128, 4, 2, 2, 6, 1, 3, 80, 160, 255, 255, 255,
|
||||
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0,
|
||||
0, 6, 0, 7, 1, 6, 6, 6, 2, 0, 128, 0, 128, 128, 128, 128,
|
||||
4, 6, 6, 6, 1, 255, 32, 112, 160, 160, 112, 32, 5, 7, 7, 6,
|
||||
0, 255, 48, 72, 64, 240, 64, 64, 248, 5, 5, 5, 6, 0, 0, 168,
|
||||
80, 136, 80, 168, 5, 6, 6, 6, 0, 0, 136, 80, 248, 32, 248, 32,
|
||||
1, 7, 7, 6, 2, 255, 128, 128, 128, 0, 128, 128, 128, 4, 7, 7,
|
||||
6, 1, 255, 112, 128, 96, 144, 96, 16, 224, 3, 1, 1, 6, 1, 5,
|
||||
160, 6, 7, 7, 6, 0, 0, 120, 132, 148, 164, 148, 132, 120, 3, 5,
|
||||
5, 6, 1, 1, 96, 160, 96, 0, 224, 5, 5, 5, 6, 0, 0, 40,
|
||||
80, 160, 80, 40, 4, 3, 3, 6, 1, 0, 240, 16, 16, 4, 1, 1,
|
||||
6, 1, 2, 240, 6, 7, 7, 6, 0, 0, 120, 132, 180, 164, 164, 132,
|
||||
120, 4, 1, 1, 6, 1, 5, 240, 4, 3, 3, 6, 1, 2, 96, 144,
|
||||
96, 5, 7, 7, 6, 0, 255, 32, 32, 248, 32, 32, 0, 248, 3, 5,
|
||||
5, 6, 1, 1, 64, 160, 32, 64, 224, 3, 5, 5, 6, 1, 1, 192,
|
||||
32, 64, 32, 192, 2, 2, 2, 6, 2, 4, 64, 128, 4, 5, 5, 6,
|
||||
1, 255, 144, 144, 176, 208, 128, 5, 6, 6, 6, 0, 0, 120, 232, 232,
|
||||
104, 40, 40, 1, 1, 1, 6, 2, 2, 128, 2, 2, 2, 6, 2, 254,
|
||||
64, 128, 3, 5, 5, 6, 1, 1, 64, 192, 64, 64, 224, 3, 5, 5,
|
||||
6, 1, 1, 64, 160, 64, 0, 224, 5, 5, 5, 6, 0, 0, 160, 80,
|
||||
40, 80, 160, 5, 8, 8, 6, 0, 255, 64, 192, 64, 80, 112, 48, 120,
|
||||
16, 5, 8, 8, 6, 0, 255, 64, 192, 64, 80, 104, 8, 16, 56, 5,
|
||||
8, 8, 6, 0, 255, 192, 32, 64, 48, 240, 48, 120, 16, 4, 7, 7,
|
||||
6, 1, 0, 32, 0, 32, 96, 128, 144, 96, 5, 7, 7, 6, 0, 0,
|
||||
64, 32, 32, 80, 112, 136, 136, 5, 7, 7, 6, 0, 0, 16, 32, 32,
|
||||
80, 112, 136, 136, 5, 7, 7, 6, 0, 0, 32, 80, 32, 80, 112, 136,
|
||||
136, 5, 7, 7, 6, 0, 0, 40, 80, 32, 80, 112, 136, 136, 5, 7,
|
||||
7, 6, 0, 0, 80, 0, 32, 80, 112, 136, 136, 5, 7, 7, 6, 0,
|
||||
0, 32, 80, 32, 80, 112, 136, 136, 5, 6, 6, 6, 0, 0, 120, 160,
|
||||
240, 160, 160, 184, 4, 8, 8, 6, 1, 254, 96, 144, 128, 128, 144, 96,
|
||||
32, 64, 4, 7, 7, 6, 1, 0, 64, 32, 240, 128, 224, 128, 240, 4,
|
||||
7, 7, 6, 1, 0, 32, 64, 240, 128, 224, 128, 240, 4, 7, 7, 6,
|
||||
1, 0, 32, 80, 240, 128, 224, 128, 240, 4, 7, 7, 6, 1, 0, 80,
|
||||
0, 240, 128, 224, 128, 240, 3, 7, 7, 6, 1, 0, 128, 64, 224, 64,
|
||||
64, 64, 224, 3, 7, 7, 6, 1, 0, 32, 64, 224, 64, 64, 64, 224,
|
||||
3, 7, 7, 6, 1, 0, 64, 160, 224, 64, 64, 64, 224, 3, 7, 7,
|
||||
6, 1, 0, 160, 0, 224, 64, 64, 64, 224, 5, 6, 6, 6, 0, 0,
|
||||
112, 72, 232, 72, 72, 112, 4, 7, 7, 6, 1, 0, 80, 160, 144, 208,
|
||||
176, 144, 144, 4, 7, 7, 6, 1, 0, 64, 32, 96, 144, 144, 144, 96,
|
||||
4, 7, 7, 6, 1, 0, 32, 64, 96, 144, 144, 144, 96, 4, 7, 7,
|
||||
6, 1, 0, 32, 80, 96, 144, 144, 144, 96, 4, 7, 7, 6, 1, 0,
|
||||
80, 160, 96, 144, 144, 144, 96, 4, 7, 7, 6, 1, 0, 80, 0, 96,
|
||||
144, 144, 144, 96, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 4,
|
||||
8, 8, 6, 1, 255, 16, 112, 176, 176, 208, 208, 224, 128, 4, 7, 7,
|
||||
6, 1, 0, 64, 32, 144, 144, 144, 144, 96, 4, 7, 7, 6, 1, 0,
|
||||
32, 64, 144, 144, 144, 144, 96, 4, 7, 7, 6, 1, 0, 32, 80, 144,
|
||||
144, 144, 144, 96, 4, 7, 7, 6, 1, 0, 80, 0, 144, 144, 144, 144,
|
||||
96, 5, 7, 7, 6, 0, 0, 16, 32, 136, 80, 32, 32, 32, 4, 6,
|
||||
6, 6, 1, 0, 128, 224, 144, 144, 224, 128, 4, 6, 6, 6, 1, 0,
|
||||
96, 144, 160, 160, 144, 160, 4, 7, 7, 6, 1, 0, 64, 32, 0, 112,
|
||||
144, 144, 112, 4, 7, 7, 6, 1, 0, 32, 64, 0, 112, 144, 144, 112,
|
||||
4, 7, 7, 6, 1, 0, 32, 80, 0, 112, 144, 144, 112, 4, 7, 7,
|
||||
6, 1, 0, 80, 160, 0, 112, 144, 144, 112, 4, 6, 6, 6, 1, 0,
|
||||
80, 0, 112, 144, 144, 112, 4, 7, 7, 6, 1, 0, 32, 80, 32, 112,
|
||||
144, 144, 112, 5, 4, 4, 6, 0, 0, 112, 168, 176, 120, 4, 6, 6,
|
||||
6, 1, 254, 112, 128, 128, 112, 32, 64, 4, 7, 7, 6, 1, 0, 64,
|
||||
32, 0, 96, 176, 192, 112, 4, 7, 7, 6, 1, 0, 32, 64, 0, 96,
|
||||
176, 192, 112, 4, 7, 7, 6, 1, 0, 32, 80, 0, 96, 176, 192, 112,
|
||||
4, 6, 6, 6, 1, 0, 80, 0, 96, 176, 192, 112, 3, 7, 7, 6,
|
||||
1, 0, 128, 64, 0, 192, 64, 64, 224, 3, 7, 7, 6, 1, 0, 32,
|
||||
64, 0, 192, 64, 64, 224, 3, 7, 7, 6, 1, 0, 64, 160, 0, 192,
|
||||
64, 64, 224, 3, 6, 6, 6, 1, 0, 160, 0, 192, 64, 64, 224, 4,
|
||||
7, 7, 6, 1, 0, 48, 96, 16, 112, 144, 144, 96, 4, 7, 7, 6,
|
||||
1, 0, 80, 160, 0, 224, 144, 144, 144, 4, 7, 7, 6, 1, 0, 64,
|
||||
32, 0, 96, 144, 144, 96, 4, 7, 7, 6, 1, 0, 32, 64, 0, 96,
|
||||
144, 144, 96, 4, 7, 7, 6, 1, 0, 32, 80, 0, 96, 144, 144, 96,
|
||||
4, 7, 7, 6, 1, 0, 80, 160, 0, 96, 144, 144, 96, 4, 6, 6,
|
||||
6, 1, 0, 80, 0, 96, 144, 144, 96, 5, 5, 5, 6, 0, 0, 32,
|
||||
0, 248, 0, 32, 4, 4, 4, 6, 1, 0, 112, 176, 208, 224, 4, 7,
|
||||
7, 6, 1, 0, 64, 32, 0, 144, 144, 144, 112, 4, 7, 7, 6, 1,
|
||||
0, 32, 64, 0, 144, 144, 144, 112, 4, 7, 7, 6, 1, 0, 32, 80,
|
||||
0, 144, 144, 144, 112, 4, 6, 6, 6, 1, 0, 80, 0, 144, 144, 144,
|
||||
112, 4, 9, 9, 6, 1, 254, 32, 64, 0, 144, 144, 144, 112, 144, 96,
|
||||
4, 8, 8, 6, 1, 254, 128, 128, 224, 144, 144, 224, 128, 128, 4, 8,
|
||||
8, 6, 1, 254, 80, 0, 144, 144, 144, 112, 144, 96
|
||||
};
|
||||
#include <U8glib-HAL.h>
|
||||
const u8g_fntpgm_uint8_t u8g_font_6x9[2434] U8G_FONT_SECTION(".progmem.u8g_font_6x9") = {
|
||||
0x00,0x06,0x09,0x00,0xFE,0x06,0x02,0x0F,0x03,0x84,0x01,0xFF,0xFE,0x07,0xFE,0x06,
|
||||
0xFE,0x05,0x07,0x07,0x00,0x00,0x00,0x40,0xF0,0xC8,0x88,0x98,0x78,0x10,0x05,0x07,
|
||||
0x07,0x00,0x00,0x00,0xC0,0xF8,0x88,0x88,0x88,0x88,0xF8,0x05,0x05,0x05,0x00,0x00,
|
||||
0x01,0x20,0x30,0xF8,0x30,0x20,0x05,0x07,0x07,0x00,0x00,0x00,0x20,0x70,0xF8,0x20,
|
||||
0x20,0x20,0xE0,0x05,0x07,0x07,0x00,0x00,0x00,0x20,0x70,0xA8,0xB8,0x88,0x70,0x20,
|
||||
0x06,0x05,0x05,0x00,0x00,0x00,0xB0,0xD8,0x6C,0xD8,0xB0,0x05,0x08,0x08,0x00,0x00,
|
||||
0xFF,0xF8,0xA8,0x88,0x88,0x88,0x88,0xA8,0xF8,0x05,0x09,0x09,0x00,0x00,0xFE,0x20,
|
||||
0x50,0x50,0x50,0x50,0x88,0xA8,0x88,0x70,0x03,0x03,0x03,0x00,0x00,0x03,0x40,0xA0,
|
||||
0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x06,0x05,0xFF,0x01,0x06,0x06,
|
||||
0x06,0x02,0x00,0x80,0x80,0x80,0x80,0x00,0x80,0x03,0x03,0x03,0x06,0x01,0x03,0xA0,
|
||||
0xA0,0xA0,0x05,0x07,0x07,0x06,0x00,0xFF,0x50,0x50,0xF8,0x50,0xF8,0x50,0x50,0x05,
|
||||
0x09,0x09,0x06,0x00,0xFE,0x20,0x70,0xA8,0xA0,0x70,0x28,0xA8,0x70,0x20,0x06,0x08,
|
||||
0x08,0x06,0x00,0xFF,0x40,0xA8,0x48,0x10,0x20,0x48,0x54,0x08,0x05,0x07,0x07,0x06,
|
||||
0x00,0xFF,0x60,0x90,0x90,0x60,0x98,0x90,0x68,0x01,0x03,0x03,0x06,0x02,0x03,0x80,
|
||||
0x80,0x80,0x02,0x07,0x07,0x06,0x02,0xFF,0x40,0x80,0x80,0x80,0x80,0x80,0x40,0x02,
|
||||
0x07,0x07,0x06,0x02,0xFF,0x80,0x40,0x40,0x40,0x40,0x40,0x80,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0x88,0x50,0xF8,0x50,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x20,0x20,0xF8,
|
||||
0x20,0x20,0x02,0x04,0x04,0x06,0x02,0xFE,0xC0,0x40,0x40,0x80,0x05,0x01,0x01,0x06,
|
||||
0x00,0x02,0xF8,0x02,0x02,0x02,0x06,0x02,0x00,0xC0,0xC0,0x04,0x06,0x06,0x06,0x01,
|
||||
0x00,0x10,0x10,0x20,0x40,0x80,0x80,0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,0x90,
|
||||
0x90,0x90,0x60,0x03,0x06,0x06,0x06,0x01,0x00,0x40,0xC0,0x40,0x40,0x40,0xE0,0x04,
|
||||
0x06,0x06,0x06,0x01,0x00,0x60,0x90,0x10,0x20,0x40,0xF0,0x04,0x06,0x06,0x06,0x01,
|
||||
0x00,0xF0,0x20,0x60,0x10,0x10,0xE0,0x05,0x06,0x06,0x06,0x00,0x00,0x10,0x30,0x50,
|
||||
0x90,0xF8,0x10,0x04,0x06,0x06,0x06,0x01,0x00,0xF0,0x80,0xE0,0x10,0x10,0xE0,0x04,
|
||||
0x06,0x06,0x06,0x01,0x00,0x60,0x80,0xE0,0x90,0x90,0x60,0x04,0x06,0x06,0x06,0x01,
|
||||
0x00,0xF0,0x10,0x10,0x20,0x40,0x40,0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,0x60,
|
||||
0x90,0x90,0x60,0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,0x90,0x70,0x10,0x60,0x02,
|
||||
0x05,0x05,0x06,0x02,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x02,0x07,0x07,0x06,0x02,0xFE,
|
||||
0xC0,0xC0,0x00,0xC0,0x40,0x40,0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x18,0x60,0x80,
|
||||
0x60,0x18,0x05,0x03,0x03,0x06,0x00,0x01,0xF8,0x00,0xF8,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0xC0,0x30,0x08,0x30,0xC0,0x04,0x07,0x07,0x06,0x01,0x00,0x60,0x90,0x10,0x60,
|
||||
0x40,0x00,0x40,0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x90,0xA8,0xB0,0x80,0x70,0x05,
|
||||
0x06,0x06,0x06,0x00,0x00,0x20,0x50,0x88,0xF8,0x88,0x88,0x05,0x06,0x06,0x06,0x00,
|
||||
0x00,0xF0,0x88,0xF0,0x88,0x88,0xF0,0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,0x80,
|
||||
0x80,0x90,0x60,0x04,0x06,0x06,0x06,0x01,0x00,0xE0,0x90,0x90,0x90,0x90,0xE0,0x04,
|
||||
0x06,0x06,0x06,0x01,0x00,0xF0,0x80,0xE0,0x80,0x80,0xF0,0x04,0x06,0x06,0x06,0x01,
|
||||
0x00,0xF0,0x80,0xE0,0x80,0x80,0x80,0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,0x80,
|
||||
0xB0,0x90,0x60,0x04,0x06,0x06,0x06,0x01,0x00,0x90,0x90,0xF0,0x90,0x90,0x90,0x03,
|
||||
0x06,0x06,0x06,0x01,0x00,0xE0,0x40,0x40,0x40,0x40,0xE0,0x05,0x06,0x06,0x06,0x00,
|
||||
0x00,0x38,0x10,0x10,0x10,0x90,0x60,0x04,0x06,0x06,0x06,0x01,0x00,0x90,0xA0,0xC0,
|
||||
0xA0,0x90,0x90,0x04,0x06,0x06,0x06,0x01,0x00,0x80,0x80,0x80,0x80,0x80,0xF0,0x05,
|
||||
0x06,0x06,0x06,0x00,0x00,0x88,0xD8,0xA8,0xA8,0x88,0x88,0x04,0x06,0x06,0x06,0x01,
|
||||
0x00,0x90,0xD0,0xB0,0x90,0x90,0x90,0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x88,0x88,
|
||||
0x88,0x88,0x70,0x04,0x06,0x06,0x06,0x01,0x00,0xE0,0x90,0x90,0xE0,0x80,0x80,0x04,
|
||||
0x07,0x07,0x06,0x01,0xFF,0x60,0x90,0x90,0xD0,0xB0,0x60,0x10,0x04,0x06,0x06,0x06,
|
||||
0x01,0x00,0xE0,0x90,0x90,0xE0,0x90,0x90,0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,
|
||||
0x40,0x20,0x90,0x60,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,
|
||||
0x04,0x06,0x06,0x06,0x01,0x00,0x90,0x90,0x90,0x90,0x90,0x60,0x04,0x06,0x06,0x06,
|
||||
0x01,0x00,0x90,0x90,0x90,0xF0,0x60,0x60,0x05,0x06,0x06,0x06,0x00,0x00,0x88,0x88,
|
||||
0xA8,0xA8,0xD8,0x88,0x05,0x06,0x06,0x06,0x00,0x00,0x88,0x50,0x20,0x20,0x50,0x88,
|
||||
0x05,0x06,0x06,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x04,0x06,0x06,0x06,
|
||||
0x01,0x00,0xF0,0x10,0x20,0x40,0x80,0xF0,0x03,0x06,0x06,0x06,0x01,0x00,0xE0,0x80,
|
||||
0x80,0x80,0x80,0xE0,0x04,0x06,0x06,0x06,0x01,0x00,0x80,0x80,0x40,0x20,0x10,0x10,
|
||||
0x03,0x06,0x06,0x06,0x01,0x00,0xE0,0x20,0x20,0x20,0x20,0xE0,0x05,0x03,0x03,0x06,
|
||||
0x00,0x03,0x20,0x50,0x88,0x05,0x01,0x01,0x06,0x00,0xFE,0xF8,0x02,0x02,0x02,0x06,
|
||||
0x02,0x04,0x80,0x40,0x04,0x04,0x04,0x06,0x01,0x00,0x70,0x90,0x90,0x70,0x04,0x06,
|
||||
0x06,0x06,0x01,0x00,0x80,0x80,0xE0,0x90,0x90,0xE0,0x04,0x04,0x04,0x06,0x01,0x00,
|
||||
0x70,0x80,0x80,0x70,0x04,0x06,0x06,0x06,0x01,0x00,0x10,0x10,0x70,0x90,0x90,0x70,
|
||||
0x04,0x04,0x04,0x06,0x01,0x00,0x60,0xB0,0xC0,0x70,0x04,0x06,0x06,0x06,0x01,0x00,
|
||||
0x20,0x50,0x40,0xE0,0x40,0x40,0x04,0x06,0x06,0x06,0x01,0xFE,0x60,0x90,0x90,0x70,
|
||||
0x10,0x60,0x04,0x06,0x06,0x06,0x01,0x00,0x80,0x80,0xE0,0x90,0x90,0x90,0x03,0x06,
|
||||
0x06,0x06,0x01,0x00,0x40,0x00,0xC0,0x40,0x40,0xE0,0x03,0x08,0x08,0x06,0x01,0xFE,
|
||||
0x20,0x00,0x60,0x20,0x20,0x20,0xA0,0x40,0x04,0x06,0x06,0x06,0x01,0x00,0x80,0x80,
|
||||
0xA0,0xC0,0xA0,0x90,0x03,0x06,0x06,0x06,0x01,0x00,0xC0,0x40,0x40,0x40,0x40,0xE0,
|
||||
0x05,0x04,0x04,0x06,0x00,0x00,0xD0,0xA8,0xA8,0x88,0x04,0x04,0x04,0x06,0x01,0x00,
|
||||
0xE0,0x90,0x90,0x90,0x04,0x04,0x04,0x06,0x01,0x00,0x60,0x90,0x90,0x60,0x04,0x06,
|
||||
0x06,0x06,0x01,0xFE,0xE0,0x90,0x90,0xE0,0x80,0x80,0x04,0x06,0x06,0x06,0x01,0xFE,
|
||||
0x70,0x90,0x90,0x70,0x10,0x10,0x04,0x04,0x04,0x06,0x01,0x00,0xA0,0xD0,0x80,0x80,
|
||||
0x04,0x04,0x04,0x06,0x01,0x00,0x70,0xC0,0x30,0xE0,0x04,0x06,0x06,0x06,0x01,0x00,
|
||||
0x40,0x40,0xE0,0x40,0x50,0x20,0x04,0x04,0x04,0x06,0x01,0x00,0x90,0x90,0x90,0x70,
|
||||
0x04,0x04,0x04,0x06,0x01,0x00,0x90,0x90,0x60,0x60,0x05,0x04,0x04,0x06,0x00,0x00,
|
||||
0x88,0xA8,0xA8,0x50,0x04,0x04,0x04,0x06,0x01,0x00,0x90,0x60,0x60,0x90,0x04,0x06,
|
||||
0x06,0x06,0x01,0xFE,0x90,0x90,0x90,0x70,0x90,0x60,0x04,0x04,0x04,0x06,0x01,0x00,
|
||||
0xF0,0x20,0x40,0xF0,0x03,0x07,0x07,0x06,0x01,0x00,0x20,0x40,0x40,0x80,0x40,0x40,
|
||||
0x20,0x01,0x07,0x07,0x06,0x02,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x03,0x07,
|
||||
0x07,0x06,0x01,0x00,0x80,0x40,0x40,0x20,0x40,0x40,0x80,0x04,0x02,0x02,0x06,0x01,
|
||||
0x03,0x50,0xA0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x06,0x05,0xFF,0x01,0x06,0x06,0x06,0x02,0x00,
|
||||
0x80,0x00,0x80,0x80,0x80,0x80,0x04,0x06,0x06,0x06,0x01,0xFF,0x20,0x70,0xA0,0xA0,
|
||||
0x70,0x20,0x05,0x07,0x07,0x06,0x00,0xFF,0x30,0x48,0x40,0xF0,0x40,0x40,0xF8,0x05,
|
||||
0x05,0x05,0x06,0x00,0x00,0xA8,0x50,0x88,0x50,0xA8,0x05,0x06,0x06,0x06,0x00,0x00,
|
||||
0x88,0x50,0xF8,0x20,0xF8,0x20,0x01,0x07,0x07,0x06,0x02,0xFF,0x80,0x80,0x80,0x00,
|
||||
0x80,0x80,0x80,0x04,0x07,0x07,0x06,0x01,0xFF,0x70,0x80,0x60,0x90,0x60,0x10,0xE0,
|
||||
0x03,0x01,0x01,0x06,0x01,0x05,0xA0,0x06,0x07,0x07,0x06,0x00,0x00,0x78,0x84,0x94,
|
||||
0xA4,0x94,0x84,0x78,0x03,0x05,0x05,0x06,0x01,0x01,0x60,0xA0,0x60,0x00,0xE0,0x05,
|
||||
0x05,0x05,0x06,0x00,0x00,0x28,0x50,0xA0,0x50,0x28,0x04,0x03,0x03,0x06,0x01,0x00,
|
||||
0xF0,0x10,0x10,0x04,0x01,0x01,0x06,0x01,0x02,0xF0,0x06,0x07,0x07,0x06,0x00,0x00,
|
||||
0x78,0x84,0xB4,0xA4,0xA4,0x84,0x78,0x04,0x01,0x01,0x06,0x01,0x05,0xF0,0x04,0x03,
|
||||
0x03,0x06,0x01,0x02,0x60,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0xFF,0x20,0x20,0xF8,
|
||||
0x20,0x20,0x00,0xF8,0x03,0x05,0x05,0x06,0x01,0x01,0x40,0xA0,0x20,0x40,0xE0,0x03,
|
||||
0x05,0x05,0x06,0x01,0x01,0xC0,0x20,0x40,0x20,0xC0,0x02,0x02,0x02,0x06,0x02,0x04,
|
||||
0x40,0x80,0x04,0x05,0x05,0x06,0x01,0xFF,0x90,0x90,0xB0,0xD0,0x80,0x05,0x06,0x06,
|
||||
0x06,0x00,0x00,0x78,0xE8,0xE8,0x68,0x28,0x28,0x01,0x01,0x01,0x06,0x02,0x02,0x80,
|
||||
0x02,0x02,0x02,0x06,0x02,0xFE,0x40,0x80,0x03,0x05,0x05,0x06,0x01,0x01,0x40,0xC0,
|
||||
0x40,0x40,0xE0,0x03,0x05,0x05,0x06,0x01,0x01,0x40,0xA0,0x40,0x00,0xE0,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0xA0,0x50,0x28,0x50,0xA0,0x05,0x08,0x08,0x06,0x00,0xFF,0x40,
|
||||
0xC0,0x40,0x50,0x70,0x30,0x78,0x10,0x05,0x08,0x08,0x06,0x00,0xFF,0x40,0xC0,0x40,
|
||||
0x50,0x68,0x08,0x10,0x38,0x05,0x08,0x08,0x06,0x00,0xFF,0xC0,0x20,0x40,0x30,0xF0,
|
||||
0x30,0x78,0x10,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x00,0x20,0x60,0x80,0x90,0x60,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x20,0x20,0x50,0x70,0x88,0x88,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x10,0x20,0x20,0x50,0x70,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x20,0x50,0x20,0x50,0x70,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x28,0x50,0x20,
|
||||
0x50,0x70,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x20,0x50,0x70,0x88,
|
||||
0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x50,0x20,0x50,0x70,0x88,0x88,0x05,0x06,
|
||||
0x06,0x06,0x00,0x00,0x78,0xA0,0xF0,0xA0,0xA0,0xB8,0x04,0x08,0x08,0x06,0x01,0xFE,
|
||||
0x60,0x90,0x80,0x80,0x90,0x60,0x20,0x40,0x04,0x07,0x07,0x06,0x01,0x00,0x40,0x20,
|
||||
0xF0,0x80,0xE0,0x80,0xF0,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x40,0xF0,0x80,0xE0,
|
||||
0x80,0xF0,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x50,0xF0,0x80,0xE0,0x80,0xF0,0x04,
|
||||
0x07,0x07,0x06,0x01,0x00,0x50,0x00,0xF0,0x80,0xE0,0x80,0xF0,0x03,0x07,0x07,0x06,
|
||||
0x01,0x00,0x80,0x40,0xE0,0x40,0x40,0x40,0xE0,0x03,0x07,0x07,0x06,0x01,0x00,0x20,
|
||||
0x40,0xE0,0x40,0x40,0x40,0xE0,0x03,0x07,0x07,0x06,0x01,0x00,0x40,0xA0,0xE0,0x40,
|
||||
0x40,0x40,0xE0,0x03,0x07,0x07,0x06,0x01,0x00,0xA0,0x00,0xE0,0x40,0x40,0x40,0xE0,
|
||||
0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x48,0xE8,0x48,0x48,0x70,0x04,0x07,0x07,0x06,
|
||||
0x01,0x00,0x50,0xA0,0x90,0xD0,0xB0,0x90,0x90,0x04,0x07,0x07,0x06,0x01,0x00,0x40,
|
||||
0x20,0x60,0x90,0x90,0x90,0x60,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x40,0x60,0x90,
|
||||
0x90,0x90,0x60,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x50,0x60,0x90,0x90,0x90,0x60,
|
||||
0x04,0x07,0x07,0x06,0x01,0x00,0x50,0xA0,0x60,0x90,0x90,0x90,0x60,0x04,0x07,0x07,
|
||||
0x06,0x01,0x00,0x50,0x00,0x60,0x90,0x90,0x90,0x60,0x05,0x05,0x05,0x06,0x00,0x00,
|
||||
0x88,0x50,0x20,0x50,0x88,0x04,0x08,0x08,0x06,0x01,0xFF,0x10,0x70,0xB0,0xB0,0xD0,
|
||||
0xD0,0xE0,0x80,0x04,0x07,0x07,0x06,0x01,0x00,0x40,0x20,0x90,0x90,0x90,0x90,0x60,
|
||||
0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x40,0x90,0x90,0x90,0x90,0x60,0x04,0x07,0x07,
|
||||
0x06,0x01,0x00,0x20,0x50,0x90,0x90,0x90,0x90,0x60,0x04,0x07,0x07,0x06,0x01,0x00,
|
||||
0x50,0x00,0x90,0x90,0x90,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0x20,0x88,
|
||||
0x50,0x20,0x20,0x20,0x04,0x06,0x06,0x06,0x01,0x00,0x80,0xE0,0x90,0x90,0xE0,0x80,
|
||||
0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,0xA0,0xA0,0x90,0xA0,0x04,0x07,0x07,0x06,
|
||||
0x01,0x00,0x40,0x20,0x00,0x70,0x90,0x90,0x70,0x04,0x07,0x07,0x06,0x01,0x00,0x20,
|
||||
0x40,0x00,0x70,0x90,0x90,0x70,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x50,0x00,0x70,
|
||||
0x90,0x90,0x70,0x04,0x07,0x07,0x06,0x01,0x00,0x50,0xA0,0x00,0x70,0x90,0x90,0x70,
|
||||
0x04,0x06,0x06,0x06,0x01,0x00,0x50,0x00,0x70,0x90,0x90,0x70,0x04,0x07,0x07,0x06,
|
||||
0x01,0x00,0x20,0x50,0x20,0x70,0x90,0x90,0x70,0x05,0x04,0x04,0x06,0x00,0x00,0x70,
|
||||
0xA8,0xB0,0x78,0x04,0x06,0x06,0x06,0x01,0xFE,0x70,0x80,0x80,0x70,0x20,0x40,0x04,
|
||||
0x07,0x07,0x06,0x01,0x00,0x40,0x20,0x00,0x60,0xB0,0xC0,0x70,0x04,0x07,0x07,0x06,
|
||||
0x01,0x00,0x20,0x40,0x00,0x60,0xB0,0xC0,0x70,0x04,0x07,0x07,0x06,0x01,0x00,0x20,
|
||||
0x50,0x00,0x60,0xB0,0xC0,0x70,0x04,0x06,0x06,0x06,0x01,0x00,0x50,0x00,0x60,0xB0,
|
||||
0xC0,0x70,0x03,0x07,0x07,0x06,0x01,0x00,0x80,0x40,0x00,0xC0,0x40,0x40,0xE0,0x03,
|
||||
0x07,0x07,0x06,0x01,0x00,0x20,0x40,0x00,0xC0,0x40,0x40,0xE0,0x03,0x07,0x07,0x06,
|
||||
0x01,0x00,0x40,0xA0,0x00,0xC0,0x40,0x40,0xE0,0x03,0x06,0x06,0x06,0x01,0x00,0xA0,
|
||||
0x00,0xC0,0x40,0x40,0xE0,0x04,0x07,0x07,0x06,0x01,0x00,0x30,0x60,0x10,0x70,0x90,
|
||||
0x90,0x60,0x04,0x07,0x07,0x06,0x01,0x00,0x50,0xA0,0x00,0xE0,0x90,0x90,0x90,0x04,
|
||||
0x07,0x07,0x06,0x01,0x00,0x40,0x20,0x00,0x60,0x90,0x90,0x60,0x04,0x07,0x07,0x06,
|
||||
0x01,0x00,0x20,0x40,0x00,0x60,0x90,0x90,0x60,0x04,0x07,0x07,0x06,0x01,0x00,0x20,
|
||||
0x50,0x00,0x60,0x90,0x90,0x60,0x04,0x07,0x07,0x06,0x01,0x00,0x50,0xA0,0x00,0x60,
|
||||
0x90,0x90,0x60,0x04,0x06,0x06,0x06,0x01,0x00,0x50,0x00,0x60,0x90,0x90,0x60,0x05,
|
||||
0x05,0x05,0x06,0x00,0x00,0x20,0x00,0xF8,0x00,0x20,0x04,0x04,0x04,0x06,0x01,0x00,
|
||||
0x70,0xB0,0xD0,0xE0,0x04,0x07,0x07,0x06,0x01,0x00,0x40,0x20,0x00,0x90,0x90,0x90,
|
||||
0x70,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x40,0x00,0x90,0x90,0x90,0x70,0x04,0x07,
|
||||
0x07,0x06,0x01,0x00,0x20,0x50,0x00,0x90,0x90,0x90,0x70,0x04,0x06,0x06,0x06,0x01,
|
||||
0x00,0x50,0x00,0x90,0x90,0x90,0x70,0x04,0x09,0x09,0x06,0x01,0xFE,0x20,0x40,0x00,
|
||||
0x90,0x90,0x90,0x70,0x90,0x60,0x04,0x08,0x08,0x06,0x01,0xFE,0x80,0x80,0xE0,0x90,
|
||||
0x90,0xE0,0x80,0x80,0x04,0x08,0x08,0x06,0x01,0xFE,0x50,0x00,0x90,0x90,0x90,0x70,
|
||||
0x90,0x60};
|
||||
|
||||
518
Marlin/src/lcd/dogm/fontdata/fontdata_ISO10646_1.h
Executable file → Normal file
518
Marlin/src/lcd/dogm/fontdata/fontdata_ISO10646_1.h
Executable file → Normal file
@@ -2,6 +2,9 @@
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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
|
||||
@@ -13,10 +16,11 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
|
||||
#include <U8glib-HAL.h>
|
||||
|
||||
#if defined(__AVR__) && ENABLED(NOT_EXTENDED_ISO10646_1_5X7)
|
||||
// reduced font (only symbols 1 - 127) - saves about 1278 bytes of FLASH
|
||||
@@ -25,97 +29,97 @@
|
||||
Fontname: -Marlin6x12-Fixed-Medium-R-SemiCondensed--12-90-100-100-C-111-ISO10646-1
|
||||
Copyright: Public domain terminal emulator font. Share and enjoy. original font -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1
|
||||
Capital A Height: 7, '1' Height: 7
|
||||
Calculated Max Values w= 5 h=10 x= 5 y= 5 dx= 6 dy= 0 ascent= 8 len=10
|
||||
Font Bounding box w=12 h=13 x= 0 y=-2
|
||||
Calculated Max Values w= 7 h=10 x= 5 y= 5 dx= 7 dy= 0 ascent= 8 len=10
|
||||
Font Bounding box w=12 h=15 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-2 dx= 0 dy= 0
|
||||
Pure Font ascent = 7 descent=-2
|
||||
X Font ascent = 8 descent=-2
|
||||
Max Font ascent = 8 descent=-2
|
||||
*/
|
||||
const u8g_fntpgm_uint8_t ISO10646_1_5x7[1325] U8G_FONT_SECTION("ISO10646_1_5x7") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x07,0x02,0x26,0x03,0xbc,0x01,0x7f,0xfe,0x08,0xfe,0x08,
|
||||
0xfe,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0xf0,0xc8,0x88,0x88,0x98,0x78,0x10,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0xc0,0xf8,0x88,0x88,0x88,0x88,0x88,0xf8,0x05,0x05,0x05,
|
||||
0x06,0x00,0x01,0x20,0x30,0xf8,0x30,0x20,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x70,
|
||||
0xf8,0x20,0x20,0x20,0x20,0xe0,0x05,0x09,0x09,0x06,0x00,0xff,0x20,0x70,0xa8,0xa8,
|
||||
0xb8,0x88,0x88,0x70,0x20,0x05,0x06,0x06,0x06,0x00,0x01,0xe0,0x8c,0xea,0x8c,0x8a,
|
||||
0x0a,0x05,0x09,0x09,0x06,0x00,0xff,0xf8,0xa8,0x88,0x88,0x88,0x88,0x88,0xa8,0xf8,
|
||||
0x05,0x0a,0x0a,0x06,0x00,0xfe,0x20,0x50,0x50,0x50,0x50,0x88,0xa8,0xa8,0x88,0x70,
|
||||
0x03,0x03,0x03,0x06,0x00,0x03,0x40,0xa0,0x40,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
|
||||
0x00,0x00,0x06,0x05,0xff,0x01,0x07,0x07,0x06,0x02,0x00,0x80,0x80,0x80,0x80,0x80,
|
||||
0x00,0x80,0x03,0x03,0x03,0x06,0x01,0x05,0xa0,0xa0,0xa0,0x05,0x06,0x06,0x06,0x00,
|
||||
0x00,0x50,0xf8,0x50,0x50,0xf8,0x50,0x05,0x09,0x09,0x06,0x00,0xff,0x20,0x70,0xa8,
|
||||
0xa0,0x70,0x28,0xa8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0xc8,0xc8,0x10,0x20,
|
||||
0x40,0x98,0x98,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0xa0,0xa0,0x40,0xa8,0x90,0x68,
|
||||
0x01,0x03,0x03,0x06,0x02,0x05,0x80,0x80,0x80,0x03,0x09,0x09,0x06,0x01,0xff,0x20,
|
||||
0x40,0x40,0x80,0x80,0x80,0x40,0x40,0x20,0x03,0x09,0x09,0x06,0x01,0xff,0x80,0x40,
|
||||
0x40,0x20,0x20,0x20,0x40,0x40,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xa8,0x70,
|
||||
0x20,0x70,0xa8,0x20,0x05,0x05,0x05,0x06,0x00,0x01,0x20,0x20,0xf8,0x20,0x20,0x02,
|
||||
0x03,0x03,0x06,0x01,0xff,0xc0,0x40,0x80,0x05,0x01,0x01,0x06,0x00,0x03,0xf8,0x02,
|
||||
0x02,0x02,0x06,0x01,0x00,0xc0,0xc0,0x05,0x07,0x07,0x06,0x00,0x00,0x08,0x10,0x10,
|
||||
0x20,0x40,0x40,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x98,0xa8,0xc8,0x88,
|
||||
0x70,0x03,0x07,0x07,0x06,0x01,0x00,0x40,0xc0,0x40,0x40,0x40,0x40,0xe0,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x70,0x88,0x08,0x10,0x20,0x40,0xf8,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xf8,0x08,0x10,0x30,0x08,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0x30,
|
||||
0x50,0x90,0xf8,0x10,0x10,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x80,0xf0,0x08,0x08,
|
||||
0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x30,0x40,0x80,0xf0,0x88,0x88,0x70,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xf8,0x08,0x10,0x10,0x20,0x20,0x20,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
|
||||
0x88,0x88,0x78,0x08,0x10,0x60,0x02,0x05,0x05,0x06,0x01,0x00,0xc0,0xc0,0x00,0xc0,
|
||||
0xc0,0x02,0x06,0x06,0x06,0x01,0xff,0xc0,0xc0,0x00,0xc0,0x40,0x80,0x03,0x05,0x05,
|
||||
0x06,0x01,0x01,0x20,0x40,0x80,0x40,0x20,0x05,0x03,0x03,0x06,0x00,0x02,0xf8,0x00,
|
||||
0xf8,0x03,0x05,0x05,0x06,0x01,0x01,0x80,0x40,0x20,0x40,0x80,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x10,0x20,0x20,0x00,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
|
||||
0x88,0xb8,0xa8,0xb8,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xf8,
|
||||
0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xf0,0x48,0x48,0x70,0x48,0x48,0xf0,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0xf0,0x48,0x48,0x48,0x48,0x48,0xf0,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0xf8,0x80,0x80,0xf0,0x80,0x80,0xf8,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x80,0x80,
|
||||
0xf0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x98,0x88,
|
||||
0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x03,0x07,
|
||||
0x07,0x06,0x01,0x00,0xe0,0x40,0x40,0x40,0x40,0x40,0xe0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x38,0x10,0x10,0x10,0x10,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,
|
||||
0xa0,0xc0,0xa0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0x80,0x80,0x80,
|
||||
0x80,0xf8,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xd8,0xa8,0x88,0x88,0x88,0x88,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x88,0x88,0xc8,0xa8,0x98,0x88,0x88,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xf0,
|
||||
0x88,0x88,0xf0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,
|
||||
0xa8,0x90,0x68,0x05,0x07,0x07,0x06,0x00,0x00,0xf0,0x88,0x88,0xf0,0xa0,0x90,0x88,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,
|
||||
0x88,0x50,0x50,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,0xa8,0xa8,
|
||||
0x50,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xf8,0x08,0x10,0x20,0x40,0x80,0xf8,0x03,0x09,0x09,0x06,0x01,0xff,0xe0,0x80,
|
||||
0x80,0x80,0x80,0x80,0x80,0x80,0xe0,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x40,0x40,
|
||||
0x20,0x10,0x10,0x08,0x03,0x09,0x09,0x06,0x01,0xff,0xe0,0x20,0x20,0x20,0x20,0x20,
|
||||
0x20,0x20,0xe0,0x05,0x03,0x03,0x06,0x00,0x05,0x20,0x50,0x88,0x05,0x01,0x01,0x06,
|
||||
0x00,0xfe,0xf8,0x03,0x03,0x03,0x06,0x01,0x05,0x80,0x40,0x20,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0xf0,
|
||||
0x88,0x88,0x88,0xf0,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x80,0x80,0x88,0x70,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x08,0x08,0x78,0x88,0x88,0x88,0x78,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0x70,0x88,0xf0,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x30,0x48,0x40,
|
||||
0xe0,0x40,0x40,0x40,0x05,0x07,0x07,0x06,0x00,0xfe,0x70,0x88,0x88,0x88,0x78,0x08,
|
||||
0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0xf0,0x88,0x88,0x88,0x88,0x03,0x07,
|
||||
0x07,0x06,0x01,0x00,0x40,0x00,0xc0,0x40,0x40,0x40,0xe0,0x04,0x09,0x09,0x06,0x01,
|
||||
0xfe,0x10,0x00,0x30,0x10,0x10,0x10,0x10,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x80,0x80,0x88,0x90,0xe0,0x90,0x88,0x03,0x07,0x07,0x06,0x01,0x00,0xc0,0x40,0x40,
|
||||
0x40,0x40,0x40,0xe0,0x05,0x05,0x05,0x06,0x00,0x00,0xd0,0xa8,0xa8,0xa8,0xa8,0x05,
|
||||
0x05,0x05,0x06,0x00,0x00,0xb0,0xc8,0x88,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,
|
||||
0x70,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0xfe,0xf0,0x88,0x88,0x88,0xf0,
|
||||
0x80,0x80,0x05,0x07,0x07,0x06,0x00,0xfe,0x78,0x88,0x88,0x88,0x78,0x08,0x08,0x05,
|
||||
0x05,0x05,0x06,0x00,0x00,0xb0,0xc8,0x80,0x80,0x80,0x05,0x05,0x05,0x06,0x00,0x00,
|
||||
0x78,0x80,0x70,0x08,0xf0,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0xf8,0x20,0x20,
|
||||
0x20,0x18,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x88,0x88,0x88,0x50,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,
|
||||
0xa8,0xa8,0x50,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0xfe,0x88,0x88,0x88,0x50,0x20,0x40,0x80,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0xf8,0x10,0x20,0x40,0xf8,0x03,0x09,0x09,0x06,0x01,0xff,0x20,0x40,0x40,0x40,
|
||||
0x80,0x40,0x40,0x40,0x20,0x01,0x09,0x09,0x06,0x02,0xff,0x80,0x80,0x80,0x80,0x80,
|
||||
0x80,0x80,0x80,0x80,0x03,0x09,0x09,0x06,0x01,0xff,0x80,0x40,0x40,0x40,0x20,0x40,
|
||||
0x40,0x40,0x80,0x05,0x03,0x03,0x06,0x00,0x02,0x48,0xa8,0x90,0xff};
|
||||
const u8g_fntpgm_uint8_t ISO10646_1_5x7[1324] U8G_FONT_SECTION("ISO10646_1_5x7") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x07,0x02,0x25,0x03,0xBB,0x01,0x7F,0xFE,0x08,0xFE,0x08,
|
||||
0xFE,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0xF0,0xC8,0x88,0x88,0x98,0x78,0x10,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0xC0,0xF8,0x88,0x88,0x88,0x88,0x88,0xF8,0x05,0x05,0x05,
|
||||
0x06,0x00,0x01,0x20,0x30,0xF8,0x30,0x20,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x70,
|
||||
0xF8,0x20,0x20,0x20,0x20,0xE0,0x05,0x09,0x09,0x06,0x00,0xFF,0x20,0x70,0xA8,0xA8,
|
||||
0xB8,0x88,0x88,0x70,0x20,0x07,0x05,0x05,0x07,0x00,0x01,0xD8,0x6C,0x36,0x6C,0xD8,
|
||||
0x05,0x09,0x09,0x06,0x00,0xFF,0xF8,0xA8,0x88,0x88,0x88,0x88,0x88,0xA8,0xF8,0x05,
|
||||
0x0A,0x0A,0x06,0x00,0xFE,0x20,0x50,0x50,0x50,0x50,0x88,0xA8,0xA8,0x88,0x70,0x03,
|
||||
0x03,0x03,0x06,0x00,0x03,0x40,0xA0,0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x06,0x05,0xFF,0x01,0x07,0x07,0x06,0x02,0x00,0x80,0x80,0x80,0x80,0x80,0x00,
|
||||
0x80,0x03,0x03,0x03,0x06,0x01,0x05,0xA0,0xA0,0xA0,0x05,0x06,0x06,0x06,0x00,0x00,
|
||||
0x50,0xF8,0x50,0x50,0xF8,0x50,0x05,0x09,0x09,0x06,0x00,0xFF,0x20,0x70,0xA8,0xA0,
|
||||
0x70,0x28,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0xC8,0xC8,0x10,0x20,0x40,
|
||||
0x98,0x98,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0xA0,0xA0,0x40,0xA8,0x90,0x68,0x01,
|
||||
0x03,0x03,0x06,0x02,0x05,0x80,0x80,0x80,0x03,0x09,0x09,0x06,0x01,0xFF,0x20,0x40,
|
||||
0x40,0x80,0x80,0x80,0x40,0x40,0x20,0x03,0x09,0x09,0x06,0x01,0xFF,0x80,0x40,0x40,
|
||||
0x20,0x20,0x20,0x40,0x40,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xA8,0x70,0x20,
|
||||
0x70,0xA8,0x20,0x05,0x05,0x05,0x06,0x00,0x01,0x20,0x20,0xF8,0x20,0x20,0x02,0x03,
|
||||
0x03,0x06,0x01,0xFF,0xC0,0x40,0x80,0x05,0x01,0x01,0x06,0x00,0x03,0xF8,0x02,0x02,
|
||||
0x02,0x06,0x01,0x00,0xC0,0xC0,0x05,0x07,0x07,0x06,0x00,0x00,0x08,0x10,0x10,0x20,
|
||||
0x40,0x40,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x98,0xA8,0xC8,0x88,0x70,
|
||||
0x03,0x07,0x07,0x06,0x01,0x00,0x40,0xC0,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x70,0x88,0x08,0x10,0x20,0x40,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0xF8,0x08,0x10,0x30,0x08,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0x30,0x50,
|
||||
0x90,0xF8,0x10,0x10,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0xF0,0x08,0x08,0x88,
|
||||
0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x30,0x40,0x80,0xF0,0x88,0x88,0x70,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,
|
||||
0x88,0x78,0x08,0x10,0x60,0x02,0x05,0x05,0x06,0x01,0x00,0xC0,0xC0,0x00,0xC0,0xC0,
|
||||
0x02,0x06,0x06,0x06,0x01,0xFF,0xC0,0xC0,0x00,0xC0,0x40,0x80,0x03,0x05,0x05,0x06,
|
||||
0x01,0x01,0x20,0x40,0x80,0x40,0x20,0x05,0x03,0x03,0x06,0x00,0x02,0xF8,0x00,0xF8,
|
||||
0x03,0x05,0x05,0x06,0x01,0x01,0x80,0x40,0x20,0x40,0x80,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x88,0x10,0x20,0x20,0x00,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,
|
||||
0xB8,0xA8,0xB8,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,
|
||||
0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x48,0x48,0x70,0x48,0x48,0xF0,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,
|
||||
0x80,0x80,0xF0,0x80,0x80,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,
|
||||
0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x98,0x88,0x70,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x03,0x07,0x07,
|
||||
0x06,0x01,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x38,0x10,0x10,0x10,0x10,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,
|
||||
0xC0,0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,
|
||||
0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,
|
||||
0x88,0xF0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0xA8,
|
||||
0x90,0x68,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0xA0,0x90,0x88,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,
|
||||
0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,
|
||||
0x50,0x50,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,0xA8,0xA8,0x50,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x03,0x09,0x09,0x06,0x01,0xFF,0xE0,0x80,0x80,
|
||||
0x80,0x80,0x80,0x80,0x80,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x40,0x40,0x20,
|
||||
0x10,0x10,0x08,0x03,0x09,0x09,0x06,0x01,0xFF,0xE0,0x20,0x20,0x20,0x20,0x20,0x20,
|
||||
0x20,0xE0,0x05,0x03,0x03,0x06,0x00,0x05,0x20,0x50,0x88,0x05,0x01,0x01,0x06,0x00,
|
||||
0xFE,0xF8,0x03,0x03,0x03,0x06,0x01,0x05,0x80,0x40,0x20,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0xF0,0x88,
|
||||
0x88,0x88,0xF0,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x80,0x80,0x88,0x70,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x08,0x08,0x78,0x88,0x88,0x88,0x78,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x70,0x88,0xF0,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x30,0x48,0x40,0xE0,
|
||||
0x40,0x40,0x40,0x05,0x07,0x07,0x06,0x00,0xFE,0x70,0x88,0x88,0x88,0x78,0x08,0x70,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x88,0x03,0x07,0x07,
|
||||
0x06,0x01,0x00,0x40,0x00,0xC0,0x40,0x40,0x40,0xE0,0x04,0x09,0x09,0x06,0x01,0xFE,
|
||||
0x10,0x00,0x30,0x10,0x10,0x10,0x10,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x80,
|
||||
0x80,0x88,0x90,0xE0,0x90,0x88,0x03,0x07,0x07,0x06,0x01,0x00,0xC0,0x40,0x40,0x40,
|
||||
0x40,0x40,0xE0,0x05,0x05,0x05,0x06,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x70,
|
||||
0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0xFE,0xF0,0x88,0x88,0x88,0xF0,0x80,
|
||||
0x80,0x05,0x07,0x07,0x06,0x00,0xFE,0x78,0x88,0x88,0x88,0x78,0x08,0x08,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x78,
|
||||
0x80,0x70,0x08,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x20,
|
||||
0x18,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0x88,0x88,0x88,0x50,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xA8,
|
||||
0xA8,0x50,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x05,0x07,0x07,
|
||||
0x06,0x00,0xFE,0x88,0x88,0x88,0x50,0x20,0x40,0x80,0x05,0x05,0x05,0x06,0x00,0x00,
|
||||
0xF8,0x10,0x20,0x40,0xF8,0x03,0x09,0x09,0x06,0x01,0xFF,0x20,0x40,0x40,0x40,0x80,
|
||||
0x40,0x40,0x40,0x20,0x01,0x09,0x09,0x06,0x02,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,
|
||||
0x80,0x80,0x80,0x03,0x09,0x09,0x06,0x01,0xFF,0x80,0x40,0x40,0x40,0x20,0x40,0x40,
|
||||
0x40,0x80,0x05,0x03,0x03,0x06,0x00,0x02,0x48,0xA8,0x90,0xFF};
|
||||
#else
|
||||
// extended (original) font (symbols 1 - 255)
|
||||
|
||||
@@ -123,179 +127,179 @@ const u8g_fntpgm_uint8_t ISO10646_1_5x7[1325] U8G_FONT_SECTION("ISO10646_1_5x7")
|
||||
Fontname: -Marlin6x12-Fixed-Medium-R-SemiCondensed--12-90-100-100-C-111-ISO10646-1
|
||||
Copyright: Public domain terminal emulator font. Share and enjoy. original font -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1
|
||||
Capital A Height: 7, '1' Height: 7
|
||||
Calculated Max Values w= 6 h=10 x= 5 y= 7 dx= 6 dy= 0 ascent=10 len=10
|
||||
Font Bounding box w=12 h=13 x= 0 y=-2
|
||||
Calculated Max Values w= 7 h=10 x= 5 y= 7 dx= 7 dy= 0 ascent=10 len=10
|
||||
Font Bounding box w=12 h=15 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-2 dx= 0 dy= 0
|
||||
Pure Font ascent = 7 descent=-2
|
||||
X Font ascent = 8 descent=-2
|
||||
Max Font ascent =10 descent=-2
|
||||
*/
|
||||
const u8g_fntpgm_uint8_t ISO10646_1_5x7[2648] U8G_FONT_SECTION("ISO10646_1_5x7") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x07,0x02,0x26,0x03,0xbc,0x01,0xff,0xfe,0x0a,0xfe,0x08,
|
||||
0xfe,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0xf0,0xc8,0x88,0x88,0x98,0x78,0x10,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0xc0,0xf8,0x88,0x88,0x88,0x88,0x88,0xf8,0x05,0x05,0x05,
|
||||
0x06,0x00,0x01,0x20,0x30,0xf8,0x30,0x20,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x70,
|
||||
0xf8,0x20,0x20,0x20,0x20,0xe0,0x05,0x09,0x09,0x06,0x00,0xff,0x20,0x70,0xa8,0xa8,
|
||||
0xb8,0x88,0x88,0x70,0x20,0x05,0x06,0x06,0x06,0x00,0x01,0xe0,0x8c,0xea,0x8c,0x8a,
|
||||
0x0a,0x05,0x09,0x09,0x06,0x00,0xff,0xf8,0xa8,0x88,0x88,0x88,0x88,0x88,0xa8,0xf8,
|
||||
0x05,0x0a,0x0a,0x06,0x00,0xfe,0x20,0x50,0x50,0x50,0x50,0x88,0xa8,0xa8,0x88,0x70,
|
||||
0x03,0x03,0x03,0x06,0x00,0x03,0x40,0xa0,0x40,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
|
||||
0x00,0x00,0x06,0x05,0xff,0x01,0x07,0x07,0x06,0x02,0x00,0x80,0x80,0x80,0x80,0x80,
|
||||
0x00,0x80,0x03,0x03,0x03,0x06,0x01,0x05,0xa0,0xa0,0xa0,0x05,0x06,0x06,0x06,0x00,
|
||||
0x00,0x50,0xf8,0x50,0x50,0xf8,0x50,0x05,0x09,0x09,0x06,0x00,0xff,0x20,0x70,0xa8,
|
||||
0xa0,0x70,0x28,0xa8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0xc8,0xc8,0x10,0x20,
|
||||
0x40,0x98,0x98,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0xa0,0xa0,0x40,0xa8,0x90,0x68,
|
||||
0x01,0x03,0x03,0x06,0x02,0x05,0x80,0x80,0x80,0x03,0x09,0x09,0x06,0x01,0xff,0x20,
|
||||
0x40,0x40,0x80,0x80,0x80,0x40,0x40,0x20,0x03,0x09,0x09,0x06,0x01,0xff,0x80,0x40,
|
||||
0x40,0x20,0x20,0x20,0x40,0x40,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xa8,0x70,
|
||||
0x20,0x70,0xa8,0x20,0x05,0x05,0x05,0x06,0x00,0x01,0x20,0x20,0xf8,0x20,0x20,0x02,
|
||||
0x03,0x03,0x06,0x01,0xff,0xc0,0x40,0x80,0x05,0x01,0x01,0x06,0x00,0x03,0xf8,0x02,
|
||||
0x02,0x02,0x06,0x01,0x00,0xc0,0xc0,0x05,0x07,0x07,0x06,0x00,0x00,0x08,0x10,0x10,
|
||||
0x20,0x40,0x40,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x98,0xa8,0xc8,0x88,
|
||||
0x70,0x03,0x07,0x07,0x06,0x01,0x00,0x40,0xc0,0x40,0x40,0x40,0x40,0xe0,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x70,0x88,0x08,0x10,0x20,0x40,0xf8,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xf8,0x08,0x10,0x30,0x08,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0x30,
|
||||
0x50,0x90,0xf8,0x10,0x10,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x80,0xf0,0x08,0x08,
|
||||
0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x30,0x40,0x80,0xf0,0x88,0x88,0x70,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xf8,0x08,0x10,0x10,0x20,0x20,0x20,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
|
||||
0x88,0x88,0x78,0x08,0x10,0x60,0x02,0x05,0x05,0x06,0x01,0x00,0xc0,0xc0,0x00,0xc0,
|
||||
0xc0,0x02,0x06,0x06,0x06,0x01,0xff,0xc0,0xc0,0x00,0xc0,0x40,0x80,0x03,0x05,0x05,
|
||||
0x06,0x01,0x01,0x20,0x40,0x80,0x40,0x20,0x05,0x03,0x03,0x06,0x00,0x02,0xf8,0x00,
|
||||
0xf8,0x03,0x05,0x05,0x06,0x01,0x01,0x80,0x40,0x20,0x40,0x80,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x10,0x20,0x20,0x00,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
|
||||
0x88,0xb8,0xa8,0xb8,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xf8,
|
||||
0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xf0,0x48,0x48,0x70,0x48,0x48,0xf0,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0xf0,0x48,0x48,0x48,0x48,0x48,0xf0,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0xf8,0x80,0x80,0xf0,0x80,0x80,0xf8,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x80,0x80,
|
||||
0xf0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x98,0x88,
|
||||
0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x03,0x07,
|
||||
0x07,0x06,0x01,0x00,0xe0,0x40,0x40,0x40,0x40,0x40,0xe0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x38,0x10,0x10,0x10,0x10,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,
|
||||
0xa0,0xc0,0xa0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0x80,0x80,0x80,
|
||||
0x80,0xf8,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xd8,0xa8,0x88,0x88,0x88,0x88,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x88,0x88,0xc8,0xa8,0x98,0x88,0x88,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xf0,
|
||||
0x88,0x88,0xf0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,
|
||||
0xa8,0x90,0x68,0x05,0x07,0x07,0x06,0x00,0x00,0xf0,0x88,0x88,0xf0,0xa0,0x90,0x88,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,
|
||||
0x88,0x50,0x50,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,0xa8,0xa8,
|
||||
0x50,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xf8,0x08,0x10,0x20,0x40,0x80,0xf8,0x03,0x09,0x09,0x06,0x01,0xff,0xe0,0x80,
|
||||
0x80,0x80,0x80,0x80,0x80,0x80,0xe0,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x40,0x40,
|
||||
0x20,0x10,0x10,0x08,0x03,0x09,0x09,0x06,0x01,0xff,0xe0,0x20,0x20,0x20,0x20,0x20,
|
||||
0x20,0x20,0xe0,0x05,0x03,0x03,0x06,0x00,0x05,0x20,0x50,0x88,0x05,0x01,0x01,0x06,
|
||||
0x00,0xfe,0xf8,0x03,0x03,0x03,0x06,0x01,0x05,0x80,0x40,0x20,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0xf0,
|
||||
0x88,0x88,0x88,0xf0,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x80,0x80,0x88,0x70,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x08,0x08,0x78,0x88,0x88,0x88,0x78,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0x70,0x88,0xf0,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x30,0x48,0x40,
|
||||
0xe0,0x40,0x40,0x40,0x05,0x07,0x07,0x06,0x00,0xfe,0x70,0x88,0x88,0x88,0x78,0x08,
|
||||
0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0xf0,0x88,0x88,0x88,0x88,0x03,0x07,
|
||||
0x07,0x06,0x01,0x00,0x40,0x00,0xc0,0x40,0x40,0x40,0xe0,0x04,0x09,0x09,0x06,0x01,
|
||||
0xfe,0x10,0x00,0x30,0x10,0x10,0x10,0x10,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x80,0x80,0x88,0x90,0xe0,0x90,0x88,0x03,0x07,0x07,0x06,0x01,0x00,0xc0,0x40,0x40,
|
||||
0x40,0x40,0x40,0xe0,0x05,0x05,0x05,0x06,0x00,0x00,0xd0,0xa8,0xa8,0xa8,0xa8,0x05,
|
||||
0x05,0x05,0x06,0x00,0x00,0xb0,0xc8,0x88,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,
|
||||
0x70,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0xfe,0xf0,0x88,0x88,0x88,0xf0,
|
||||
0x80,0x80,0x05,0x07,0x07,0x06,0x00,0xfe,0x78,0x88,0x88,0x88,0x78,0x08,0x08,0x05,
|
||||
0x05,0x05,0x06,0x00,0x00,0xb0,0xc8,0x80,0x80,0x80,0x05,0x05,0x05,0x06,0x00,0x00,
|
||||
0x78,0x80,0x70,0x08,0xf0,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0xf8,0x20,0x20,
|
||||
0x20,0x18,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x88,0x88,0x88,0x50,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,
|
||||
0xa8,0xa8,0x50,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0xfe,0x88,0x88,0x88,0x50,0x20,0x40,0x80,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0xf8,0x10,0x20,0x40,0xf8,0x03,0x09,0x09,0x06,0x01,0xff,0x20,0x40,0x40,0x40,
|
||||
0x80,0x40,0x40,0x40,0x20,0x01,0x09,0x09,0x06,0x02,0xff,0x80,0x80,0x80,0x80,0x80,
|
||||
0x80,0x80,0x80,0x80,0x03,0x09,0x09,0x06,0x01,0xff,0x80,0x40,0x40,0x40,0x20,0x40,
|
||||
0x40,0x40,0x80,0x05,0x03,0x03,0x06,0x00,0x02,0x48,0xa8,0x90,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
|
||||
0x06,0x05,0xff,0x01,0x07,0x07,0x06,0x02,0x00,0x80,0x00,0x80,0x80,0x80,0x80,0x80,
|
||||
0x05,0x07,0x07,0x06,0x00,0xff,0x20,0x70,0xa8,0xa0,0xa8,0x70,0x20,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x30,0x48,0x40,0xe0,0x40,0x48,0xb0,0x05,0x05,0x05,0x06,0x00,0x00,
|
||||
0xa8,0x50,0x88,0x50,0xa8,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x50,0xf8,0x20,0xf8,
|
||||
0x20,0x20,0x01,0x07,0x07,0x06,0x02,0x00,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x04,
|
||||
0x08,0x08,0x06,0x01,0x00,0x70,0x80,0x60,0x90,0x90,0x60,0x10,0xe0,0x03,0x01,0x01,
|
||||
0x06,0x01,0x07,0xa0,0x06,0x07,0x07,0x06,0x00,0x00,0x78,0x84,0xb4,0xa4,0xb4,0x84,
|
||||
0x78,0x03,0x05,0x05,0x06,0x01,0x04,0x60,0xa0,0x60,0x00,0xe0,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0x28,0x50,0xa0,0x50,0x28,0x05,0x03,0x03,0x06,0x00,0x01,0xf8,0x08,0x08,
|
||||
0x03,0x01,0x01,0x06,0x01,0x03,0xe0,0x06,0x07,0x07,0x06,0x00,0x00,0x78,0x84,0xb4,
|
||||
0xa4,0xa4,0x84,0x78,0x05,0x01,0x01,0x06,0x00,0x07,0xf8,0x04,0x04,0x04,0x06,0x01,
|
||||
0x05,0x60,0x90,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0xf8,0x20,0x20,
|
||||
0x00,0xf8,0x03,0x05,0x05,0x06,0x01,0x04,0x40,0xa0,0x20,0x40,0xe0,0x03,0x05,0x05,
|
||||
0x06,0x01,0x04,0xc0,0x20,0x40,0x20,0xc0,0x03,0x03,0x03,0x06,0x01,0x05,0x20,0x40,
|
||||
0x80,0x05,0x07,0x07,0x06,0x00,0xfe,0x88,0x88,0x88,0x98,0xe8,0x80,0x80,0x05,0x08,
|
||||
0x08,0x06,0x00,0x00,0x78,0xe8,0xe8,0xe8,0x68,0x28,0x28,0x28,0x02,0x02,0x02,0x06,
|
||||
0x02,0x03,0xc0,0xc0,0x03,0x02,0x02,0x06,0x01,0xfe,0x20,0xc0,0x03,0x05,0x05,0x06,
|
||||
0x01,0x04,0x40,0xc0,0x40,0x40,0xe0,0x03,0x05,0x05,0x06,0x01,0x05,0x40,0xa0,0x40,
|
||||
0x00,0xe0,0x05,0x05,0x05,0x06,0x00,0x00,0xa0,0x50,0x28,0x50,0xa0,0x05,0x0a,0x0a,
|
||||
0x06,0x00,0x00,0x40,0xc0,0x48,0x50,0x60,0x50,0xb0,0x50,0x78,0x10,0x05,0x0a,0x0a,
|
||||
0x06,0x00,0x00,0x40,0xc0,0x48,0x50,0x60,0x50,0xa8,0x08,0x10,0x38,0x05,0x0a,0x0a,
|
||||
0x06,0x00,0x00,0xc0,0x20,0x48,0x30,0xe0,0x50,0xb0,0x50,0x78,0x10,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x20,0x00,0x20,0x20,0x40,0x88,0x70,0x05,0x0a,0x0a,0x06,0x00,0x00,
|
||||
0x40,0x20,0x00,0x70,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x0a,0x0a,0x06,0x00,0x00,
|
||||
0x10,0x20,0x00,0x70,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x0a,0x0a,0x06,0x00,0x00,
|
||||
0x20,0x50,0x00,0x70,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x0a,0x0a,0x06,0x00,0x00,
|
||||
0x68,0xb0,0x00,0x70,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0x00,
|
||||
0x50,0x00,0x70,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x0a,0x0a,0x06,0x00,0x00,0x20,
|
||||
0x50,0x20,0x70,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x78,
|
||||
0xa0,0xa0,0xf0,0xa0,0xa0,0xb8,0x05,0x09,0x09,0x06,0x00,0xfe,0x70,0x88,0x80,0x80,
|
||||
0x80,0x88,0x70,0x10,0x60,0x05,0x0a,0x0a,0x06,0x00,0x00,0x40,0x20,0x00,0xf8,0x80,
|
||||
0x80,0xf0,0x80,0x80,0xf8,0x05,0x0a,0x0a,0x06,0x00,0x00,0x10,0x20,0x00,0xf8,0x80,
|
||||
0x80,0xf0,0x80,0x80,0xf8,0x05,0x0a,0x0a,0x06,0x00,0x00,0x20,0x50,0x00,0xf8,0x80,
|
||||
0x80,0xf0,0x80,0x80,0xf8,0x05,0x09,0x09,0x06,0x00,0x00,0x50,0x00,0xf8,0x80,0x80,
|
||||
0xf0,0x80,0x80,0xf8,0x03,0x0a,0x0a,0x06,0x01,0x00,0x80,0x40,0x00,0xe0,0x40,0x40,
|
||||
0x40,0x40,0x40,0xe0,0x03,0x0a,0x0a,0x06,0x01,0x00,0x20,0x40,0x00,0xe0,0x40,0x40,
|
||||
0x40,0x40,0x40,0xe0,0x03,0x0a,0x0a,0x06,0x01,0x00,0x40,0xa0,0x00,0xe0,0x40,0x40,
|
||||
0x40,0x40,0x40,0xe0,0x03,0x09,0x09,0x06,0x01,0x00,0xa0,0x00,0xe0,0x40,0x40,0x40,
|
||||
0x40,0x40,0xe0,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x48,0x48,0xe8,0x48,0x48,0x70,
|
||||
0x05,0x0a,0x0a,0x06,0x00,0x00,0x68,0xb0,0x00,0x88,0x88,0xc8,0xa8,0x98,0x88,0x88,
|
||||
0x05,0x0a,0x0a,0x06,0x00,0x00,0x40,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,
|
||||
0x05,0x0a,0x0a,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,
|
||||
0x05,0x0a,0x0a,0x06,0x00,0x00,0x20,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,
|
||||
0x05,0x0a,0x0a,0x06,0x00,0x00,0x68,0xb0,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,
|
||||
0x05,0x09,0x09,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,
|
||||
0x05,0x05,0x06,0x00,0x01,0x88,0x50,0x20,0x50,0x88,0x05,0x09,0x09,0x06,0x00,0xff,
|
||||
0x08,0x70,0x98,0xa8,0xa8,0xa8,0xc8,0x70,0x80,0x05,0x0a,0x0a,0x06,0x00,0x00,0x40,
|
||||
0x20,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x0a,0x0a,0x06,0x00,0x00,0x10,
|
||||
0x20,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x0a,0x0a,0x06,0x00,0x00,0x20,
|
||||
0x50,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x09,0x09,0x06,0x00,0x00,0x50,
|
||||
0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x0a,0x0a,0x06,0x00,0x00,0x10,0x20,
|
||||
0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x04,0x07,0x07,0x06,0x01,0x00,0x80,0xe0,
|
||||
0x90,0x90,0x90,0xe0,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x90,0xa0,0x90,
|
||||
0x88,0xb0,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,0x70,0x08,0x78,0x88,0x78,
|
||||
0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x08,
|
||||
0x08,0x06,0x00,0x00,0x20,0x50,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x08,0x08,0x06,
|
||||
0x00,0x00,0x68,0xb0,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x50,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x50,0x20,
|
||||
0x70,0x08,0x78,0x88,0x78,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x28,0x70,0xa0,0x78,
|
||||
0x05,0x07,0x07,0x06,0x00,0xfe,0x70,0x88,0x80,0x88,0x70,0x10,0x60,0x05,0x08,0x08,
|
||||
0x06,0x00,0x00,0x40,0x20,0x00,0x70,0x88,0xf0,0x80,0x70,0x05,0x08,0x08,0x06,0x00,
|
||||
0x00,0x10,0x20,0x00,0x70,0x88,0xf0,0x80,0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x20,
|
||||
0x50,0x00,0x70,0x88,0xf0,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,
|
||||
0x88,0xf0,0x80,0x70,0x03,0x08,0x08,0x06,0x01,0x00,0x80,0x40,0x00,0xc0,0x40,0x40,
|
||||
0x40,0xe0,0x03,0x08,0x08,0x06,0x01,0x00,0x20,0x40,0x00,0xc0,0x40,0x40,0x40,0xe0,
|
||||
0x03,0x08,0x08,0x06,0x01,0x00,0x40,0xa0,0x00,0xc0,0x40,0x40,0x40,0xe0,0x03,0x07,
|
||||
0x07,0x06,0x01,0x00,0xa0,0x00,0xc0,0x40,0x40,0x40,0xe0,0x05,0x09,0x09,0x06,0x00,
|
||||
0x00,0x50,0x20,0x50,0x08,0x78,0x88,0x88,0x88,0x70,0x05,0x08,0x08,0x06,0x00,0x00,
|
||||
0x68,0xb0,0x00,0xb0,0xc8,0x88,0x88,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,
|
||||
0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,
|
||||
0x88,0x88,0x88,0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x50,0x00,0x70,0x88,0x88,
|
||||
0x88,0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x68,0xb0,0x00,0x70,0x88,0x88,0x88,0x70,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,
|
||||
0x06,0x00,0x01,0x20,0x00,0xf8,0x00,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x78,0x98,
|
||||
0xa8,0xc8,0xf0,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,0x88,0x88,0x88,0x88,
|
||||
0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x88,0x88,0x88,0x88,0x70,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0x20,0x50,0x00,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x50,0x00,0x88,0x88,0x88,0x88,0x70,0x05,0x0a,0x0a,0x06,0x00,0xfe,
|
||||
0x10,0x20,0x00,0x88,0x88,0x88,0x50,0x20,0x40,0x80,0x05,0x09,0x09,0x06,0x00,0xfe,
|
||||
0x80,0x80,0xf0,0x88,0x88,0x88,0xf0,0x80,0x80,0x05,0x09,0x09,0x06,0x00,0xfe,0x50,
|
||||
0x00,0x88,0x88,0x88,0x50,0x20,0x40,0x80};
|
||||
const u8g_fntpgm_uint8_t ISO10646_1_5x7[2647] U8G_FONT_SECTION("ISO10646_1_5x7") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x07,0x02,0x25,0x03,0xBB,0x01,0xFF,0xFE,0x0A,0xFE,0x08,
|
||||
0xFE,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0xF0,0xC8,0x88,0x88,0x98,0x78,0x10,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0xC0,0xF8,0x88,0x88,0x88,0x88,0x88,0xF8,0x05,0x05,0x05,
|
||||
0x06,0x00,0x01,0x20,0x30,0xF8,0x30,0x20,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x70,
|
||||
0xF8,0x20,0x20,0x20,0x20,0xE0,0x05,0x09,0x09,0x06,0x00,0xFF,0x20,0x70,0xA8,0xA8,
|
||||
0xB8,0x88,0x88,0x70,0x20,0x07,0x05,0x05,0x07,0x00,0x01,0xD8,0x6C,0x36,0x6C,0xD8,
|
||||
0x05,0x09,0x09,0x06,0x00,0xFF,0xF8,0xA8,0x88,0x88,0x88,0x88,0x88,0xA8,0xF8,0x05,
|
||||
0x0A,0x0A,0x06,0x00,0xFE,0x20,0x50,0x50,0x50,0x50,0x88,0xA8,0xA8,0x88,0x70,0x03,
|
||||
0x03,0x03,0x06,0x00,0x03,0x40,0xA0,0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
|
||||
0x00,0x06,0x05,0xFF,0x01,0x07,0x07,0x06,0x02,0x00,0x80,0x80,0x80,0x80,0x80,0x00,
|
||||
0x80,0x03,0x03,0x03,0x06,0x01,0x05,0xA0,0xA0,0xA0,0x05,0x06,0x06,0x06,0x00,0x00,
|
||||
0x50,0xF8,0x50,0x50,0xF8,0x50,0x05,0x09,0x09,0x06,0x00,0xFF,0x20,0x70,0xA8,0xA0,
|
||||
0x70,0x28,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0xC8,0xC8,0x10,0x20,0x40,
|
||||
0x98,0x98,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0xA0,0xA0,0x40,0xA8,0x90,0x68,0x01,
|
||||
0x03,0x03,0x06,0x02,0x05,0x80,0x80,0x80,0x03,0x09,0x09,0x06,0x01,0xFF,0x20,0x40,
|
||||
0x40,0x80,0x80,0x80,0x40,0x40,0x20,0x03,0x09,0x09,0x06,0x01,0xFF,0x80,0x40,0x40,
|
||||
0x20,0x20,0x20,0x40,0x40,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xA8,0x70,0x20,
|
||||
0x70,0xA8,0x20,0x05,0x05,0x05,0x06,0x00,0x01,0x20,0x20,0xF8,0x20,0x20,0x02,0x03,
|
||||
0x03,0x06,0x01,0xFF,0xC0,0x40,0x80,0x05,0x01,0x01,0x06,0x00,0x03,0xF8,0x02,0x02,
|
||||
0x02,0x06,0x01,0x00,0xC0,0xC0,0x05,0x07,0x07,0x06,0x00,0x00,0x08,0x10,0x10,0x20,
|
||||
0x40,0x40,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x98,0xA8,0xC8,0x88,0x70,
|
||||
0x03,0x07,0x07,0x06,0x01,0x00,0x40,0xC0,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x70,0x88,0x08,0x10,0x20,0x40,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0xF8,0x08,0x10,0x30,0x08,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0x30,0x50,
|
||||
0x90,0xF8,0x10,0x10,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0xF0,0x08,0x08,0x88,
|
||||
0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x30,0x40,0x80,0xF0,0x88,0x88,0x70,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,
|
||||
0x88,0x78,0x08,0x10,0x60,0x02,0x05,0x05,0x06,0x01,0x00,0xC0,0xC0,0x00,0xC0,0xC0,
|
||||
0x02,0x06,0x06,0x06,0x01,0xFF,0xC0,0xC0,0x00,0xC0,0x40,0x80,0x03,0x05,0x05,0x06,
|
||||
0x01,0x01,0x20,0x40,0x80,0x40,0x20,0x05,0x03,0x03,0x06,0x00,0x02,0xF8,0x00,0xF8,
|
||||
0x03,0x05,0x05,0x06,0x01,0x01,0x80,0x40,0x20,0x40,0x80,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x88,0x10,0x20,0x20,0x00,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,
|
||||
0xB8,0xA8,0xB8,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,
|
||||
0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x48,0x48,0x70,0x48,0x48,0xF0,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,
|
||||
0x80,0x80,0xF0,0x80,0x80,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,
|
||||
0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x98,0x88,0x70,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x03,0x07,0x07,
|
||||
0x06,0x01,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x38,0x10,0x10,0x10,0x10,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,
|
||||
0xC0,0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,
|
||||
0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,
|
||||
0x88,0xF0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0xA8,
|
||||
0x90,0x68,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0xA0,0x90,0x88,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,
|
||||
0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,
|
||||
0x50,0x50,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,0xA8,0xA8,0x50,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x03,0x09,0x09,0x06,0x01,0xFF,0xE0,0x80,0x80,
|
||||
0x80,0x80,0x80,0x80,0x80,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x40,0x40,0x20,
|
||||
0x10,0x10,0x08,0x03,0x09,0x09,0x06,0x01,0xFF,0xE0,0x20,0x20,0x20,0x20,0x20,0x20,
|
||||
0x20,0xE0,0x05,0x03,0x03,0x06,0x00,0x05,0x20,0x50,0x88,0x05,0x01,0x01,0x06,0x00,
|
||||
0xFE,0xF8,0x03,0x03,0x03,0x06,0x01,0x05,0x80,0x40,0x20,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0xF0,0x88,
|
||||
0x88,0x88,0xF0,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x80,0x80,0x88,0x70,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x08,0x08,0x78,0x88,0x88,0x88,0x78,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x70,0x88,0xF0,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x30,0x48,0x40,0xE0,
|
||||
0x40,0x40,0x40,0x05,0x07,0x07,0x06,0x00,0xFE,0x70,0x88,0x88,0x88,0x78,0x08,0x70,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x88,0x03,0x07,0x07,
|
||||
0x06,0x01,0x00,0x40,0x00,0xC0,0x40,0x40,0x40,0xE0,0x04,0x09,0x09,0x06,0x01,0xFE,
|
||||
0x10,0x00,0x30,0x10,0x10,0x10,0x10,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x80,
|
||||
0x80,0x88,0x90,0xE0,0x90,0x88,0x03,0x07,0x07,0x06,0x01,0x00,0xC0,0x40,0x40,0x40,
|
||||
0x40,0x40,0xE0,0x05,0x05,0x05,0x06,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x70,
|
||||
0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0xFE,0xF0,0x88,0x88,0x88,0xF0,0x80,
|
||||
0x80,0x05,0x07,0x07,0x06,0x00,0xFE,0x78,0x88,0x88,0x88,0x78,0x08,0x08,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x78,
|
||||
0x80,0x70,0x08,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x20,
|
||||
0x18,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0x88,0x88,0x88,0x50,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xA8,
|
||||
0xA8,0x50,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x05,0x07,0x07,
|
||||
0x06,0x00,0xFE,0x88,0x88,0x88,0x50,0x20,0x40,0x80,0x05,0x05,0x05,0x06,0x00,0x00,
|
||||
0xF8,0x10,0x20,0x40,0xF8,0x03,0x09,0x09,0x06,0x01,0xFF,0x20,0x40,0x40,0x40,0x80,
|
||||
0x40,0x40,0x40,0x20,0x01,0x09,0x09,0x06,0x02,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,
|
||||
0x80,0x80,0x80,0x03,0x09,0x09,0x06,0x01,0xFF,0x80,0x40,0x40,0x40,0x20,0x40,0x40,
|
||||
0x40,0x80,0x05,0x03,0x03,0x06,0x00,0x02,0x48,0xA8,0x90,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x06,
|
||||
0x05,0xFF,0x01,0x07,0x07,0x06,0x02,0x00,0x80,0x00,0x80,0x80,0x80,0x80,0x80,0x05,
|
||||
0x07,0x07,0x06,0x00,0xFF,0x20,0x70,0xA8,0xA0,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x30,0x48,0x40,0xE0,0x40,0x48,0xB0,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,
|
||||
0x50,0x88,0x50,0xA8,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x50,0xF8,0x20,0xF8,0x20,
|
||||
0x20,0x01,0x07,0x07,0x06,0x02,0x00,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x04,0x08,
|
||||
0x08,0x06,0x01,0x00,0x70,0x80,0x60,0x90,0x90,0x60,0x10,0xE0,0x03,0x01,0x01,0x06,
|
||||
0x01,0x07,0xA0,0x06,0x07,0x07,0x06,0x00,0x00,0x78,0x84,0xB4,0xA4,0xB4,0x84,0x78,
|
||||
0x03,0x05,0x05,0x06,0x01,0x04,0x60,0xA0,0x60,0x00,0xE0,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x28,0x50,0xA0,0x50,0x28,0x05,0x03,0x03,0x06,0x00,0x01,0xF8,0x08,0x08,0x03,
|
||||
0x01,0x01,0x06,0x01,0x03,0xE0,0x06,0x07,0x07,0x06,0x00,0x00,0x78,0x84,0xB4,0xA4,
|
||||
0xA4,0x84,0x78,0x05,0x01,0x01,0x06,0x00,0x07,0xF8,0x04,0x04,0x04,0x06,0x01,0x05,
|
||||
0x60,0x90,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,
|
||||
0xF8,0x03,0x05,0x05,0x06,0x01,0x04,0x40,0xA0,0x20,0x40,0xE0,0x03,0x05,0x05,0x06,
|
||||
0x01,0x04,0xC0,0x20,0x40,0x20,0xC0,0x03,0x03,0x03,0x06,0x01,0x05,0x20,0x40,0x80,
|
||||
0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,0x98,0xE8,0x80,0x80,0x05,0x08,0x08,
|
||||
0x06,0x00,0x00,0x78,0xE8,0xE8,0xE8,0x68,0x28,0x28,0x28,0x02,0x02,0x02,0x06,0x02,
|
||||
0x03,0xC0,0xC0,0x03,0x02,0x02,0x06,0x01,0xFE,0x20,0xC0,0x03,0x05,0x05,0x06,0x01,
|
||||
0x04,0x40,0xC0,0x40,0x40,0xE0,0x03,0x05,0x05,0x06,0x01,0x05,0x40,0xA0,0x40,0x00,
|
||||
0xE0,0x05,0x05,0x05,0x06,0x00,0x00,0xA0,0x50,0x28,0x50,0xA0,0x05,0x0A,0x0A,0x06,
|
||||
0x00,0x00,0x40,0xC0,0x48,0x50,0x60,0x50,0xB0,0x50,0x78,0x10,0x05,0x0A,0x0A,0x06,
|
||||
0x00,0x00,0x40,0xC0,0x48,0x50,0x60,0x50,0xA8,0x08,0x10,0x38,0x05,0x0A,0x0A,0x06,
|
||||
0x00,0x00,0xC0,0x20,0x48,0x30,0xE0,0x50,0xB0,0x50,0x78,0x10,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x20,0x00,0x20,0x20,0x40,0x88,0x70,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,
|
||||
0x20,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x10,
|
||||
0x20,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x20,
|
||||
0x50,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x68,
|
||||
0xB0,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0x00,0x50,
|
||||
0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x20,0x50,
|
||||
0x20,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x78,0xA0,
|
||||
0xA0,0xF0,0xA0,0xA0,0xB8,0x05,0x09,0x09,0x06,0x00,0xFE,0x70,0x88,0x80,0x80,0x80,
|
||||
0x88,0x70,0x10,0x60,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,0x20,0x00,0xF8,0x80,0x80,
|
||||
0xF0,0x80,0x80,0xF8,0x05,0x0A,0x0A,0x06,0x00,0x00,0x10,0x20,0x00,0xF8,0x80,0x80,
|
||||
0xF0,0x80,0x80,0xF8,0x05,0x0A,0x0A,0x06,0x00,0x00,0x20,0x50,0x00,0xF8,0x80,0x80,
|
||||
0xF0,0x80,0x80,0xF8,0x05,0x09,0x09,0x06,0x00,0x00,0x50,0x00,0xF8,0x80,0x80,0xF0,
|
||||
0x80,0x80,0xF8,0x03,0x0A,0x0A,0x06,0x01,0x00,0x80,0x40,0x00,0xE0,0x40,0x40,0x40,
|
||||
0x40,0x40,0xE0,0x03,0x0A,0x0A,0x06,0x01,0x00,0x20,0x40,0x00,0xE0,0x40,0x40,0x40,
|
||||
0x40,0x40,0xE0,0x03,0x0A,0x0A,0x06,0x01,0x00,0x40,0xA0,0x00,0xE0,0x40,0x40,0x40,
|
||||
0x40,0x40,0xE0,0x03,0x09,0x09,0x06,0x01,0x00,0xA0,0x00,0xE0,0x40,0x40,0x40,0x40,
|
||||
0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x48,0x48,0xE8,0x48,0x48,0x70,0x05,
|
||||
0x0A,0x0A,0x06,0x00,0x00,0x68,0xB0,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x05,
|
||||
0x0A,0x0A,0x06,0x00,0x00,0x40,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,
|
||||
0x0A,0x0A,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,
|
||||
0x0A,0x0A,0x06,0x00,0x00,0x20,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,
|
||||
0x0A,0x0A,0x06,0x00,0x00,0x68,0xB0,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,
|
||||
0x09,0x09,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x05,
|
||||
0x05,0x06,0x00,0x01,0x88,0x50,0x20,0x50,0x88,0x05,0x09,0x09,0x06,0x00,0xFF,0x08,
|
||||
0x70,0x98,0xA8,0xA8,0xA8,0xC8,0x70,0x80,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,0x20,
|
||||
0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x0A,0x0A,0x06,0x00,0x00,0x10,0x20,
|
||||
0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x0A,0x0A,0x06,0x00,0x00,0x20,0x50,
|
||||
0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x09,0x09,0x06,0x00,0x00,0x50,0x00,
|
||||
0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x0A,0x0A,0x06,0x00,0x00,0x10,0x20,0x00,
|
||||
0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x04,0x07,0x07,0x06,0x01,0x00,0x80,0xE0,0x90,
|
||||
0x90,0x90,0xE0,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x90,0xA0,0x90,0x88,
|
||||
0xB0,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,0x70,0x08,0x78,0x88,0x78,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x08,0x08,
|
||||
0x06,0x00,0x00,0x20,0x50,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x08,0x08,0x06,0x00,
|
||||
0x00,0x68,0xB0,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x50,
|
||||
0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x50,0x20,0x70,
|
||||
0x08,0x78,0x88,0x78,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x28,0x70,0xA0,0x78,0x05,
|
||||
0x07,0x07,0x06,0x00,0xFE,0x70,0x88,0x80,0x88,0x70,0x10,0x60,0x05,0x08,0x08,0x06,
|
||||
0x00,0x00,0x40,0x20,0x00,0x70,0x88,0xF0,0x80,0x70,0x05,0x08,0x08,0x06,0x00,0x00,
|
||||
0x10,0x20,0x00,0x70,0x88,0xF0,0x80,0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x50,
|
||||
0x00,0x70,0x88,0xF0,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,0x88,
|
||||
0xF0,0x80,0x70,0x03,0x08,0x08,0x06,0x01,0x00,0x80,0x40,0x00,0xC0,0x40,0x40,0x40,
|
||||
0xE0,0x03,0x08,0x08,0x06,0x01,0x00,0x20,0x40,0x00,0xC0,0x40,0x40,0x40,0xE0,0x03,
|
||||
0x08,0x08,0x06,0x01,0x00,0x40,0xA0,0x00,0xC0,0x40,0x40,0x40,0xE0,0x03,0x07,0x07,
|
||||
0x06,0x01,0x00,0xA0,0x00,0xC0,0x40,0x40,0x40,0xE0,0x05,0x09,0x09,0x06,0x00,0x00,
|
||||
0x50,0x20,0x50,0x08,0x78,0x88,0x88,0x88,0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x68,
|
||||
0xB0,0x00,0xB0,0xC8,0x88,0x88,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,
|
||||
0x70,0x88,0x88,0x88,0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,
|
||||
0x88,0x88,0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x50,0x00,0x70,0x88,0x88,0x88,
|
||||
0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x68,0xB0,0x00,0x70,0x88,0x88,0x88,0x70,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,
|
||||
0x00,0x01,0x20,0x00,0xF8,0x00,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x78,0x98,0xA8,
|
||||
0xC8,0xF0,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,0x88,0x88,0x88,0x88,0x70,
|
||||
0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x88,0x88,0x88,0x88,0x70,0x05,0x08,
|
||||
0x08,0x06,0x00,0x00,0x20,0x50,0x00,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x50,0x00,0x88,0x88,0x88,0x88,0x70,0x05,0x0A,0x0A,0x06,0x00,0xFE,0x10,
|
||||
0x20,0x00,0x88,0x88,0x88,0x50,0x20,0x40,0x80,0x05,0x09,0x09,0x06,0x00,0xFE,0x80,
|
||||
0x80,0xF0,0x88,0x88,0x88,0xF0,0x80,0x80,0x05,0x09,0x09,0x06,0x00,0xFE,0x50,0x00,
|
||||
0x88,0x88,0x88,0x50,0x20,0x40,0x80};
|
||||
|
||||
#endif
|
||||
|
||||
23
Marlin/src/lcd/dogm/fontdata/langdata.h
Normal file
23
Marlin/src/lcd/dogm/fontdata/langdata.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <U8glib-HAL.h>
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_an.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_an.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_an[] PROGMEM = {};
|
||||
|
||||
97
Marlin/src/lcd/dogm/fontdata/langdata_bg.h
Executable file → Normal file
97
Marlin/src/lcd/dogm/fontdata/langdata_bg.h
Executable file → Normal file
@@ -3,75 +3,76 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_8_144_149[96] U8G_FONT_SECTION("fontpage_8_144_149") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x90,0x95,0x00,0x07,0xff,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xf0,0x80,0x80,0xf0,0x88,0x88,0xf0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xf0,0x88,0x88,0xf0,0x88,0x88,0xf0,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x80,
|
||||
0x80,0x80,0x80,0x80,0x80,0x05,0x08,0x08,0x06,0x00,0xff,0x30,0x50,0x50,0x50,0x50,
|
||||
0x50,0xf8,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x80,0x80,0xf0,0x80,0x80,0xf8
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0x95,0x00,0x07,0xFF,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xF0,0x80,0x80,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,
|
||||
0x80,0x80,0x80,0x80,0x80,0x05,0x08,0x08,0x06,0x00,0xFF,0x30,0x50,0x50,0x50,0x50,
|
||||
0x50,0xF8,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_151_152[43] U8G_FONT_SECTION("fontpage_8_151_152") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x97,0x98,0x00,0x07,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x97,0x98,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x08,0x70,0x08,0x88,0x70,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x88,0x88,0x98,0xa8,0xc8,0x88,0x88};
|
||||
0x07,0x06,0x00,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_154_164[160] U8G_FONT_SECTION("fontpage_8_154_164") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x9a,0xa4,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xa0,0xc0,0xa0,0x90,0x88,0x05,0x07,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9A,0xA4,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x48,0x48,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x88,0xd8,0xa8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,
|
||||
0x88,0xf8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,
|
||||
0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xf0,0x88,0x88,0xf0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,
|
||||
0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,
|
||||
0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,
|
||||
0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,
|
||||
0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,
|
||||
0x78,0x08,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,0xa8,0xa8,0xa8,0x70,0x20
|
||||
0x78,0x08,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,0xA8,0xA8,0xA8,0x70,0x20
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_166_166[32] U8G_FONT_SECTION("fontpage_8_166_166") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa6,0xa6,0x00,0x07,0xfe,0x00,
|
||||
0x00,0x05,0x09,0x09,0x06,0x00,0xfe,0x90,0x90,0x90,0x90,0x90,0x90,0xf8,0x08,0x08
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x07,0xFE,0x00,
|
||||
0x00,0x05,0x09,0x09,0x06,0x00,0xFE,0x90,0x90,0x90,0x90,0x90,0x90,0xF8,0x08,0x08
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_175_195[260] U8G_FONT_SECTION("fontpage_8_175_195") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xaf,0xc3,0x00,0x08,0xfe,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xC3,0x00,0x08,0xFE,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x78,0x88,0x88,0x78,0x28,0x48,0x88,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
|
||||
0x80,0xf0,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xf0,0x88,0xf0,0x88,
|
||||
0xf0,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x80,0x80,0x80,0x80,0x05,0x06,0x06,0x06,
|
||||
0x00,0xff,0x30,0x50,0x50,0x50,0xf8,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,
|
||||
0xf0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xa8,0x70,0x20,0x70,0xa8,0x05,0x05,
|
||||
0x80,0xF0,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF0,0x88,0xF0,0x88,
|
||||
0xF0,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x05,0x06,0x06,0x06,
|
||||
0x00,0xFF,0x30,0x50,0x50,0x50,0xF8,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,
|
||||
0xF0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0x70,0x20,0x70,0xA8,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0x70,0x88,0x30,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x88,
|
||||
0x98,0xa8,0xc8,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x88,0x98,0xa8,
|
||||
0xc8,0x88,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xa0,0xc0,0xa0,0x90,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0xd8,
|
||||
0xa8,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xf8,0x88,0x88,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,
|
||||
0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0xfe,0xf0,0x88,0x88,0x88,0xf0,0x80,
|
||||
0x98,0xA8,0xC8,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x88,0x98,0xA8,
|
||||
0xC8,0x88,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xA0,0xC0,0xA0,0x90,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0xD8,
|
||||
0xA8,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xF8,0x88,0x88,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,
|
||||
0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0xFE,0xF0,0x88,0x88,0x88,0xF0,0x80,
|
||||
0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x80,0x88,0x70,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0xf8,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xfe,0x88,0x88,0x88,
|
||||
0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,
|
||||
0x88,0x78,0x08,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_197_200[63] U8G_FONT_SECTION("fontpage_8_197_200") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xc5,0xc8,0x00,0x05,0xfe,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC5,0xC8,0x00,0x05,0xFE,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x05,0x07,0x07,0x06,
|
||||
0x00,0xfe,0x90,0x90,0x90,0x90,0xf8,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0x88,
|
||||
0x88,0x78,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0xa8,0xa8,0xa8,0xa8,0xf8};
|
||||
0x00,0xFE,0x90,0x90,0x90,0x90,0xF8,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0x88,
|
||||
0x88,0x78,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xF8};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_202_202[28] U8G_FONT_SECTION("fontpage_8_202_202") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xca,0xca,0x00,0x05,0x00,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0xc0,0x40,0x70,0x48,0x70};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCA,0xCA,0x00,0x05,0x00,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0xC0,0x40,0x70,0x48,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_206_207[39] U8G_FONT_SECTION("fontpage_8_206_207") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xce,0xcf,0x00,0x05,0x00,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x90,0xa8,0xe8,0xa8,0x90,0x04,0x05,0x05,0x06,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCE,0xCF,0x00,0x05,0x00,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x90,0xA8,0xE8,0xA8,0x90,0x04,0x05,0x05,0x06,
|
||||
0x01,0x00,0x70,0x90,0x70,0x50,0x90};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(8, 144, 149, fontpage_8_144_149), // 'А' -- 'Е'
|
||||
FONTDATA_ITEM(8, 151, 152, fontpage_8_151_152), // 'З' -- 'И'
|
||||
FONTDATA_ITEM(8, 154, 164, fontpage_8_154_164), // 'К' -- 'Ф'
|
||||
FONTDATA_ITEM(8, 166, 166, fontpage_8_166_166), // 'Ц' -- 'Ц'
|
||||
FONTDATA_ITEM(8, 175, 195, fontpage_8_175_195), // 'Я' -- 'у'
|
||||
FONTDATA_ITEM(8, 197, 200, fontpage_8_197_200), // 'х' -- 'ш'
|
||||
FONTDATA_ITEM(8, 202, 202, fontpage_8_202_202), // 'ъ' -- 'ъ'
|
||||
FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // 'ю' -- 'я'
|
||||
static const uxg_fontinfo_t g_fontinfo_bg[] PROGMEM = {
|
||||
FONTDATA_ITEM(8, 144, 149, fontpage_8_144_149), // 'А' -- 'Е'
|
||||
FONTDATA_ITEM(8, 151, 152, fontpage_8_151_152), // 'З' -- 'И'
|
||||
FONTDATA_ITEM(8, 154, 164, fontpage_8_154_164), // 'К' -- 'Ф'
|
||||
FONTDATA_ITEM(8, 166, 166, fontpage_8_166_166), // 'Ц' -- 'Ц'
|
||||
FONTDATA_ITEM(8, 175, 195, fontpage_8_175_195), // 'Я' -- 'у'
|
||||
FONTDATA_ITEM(8, 197, 200, fontpage_8_197_200), // 'х' -- 'ш'
|
||||
FONTDATA_ITEM(8, 202, 202, fontpage_8_202_202), // 'ъ' -- 'ъ'
|
||||
FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // 'ю' -- 'я'
|
||||
};
|
||||
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_ca.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_ca.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_ca[] PROGMEM = {};
|
||||
|
||||
69
Marlin/src/lcd/dogm/fontdata/langdata_cz.h
Executable file → Normal file
69
Marlin/src/lcd/dogm/fontdata/langdata_cz.h
Executable file → Normal file
@@ -3,50 +3,53 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_2_140_141[47] U8G_FONT_SECTION("fontpage_2_140_141") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x8c,0x8d,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x80,0x80,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8D,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x80,0x80,0x88,
|
||||
0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x88,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_143_143[33] U8G_FONT_SECTION("fontpage_2_143_143") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x8f,0x8f,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x06,0x0a,0x0a,0x06,0x00,0x00,0x14,0x08,0x00,0x08,0x08,0x78,0x88,0x88,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8F,0x8F,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x06,0x0A,0x0A,0x06,0x00,0x00,0x14,0x08,0x00,0x08,0x08,0x78,0x88,0x88,0x88,
|
||||
0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_155_155[31] U8G_FONT_SECTION("fontpage_2_155_155") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x9b,0x9b,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0xf0,0x80,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_154_155[47] U8G_FONT_SECTION("fontpage_2_154_155") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9A,0x9B,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,
|
||||
0xF8,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0xF0,0x80,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_200_200[31] U8G_FONT_SECTION("fontpage_2_200_200") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xc8,0xc8,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xb0,0xc8,0x88,0x88,0x88};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_216_217[47] U8G_FONT_SECTION("fontpage_2_216_217") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xd8,0xd9,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x50,0x20,0x00,0xf0,0x88,0x88,0xf0,0xa0,0x90,
|
||||
0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xb0,0xc8,0x80,0x80,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_225_225[31] U8G_FONT_SECTION("fontpage_2_225_225") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xe1,0xe1,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x78,0x80,0x70,0x08,0xf0};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD8,0xD9,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0xF0,0x88,0x88,0xF0,0xA0,0x90,
|
||||
0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xB0,0xC8,0x80,0x80,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_224_225[47] U8G_FONT_SECTION("fontpage_2_224_225") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE0,0xE1,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x70,0x08,0x88,
|
||||
0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x78,0x80,0x70,0x08,0xF0};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_229_229[33] U8G_FONT_SECTION("fontpage_2_229_229") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xe5,0xe5,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x50,0x20,0x00,0x20,0x20,0xf8,0x20,0x20,0x20,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x20,0x20,0xF8,0x20,0x20,0x20,
|
||||
0x18};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_239_239[31] U8G_FONT_SECTION("fontpage_2_239_239") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xef,0xef,0x00,0x08,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEF,0xEF,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x50,0x20,0x88,0x88,0x88,0x88,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_253_254[47] U8G_FONT_SECTION("fontpage_2_253_254") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xfd,0xfe,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x50,0x20,0x00,0xf8,0x08,0x10,0x20,0x40,0x80,
|
||||
0xf8,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xf8,0x10,0x20,0x40,0xf8};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFE,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,
|
||||
0xF8,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // 'Č' -- 'č'
|
||||
FONTDATA_ITEM(2, 143, 143, fontpage_2_143_143), // 'ď' -- 'ď'
|
||||
FONTDATA_ITEM(2, 155, 155, fontpage_2_155_155), // 'ě' -- 'ě'
|
||||
FONTDATA_ITEM(2, 200, 200, fontpage_2_200_200), // 'ň' -- 'ň'
|
||||
FONTDATA_ITEM(2, 216, 217, fontpage_2_216_217), // 'Ř' -- 'ř'
|
||||
FONTDATA_ITEM(2, 225, 225, fontpage_2_225_225), // 'š' -- 'š'
|
||||
FONTDATA_ITEM(2, 229, 229, fontpage_2_229_229), // 'ť' -- 'ť'
|
||||
FONTDATA_ITEM(2, 239, 239, fontpage_2_239_239), // 'ů' -- 'ů'
|
||||
FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // 'Ž' -- 'ž'
|
||||
static const uxg_fontinfo_t g_fontinfo_cz[] PROGMEM = {
|
||||
FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // 'Č' -- 'č'
|
||||
FONTDATA_ITEM(2, 143, 143, fontpage_2_143_143), // 'ď' -- 'ď'
|
||||
FONTDATA_ITEM(2, 154, 155, fontpage_2_154_155), // 'Ě' -- 'ě'
|
||||
FONTDATA_ITEM(2, 200, 200, fontpage_2_200_200), // 'ň' -- 'ň'
|
||||
FONTDATA_ITEM(2, 216, 217, fontpage_2_216_217), // 'Ř' -- 'ř'
|
||||
FONTDATA_ITEM(2, 224, 225, fontpage_2_224_225), // 'Š' -- 'š'
|
||||
FONTDATA_ITEM(2, 229, 229, fontpage_2_229_229), // 'ť' -- 'ť'
|
||||
FONTDATA_ITEM(2, 239, 239, fontpage_2_239_239), // 'ů' -- 'ů'
|
||||
FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // 'Ž' -- 'ž'
|
||||
};
|
||||
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_da.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_da.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_da[] PROGMEM = {};
|
||||
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_de.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_de.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_de[] PROGMEM = {};
|
||||
|
||||
123
Marlin/src/lcd/dogm/fontdata/langdata_el.h
Executable file → Normal file
123
Marlin/src/lcd/dogm/fontdata/langdata_el.h
Executable file → Normal file
@@ -3,92 +3,89 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_7_136_136[33] U8G_FONT_SECTION("fontpage_7_136_136") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x40,0x80,0x00,0xf8,0x80,0x80,0xf0,0x80,0x80,
|
||||
0xf8};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,0x80,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,
|
||||
0xF8};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_145_157[186] U8G_FONT_SECTION("fontpage_7_145_157") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x91,0x9d,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xf0,0x88,0x88,0xf0,0x88,0x88,0xf0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xf8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,
|
||||
0x50,0x50,0x88,0x88,0xf8,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x80,0x80,0xf0,0x80,
|
||||
0x80,0xf8,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x08,0x10,0x20,0x40,0x80,0xf8,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x88,0xf8,0x88,0x88,0x70,0x03,0x07,0x07,0x06,0x01,0x00,0xe0,
|
||||
0x40,0x40,0x40,0x40,0x40,0xe0,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xa0,0xc0,
|
||||
0xa0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0x50,0x50,0x88,0x88,0x88,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xd8,0xa8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x88,0x88,0xc8,0xa8,0x98,0x88,0x88};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x9D,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,
|
||||
0x50,0x50,0x88,0x88,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,
|
||||
0x80,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x70,0x03,0x07,0x07,0x06,0x01,0x00,0xE0,
|
||||
0x40,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,0xC0,
|
||||
0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0x50,0x50,0x88,0x88,0x88,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_159_161[56] U8G_FONT_SECTION("fontpage_7_159_161") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x9f,0xa1,0x00,0x07,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0xA1,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xf0,0x88,0x88,0xf0,0x80,0x80,0x80};
|
||||
0x07,0x06,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xF0,0x88,0x88,0xF0,0x80,0x80,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_163_167[82] U8G_FONT_SECTION("fontpage_7_163_167") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa3,0xa7,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x40,0x20,0x10,0x20,0x40,0xf8,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA3,0xA7,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x40,0x20,0x10,0x20,0x40,0xF8,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,
|
||||
0xa8,0xa8,0xa8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,
|
||||
0xA8,0xA8,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,
|
||||
0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_169_169[30] U8G_FONT_SECTION("fontpage_7_169_169") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa9,0xa9,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x50,0xd8};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_172_175[75] U8G_FONT_SECTION("fontpage_7_172_175") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xac,0xaf,0x00,0x08,0xfe,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAC,0xAF,0x00,0x08,0xFE,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x68,0x90,0x90,0x90,0x68,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x60,0x88,0x70,0x05,0x0a,0x0a,
|
||||
0x06,0x00,0xfe,0x10,0x20,0x00,0xb0,0xc8,0x88,0x88,0x88,0x08,0x08,0x03,0x08,0x08,
|
||||
0x06,0x01,0x00,0x40,0x80,0x00,0x80,0x80,0x80,0xa0,0x40};
|
||||
0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x60,0x88,0x70,0x05,0x0A,0x0A,
|
||||
0x06,0x00,0xFE,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x08,0x08,0x03,0x08,0x08,
|
||||
0x06,0x01,0x00,0x40,0x80,0x00,0x80,0x80,0x80,0xA0,0x40};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_177_181[80] U8G_FONT_SECTION("fontpage_7_177_181") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xb1,0xb5,0x00,0x07,0xfe,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB5,0x00,0x07,0xFE,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x68,0x90,0x90,0x90,0x68,0x05,0x09,0x09,0x06,
|
||||
0x00,0xfe,0x60,0x90,0x90,0xb0,0x88,0x88,0xf0,0x80,0x80,0x05,0x07,0x07,0x06,0x00,
|
||||
0xfe,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x80,
|
||||
0x00,0xFE,0x60,0x90,0x90,0xB0,0x88,0x88,0xF0,0x80,0x80,0x05,0x07,0x07,0x06,0x00,
|
||||
0xFE,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x80,
|
||||
0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x60,0x88,0x70
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_183_199[226] U8G_FONT_SECTION("fontpage_7_183_199") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xb7,0xc7,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0xfe,0xb0,0xc8,0x88,0x88,0x88,0x08,0x08,0x04,0x07,
|
||||
0x07,0x06,0x01,0x00,0x60,0x90,0x90,0xf0,0x90,0x90,0x60,0x03,0x05,0x05,0x06,0x02,
|
||||
0x00,0x80,0x80,0x80,0xa0,0x40,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xa0,0xc0,0xa0,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB7,0xC7,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0xFE,0xB0,0xC8,0x88,0x88,0x88,0x08,0x08,0x04,0x07,
|
||||
0x07,0x06,0x01,0x00,0x60,0x90,0x90,0xF0,0x90,0x90,0x60,0x03,0x05,0x05,0x06,0x02,
|
||||
0x00,0x80,0x80,0x80,0xA0,0x40,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xA0,0xC0,0xA0,
|
||||
0x90,0x05,0x09,0x09,0x06,0x00,0x00,0x80,0x40,0x40,0x20,0x20,0x50,0x50,0x88,0x88,
|
||||
0x05,0x07,0x07,0x06,0x00,0xfe,0x88,0x88,0x88,0x98,0xe8,0x80,0x80,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x05,0x09,0x09,0x06,0x00,0xfe,0xf8,0x20,
|
||||
0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,0x98,0xE8,0x80,0x80,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x05,0x09,0x09,0x06,0x00,0xFE,0xF8,0x20,
|
||||
0x40,0x70,0x80,0x80,0x70,0x08,0x10,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x88,
|
||||
0x88,0x70,0x06,0x05,0x05,0x06,0x00,0x00,0xf8,0x50,0x50,0x54,0x48,0x05,0x07,0x07,
|
||||
0x06,0x00,0xfe,0x70,0x88,0x88,0xc8,0xb0,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0xfe,
|
||||
0x88,0x70,0x06,0x05,0x05,0x06,0x00,0x00,0xF8,0x50,0x50,0x54,0x48,0x05,0x07,0x07,
|
||||
0x06,0x00,0xFE,0x70,0x88,0x88,0xC8,0xB0,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0xFE,
|
||||
0x70,0x88,0x80,0x80,0x70,0x08,0x30,0x05,0x05,0x05,0x06,0x00,0x00,0x78,0x90,0x88,
|
||||
0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x20,0x20,0x28,0x10,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x90,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0xfe,0x10,0xa8,
|
||||
0xa8,0xa8,0x70,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xfe,0x88,0x88,0x50,0x20,0x50,
|
||||
0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,0x20,0x20,0x28,0x10,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x90,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0xFE,0x10,0xA8,
|
||||
0xA8,0xA8,0x70,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x50,0x20,0x50,
|
||||
0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_201_201[28] U8G_FONT_SECTION("fontpage_7_201_201") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xc9,0xc9,0x00,0x05,0x00,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x50,0x88,0xa8,0xa8,0x50};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC9,0xC9,0x00,0x05,0x00,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x50,0x88,0xA8,0xA8,0x50};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_204_206[59] U8G_FONT_SECTION("fontpage_7_204_206") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xcc,0xce,0x00,0x08,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCC,0xCE,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x70,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x90,0x88,0x88,0x88,0x70,0x05,0x08,0x08,
|
||||
0x06,0x00,0x00,0x10,0x20,0x00,0x50,0x88,0xa8,0xa8,0x50};
|
||||
0x06,0x00,0x00,0x10,0x20,0x00,0x50,0x88,0xA8,0xA8,0x50};
|
||||
const u8g_fntpgm_uint8_t fontpage_64_166_166[24] U8G_FONT_SECTION("fontpage_64_166_166") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa6,0xa6,0x00,0x01,0x00,0x00,
|
||||
0x00,0x05,0x01,0x01,0x06,0x00,0x00,0xa8};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x01,0x00,0x00,
|
||||
0x00,0x05,0x01,0x01,0x06,0x00,0x00,0xA8};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ'
|
||||
FONTDATA_ITEM(7, 145, 157, fontpage_7_145_157), // 'Α' -- 'Ν'
|
||||
FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ'
|
||||
FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ'
|
||||
FONTDATA_ITEM(7, 169, 169, fontpage_7_169_169), // 'Ω' -- 'Ω'
|
||||
FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί'
|
||||
FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // 'α' -- 'ε'
|
||||
FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // 'η' -- 'χ'
|
||||
FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // 'ω' -- 'ω'
|
||||
FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // 'ό' -- 'ώ'
|
||||
FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // '…' -- '…'
|
||||
static const uxg_fontinfo_t g_fontinfo_el[] PROGMEM = {
|
||||
FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ'
|
||||
FONTDATA_ITEM(7, 145, 157, fontpage_7_145_157), // 'Α' -- 'Ν'
|
||||
FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ'
|
||||
FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ'
|
||||
FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί'
|
||||
FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // 'α' -- 'ε'
|
||||
FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // 'η' -- 'χ'
|
||||
FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // 'ω' -- 'ω'
|
||||
FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // 'ό' -- 'ώ'
|
||||
FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // '…' -- '…'
|
||||
};
|
||||
|
||||
91
Marlin/src/lcd/dogm/fontdata/langdata_el_CY.h
Normal file
91
Marlin/src/lcd/dogm/fontdata/langdata_el_CY.h
Normal file
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* Generated automatically by buildroot/share/fonts/uxggenpages.sh
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_7_136_136[33] U8G_FONT_SECTION("fontpage_7_136_136") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,0x80,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,
|
||||
0xF8};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_145_157[186] U8G_FONT_SECTION("fontpage_7_145_157") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x9D,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,
|
||||
0x50,0x50,0x88,0x88,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,
|
||||
0x80,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x70,0x03,0x07,0x07,0x06,0x01,0x00,0xE0,
|
||||
0x40,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,0xC0,
|
||||
0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0x50,0x50,0x88,0x88,0x88,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_159_161[56] U8G_FONT_SECTION("fontpage_7_159_161") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0xA1,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xF0,0x88,0x88,0xF0,0x80,0x80,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_163_167[82] U8G_FONT_SECTION("fontpage_7_163_167") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA3,0xA7,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x40,0x20,0x10,0x20,0x40,0xF8,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,
|
||||
0xA8,0xA8,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,
|
||||
0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_172_175[75] U8G_FONT_SECTION("fontpage_7_172_175") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAC,0xAF,0x00,0x08,0xFE,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x68,0x90,0x90,0x90,0x68,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x60,0x88,0x70,0x05,0x0A,0x0A,
|
||||
0x06,0x00,0xFE,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x08,0x08,0x03,0x08,0x08,
|
||||
0x06,0x01,0x00,0x40,0x80,0x00,0x80,0x80,0x80,0xA0,0x40};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_177_181[80] U8G_FONT_SECTION("fontpage_7_177_181") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB5,0x00,0x07,0xFE,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x68,0x90,0x90,0x90,0x68,0x05,0x09,0x09,0x06,
|
||||
0x00,0xFE,0x60,0x90,0x90,0xB0,0x88,0x88,0xF0,0x80,0x80,0x05,0x07,0x07,0x06,0x00,
|
||||
0xFE,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x80,
|
||||
0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x60,0x88,0x70
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_183_199[226] U8G_FONT_SECTION("fontpage_7_183_199") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB7,0xC7,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0xFE,0xB0,0xC8,0x88,0x88,0x88,0x08,0x08,0x04,0x07,
|
||||
0x07,0x06,0x01,0x00,0x60,0x90,0x90,0xF0,0x90,0x90,0x60,0x03,0x05,0x05,0x06,0x02,
|
||||
0x00,0x80,0x80,0x80,0xA0,0x40,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xA0,0xC0,0xA0,
|
||||
0x90,0x05,0x09,0x09,0x06,0x00,0x00,0x80,0x40,0x40,0x20,0x20,0x50,0x50,0x88,0x88,
|
||||
0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,0x98,0xE8,0x80,0x80,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x05,0x09,0x09,0x06,0x00,0xFE,0xF8,0x20,
|
||||
0x40,0x70,0x80,0x80,0x70,0x08,0x10,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x88,
|
||||
0x88,0x70,0x06,0x05,0x05,0x06,0x00,0x00,0xF8,0x50,0x50,0x54,0x48,0x05,0x07,0x07,
|
||||
0x06,0x00,0xFE,0x70,0x88,0x88,0xC8,0xB0,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0xFE,
|
||||
0x70,0x88,0x80,0x80,0x70,0x08,0x30,0x05,0x05,0x05,0x06,0x00,0x00,0x78,0x90,0x88,
|
||||
0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,0x20,0x20,0x28,0x10,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x90,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0xFE,0x10,0xA8,
|
||||
0xA8,0xA8,0x70,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x50,0x20,0x50,
|
||||
0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_201_201[28] U8G_FONT_SECTION("fontpage_7_201_201") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC9,0xC9,0x00,0x05,0x00,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x50,0x88,0xA8,0xA8,0x50};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_204_206[59] U8G_FONT_SECTION("fontpage_7_204_206") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCC,0xCE,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x70,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x90,0x88,0x88,0x88,0x70,0x05,0x08,0x08,
|
||||
0x06,0x00,0x00,0x10,0x20,0x00,0x50,0x88,0xA8,0xA8,0x50};
|
||||
const u8g_fntpgm_uint8_t fontpage_64_166_166[24] U8G_FONT_SECTION("fontpage_64_166_166") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x01,0x00,0x00,
|
||||
0x00,0x05,0x01,0x01,0x06,0x00,0x00,0xA8};
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_el_CY[] PROGMEM = {
|
||||
FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ'
|
||||
FONTDATA_ITEM(7, 145, 157, fontpage_7_145_157), // 'Α' -- 'Ν'
|
||||
FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ'
|
||||
FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ'
|
||||
FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί'
|
||||
FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // 'α' -- 'ε'
|
||||
FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // 'η' -- 'χ'
|
||||
FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // 'ω' -- 'ω'
|
||||
FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // 'ό' -- 'ώ'
|
||||
FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // '…' -- '…'
|
||||
};
|
||||
@@ -1,90 +0,0 @@
|
||||
/**
|
||||
* Generated automatically by buildroot/share/fonts/uxggenpages.sh
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_7_136_136[33] U8G_FONT_SECTION("fontpage_7_136_136") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x40,0x80,0x00,0xf8,0x80,0x80,0xf0,0x80,0x80,
|
||||
0xf8};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_145_157[186] U8G_FONT_SECTION("fontpage_7_145_157") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x91,0x9d,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xf0,0x88,0x88,0xf0,0x88,0x88,0xf0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xf8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,
|
||||
0x50,0x50,0x88,0x88,0xf8,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x80,0x80,0xf0,0x80,
|
||||
0x80,0xf8,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x08,0x10,0x20,0x40,0x80,0xf8,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x88,0xf8,0x88,0x88,0x70,0x03,0x07,0x07,0x06,0x01,0x00,0xe0,
|
||||
0x40,0x40,0x40,0x40,0x40,0xe0,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xa0,0xc0,
|
||||
0xa0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0x50,0x50,0x88,0x88,0x88,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xd8,0xa8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x88,0x88,0xc8,0xa8,0x98,0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_159_161[56] U8G_FONT_SECTION("fontpage_7_159_161") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x9f,0xa1,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xf0,0x88,0x88,0xf0,0x80,0x80,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_163_167[82] U8G_FONT_SECTION("fontpage_7_163_167") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa3,0xa7,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x40,0x20,0x10,0x20,0x40,0xf8,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,
|
||||
0xa8,0xa8,0xa8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,
|
||||
0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_172_175[75] U8G_FONT_SECTION("fontpage_7_172_175") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xac,0xaf,0x00,0x08,0xfe,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x68,0x90,0x90,0x90,0x68,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x60,0x88,0x70,0x05,0x0a,0x0a,
|
||||
0x06,0x00,0xfe,0x10,0x20,0x00,0xb0,0xc8,0x88,0x88,0x88,0x08,0x08,0x03,0x08,0x08,
|
||||
0x06,0x01,0x00,0x40,0x80,0x00,0x80,0x80,0x80,0xa0,0x40};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_177_181[80] U8G_FONT_SECTION("fontpage_7_177_181") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xb1,0xb5,0x00,0x07,0xfe,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x68,0x90,0x90,0x90,0x68,0x05,0x09,0x09,0x06,
|
||||
0x00,0xfe,0x60,0x90,0x90,0xb0,0x88,0x88,0xf0,0x80,0x80,0x05,0x07,0x07,0x06,0x00,
|
||||
0xfe,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x80,
|
||||
0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x60,0x88,0x70
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_183_199[226] U8G_FONT_SECTION("fontpage_7_183_199") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xb7,0xc7,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0xfe,0xb0,0xc8,0x88,0x88,0x88,0x08,0x08,0x04,0x07,
|
||||
0x07,0x06,0x01,0x00,0x60,0x90,0x90,0xf0,0x90,0x90,0x60,0x03,0x05,0x05,0x06,0x02,
|
||||
0x00,0x80,0x80,0x80,0xa0,0x40,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xa0,0xc0,0xa0,
|
||||
0x90,0x05,0x09,0x09,0x06,0x00,0x00,0x80,0x40,0x40,0x20,0x20,0x50,0x50,0x88,0x88,
|
||||
0x05,0x07,0x07,0x06,0x00,0xfe,0x88,0x88,0x88,0x98,0xe8,0x80,0x80,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x05,0x09,0x09,0x06,0x00,0xfe,0xf8,0x20,
|
||||
0x40,0x70,0x80,0x80,0x70,0x08,0x10,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x88,
|
||||
0x88,0x70,0x06,0x05,0x05,0x06,0x00,0x00,0xf8,0x50,0x50,0x54,0x48,0x05,0x07,0x07,
|
||||
0x06,0x00,0xfe,0x70,0x88,0x88,0xc8,0xb0,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0xfe,
|
||||
0x70,0x88,0x80,0x80,0x70,0x08,0x30,0x05,0x05,0x05,0x06,0x00,0x00,0x78,0x90,0x88,
|
||||
0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x20,0x20,0x28,0x10,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x90,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0xfe,0x10,0xa8,
|
||||
0xa8,0xa8,0x70,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xfe,0x88,0x88,0x50,0x20,0x50,
|
||||
0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_201_201[28] U8G_FONT_SECTION("fontpage_7_201_201") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xc9,0xc9,0x00,0x05,0x00,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x50,0x88,0xa8,0xa8,0x50};
|
||||
const u8g_fntpgm_uint8_t fontpage_7_204_206[59] U8G_FONT_SECTION("fontpage_7_204_206") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xcc,0xce,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x70,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x90,0x88,0x88,0x88,0x70,0x05,0x08,0x08,
|
||||
0x06,0x00,0x00,0x10,0x20,0x00,0x50,0x88,0xa8,0xa8,0x50};
|
||||
const u8g_fntpgm_uint8_t fontpage_64_166_166[24] U8G_FONT_SECTION("fontpage_64_166_166") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa6,0xa6,0x00,0x01,0x00,0x00,
|
||||
0x00,0x05,0x01,0x01,0x06,0x00,0x00,0xa8};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ'
|
||||
FONTDATA_ITEM(7, 145, 157, fontpage_7_145_157), // 'Α' -- 'Ν'
|
||||
FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ'
|
||||
FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ'
|
||||
FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί'
|
||||
FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // 'α' -- 'ε'
|
||||
FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // 'η' -- 'χ'
|
||||
FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // 'ω' -- 'ω'
|
||||
FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // 'ό' -- 'ώ'
|
||||
FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // '…' -- '…'
|
||||
};
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_en.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_en.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_en[] PROGMEM = {};
|
||||
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_es.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_es.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_es[] PROGMEM = {};
|
||||
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_eu.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_eu.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_eu[] PROGMEM = {};
|
||||
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_fi.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_fi.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_fi[] PROGMEM = {};
|
||||
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_fr.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_fr.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_fr[] PROGMEM = {};
|
||||
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_gl.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_gl.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_gl[] PROGMEM = {};
|
||||
|
||||
35
Marlin/src/lcd/dogm/fontdata/langdata_hr.h
Executable file → Normal file
35
Marlin/src/lcd/dogm/fontdata/langdata_hr.h
Executable file → Normal file
@@ -3,30 +3,31 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_2_135_135[31] U8G_FONT_SECTION("fontpage_2_135_135") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x08,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x88,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_140_141[47] U8G_FONT_SECTION("fontpage_2_140_141") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x8c,0x8d,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x80,0x80,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8D,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x80,0x80,0x88,
|
||||
0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x88,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_145_145[31] U8G_FONT_SECTION("fontpage_2_145_145") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x91,0x91,0x00,0x08,0x00,0x00,
|
||||
0x00,0x06,0x08,0x08,0x06,0x00,0x00,0x08,0x1c,0x08,0x78,0x88,0x88,0x88,0x78};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x91,0x00,0x08,0x00,0x00,
|
||||
0x00,0x06,0x08,0x08,0x06,0x00,0x00,0x08,0x1C,0x08,0x78,0x88,0x88,0x88,0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_225_225[31] U8G_FONT_SECTION("fontpage_2_225_225") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xe1,0xe1,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x78,0x80,0x70,0x08,0xf0};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE1,0xE1,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x78,0x80,0x70,0x08,0xF0};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_254_254[31] U8G_FONT_SECTION("fontpage_2_254_254") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xfe,0xfe,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xf8,0x10,0x20,0x40,0xf8};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // 'ć' -- 'ć'
|
||||
FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // 'Č' -- 'č'
|
||||
FONTDATA_ITEM(2, 145, 145, fontpage_2_145_145), // 'đ' -- 'đ'
|
||||
FONTDATA_ITEM(2, 225, 225, fontpage_2_225_225), // 'š' -- 'š'
|
||||
FONTDATA_ITEM(2, 254, 254, fontpage_2_254_254), // 'ž' -- 'ž'
|
||||
static const uxg_fontinfo_t g_fontinfo_hr[] PROGMEM = {
|
||||
FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // 'ć' -- 'ć'
|
||||
FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // 'Č' -- 'č'
|
||||
FONTDATA_ITEM(2, 145, 145, fontpage_2_145_145), // 'đ' -- 'đ'
|
||||
FONTDATA_ITEM(2, 225, 225, fontpage_2_225_225), // 'š' -- 'š'
|
||||
FONTDATA_ITEM(2, 254, 254, fontpage_2_254_254), // 'ž' -- 'ž'
|
||||
};
|
||||
|
||||
16
Marlin/src/lcd/dogm/fontdata/langdata_hu.h
Normal file
16
Marlin/src/lcd/dogm/fontdata/langdata_hu.h
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Generated automatically by buildroot/share/fonts/uxggenpages.sh
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_2_241_241[31] U8G_FONT_SECTION("fontpage_2_241_241") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF1,0xF1,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x48,0x90,0x00,0x88,0x88,0x88,0x88,0x70};
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_hu[] PROGMEM = {
|
||||
FONTDATA_ITEM(2, 241, 241, fontpage_2_241_241), // 'ű' -- 'ű'
|
||||
};
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_it.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_it.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_it[] PROGMEM = {};
|
||||
|
||||
161
Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h
Executable file → Normal file
161
Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h
Executable file → Normal file
@@ -3,109 +3,110 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_97_161_164[65] U8G_FONT_SECTION("fontpage_97_161_164") = {
|
||||
0x00,0x0c,0x0f,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa1,0xa4,0x00,0x07,0x00,0x00,
|
||||
0x00,0x04,0x05,0x05,0x06,0x00,0x00,0xf0,0x10,0x60,0x40,0x80,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0xf8,0x08,0x28,0x30,0x20,0x20,0x40,0x04,0x05,0x05,0x06,0x00,0x00,0x10,
|
||||
0x20,0x60,0xa0,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x08,0x10,0x20,0x60,0xa0,0x20,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA4,0x00,0x07,0x00,0x00,
|
||||
0x00,0x04,0x05,0x05,0x06,0x00,0x00,0xF0,0x10,0x60,0x40,0x80,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0xF8,0x08,0x28,0x30,0x20,0x20,0x40,0x04,0x05,0x05,0x06,0x00,0x00,0x10,
|
||||
0x20,0x60,0xA0,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x08,0x10,0x20,0x60,0xA0,0x20,
|
||||
0x20};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_166_166[30] U8G_FONT_SECTION("fontpage_97_166_166") = {
|
||||
0x00,0x0c,0x0f,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa6,0xa6,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xf8,0x88,0x88,0x08,0x10,0x60};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xF8,0x88,0x88,0x08,0x10,0x60};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_168_168[29] U8G_FONT_SECTION("fontpage_97_168_168") = {
|
||||
0x00,0x0c,0x0f,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa8,0xa8,0x00,0x06,0x00,0x00,
|
||||
0x00,0x05,0x06,0x06,0x06,0x00,0x00,0xf8,0x20,0x20,0x20,0x20,0xf8};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x06,0x00,0x00,
|
||||
0x00,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0xF8};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_170_187[268] U8G_FONT_SECTION("fontpage_97_170_187") = {
|
||||
0x00,0x0c,0x0f,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xaa,0xbb,0x00,0x0d,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0xf8,0x10,0x30,0x50,0x90,0x10,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x40,0xf8,0x48,0x48,0x48,0x48,0x98,0x05,0x09,0x09,0x06,0x00,
|
||||
0x00,0x28,0x08,0x40,0xf8,0x48,0x48,0x48,0x48,0x98,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x20,0xf8,0x20,0x20,0xf8,0x10,0x10,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x20,
|
||||
0xf8,0x20,0x20,0xf8,0x10,0x10,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x78,0x48,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAA,0xBB,0x00,0x0D,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0xF8,0x10,0x30,0x50,0x90,0x10,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x40,0xF8,0x48,0x48,0x48,0x48,0x98,0x05,0x09,0x09,0x06,0x00,
|
||||
0x00,0x28,0x08,0x40,0xF8,0x48,0x48,0x48,0x48,0x98,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x20,0xF8,0x20,0x20,0xF8,0x10,0x10,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x20,
|
||||
0xF8,0x20,0x20,0xF8,0x10,0x10,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x78,0x48,0x88,
|
||||
0x08,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x40,0x78,0x48,0x88,0x08,
|
||||
0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0xf8,0x90,0x90,0x10,0x10,0x20,0x05,
|
||||
0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x80,0xf8,0x90,0x90,0x10,0x10,0x20,0x05,0x06,
|
||||
0x06,0x06,0x00,0x00,0xf8,0x08,0x08,0x08,0x08,0xf8,0x05,0x09,0x09,0x06,0x00,0x00,
|
||||
0x28,0x28,0x00,0xf8,0x08,0x08,0x08,0x08,0xf8,0x05,0x07,0x07,0x06,0x00,0x00,0x50,
|
||||
0xf8,0x50,0x50,0x50,0x10,0x20,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x50,0xf8,
|
||||
0x50,0x50,0x50,0x10,0x20,0x05,0x06,0x06,0x06,0x00,0x00,0xc0,0x08,0xc8,0x08,0x10,
|
||||
0xe0,0x07,0x0d,0x0d,0x06,0x00,0x00,0x02,0x00,0x00,0x00,0x28,0x28,0x00,0xc0,0x08,
|
||||
0xc8,0x08,0x10,0xe0,0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x10,0x10,0x20,0x50,0x88,
|
||||
0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0xF8,0x90,0x90,0x10,0x10,0x20,0x05,
|
||||
0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x80,0xF8,0x90,0x90,0x10,0x10,0x20,0x05,0x06,
|
||||
0x06,0x06,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0xF8,0x05,0x09,0x09,0x06,0x00,0x00,
|
||||
0x28,0x28,0x00,0xF8,0x08,0x08,0x08,0x08,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0x50,
|
||||
0xF8,0x50,0x50,0x50,0x10,0x20,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x50,0xF8,
|
||||
0x50,0x50,0x50,0x10,0x20,0x05,0x06,0x06,0x06,0x00,0x00,0xC0,0x08,0xC8,0x08,0x10,
|
||||
0xE0,0x07,0x0D,0x0D,0x06,0x00,0x00,0x02,0x00,0x00,0x00,0x28,0x28,0x00,0xC0,0x08,
|
||||
0xC8,0x08,0x10,0xE0,0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x10,0x10,0x20,0x50,0x88,
|
||||
0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0x70,0x10,0x10,0x20,0x50,0x88,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x40,0x40,0xf8,0x48,0x50,0x40,0x38};
|
||||
0x07,0x07,0x06,0x00,0x00,0x40,0x40,0xF8,0x48,0x50,0x40,0x38};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_189_193[85] U8G_FONT_SECTION("fontpage_97_189_193") = {
|
||||
0x00,0x0c,0x0f,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xbd,0xc1,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBD,0xC1,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x06,0x06,0x06,0x00,0x00,0x88,0x48,0x48,0x10,0x10,0x20,0x05,0x09,0x09,
|
||||
0x06,0x00,0x00,0x28,0x28,0x00,0x88,0x48,0x48,0x10,0x10,0x20,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x40,0x78,0x48,0xa8,0x18,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,
|
||||
0x08,0x40,0x78,0x48,0xa8,0x18,0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0x60,
|
||||
0x20,0xf8,0x20,0x20,0x40};
|
||||
0x00,0x00,0x40,0x78,0x48,0xA8,0x18,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,
|
||||
0x08,0x40,0x78,0x48,0xA8,0x18,0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0x60,
|
||||
0x20,0xF8,0x20,0x20,0x40};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_195_211[241] U8G_FONT_SECTION("fontpage_97_195_211") = {
|
||||
0x00,0x0c,0x0f,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xc3,0xd3,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x04,0x04,0x06,0x00,0x00,0xa8,0xa8,0x08,0x30,0x05,0x06,0x06,0x06,0x00,
|
||||
0x00,0xa8,0xa8,0xa8,0x08,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,
|
||||
0xa8,0xa8,0xa8,0x08,0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x00,0xf8,0x20,
|
||||
0x20,0x20,0x40,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x70,0x00,0xf8,0x20,0x20,
|
||||
0x20,0x40,0x04,0x07,0x07,0x06,0x01,0x00,0x80,0x80,0xc0,0xa0,0x90,0x80,0x80,0x04,
|
||||
0x09,0x09,0x06,0x01,0x00,0x50,0x10,0x80,0x80,0xc0,0xa0,0x90,0x80,0x80,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x20,0x20,0xf8,0x20,0x20,0x40,0x80,0x05,0x06,0x06,0x06,0x00,
|
||||
0x00,0x70,0x00,0x00,0x00,0x00,0xf8,0x05,0x06,0x06,0x06,0x00,0x00,0x78,0x08,0x28,
|
||||
0x10,0x28,0xc0,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,0x10,0x20,0x70,0xa8,0x20,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC3,0xD3,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x04,0x04,0x06,0x00,0x00,0xA8,0xA8,0x08,0x30,0x05,0x06,0x06,0x06,0x00,
|
||||
0x00,0xA8,0xA8,0xA8,0x08,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,
|
||||
0xA8,0xA8,0xA8,0x08,0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x00,0xF8,0x20,
|
||||
0x20,0x20,0x40,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x70,0x00,0xF8,0x20,0x20,
|
||||
0x20,0x40,0x04,0x07,0x07,0x06,0x01,0x00,0x80,0x80,0xC0,0xA0,0x90,0x80,0x80,0x04,
|
||||
0x09,0x09,0x06,0x01,0x00,0x50,0x10,0x80,0x80,0xC0,0xA0,0x90,0x80,0x80,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x40,0x80,0x05,0x06,0x06,0x06,0x00,
|
||||
0x00,0x70,0x00,0x00,0x00,0x00,0xF8,0x05,0x06,0x06,0x06,0x00,0x00,0x78,0x08,0x28,
|
||||
0x10,0x28,0xC0,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,0x10,0x20,0x70,0xA8,0x20,
|
||||
0x03,0x06,0x06,0x06,0x01,0x00,0x20,0x20,0x20,0x40,0x40,0x80,0x05,0x06,0x06,0x06,
|
||||
0x00,0x00,0x10,0x50,0x50,0x48,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,
|
||||
0x00,0x10,0x50,0x50,0x48,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0x00,0x18,0x18,0x00,
|
||||
0x10,0x50,0x50,0x48,0x88,0x88,0x04,0x06,0x06,0x06,0x00,0x00,0x80,0x90,0xe0,0x80,
|
||||
0x80,0x70,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0x80,0x90,0xe0,0x80,0x80,
|
||||
0x10,0x50,0x50,0x48,0x88,0x88,0x04,0x06,0x06,0x06,0x00,0x00,0x80,0x90,0xE0,0x80,
|
||||
0x80,0x70,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0x80,0x90,0xE0,0x80,0x80,
|
||||
0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_213_217[84] U8G_FONT_SECTION("fontpage_97_213_217") = {
|
||||
0x00,0x0c,0x0f,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xd5,0xd9,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x06,0x06,0x06,0x00,0x00,0xf8,0x08,0x08,0x08,0x10,0x60,0x05,0x09,0x09,
|
||||
0x06,0x00,0x00,0x28,0x28,0x00,0xf8,0x08,0x08,0x08,0x10,0x60,0x05,0x09,0x09,0x06,
|
||||
0x00,0x00,0x18,0x18,0x00,0xf8,0x08,0x08,0x08,0x10,0x60,0x05,0x05,0x05,0x06,0x00,
|
||||
0x01,0x60,0xa0,0x10,0x10,0x08,0x05,0x08,0x08,0x06,0x00,0x01,0x28,0x28,0x00,0x60,
|
||||
0xa0,0x10,0x10,0x08};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD5,0xD9,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x08,0x08,0x08,0x10,0x60,0x05,0x09,0x09,
|
||||
0x06,0x00,0x00,0x28,0x28,0x00,0xF8,0x08,0x08,0x08,0x10,0x60,0x05,0x09,0x09,0x06,
|
||||
0x00,0x00,0x18,0x18,0x00,0xF8,0x08,0x08,0x08,0x10,0x60,0x05,0x05,0x05,0x06,0x00,
|
||||
0x01,0x60,0xA0,0x10,0x10,0x08,0x05,0x08,0x08,0x06,0x00,0x01,0x28,0x28,0x00,0x60,
|
||||
0xA0,0x10,0x10,0x08};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_219_220[45] U8G_FONT_SECTION("fontpage_97_219_220") = {
|
||||
0x00,0x0c,0x0f,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xdb,0xdc,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xf8,0x20,0xa8,0xa8,0xa8,0x20,0x05,0x09,
|
||||
0x09,0x06,0x00,0x00,0x28,0x08,0x20,0xf8,0x20,0xa8,0xa8,0xa8,0x20};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDB,0xDC,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xF8,0x20,0xA8,0xA8,0xA8,0x20,0x05,0x09,
|
||||
0x09,0x06,0x00,0x00,0x28,0x08,0x20,0xF8,0x20,0xA8,0xA8,0xA8,0x20};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_222_223[41] U8G_FONT_SECTION("fontpage_97_222_223") = {
|
||||
0x00,0x0c,0x0f,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xde,0xdf,0x00,0x06,0x00,0x00,
|
||||
0x00,0x05,0x06,0x06,0x06,0x00,0x00,0xf8,0x08,0x08,0x50,0x20,0x10,0x04,0x06,0x06,
|
||||
0x06,0x01,0x00,0xe0,0x00,0xe0,0x00,0xc0,0x30};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDE,0xDF,0x00,0x06,0x00,0x00,
|
||||
0x00,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x08,0x08,0x50,0x20,0x10,0x04,0x06,0x06,
|
||||
0x06,0x01,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x30};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_225_237[174] U8G_FONT_SECTION("fontpage_97_225_237") = {
|
||||
0x00,0x0c,0x0f,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xe1,0xed,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x06,0x06,0x06,0x00,0x00,0x08,0x48,0x30,0x10,0x28,0xc0,0x05,0x06,0x06,
|
||||
0x06,0x00,0x00,0xf0,0x40,0xf8,0x40,0x40,0x38,0x05,0x05,0x05,0x06,0x00,0x00,0x40,
|
||||
0xf8,0x48,0x50,0x40,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x40,0xf8,0x48,0x50,0x40,
|
||||
0x40,0x04,0x05,0x05,0x06,0x00,0x00,0x60,0x20,0x20,0x20,0xf0,0x05,0x06,0x06,0x06,
|
||||
0x00,0x00,0x70,0x10,0x10,0x10,0x10,0xf8,0x04,0x05,0x05,0x06,0x00,0x00,0xf0,0x10,
|
||||
0xf0,0x10,0xf0,0x05,0x06,0x06,0x06,0x00,0x00,0xf8,0x08,0xf8,0x08,0x08,0xf8,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x70,0x00,0xf8,0x08,0x08,0x10,0x60,0x04,0x07,0x07,0x06,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE1,0xED,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x06,0x06,0x06,0x00,0x00,0x08,0x48,0x30,0x10,0x28,0xC0,0x05,0x06,0x06,
|
||||
0x06,0x00,0x00,0xF0,0x40,0xF8,0x40,0x40,0x38,0x05,0x05,0x05,0x06,0x00,0x00,0x40,
|
||||
0xF8,0x48,0x50,0x40,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x40,0xF8,0x48,0x50,0x40,
|
||||
0x40,0x04,0x05,0x05,0x06,0x00,0x00,0x60,0x20,0x20,0x20,0xF0,0x05,0x06,0x06,0x06,
|
||||
0x00,0x00,0x70,0x10,0x10,0x10,0x10,0xF8,0x04,0x05,0x05,0x06,0x00,0x00,0xF0,0x10,
|
||||
0xF0,0x10,0xF0,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x08,0xF8,0x08,0x08,0xF8,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x70,0x00,0xF8,0x08,0x08,0x10,0x60,0x04,0x07,0x07,0x06,
|
||||
0x00,0x00,0x10,0x90,0x90,0x90,0x90,0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x20,
|
||||
0x20,0xa0,0xa0,0xa8,0xa8,0xb0,0x05,0x06,0x06,0x06,0x00,0x00,0x80,0x80,0x80,0x88,
|
||||
0xb0,0xc0,0x05,0x06,0x06,0x06,0x00,0x00,0xf8,0x88,0x88,0x88,0x88,0xf8};
|
||||
0x20,0xA0,0xA0,0xA8,0xA8,0xB0,0x05,0x06,0x06,0x06,0x00,0x00,0x80,0x80,0x80,0x88,
|
||||
0xB0,0xC0,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xF8};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_242_243[41] U8G_FONT_SECTION("fontpage_97_242_243") = {
|
||||
0x00,0x0c,0x0f,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xf2,0xf3,0x00,0x06,0x00,0x00,
|
||||
0x00,0x05,0x06,0x06,0x06,0x00,0x00,0xf8,0x08,0xf8,0x08,0x10,0x60,0x05,0x06,0x06,
|
||||
0x06,0x00,0x00,0xc0,0x08,0x08,0x08,0x10,0xe0};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF2,0xF3,0x00,0x06,0x00,0x00,
|
||||
0x00,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x08,0xF8,0x08,0x10,0x60,0x05,0x06,0x06,
|
||||
0x06,0x00,0x00,0xC0,0x08,0x08,0x08,0x10,0xE0};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_252_252[25] U8G_FONT_SECTION("fontpage_97_252_252") = {
|
||||
0x00,0x0c,0x0f,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0x00,0x05,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x05,0x00,0x00,
|
||||
0x00,0x05,0x02,0x02,0x06,0x00,0x03,0x80,0x78};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(97, 161, 164, fontpage_97_161_164), // 'ァ' -- 'イ'
|
||||
FONTDATA_ITEM(97, 166, 166, fontpage_97_166_166), // 'ウ' -- 'ウ'
|
||||
FONTDATA_ITEM(97, 168, 168, fontpage_97_168_168), // 'エ' -- 'エ'
|
||||
FONTDATA_ITEM(97, 170, 187, fontpage_97_170_187), // 'オ' -- 'セ'
|
||||
FONTDATA_ITEM(97, 189, 193, fontpage_97_189_193), // 'ソ' -- 'チ'
|
||||
FONTDATA_ITEM(97, 195, 211, fontpage_97_195_211), // 'ッ' -- 'ビ'
|
||||
FONTDATA_ITEM(97, 213, 217, fontpage_97_213_217), // 'フ' -- 'ベ'
|
||||
FONTDATA_ITEM(97, 219, 220, fontpage_97_219_220), // 'ホ' -- 'ボ'
|
||||
FONTDATA_ITEM(97, 222, 223, fontpage_97_222_223), // 'マ' -- 'ミ'
|
||||
FONTDATA_ITEM(97, 225, 237, fontpage_97_225_237), // 'メ' -- 'ロ'
|
||||
FONTDATA_ITEM(97, 242, 243, fontpage_97_242_243), // 'ヲ' -- 'ン'
|
||||
FONTDATA_ITEM(97, 252, 252, fontpage_97_252_252), // 'ー' -- 'ー'
|
||||
static const uxg_fontinfo_t g_fontinfo_jp_kana[] PROGMEM = {
|
||||
FONTDATA_ITEM(97, 161, 164, fontpage_97_161_164), // 'ァ' -- 'イ'
|
||||
FONTDATA_ITEM(97, 166, 166, fontpage_97_166_166), // 'ウ' -- 'ウ'
|
||||
FONTDATA_ITEM(97, 168, 168, fontpage_97_168_168), // 'エ' -- 'エ'
|
||||
FONTDATA_ITEM(97, 170, 187, fontpage_97_170_187), // 'オ' -- 'セ'
|
||||
FONTDATA_ITEM(97, 189, 193, fontpage_97_189_193), // 'ソ' -- 'チ'
|
||||
FONTDATA_ITEM(97, 195, 211, fontpage_97_195_211), // 'ッ' -- 'ビ'
|
||||
FONTDATA_ITEM(97, 213, 217, fontpage_97_213_217), // 'フ' -- 'ベ'
|
||||
FONTDATA_ITEM(97, 219, 220, fontpage_97_219_220), // 'ホ' -- 'ボ'
|
||||
FONTDATA_ITEM(97, 222, 223, fontpage_97_222_223), // 'マ' -- 'ミ'
|
||||
FONTDATA_ITEM(97, 225, 237, fontpage_97_225_237), // 'メ' -- 'ロ'
|
||||
FONTDATA_ITEM(97, 242, 243, fontpage_97_242_243), // 'ヲ' -- 'ン'
|
||||
FONTDATA_ITEM(97, 252, 252, fontpage_97_252_252), // 'ー' -- 'ー'
|
||||
};
|
||||
|
||||
808
Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h
Executable file → Normal file
808
Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h
Executable file → Normal file
@@ -3,530 +3,546 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_344_240_240[34] U8G_FONT_SECTION("fontpage_344_240_240") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xf0,0xf0,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x09,0x09,0x11,0x17,0x21,0x41,0x81,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x09,0x11,0x17,0x21,0x41,0x81,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_345_224_224[41] U8G_FONT_SECTION("fontpage_345_224_224") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xe0,0xe0,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x3f,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x08,
|
||||
0x80,0x08,0x80,0x09,0x00,0x08,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x08,
|
||||
0x80,0x08,0x80,0x09,0x00,0x08,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_347_248_248[41] U8G_FONT_SECTION("fontpage_347_248_248") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xf8,0xf8,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x3f,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,
|
||||
0x80,0x01,0x00,0x01,0x00,0x01,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,
|
||||
0x80,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_348_137_137[45] U8G_FONT_SECTION("fontpage_348_137_137") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x3f,0x00,0x00,0x80,0x00,0x80,0x01,0x00,0xff,
|
||||
0xc0,0x00,0x00,0x20,0x80,0x20,0x80,0x3f,0x00,0x20,0x80,0x3f,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x00,0x80,0x00,0x80,0x01,0x00,0xFF,
|
||||
0xC0,0x00,0x00,0x20,0x80,0x20,0x80,0x3F,0x00,0x20,0x80,0x3F,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_348_176_176[34] U8G_FONT_SECTION("fontpage_348_176_176") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xb0,0xb0,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x09,0x09,0x11,0x11,0x21,0x41,0x81,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x09,0x11,0x11,0x21,0x41,0x81,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_348_197_197[34] U8G_FONT_SECTION("fontpage_348_197_197") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xc5,0xc5,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x09,0x09,0x11,0x21,0xc1,0x1e,0x21,0x41,
|
||||
0x21,0x1e};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC5,0xC5,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x09,0x11,0x21,0xC1,0x1E,0x21,0x41,
|
||||
0x21,0x1E};
|
||||
const u8g_fntpgm_uint8_t fontpage_352_196_196[41] U8G_FONT_SECTION("fontpage_352_196_196") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xc4,0xc4,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x7f,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,
|
||||
0x80,0x08,0x80,0x10,0x80,0x11,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC4,0xC4,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x7F,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,
|
||||
0x80,0x08,0x80,0x10,0x80,0x11,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_353_180_180[34] U8G_FONT_SECTION("fontpage_353_180_180") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xb4,0xb4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x85,0x85,0x85,0x85,0x87,0x85,0x85,0xfd,0x05,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xB4,0xB4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x85,0x85,0x85,0x85,0x87,0x85,0x85,0xFD,0x05,
|
||||
0x05,0x05};
|
||||
const u8g_fntpgm_uint8_t fontpage_354_248_248[41] U8G_FONT_SECTION("fontpage_354_248_248") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xf8,0xf8,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x3f,
|
||||
0x80,0x04,0x00,0x04,0x00,0x04,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x3F,
|
||||
0x80,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_356_132_132[43] U8G_FONT_SECTION("fontpage_356_132_132") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0xff,0x00,
|
||||
0x00,0x0a,0x0a,0x14,0x0a,0x00,0xff,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x3f,
|
||||
0x80,0x00,0x00,0xff,0xc0,0x04,0x00,0x04,0x00,0x04,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0xFF,0x00,
|
||||
0x00,0x0A,0x0A,0x14,0x0A,0x00,0xFF,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x3F,
|
||||
0x80,0x00,0x00,0xFF,0xC0,0x04,0x00,0x04,0x00,0x04,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_356_244_244[43] U8G_FONT_SECTION("fontpage_356_244_244") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xf4,0xf4,0x00,0x09,0xff,0x00,
|
||||
0x00,0x0a,0x0a,0x14,0x0a,0x00,0xff,0x20,0x00,0x20,0x00,0x20,0x00,0x3f,0x80,0x00,
|
||||
0x00,0x00,0x00,0xff,0xc0,0x12,0x00,0x12,0x00,0x12,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x09,0xFF,0x00,
|
||||
0x00,0x0A,0x0A,0x14,0x0A,0x00,0xFF,0x20,0x00,0x20,0x00,0x20,0x00,0x3F,0x80,0x00,
|
||||
0x00,0x00,0x00,0xFF,0xC0,0x12,0x00,0x12,0x00,0x12,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_357_200_200[34] U8G_FONT_SECTION("fontpage_357_200_200") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xc8,0xc8,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7d,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7D,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_357_228_228[45] U8G_FONT_SECTION("fontpage_357_228_228") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xe4,0xe4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0xf9,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0x81,
|
||||
0x80,0x81,0x00,0x81,0x00,0xfd,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xE4,0xE4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0x81,
|
||||
0x80,0x81,0x00,0x81,0x00,0xFD,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_357_249_249[45] U8G_FONT_SECTION("fontpage_357_249_249") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xf9,0xf9,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0xf9,0x00,0x81,0x00,0x81,0x00,0x81,0x80,0x81,
|
||||
0x00,0xfd,0x00,0x00,0x00,0x3e,0x00,0x41,0x00,0x41,0x00,0x3e,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF9,0xF9,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x81,0x00,0x81,0x00,0x81,0x80,0x81,
|
||||
0x00,0xFD,0x00,0x00,0x00,0x3E,0x00,0x41,0x00,0x41,0x00,0x3E,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_359_196_196[41] U8G_FONT_SECTION("fontpage_359_196_196") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xc4,0xc4,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x3f,0x80,0x20,0x00,0x20,0x00,0x20,0x00,0x3f,
|
||||
0x80,0x04,0x00,0x04,0x00,0x04,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC4,0xC4,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x20,0x00,0x20,0x00,0x20,0x00,0x3F,
|
||||
0x80,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_359_204_204[45] U8G_FONT_SECTION("fontpage_359_204_204") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xcc,0xcc,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x3f,0x00,0x20,0x00,0x3f,0x80,0x04,0x00,0xff,
|
||||
0xc0,0x00,0x00,0x3f,0x00,0x00,0x80,0x3f,0x00,0x20,0x00,0x3f,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x20,0x00,0x3F,0x80,0x04,0x00,0xFF,
|
||||
0xC0,0x00,0x00,0x3F,0x00,0x00,0x80,0x3F,0x00,0x20,0x00,0x3F,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_359_217_217[45] U8G_FONT_SECTION("fontpage_359_217_217") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xd9,0xd9,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x3f,0x00,0x20,0x00,0x20,0x00,0x3f,0x80,0x04,
|
||||
0x00,0xff,0xc0,0x00,0x00,0x1f,0x00,0x20,0x80,0x20,0x80,0x1f,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD9,0xD9,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x20,0x00,0x20,0x00,0x3F,0x80,0x04,
|
||||
0x00,0xFF,0xC0,0x00,0x00,0x1F,0x00,0x20,0x80,0x20,0x80,0x1F,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_360_152_152[45] U8G_FONT_SECTION("fontpage_360_152_152") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x98,0x98,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x00,0xfe,0x7c,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x7e,
|
||||
0x80,0x10,0x80,0x10,0x80,0xff,0x80,0x00,0x80,0x00,0x80,0x00,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x98,0x98,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x7C,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x7E,
|
||||
0x80,0x10,0x80,0x10,0x80,0xFF,0x80,0x00,0x80,0x00,0x80,0x00,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_360_156_156[45] U8G_FONT_SECTION("fontpage_360_156_156") = {
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x9C,0x9C,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x7C,0x80,0x40,0x80,0x40,0x80,0x7C,0x80,0x10,
|
||||
0x80,0x10,0x80,0xFF,0x80,0x00,0x80,0x20,0x00,0x20,0x00,0x3F,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_360_168_168[34] U8G_FONT_SECTION("fontpage_360_168_168") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xa8,0xa8,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x81,0x81,0xf9,0x21,0xff,0x00,0x7f,0x41,
|
||||
0x41,0x7f};
|
||||
const u8g_fntpgm_uint8_t fontpage_360_208_208[43] U8G_FONT_SECTION("fontpage_360_208_208") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xd0,0xd0,0x00,0x09,0xff,0x00,
|
||||
0x00,0x0a,0x0a,0x14,0x0a,0x00,0xff,0x3f,0x80,0x20,0x00,0x20,0x00,0x20,0x00,0x3f,
|
||||
0x80,0x00,0x00,0xff,0xc0,0x04,0x00,0x04,0x00,0x04,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x81,0x81,0xF9,0x21,0xFF,0x00,0x7F,0x41,
|
||||
0x41,0x7F};
|
||||
const u8g_fntpgm_uint8_t fontpage_361_164_164[45] U8G_FONT_SECTION("fontpage_361_164_164") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xa4,0xa4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x00,0xfe,0x7c,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x7c,
|
||||
0x80,0x00,0x80,0xfe,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x7C,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x7C,
|
||||
0x80,0x00,0x80,0xFE,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_361_220_220[41] U8G_FONT_SECTION("fontpage_361_220_220") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xdc,0xdc,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x3f,0x80,0x20,0x00,0x20,0x00,0x20,0x00,0x20,
|
||||
0x00,0x3f,0x80,0x00,0x00,0x00,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xDC,0xDC,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x20,0x00,0x20,0x00,0x20,0x00,0x20,
|
||||
0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_362_148_148[34] U8G_FONT_SECTION("fontpage_362_148_148") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x94,0x94,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x81,0x81,0x81,0x81,0x81,0x81,0xfd,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x94,0x94,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x81,0x81,0x81,0x81,0x81,0x81,0xFD,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_366_252_252[45] U8G_FONT_SECTION("fontpage_366_252_252") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0xf9,0x00,0x09,0x00,0x09,0x00,0xf9,0x00,0x81,
|
||||
0x80,0x81,0x00,0x81,0x00,0xfd,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x09,0x00,0x09,0x00,0xF9,0x00,0x81,
|
||||
0x80,0x81,0x00,0x81,0x00,0xFD,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_367_236_236[34] U8G_FONT_SECTION("fontpage_367_236_236") = {
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xEC,0xEC,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF1,0x09,0x09,0xF1,0x87,0x81,0x81,0xF9,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_368_136_136[34] U8G_FONT_SECTION("fontpage_368_136_136") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf5,0x15,0x15,0xf5,0x8d,0x85,0x85,0xfd,0x05,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF5,0x15,0x15,0xF5,0x8D,0x85,0x85,0xFD,0x05,
|
||||
0x05,0x05};
|
||||
const u8g_fntpgm_uint8_t fontpage_368_165_165[34] U8G_FONT_SECTION("fontpage_368_165_165") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xa5,0xa5,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf1,0x17,0xf1,0x87,0x81,0xf9,0x00,0x7f,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA5,0xA5,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF1,0x17,0xF1,0x87,0x81,0xF9,0x00,0x7F,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_368_220_220[41] U8G_FONT_SECTION("fontpage_368_220_220") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xdc,0xdc,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x3f,0x80,0x00,0x80,0x3f,0x80,0x20,0x00,0x20,
|
||||
0x00,0x3f,0x80,0x04,0x00,0x04,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xDC,0xDC,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x00,0x80,0x3F,0x80,0x20,0x00,0x20,
|
||||
0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_369_204_204[41] U8G_FONT_SECTION("fontpage_369_204_204") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xcc,0xcc,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x3f,0x80,0x00,0x80,0x3f,0x80,0x20,0x00,0x20,
|
||||
0x00,0x3f,0x80,0x12,0x00,0x12,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x00,0x80,0x3F,0x80,0x20,0x00,0x20,
|
||||
0x00,0x3F,0x80,0x12,0x00,0x12,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_370_244_244[41] U8G_FONT_SECTION("fontpage_370_244_244") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xf4,0xf4,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x3f,0x80,0x00,0x80,0x3f,0x80,0x20,0x00,0x20,
|
||||
0x00,0x3f,0x80,0x00,0x00,0x00,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x00,0x80,0x3F,0x80,0x20,0x00,0x20,
|
||||
0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_371_172_172[34] U8G_FONT_SECTION("fontpage_371_172_172") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xac,0xac,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x09,0x09,0xf9,0x81,0x81,0x81,0xfd,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x09,0xF9,0x81,0x81,0x81,0xFD,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_371_176_176[34] U8G_FONT_SECTION("fontpage_371_176_176") = {
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x09,0xF9,0x81,0x81,0xFD,0x01,0x20,
|
||||
0x20,0x3F};
|
||||
const u8g_fntpgm_uint8_t fontpage_371_189_189[34] U8G_FONT_SECTION("fontpage_371_189_189") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xbd,0xbd,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x09,0xf9,0x81,0x81,0xfd,0x00,0x41,0x3f,
|
||||
0x41,0x3f};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xBD,0xBD,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0xF9,0x81,0x81,0xFD,0x00,0x41,0x3F,
|
||||
0x41,0x3F};
|
||||
const u8g_fntpgm_uint8_t fontpage_371_193_193[34] U8G_FONT_SECTION("fontpage_371_193_193") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xc1,0xc1,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x09,0xf9,0x81,0x81,0xfd,0x01,0x3e,0x21,
|
||||
0x21,0x3e};
|
||||
const u8g_fntpgm_uint8_t fontpage_371_204_204[45] U8G_FONT_SECTION("fontpage_371_204_204") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xcc,0xcc,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0xf9,0x00,0x89,0x00,0x89,0x00,0x89,0x80,0x89,
|
||||
0x00,0xf9,0x00,0x01,0x00,0x41,0x00,0x40,0x00,0x40,0x00,0x7f,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC1,0xC1,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0xF9,0x81,0x81,0xFD,0x01,0x3E,0x21,
|
||||
0x21,0x3E};
|
||||
const u8g_fntpgm_uint8_t fontpage_372_200_200[34] U8G_FONT_SECTION("fontpage_372_200_200") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xc8,0xc8,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x89,0x89,0x8f,0x89,0xf9,0x00,0x3f,0x41,
|
||||
0x41,0x3f};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x89,0x89,0x8F,0x89,0xF9,0x00,0x3F,0x41,
|
||||
0x41,0x3F};
|
||||
const u8g_fntpgm_uint8_t fontpage_372_212_212[34] U8G_FONT_SECTION("fontpage_372_212_212") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xd4,0xd4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf5,0x95,0x95,0x9d,0x95,0x95,0x95,0xf5,0x05,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF5,0x95,0x95,0x9D,0x95,0x95,0x95,0xF5,0x05,
|
||||
0x05,0x05};
|
||||
const u8g_fntpgm_uint8_t fontpage_372_244_244[34] U8G_FONT_SECTION("fontpage_372_244_244") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xf4,0xf4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x89,0x8f,0x89,0x8f,0xf9,0x01,0x21,0x20,
|
||||
0x20,0x3f};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x89,0x8F,0x89,0x8F,0xF9,0x01,0x21,0x20,
|
||||
0x20,0x3F};
|
||||
const u8g_fntpgm_uint8_t fontpage_373_168_168[41] U8G_FONT_SECTION("fontpage_373_168_168") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xa8,0xa8,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x3f,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x3f,
|
||||
0x80,0x04,0x00,0x04,0x00,0x04,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x3F,
|
||||
0x80,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_373_187_187[45] U8G_FONT_SECTION("fontpage_373_187_187") = {
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xBB,0xBB,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x20,0x80,0x20,0x80,0x3F,0x00,0x04,
|
||||
0x00,0xFF,0xC0,0x00,0x00,0x04,0x00,0x0C,0x00,0x1A,0x00,0x61,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_375_248_248[34] U8G_FONT_SECTION("fontpage_375_248_248") = {
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x89,0x89,0x89,0x89,0x89,0x89,0xF9,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_376_128_128[34] U8G_FONT_SECTION("fontpage_376_128_128") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x89,0x89,0x89,0xf9,0x00,0x3f,0x01,0x3f,
|
||||
0x40,0x3f};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x89,0x89,0x89,0xF9,0x00,0x3F,0x01,0x3F,
|
||||
0x40,0x3F};
|
||||
const u8g_fntpgm_uint8_t fontpage_376_148_148[45] U8G_FONT_SECTION("fontpage_376_148_148") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x94,0x94,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0x89,0x00,0x89,0x00,0x89,0x00,0xf9,0x00,0x89,
|
||||
0x80,0x89,0x00,0x89,0x00,0xf9,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x94,0x94,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x89,0x00,0x89,0x00,0x89,0x00,0xF9,0x00,0x89,
|
||||
0x80,0x89,0x00,0x89,0x00,0xF9,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_377_132_132[34] U8G_FONT_SECTION("fontpage_377_132_132") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x89,0x89,0x89,0xff,0x89,0x89,0x89,0xf9,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x89,0x89,0x89,0xFF,0x89,0x89,0x89,0xF9,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_377_160_160[34] U8G_FONT_SECTION("fontpage_377_160_160") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xa0,0xa0,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x95,0x95,0x95,0xf5,0x9d,0x95,0x95,0xf5,0x05,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x95,0x95,0x95,0xF5,0x9D,0x95,0x95,0xF5,0x05,
|
||||
0x05,0x05};
|
||||
const u8g_fntpgm_uint8_t fontpage_377_168_168[34] U8G_FONT_SECTION("fontpage_377_168_168") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xa8,0xa8,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x95,0x95,0xfd,0x95,0xf5,0x00,0x3f,0x01,0x3f,
|
||||
0x40,0x3f};
|
||||
const u8g_fntpgm_uint8_t fontpage_380_140_140[41] U8G_FONT_SECTION("fontpage_380_140_140") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x8c,0x8c,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x20,0x80,0x20,0x80,0x3f,0x80,0x20,0x80,0x20,
|
||||
0x80,0x3f,0x80,0x00,0x00,0x00,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x95,0x95,0xFD,0x95,0xF5,0x00,0x3F,0x01,0x3F,
|
||||
0x40,0x3F};
|
||||
const u8g_fntpgm_uint8_t fontpage_377_248_248[45] U8G_FONT_SECTION("fontpage_377_248_248") = {
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x20,0x80,0x20,0x80,0x3F,0x00,0x20,0x80,0x3F,
|
||||
0x00,0x04,0x00,0xFF,0xC0,0x00,0x00,0x20,0x00,0x20,0x00,0x3F,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_380_196_196[34] U8G_FONT_SECTION("fontpage_380_196_196") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xc4,0xc4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x89,0x89,0x89,0xf9,0x89,0x89,0x89,0xf9,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC4,0xC4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x89,0x89,0x89,0xF9,0x89,0x89,0x89,0xF9,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_385_172_172[45] U8G_FONT_SECTION("fontpage_385_172_172") = {
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x61,
|
||||
0x80,0x51,0x00,0x99,0x00,0x89,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_385_189_189[45] U8G_FONT_SECTION("fontpage_385_189_189") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xbd,0xbd,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0x21,0x00,0x21,0x00,0x21,0x00,0x51,0x80,0xd9,
|
||||
0x00,0x89,0x00,0x00,0x00,0x41,0x00,0x7e,0x00,0x41,0x00,0x7e,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xBD,0xBD,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x21,0x00,0x21,0x00,0x21,0x00,0x51,0x80,0xD9,
|
||||
0x00,0x89,0x00,0x00,0x00,0x41,0x00,0x7E,0x00,0x41,0x00,0x7E,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_385_200_200[34] U8G_FONT_SECTION("fontpage_385_200_200") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xc8,0xc8,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x25,0x25,0x25,0x45,0x67,0x65,0x95,0x95,0x05,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x25,0x25,0x25,0x45,0x67,0x65,0x95,0x95,0x05,
|
||||
0x05,0x05};
|
||||
const u8g_fntpgm_uint8_t fontpage_386_164_164[34] U8G_FONT_SECTION("fontpage_386_164_164") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xa4,0xa4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x21,0x21,0x27,0x51,0x89,0x00,0x3f,0x01,0x3f,
|
||||
0x40,0x3f};
|
||||
const u8g_fntpgm_uint8_t fontpage_386_216_216[34] U8G_FONT_SECTION("fontpage_386_216_216") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xd8,0xd8,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x21,0x27,0x21,0x67,0xd1,0x89,0x01,0x21,0x20,
|
||||
0x20,0x3f};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x21,0x21,0x27,0x51,0x89,0x00,0x3F,0x01,0x3F,
|
||||
0x40,0x3F};
|
||||
const u8g_fntpgm_uint8_t fontpage_387_140_141[69] U8G_FONT_SECTION("fontpage_387_140_141") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x8c,0x8d,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x04,0x00,0x0c,0x00,0x0c,0x00,0x12,0x00,0x31,
|
||||
0x00,0x44,0x80,0x04,0x00,0x04,0x00,0xff,0xc0,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x04,
|
||||
0x00,0x0c,0x00,0x13,0x00,0x65,0x80,0x04,0x00,0xff,0xc0,0x00,0x00,0x3f,0x00,0x00,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x8C,0x8D,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x04,0x00,0x0C,0x00,0x0C,0x00,0x12,0x00,0x31,
|
||||
0x00,0x44,0x80,0x04,0x00,0x04,0x00,0xFF,0xC0,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x04,
|
||||
0x00,0x0C,0x00,0x13,0x00,0x65,0x80,0x04,0x00,0xFF,0xC0,0x00,0x00,0x3F,0x00,0x00,
|
||||
0x80,0x00,0x80,0x00,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_389_164_164[41] U8G_FONT_SECTION("fontpage_389_164_164") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xa4,0xa4,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x04,0x00,0x0c,0x00,0x0c,0x00,0x12,0x00,0x31,
|
||||
0x00,0x40,0x80,0x00,0x00,0x00,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x04,0x00,0x0C,0x00,0x0C,0x00,0x12,0x00,0x31,
|
||||
0x00,0x40,0x80,0x00,0x00,0x00,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_389_172_172[45] U8G_FONT_SECTION("fontpage_389_172_172") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xac,0xac,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x04,0x00,0x1a,0x00,0x61,0x80,0x00,0x00,0xff,
|
||||
0xc0,0x00,0x00,0x3f,0x00,0x00,0x80,0x3f,0x00,0x20,0x00,0x3f,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x04,0x00,0x1A,0x00,0x61,0x80,0x00,0x00,0xFF,
|
||||
0xC0,0x00,0x00,0x3F,0x00,0x00,0x80,0x3F,0x00,0x20,0x00,0x3F,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_389_220_221[51] U8G_FONT_SECTION("fontpage_389_220_221") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xdc,0xdd,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x21,0x21,0x21,0x21,0x21,0x51,0xc9,0x89,0x01,
|
||||
0x01,0x01,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x21,0x21,0x21,0x51,0xd9,0x89,0x00,0x7f,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xDC,0xDD,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x21,0x21,0x21,0x21,0x21,0x51,0xC9,0x89,0x01,
|
||||
0x01,0x01,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x21,0x21,0x21,0x51,0xD9,0x89,0x00,0x7F,
|
||||
0x01,0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_395_180_180[34] U8G_FONT_SECTION("fontpage_395_180_180") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xb4,0xb4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x71,0x89,0x89,0x8f,0x89,0x89,0x89,0x71,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xB4,0xB4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x89,0x89,0x8F,0x89,0x89,0x89,0x71,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_395_198_198[45] U8G_FONT_SECTION("fontpage_395_198_198") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xc6,0xc6,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0x71,0x00,0x89,0x00,0x8f,0x00,0x89,0x00,0x89,
|
||||
0x00,0x71,0x00,0x00,0x00,0x4a,0x00,0x72,0x00,0x4d,0x00,0x74,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x71,0x00,0x89,0x00,0x8F,0x00,0x89,0x00,0x89,
|
||||
0x00,0x71,0x00,0x00,0x00,0x4A,0x00,0x72,0x00,0x4D,0x00,0x74,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_395_209_209[34] U8G_FONT_SECTION("fontpage_395_209_209") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xd1,0xd1,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x65,0x95,0x95,0x9d,0x95,0x65,0x00,0x7f,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD1,0xD1,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x65,0x95,0x95,0x9D,0x95,0x65,0x00,0x7F,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_395_212_212[45] U8G_FONT_SECTION("fontpage_395_212_212") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xd4,0xd4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0x65,0x00,0x95,0x00,0x95,0x00,0x9d,0x00,0x95,
|
||||
0x00,0x65,0x00,0x05,0x00,0x25,0x00,0x20,0x00,0x20,0x00,0x3f,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x65,0x00,0x95,0x00,0x95,0x00,0x9D,0x00,0x95,
|
||||
0x00,0x65,0x00,0x05,0x00,0x25,0x00,0x20,0x00,0x20,0x00,0x3F,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_395_244_244[34] U8G_FONT_SECTION("fontpage_395_244_244") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xf4,0xf4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x71,0x8f,0x89,0x8f,0x71,0x00,0x3f,0x01,0x3f,
|
||||
0x40,0x3f};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x8F,0x89,0x8F,0x71,0x00,0x3F,0x01,0x3F,
|
||||
0x40,0x3F};
|
||||
const u8g_fntpgm_uint8_t fontpage_396_136_136[34] U8G_FONT_SECTION("fontpage_396_136_136") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x65,0x95,0x9d,0x95,0x95,0x9d,0x95,0x65,0x05,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x65,0x95,0x9D,0x95,0x95,0x9D,0x95,0x65,0x05,
|
||||
0x05,0x05};
|
||||
const u8g_fntpgm_uint8_t fontpage_396_164_164[41] U8G_FONT_SECTION("fontpage_396_164_164") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xa4,0xa4,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x1e,0x00,0x21,0x00,0x20,0x80,0x20,0x80,0x21,
|
||||
0x00,0x1e,0x00,0x04,0x00,0x04,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x1E,0x00,0x21,0x00,0x20,0x80,0x20,0x80,0x21,
|
||||
0x00,0x1E,0x00,0x04,0x00,0x04,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_396_168_168[45] U8G_FONT_SECTION("fontpage_396_168_168") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xa8,0xa8,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x1f,0x00,0x20,0x80,0x20,0x80,0x1f,0x00,0x04,
|
||||
0x00,0x04,0x00,0xff,0xc0,0x00,0x00,0x20,0x00,0x20,0x00,0x3f,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x1F,0x00,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,
|
||||
0x00,0x04,0x00,0xFF,0xC0,0x00,0x00,0x20,0x00,0x20,0x00,0x3F,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_396_196_196[45] U8G_FONT_SECTION("fontpage_396_196_196") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xc4,0xc4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x38,0x80,0x44,0x80,0x44,0x80,0x44,0x80,0x38,
|
||||
0xc0,0x10,0x80,0xfe,0x80,0x00,0x80,0x20,0x00,0x20,0x00,0x3f,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC4,0xC4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x38,0x80,0x44,0x80,0x44,0x80,0x44,0x80,0x38,
|
||||
0xC0,0x10,0x80,0xFE,0x80,0x00,0x80,0x20,0x00,0x20,0x00,0x3F,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_397_208_208[34] U8G_FONT_SECTION("fontpage_397_208_208") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xd0,0xd0,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x71,0x89,0x89,0x71,0x01,0xff,0x21,0x27,0x41,
|
||||
0x40,0x7f};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD0,0xD0,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x89,0x89,0x71,0x01,0xFF,0x21,0x27,0x41,
|
||||
0x40,0x7F};
|
||||
const u8g_fntpgm_uint8_t fontpage_398_132_132[45] U8G_FONT_SECTION("fontpage_398_132_132") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x00,0xfe,0x38,0x80,0x44,0x80,0x42,0x80,0x44,0x80,0x38,
|
||||
0x80,0x00,0x80,0xfe,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x38,0x80,0x44,0x80,0x42,0x80,0x44,0x80,0x38,
|
||||
0x80,0x00,0x80,0xFE,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_398_188_188[41] U8G_FONT_SECTION("fontpage_398_188_188") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xbc,0xbc,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x1e,0x00,0x21,0x00,0x20,0x80,0x20,0x80,0x21,
|
||||
0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xBC,0xBC,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x1E,0x00,0x21,0x00,0x20,0x80,0x20,0x80,0x21,
|
||||
0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_398_204_204[45] U8G_FONT_SECTION("fontpage_398_204_204") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xcc,0xcc,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x1e,0x00,0x21,0x00,0x21,0x00,0x1e,0x00,0x00,
|
||||
0x00,0xff,0xc0,0x00,0x00,0x3f,0x00,0x20,0x80,0x20,0x80,0x3f,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x1E,0x00,0x21,0x00,0x21,0x00,0x1E,0x00,0x00,
|
||||
0x00,0xFF,0xC0,0x00,0x00,0x3F,0x00,0x20,0x80,0x20,0x80,0x3F,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_398_244_244[34] U8G_FONT_SECTION("fontpage_398_244_244") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xf4,0xf4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x71,0x49,0x89,0x89,0x89,0x89,0x49,0x71,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x49,0x89,0x89,0x89,0x89,0x49,0x71,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_398_252_253[51] U8G_FONT_SECTION("fontpage_398_252_253") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xfc,0xfd,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x71,0x89,0x89,0x89,0x71,0x00,0x3f,0x01,0x3f,
|
||||
0x40,0x3f,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x71,0x89,0x89,0x89,0x71,0x00,0x77,0x11,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xFC,0xFD,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x89,0x89,0x89,0x71,0x00,0x3F,0x01,0x3F,
|
||||
0x40,0x3F,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x89,0x89,0x89,0x71,0x00,0x77,0x11,
|
||||
0x71,0x41,0x79};
|
||||
const u8g_fntpgm_uint8_t fontpage_399_133_133[34] U8G_FONT_SECTION("fontpage_399_133_133") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x85,0x85,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x71,0x89,0x89,0x89,0x89,0x71,0x00,0x41,0x3f,
|
||||
0x41,0x3f};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x85,0x85,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x89,0x89,0x89,0x89,0x71,0x00,0x41,0x3F,
|
||||
0x41,0x3F};
|
||||
const u8g_fntpgm_uint8_t fontpage_399_144_145[73] U8G_FONT_SECTION("fontpage_399_144_145") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x90,0x91,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0xf9,0x00,0x09,0x00,0x11,0x00,0x11,0x00,0x21,
|
||||
0x80,0x71,0x00,0xc9,0x00,0x85,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x09,0x0b,0x16,
|
||||
0x0a,0x01,0xfe,0xf9,0x00,0x09,0x00,0x11,0x00,0x31,0x80,0x49,0x00,0x85,0x00,0x00,
|
||||
0x00,0x7e,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x90,0x91,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x09,0x00,0x11,0x00,0x11,0x00,0x21,
|
||||
0x80,0x71,0x00,0xC9,0x00,0x85,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x09,0x0B,0x16,
|
||||
0x0A,0x01,0xFE,0xF9,0x00,0x09,0x00,0x11,0x00,0x31,0x80,0x49,0x00,0x85,0x00,0x00,
|
||||
0x00,0x7E,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_399_152_152[45] U8G_FONT_SECTION("fontpage_399_152_152") = {
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x98,0x98,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x11,0x00,0x11,0x80,0x79,0x00,0x85,
|
||||
0x00,0x00,0x00,0x7E,0x00,0x01,0x00,0x7E,0x00,0x40,0x00,0x7F,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_399_165_165[45] U8G_FONT_SECTION("fontpage_399_165_165") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xa5,0xa5,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0xf9,0x00,0x09,0x00,0x11,0x00,0x31,0x80,0x79,
|
||||
0x00,0x85,0x00,0x00,0x00,0x3e,0x00,0x41,0x00,0x41,0x00,0x3e,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA5,0xA5,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x09,0x00,0x11,0x00,0x31,0x80,0x79,
|
||||
0x00,0x85,0x00,0x00,0x00,0x3E,0x00,0x41,0x00,0x41,0x00,0x3E,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_399_172_172[45] U8G_FONT_SECTION("fontpage_399_172_172") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xac,0xac,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x00,0xfe,0x7a,0x80,0x0a,0x80,0x0a,0x80,0x12,0x80,0x13,
|
||||
0x80,0x2a,0x80,0x6a,0x80,0xc6,0x80,0x02,0x80,0x02,0x80,0x02,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x7A,0x80,0x0A,0x80,0x0A,0x80,0x12,0x80,0x13,
|
||||
0x80,0x2A,0x80,0x6A,0x80,0xC6,0x80,0x02,0x80,0x02,0x80,0x02,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_400_128_128[34] U8G_FONT_SECTION("fontpage_400_128_128") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x09,0x11,0x17,0x31,0x71,0xc9,0x85,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x11,0x17,0x31,0x71,0xC9,0x85,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_400_132_132[34] U8G_FONT_SECTION("fontpage_400_132_132") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x09,0x17,0x31,0x49,0x85,0x01,0x21,0x20,
|
||||
0x20,0x3f};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x17,0x31,0x49,0x85,0x01,0x21,0x20,
|
||||
0x20,0x3F};
|
||||
const u8g_fntpgm_uint8_t fontpage_400_149_149[34] U8G_FONT_SECTION("fontpage_400_149_149") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x95,0x95,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x09,0x17,0x31,0x49,0x85,0x00,0x3e,0x21,
|
||||
0x21,0x3e};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x95,0x95,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x17,0x31,0x49,0x85,0x00,0x3E,0x21,
|
||||
0x21,0x3E};
|
||||
const u8g_fntpgm_uint8_t fontpage_400_156_156[45] U8G_FONT_SECTION("fontpage_400_156_156") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x9c,0x9c,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x00,0xfe,0x7a,0x80,0x0a,0x80,0x0a,0x80,0x16,0x80,0x12,
|
||||
0x80,0x2a,0x80,0x4a,0x80,0x86,0x80,0x02,0x80,0x02,0x80,0x02,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x9C,0x9C,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x7A,0x80,0x0A,0x80,0x0A,0x80,0x16,0x80,0x12,
|
||||
0x80,0x2A,0x80,0x4A,0x80,0x86,0x80,0x02,0x80,0x02,0x80,0x02,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_401_253_253[45] U8G_FONT_SECTION("fontpage_401_253_253") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xfd,0xfd,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x3f,0x00,0x01,0x00,0x0e,0x00,0x71,0x80,0x00,
|
||||
0x00,0xff,0xc0,0x04,0x00,0x3f,0x00,0x00,0x80,0x00,0x80,0x00,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x01,0x00,0x0E,0x00,0x71,0x80,0x00,
|
||||
0x00,0xFF,0xC0,0x04,0x00,0x3F,0x00,0x00,0x80,0x00,0x80,0x00,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_402_128_128[45] U8G_FONT_SECTION("fontpage_402_128_128") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x3f,0x00,0x01,0x00,0x0e,0x00,0x71,0x80,0x00,
|
||||
0x00,0xff,0xc0,0x04,0x00,0x24,0x00,0x24,0x00,0x20,0x00,0x3f,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x01,0x00,0x0E,0x00,0x71,0x80,0x00,
|
||||
0x00,0xFF,0xC0,0x04,0x00,0x24,0x00,0x24,0x00,0x20,0x00,0x3F,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_402_145_145[45] U8G_FONT_SECTION("fontpage_402_145_145") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x91,0x91,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x3f,0x00,0x01,0x00,0x0e,0x00,0x71,0x80,0x00,
|
||||
0x00,0xff,0xc0,0x04,0x00,0x1f,0x00,0x20,0x80,0x20,0x80,0x1f,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x91,0x91,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x01,0x00,0x0E,0x00,0x71,0x80,0x00,
|
||||
0x00,0xFF,0xC0,0x04,0x00,0x1F,0x00,0x20,0x80,0x20,0x80,0x1F,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_403_144_144[45] U8G_FONT_SECTION("fontpage_403_144_144") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x90,0x90,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x3f,0x00,0x0e,0x00,0x71,0x80,0x00,0x00,0xff,
|
||||
0xc0,0x00,0x00,0x3f,0x00,0x00,0x80,0x3f,0x00,0x20,0x00,0x3f,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x90,0x90,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x0E,0x00,0x71,0x80,0x00,0x00,0xFF,
|
||||
0xC0,0x00,0x00,0x3F,0x00,0x00,0x80,0x3F,0x00,0x20,0x00,0x3F,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_403_192_192[34] U8G_FONT_SECTION("fontpage_403_192_192") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x09,0x09,0x11,0x31,0x31,0xc9,0x85,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x09,0x11,0x31,0x31,0xC9,0x85,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_409_152_152[34] U8G_FONT_SECTION("fontpage_409_152_152") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x98,0x98,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x71,0x01,0xf9,0x11,0x17,0x31,0x49,0x85,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x98,0x98,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x01,0xF9,0x11,0x17,0x31,0x49,0x85,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_410_136_136[41] U8G_FONT_SECTION("fontpage_410_136_136") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x1e,0x00,0x00,0x00,0x3f,0x00,0x02,0x00,0x0e,
|
||||
0x00,0x71,0x80,0x04,0x00,0x04,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x1E,0x00,0x00,0x00,0x3F,0x00,0x02,0x00,0x0E,
|
||||
0x00,0x71,0x80,0x04,0x00,0x04,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_411_149_149[45] U8G_FONT_SECTION("fontpage_411_149_149") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x95,0x95,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x1e,0x00,0x00,0x00,0x3f,0x00,0x0c,0x00,0x73,
|
||||
0x80,0x00,0x00,0xff,0xc0,0x04,0x00,0x3f,0x00,0x00,0x80,0x00,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x95,0x95,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x1E,0x00,0x00,0x00,0x3F,0x00,0x0C,0x00,0x73,
|
||||
0x80,0x00,0x00,0xFF,0xC0,0x04,0x00,0x3F,0x00,0x00,0x80,0x00,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_411_156_156[47] U8G_FONT_SECTION("fontpage_411_156_156") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x9c,0x9c,0x00,0x09,0xfd,0x00,
|
||||
0x00,0x0a,0x0c,0x18,0x0a,0x00,0xfd,0x1e,0x00,0x00,0x00,0x3f,0x00,0x1a,0x00,0x21,
|
||||
0x00,0xff,0xc0,0x04,0x00,0x3f,0x00,0x00,0x80,0x3f,0x00,0x20,0x00,0x3f,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x9C,0x9C,0x00,0x09,0xFD,0x00,
|
||||
0x00,0x0A,0x0C,0x18,0x0A,0x00,0xFD,0x1E,0x00,0x00,0x00,0x3F,0x00,0x1A,0x00,0x21,
|
||||
0x00,0xFF,0xC0,0x04,0x00,0x3F,0x00,0x00,0x80,0x3F,0x00,0x20,0x00,0x3F,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_411_164_164[45] U8G_FONT_SECTION("fontpage_411_164_164") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xa4,0xa4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x1e,0x00,0x00,0x00,0x3f,0x00,0x0c,0x00,0x73,
|
||||
0x80,0x00,0x00,0xff,0xc0,0x04,0x00,0x3f,0x00,0x20,0x80,0x3f,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x1E,0x00,0x00,0x00,0x3F,0x00,0x0C,0x00,0x73,
|
||||
0x80,0x00,0x00,0xFF,0xC0,0x04,0x00,0x3F,0x00,0x20,0x80,0x3F,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_411_232_232[45] U8G_FONT_SECTION("fontpage_411_232_232") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xe8,0xe8,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x00,0xfe,0x38,0x80,0x00,0x80,0x7c,0x80,0x18,0x80,0x66,
|
||||
0x80,0x00,0x80,0xfe,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x38,0x80,0x00,0x80,0x7C,0x80,0x18,0x80,0x66,
|
||||
0x80,0x00,0x80,0xFE,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_412_216_216[34] U8G_FONT_SECTION("fontpage_412_216_216") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xd8,0xd8,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x71,0x01,0xf9,0x09,0x11,0x31,0x49,0x85,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x01,0xF9,0x09,0x11,0x31,0x49,0x85,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_412_232_232[34] U8G_FONT_SECTION("fontpage_412_232_232") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xe8,0xe8,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x71,0x01,0xf9,0x09,0x31,0xcd,0x00,0x3f,0x41,
|
||||
0x41,0x3f};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x01,0xF9,0x09,0x31,0xCD,0x00,0x3F,0x41,
|
||||
0x41,0x3F};
|
||||
const u8g_fntpgm_uint8_t fontpage_412_244_244[45] U8G_FONT_SECTION("fontpage_412_244_244") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xf4,0xf4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0xf9,0x00,0x09,0x00,0x09,0x00,0xf1,0x00,0x11,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x09,0x00,0x09,0x00,0xF1,0x00,0x11,
|
||||
0x80,0x21,0x00,0x41,0x00,0x81,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_413_152_152[34] U8G_FONT_SECTION("fontpage_413_152_152") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x98,0x98,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf5,0x15,0xf7,0x25,0xc5,0x00,0x3f,0x01,0x3f,
|
||||
0x40,0x3f};
|
||||
const u8g_fntpgm_uint8_t fontpage_414_156_156[34] U8G_FONT_SECTION("fontpage_414_156_156") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x9c,0x9c,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x09,0x0f,0xf1,0x11,0x2f,0x41,0x81,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x9C,0x9C,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x0F,0xF1,0x11,0x2F,0x41,0x81,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_417_209_209[45] U8G_FONT_SECTION("fontpage_417_209_209") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xd1,0xd1,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0xf9,0x00,0x81,0x00,0xf9,0x80,0x81,0x00,0x81,
|
||||
0x00,0xfd,0x00,0x00,0x00,0x41,0x00,0x7e,0x00,0x41,0x00,0x7e,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD1,0xD1,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x81,0x00,0xF9,0x80,0x81,0x00,0x81,
|
||||
0x00,0xFD,0x00,0x00,0x00,0x41,0x00,0x7E,0x00,0x41,0x00,0x7E,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_418_176_176[34] U8G_FONT_SECTION("fontpage_418_176_176") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xb0,0xb0,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf9,0x81,0x81,0xf7,0x81,0x81,0x81,0xf9,0x01,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x81,0x81,0xF7,0x81,0x81,0x81,0xF9,0x01,
|
||||
0x01,0x01};
|
||||
const u8g_fntpgm_uint8_t fontpage_418_204_204[34] U8G_FONT_SECTION("fontpage_418_204_204") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xcc,0xcc,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0xf5,0x85,0x85,0xed,0x85,0x85,0x85,0xfd,0x05,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF5,0x85,0x85,0xED,0x85,0x85,0x85,0xFD,0x05,
|
||||
0x05,0x05};
|
||||
const u8g_fntpgm_uint8_t fontpage_419_160_160[41] U8G_FONT_SECTION("fontpage_419_160_160") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xa0,0xa0,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x3f,0x80,0x20,0x00,0x3f,0x00,0x20,0x00,0x20,
|
||||
0x00,0x3f,0x80,0x04,0x00,0x04,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x20,0x00,0x3F,0x00,0x20,0x00,0x20,
|
||||
0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_421_184_184[41] U8G_FONT_SECTION("fontpage_421_184_184") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xb8,0xb8,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x3f,0x80,0x20,0x00,0x3f,0x00,0x20,0x00,0x20,
|
||||
0x00,0x3f,0x80,0x00,0x00,0x00,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xB8,0xB8,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x20,0x00,0x3F,0x00,0x20,0x00,0x20,
|
||||
0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_423_156_156[45] U8G_FONT_SECTION("fontpage_423_156_156") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x9c,0x9c,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0xfa,0x80,0x4a,0x80,0x4e,0x80,0x4a,0x80,0x4a,
|
||||
0x80,0xfe,0x80,0x02,0x80,0x12,0x80,0x10,0x00,0x10,0x00,0x1f,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x9C,0x9C,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0xFA,0x80,0x4A,0x80,0x4E,0x80,0x4A,0x80,0x4A,
|
||||
0x80,0xFE,0x80,0x02,0x80,0x12,0x80,0x10,0x00,0x10,0x00,0x1F,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_426_132_132[41] U8G_FONT_SECTION("fontpage_426_132_132") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0a,0x09,0x12,0x0a,0x00,0x00,0x3f,0x80,0x12,0x00,0x12,0x00,0x12,0x00,0x12,
|
||||
0x00,0x7f,0x80,0x00,0x00,0x00,0x00,0xff,0xc0};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x12,0x00,0x12,0x00,0x12,0x00,0x12,
|
||||
0x00,0x7F,0x80,0x00,0x00,0x00,0x00,0xFF,0xC0};
|
||||
const u8g_fntpgm_uint8_t fontpage_426_216_216[45] U8G_FONT_SECTION("fontpage_426_216_216") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xd8,0xd8,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0x71,0x00,0x01,0x00,0xfd,0x00,0x01,0x00,0x71,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x71,0x00,0x01,0x00,0xFD,0x00,0x01,0x00,0x71,
|
||||
0x80,0x89,0x00,0x89,0x00,0x89,0x00,0x71,0x00,0x01,0x00,0x01,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_426_233_233[45] U8G_FONT_SECTION("fontpage_426_233_233") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xe9,0xe9,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x09,0x0b,0x16,0x0a,0x01,0xfe,0x71,0x00,0x01,0x00,0xfd,0x00,0x49,0x80,0x89,
|
||||
0x00,0x79,0x00,0x00,0x00,0x41,0x00,0x7e,0x00,0x41,0x00,0x7e,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xE9,0xE9,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x71,0x00,0x01,0x00,0xFD,0x00,0x49,0x80,0x89,
|
||||
0x00,0x79,0x00,0x00,0x00,0x41,0x00,0x7E,0x00,0x41,0x00,0x7E,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_428_200_200[45] U8G_FONT_SECTION("fontpage_428_200_200") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xc8,0xc8,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x0e,0x00,0x00,0x00,0x7f,0x80,0x21,0x00,0x1e,
|
||||
0x00,0x04,0x00,0xff,0xc0,0x00,0x00,0x3f,0x00,0x20,0x80,0x3f,0x00};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x0E,0x00,0x00,0x00,0x7F,0x80,0x21,0x00,0x1E,
|
||||
0x00,0x04,0x00,0xFF,0xC0,0x00,0x00,0x3F,0x00,0x20,0x80,0x3F,0x00};
|
||||
const u8g_fntpgm_uint8_t fontpage_428_212_212[45] U8G_FONT_SECTION("fontpage_428_212_212") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0xd4,0xd4,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0a,0x00,0xfe,0x38,0x80,0x00,0x80,0x7e,0x80,0x00,0x80,0x38,
|
||||
0x80,0x44,0xc0,0x3c,0x80,0x10,0x80,0xfe,0x80,0x00,0x80,0x00,0x80};
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x38,0x80,0x00,0x80,0x7E,0x80,0x00,0x80,0x38,
|
||||
0x80,0x44,0xC0,0x3C,0x80,0x10,0x80,0xFE,0x80,0x00,0x80,0x00,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_431_136_136[34] U8G_FONT_SECTION("fontpage_431_136_136") = {
|
||||
0x00,0x0b,0x0d,0x00,0xfd,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x09,0xfe,0x00,
|
||||
0x00,0x08,0x0b,0x0b,0x0a,0x01,0xfe,0x71,0x01,0xfd,0x01,0x71,0x49,0x89,0x49,0x71,
|
||||
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x09,0xFE,0x00,
|
||||
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x01,0xFD,0x01,0x71,0x49,0x89,0x49,0x71,
|
||||
0x01,0x01};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(344, 240, 240, fontpage_344_240_240), // '거' -- '거'
|
||||
FONTDATA_ITEM(345, 224, 224, fontpage_345_224_224), // '고' -- '고'
|
||||
FONTDATA_ITEM(347, 248, 248, fontpage_347_248_248), // '그' -- '그'
|
||||
FONTDATA_ITEM(348, 137, 137, fontpage_348_137_137), // '급' -- '급'
|
||||
FONTDATA_ITEM(348, 176, 176, fontpage_348_176_176), // '기' -- '기'
|
||||
FONTDATA_ITEM(348, 197, 197, fontpage_348_197_197), // '깅' -- '깅'
|
||||
FONTDATA_ITEM(352, 196, 196, fontpage_352_196_196), // '끄' -- '끄'
|
||||
FONTDATA_ITEM(353, 180, 180, fontpage_353_180_180), // '내' -- '내'
|
||||
FONTDATA_ITEM(354, 248, 248, fontpage_354_248_248), // '노' -- '노'
|
||||
FONTDATA_ITEM(356, 132, 132, fontpage_356_132_132), // '누' -- '누'
|
||||
FONTDATA_ITEM(356, 244, 244, fontpage_356_244_244), // '뉴' -- '뉴'
|
||||
FONTDATA_ITEM(357, 200, 200, fontpage_357_200_200), // '니' -- '니'
|
||||
FONTDATA_ITEM(357, 228, 228, fontpage_357_228_228), // '다' -- '다'
|
||||
FONTDATA_ITEM(357, 249, 249, fontpage_357_249_249), // '당' -- '당'
|
||||
FONTDATA_ITEM(359, 196, 196, fontpage_359_196_196), // '도' -- '도'
|
||||
FONTDATA_ITEM(359, 204, 204, fontpage_359_204_204), // '돌' -- '돌'
|
||||
FONTDATA_ITEM(359, 217, 217, fontpage_359_217_217), // '동' -- '동'
|
||||
FONTDATA_ITEM(360, 152, 152, fontpage_360_152_152), // '되' -- '되'
|
||||
FONTDATA_ITEM(360, 168, 168, fontpage_360_168_168), // '됨' -- '됨'
|
||||
FONTDATA_ITEM(360, 208, 208, fontpage_360_208_208), // '두' -- '두'
|
||||
FONTDATA_ITEM(361, 164, 164, fontpage_361_164_164), // '뒤' -- '뒤'
|
||||
FONTDATA_ITEM(361, 220, 220, fontpage_361_220_220), // '드' -- '드'
|
||||
FONTDATA_ITEM(362, 148, 148, fontpage_362_148_148), // '디' -- '디'
|
||||
FONTDATA_ITEM(366, 252, 252, fontpage_366_252_252), // '라' -- '라'
|
||||
FONTDATA_ITEM(368, 136, 136, fontpage_368_136_136), // '레' -- '레'
|
||||
FONTDATA_ITEM(368, 165, 165, fontpage_368_165_165), // '력' -- '력'
|
||||
FONTDATA_ITEM(368, 220, 220, fontpage_368_220_220), // '로' -- '로'
|
||||
FONTDATA_ITEM(369, 204, 204, fontpage_369_204_204), // '료' -- '료'
|
||||
FONTDATA_ITEM(370, 244, 244, fontpage_370_244_244), // '르' -- '르'
|
||||
FONTDATA_ITEM(371, 172, 172, fontpage_371_172_172), // '리' -- '리'
|
||||
FONTDATA_ITEM(371, 189, 189, fontpage_371_189_189), // '립' -- '립'
|
||||
FONTDATA_ITEM(371, 193, 193, fontpage_371_193_193), // '링' -- '링'
|
||||
FONTDATA_ITEM(371, 204, 204, fontpage_371_204_204), // '만' -- '만'
|
||||
FONTDATA_ITEM(372, 200, 200, fontpage_372_200_200), // '멈' -- '멈'
|
||||
FONTDATA_ITEM(372, 212, 212, fontpage_372_212_212), // '메' -- '메'
|
||||
FONTDATA_ITEM(372, 244, 244, fontpage_372_244_244), // '면' -- '면'
|
||||
FONTDATA_ITEM(373, 168, 168, fontpage_373_168_168), // '모' -- '모'
|
||||
FONTDATA_ITEM(376, 128, 128, fontpage_376_128_128), // '밀' -- '밀'
|
||||
FONTDATA_ITEM(376, 148, 148, fontpage_376_148_148), // '바' -- '바'
|
||||
FONTDATA_ITEM(377, 132, 132, fontpage_377_132_132), // '버' -- '버'
|
||||
FONTDATA_ITEM(377, 160, 160, fontpage_377_160_160), // '베' -- '베'
|
||||
FONTDATA_ITEM(377, 168, 168, fontpage_377_168_168), // '벨' -- '벨'
|
||||
FONTDATA_ITEM(380, 140, 140, fontpage_380_140_140), // '브' -- '브'
|
||||
FONTDATA_ITEM(380, 196, 196, fontpage_380_196_196), // '비' -- '비'
|
||||
FONTDATA_ITEM(385, 189, 189, fontpage_385_189_189), // '삽' -- '삽'
|
||||
FONTDATA_ITEM(385, 200, 200, fontpage_385_200_200), // '새' -- '새'
|
||||
FONTDATA_ITEM(386, 164, 164, fontpage_386_164_164), // '설' -- '설'
|
||||
FONTDATA_ITEM(386, 216, 216, fontpage_386_216_216), // '션' -- '션'
|
||||
FONTDATA_ITEM(387, 140, 141, fontpage_387_140_141), // '소' -- '속'
|
||||
FONTDATA_ITEM(389, 164, 164, fontpage_389_164_164), // '스' -- '스'
|
||||
FONTDATA_ITEM(389, 172, 172, fontpage_389_172_172), // '슬' -- '슬'
|
||||
FONTDATA_ITEM(389, 220, 221, fontpage_389_220_221), // '시' -- '식'
|
||||
FONTDATA_ITEM(395, 180, 180, fontpage_395_180_180), // '어' -- '어'
|
||||
FONTDATA_ITEM(395, 198, 198, fontpage_395_198_198), // '없' -- '없'
|
||||
FONTDATA_ITEM(395, 209, 209, fontpage_395_209_209), // '엑' -- '엑'
|
||||
FONTDATA_ITEM(395, 212, 212, fontpage_395_212_212), // '엔' -- '엔'
|
||||
FONTDATA_ITEM(395, 244, 244, fontpage_395_244_244), // '열' -- '열'
|
||||
FONTDATA_ITEM(396, 136, 136, fontpage_396_136_136), // '예' -- '예'
|
||||
FONTDATA_ITEM(396, 164, 164, fontpage_396_164_164), // '오' -- '오'
|
||||
FONTDATA_ITEM(396, 168, 168, fontpage_396_168_168), // '온' -- '온'
|
||||
FONTDATA_ITEM(396, 196, 196, fontpage_396_196_196), // '완' -- '완'
|
||||
FONTDATA_ITEM(397, 208, 208, fontpage_397_208_208), // '원' -- '원'
|
||||
FONTDATA_ITEM(398, 132, 132, fontpage_398_132_132), // '위' -- '위'
|
||||
FONTDATA_ITEM(398, 188, 188, fontpage_398_188_188), // '으' -- '으'
|
||||
FONTDATA_ITEM(398, 204, 204, fontpage_398_204_204), // '음' -- '음'
|
||||
FONTDATA_ITEM(398, 244, 244, fontpage_398_244_244), // '이' -- '이'
|
||||
FONTDATA_ITEM(398, 252, 253, fontpage_398_252_253), // '일' -- '읽'
|
||||
FONTDATA_ITEM(399, 133, 133, fontpage_399_133_133), // '입' -- '입'
|
||||
FONTDATA_ITEM(399, 144, 145, fontpage_399_144_145), // '자' -- '작'
|
||||
FONTDATA_ITEM(399, 165, 165, fontpage_399_165_165), // '장' -- '장'
|
||||
FONTDATA_ITEM(399, 172, 172, fontpage_399_172_172), // '재' -- '재'
|
||||
FONTDATA_ITEM(400, 128, 128, fontpage_400_128_128), // '저' -- '저'
|
||||
FONTDATA_ITEM(400, 132, 132, fontpage_400_132_132), // '전' -- '전'
|
||||
FONTDATA_ITEM(400, 149, 149, fontpage_400_149_149), // '정' -- '정'
|
||||
FONTDATA_ITEM(400, 156, 156, fontpage_400_156_156), // '제' -- '제'
|
||||
FONTDATA_ITEM(401, 253, 253, fontpage_401_253_253), // '죽' -- '죽'
|
||||
FONTDATA_ITEM(402, 128, 128, fontpage_402_128_128), // '준' -- '준'
|
||||
FONTDATA_ITEM(402, 145, 145, fontpage_402_145_145), // '중' -- '중'
|
||||
FONTDATA_ITEM(403, 144, 144, fontpage_403_144_144), // '즐' -- '즐'
|
||||
FONTDATA_ITEM(403, 192, 192, fontpage_403_192_192), // '지' -- '지'
|
||||
FONTDATA_ITEM(409, 152, 152, fontpage_409_152_152), // '처' -- '처'
|
||||
FONTDATA_ITEM(410, 136, 136, fontpage_410_136_136), // '초' -- '초'
|
||||
FONTDATA_ITEM(411, 149, 149, fontpage_411_149_149), // '축' -- '축'
|
||||
FONTDATA_ITEM(411, 156, 156, fontpage_411_156_156), // '출' -- '출'
|
||||
FONTDATA_ITEM(411, 164, 164, fontpage_411_164_164), // '춤' -- '춤'
|
||||
FONTDATA_ITEM(411, 232, 232, fontpage_411_232_232), // '취' -- '취'
|
||||
FONTDATA_ITEM(412, 216, 216, fontpage_412_216_216), // '치' -- '치'
|
||||
FONTDATA_ITEM(412, 232, 232, fontpage_412_232_232), // '침' -- '침'
|
||||
FONTDATA_ITEM(412, 244, 244, fontpage_412_244_244), // '카' -- '카'
|
||||
FONTDATA_ITEM(413, 152, 152, fontpage_413_152_152), // '캘' -- '캘'
|
||||
FONTDATA_ITEM(414, 156, 156, fontpage_414_156_156), // '켜' -- '켜'
|
||||
FONTDATA_ITEM(417, 209, 209, fontpage_417_209_209), // '탑' -- '탑'
|
||||
FONTDATA_ITEM(418, 176, 176, fontpage_418_176_176), // '터' -- '터'
|
||||
FONTDATA_ITEM(418, 204, 204, fontpage_418_204_204), // '테' -- '테'
|
||||
FONTDATA_ITEM(419, 160, 160, fontpage_419_160_160), // '토' -- '토'
|
||||
FONTDATA_ITEM(421, 184, 184, fontpage_421_184_184), // '트' -- '트'
|
||||
FONTDATA_ITEM(423, 156, 156, fontpage_423_156_156), // '펜' -- '펜'
|
||||
FONTDATA_ITEM(426, 132, 132, fontpage_426_132_132), // '프' -- '프'
|
||||
FONTDATA_ITEM(426, 216, 216, fontpage_426_216_216), // '하' -- '하'
|
||||
FONTDATA_ITEM(426, 233, 233, fontpage_426_233_233), // '합' -- '합'
|
||||
FONTDATA_ITEM(428, 200, 200, fontpage_428_200_200), // '홈' -- '홈'
|
||||
FONTDATA_ITEM(428, 212, 212, fontpage_428_212_212), // '화' -- '화'
|
||||
FONTDATA_ITEM(431, 136, 136, fontpage_431_136_136), // '히' -- '히'
|
||||
static const uxg_fontinfo_t g_fontinfo_ko_KR[] PROGMEM = {
|
||||
FONTDATA_ITEM(344, 240, 240, fontpage_344_240_240), // '거' -- '거'
|
||||
FONTDATA_ITEM(345, 224, 224, fontpage_345_224_224), // '고' -- '고'
|
||||
FONTDATA_ITEM(347, 248, 248, fontpage_347_248_248), // '그' -- '그'
|
||||
FONTDATA_ITEM(348, 137, 137, fontpage_348_137_137), // '급' -- '급'
|
||||
FONTDATA_ITEM(348, 176, 176, fontpage_348_176_176), // '기' -- '기'
|
||||
FONTDATA_ITEM(348, 197, 197, fontpage_348_197_197), // '깅' -- '깅'
|
||||
FONTDATA_ITEM(352, 196, 196, fontpage_352_196_196), // '끄' -- '끄'
|
||||
FONTDATA_ITEM(353, 180, 180, fontpage_353_180_180), // '내' -- '내'
|
||||
FONTDATA_ITEM(354, 248, 248, fontpage_354_248_248), // '노' -- '노'
|
||||
FONTDATA_ITEM(356, 132, 132, fontpage_356_132_132), // '누' -- '누'
|
||||
FONTDATA_ITEM(356, 244, 244, fontpage_356_244_244), // '뉴' -- '뉴'
|
||||
FONTDATA_ITEM(357, 200, 200, fontpage_357_200_200), // '니' -- '니'
|
||||
FONTDATA_ITEM(357, 228, 228, fontpage_357_228_228), // '다' -- '다'
|
||||
FONTDATA_ITEM(357, 249, 249, fontpage_357_249_249), // '당' -- '당'
|
||||
FONTDATA_ITEM(359, 196, 196, fontpage_359_196_196), // '도' -- '도'
|
||||
FONTDATA_ITEM(359, 204, 204, fontpage_359_204_204), // '돌' -- '돌'
|
||||
FONTDATA_ITEM(359, 217, 217, fontpage_359_217_217), // '동' -- '동'
|
||||
FONTDATA_ITEM(360, 152, 152, fontpage_360_152_152), // '되' -- '되'
|
||||
FONTDATA_ITEM(360, 156, 156, fontpage_360_156_156), // '된' -- '된'
|
||||
FONTDATA_ITEM(360, 168, 168, fontpage_360_168_168), // '됨' -- '됨'
|
||||
FONTDATA_ITEM(361, 164, 164, fontpage_361_164_164), // '뒤' -- '뒤'
|
||||
FONTDATA_ITEM(361, 220, 220, fontpage_361_220_220), // '드' -- '드'
|
||||
FONTDATA_ITEM(362, 148, 148, fontpage_362_148_148), // '디' -- '디'
|
||||
FONTDATA_ITEM(366, 252, 252, fontpage_366_252_252), // '라' -- '라'
|
||||
FONTDATA_ITEM(367, 236, 236, fontpage_367_236_236), // '러' -- '러'
|
||||
FONTDATA_ITEM(368, 136, 136, fontpage_368_136_136), // '레' -- '레'
|
||||
FONTDATA_ITEM(368, 165, 165, fontpage_368_165_165), // '력' -- '력'
|
||||
FONTDATA_ITEM(368, 220, 220, fontpage_368_220_220), // '로' -- '로'
|
||||
FONTDATA_ITEM(369, 204, 204, fontpage_369_204_204), // '료' -- '료'
|
||||
FONTDATA_ITEM(370, 244, 244, fontpage_370_244_244), // '르' -- '르'
|
||||
FONTDATA_ITEM(371, 172, 172, fontpage_371_172_172), // '리' -- '리'
|
||||
FONTDATA_ITEM(371, 176, 176, fontpage_371_176_176), // '린' -- '린'
|
||||
FONTDATA_ITEM(371, 189, 189, fontpage_371_189_189), // '립' -- '립'
|
||||
FONTDATA_ITEM(371, 193, 193, fontpage_371_193_193), // '링' -- '링'
|
||||
FONTDATA_ITEM(372, 200, 200, fontpage_372_200_200), // '멈' -- '멈'
|
||||
FONTDATA_ITEM(372, 212, 212, fontpage_372_212_212), // '메' -- '메'
|
||||
FONTDATA_ITEM(372, 244, 244, fontpage_372_244_244), // '면' -- '면'
|
||||
FONTDATA_ITEM(373, 168, 168, fontpage_373_168_168), // '모' -- '모'
|
||||
FONTDATA_ITEM(373, 187, 187, fontpage_373_187_187), // '못' -- '못'
|
||||
FONTDATA_ITEM(375, 248, 248, fontpage_375_248_248), // '미' -- '미'
|
||||
FONTDATA_ITEM(376, 128, 128, fontpage_376_128_128), // '밀' -- '밀'
|
||||
FONTDATA_ITEM(376, 148, 148, fontpage_376_148_148), // '바' -- '바'
|
||||
FONTDATA_ITEM(377, 132, 132, fontpage_377_132_132), // '버' -- '버'
|
||||
FONTDATA_ITEM(377, 160, 160, fontpage_377_160_160), // '베' -- '베'
|
||||
FONTDATA_ITEM(377, 168, 168, fontpage_377_168_168), // '벨' -- '벨'
|
||||
FONTDATA_ITEM(377, 248, 248, fontpage_377_248_248), // '본' -- '본'
|
||||
FONTDATA_ITEM(380, 196, 196, fontpage_380_196_196), // '비' -- '비'
|
||||
FONTDATA_ITEM(385, 172, 172, fontpage_385_172_172), // '사' -- '사'
|
||||
FONTDATA_ITEM(385, 189, 189, fontpage_385_189_189), // '삽' -- '삽'
|
||||
FONTDATA_ITEM(385, 200, 200, fontpage_385_200_200), // '새' -- '새'
|
||||
FONTDATA_ITEM(386, 164, 164, fontpage_386_164_164), // '설' -- '설'
|
||||
FONTDATA_ITEM(387, 140, 141, fontpage_387_140_141), // '소' -- '속'
|
||||
FONTDATA_ITEM(389, 164, 164, fontpage_389_164_164), // '스' -- '스'
|
||||
FONTDATA_ITEM(389, 172, 172, fontpage_389_172_172), // '슬' -- '슬'
|
||||
FONTDATA_ITEM(389, 220, 221, fontpage_389_220_221), // '시' -- '식'
|
||||
FONTDATA_ITEM(395, 180, 180, fontpage_395_180_180), // '어' -- '어'
|
||||
FONTDATA_ITEM(395, 198, 198, fontpage_395_198_198), // '없' -- '없'
|
||||
FONTDATA_ITEM(395, 209, 209, fontpage_395_209_209), // '엑' -- '엑'
|
||||
FONTDATA_ITEM(395, 212, 212, fontpage_395_212_212), // '엔' -- '엔'
|
||||
FONTDATA_ITEM(395, 244, 244, fontpage_395_244_244), // '열' -- '열'
|
||||
FONTDATA_ITEM(396, 136, 136, fontpage_396_136_136), // '예' -- '예'
|
||||
FONTDATA_ITEM(396, 164, 164, fontpage_396_164_164), // '오' -- '오'
|
||||
FONTDATA_ITEM(396, 168, 168, fontpage_396_168_168), // '온' -- '온'
|
||||
FONTDATA_ITEM(396, 196, 196, fontpage_396_196_196), // '완' -- '완'
|
||||
FONTDATA_ITEM(397, 208, 208, fontpage_397_208_208), // '원' -- '원'
|
||||
FONTDATA_ITEM(398, 132, 132, fontpage_398_132_132), // '위' -- '위'
|
||||
FONTDATA_ITEM(398, 188, 188, fontpage_398_188_188), // '으' -- '으'
|
||||
FONTDATA_ITEM(398, 204, 204, fontpage_398_204_204), // '음' -- '음'
|
||||
FONTDATA_ITEM(398, 244, 244, fontpage_398_244_244), // '이' -- '이'
|
||||
FONTDATA_ITEM(398, 252, 253, fontpage_398_252_253), // '일' -- '읽'
|
||||
FONTDATA_ITEM(399, 133, 133, fontpage_399_133_133), // '입' -- '입'
|
||||
FONTDATA_ITEM(399, 144, 145, fontpage_399_144_145), // '자' -- '작'
|
||||
FONTDATA_ITEM(399, 152, 152, fontpage_399_152_152), // '잘' -- '잘'
|
||||
FONTDATA_ITEM(399, 165, 165, fontpage_399_165_165), // '장' -- '장'
|
||||
FONTDATA_ITEM(399, 172, 172, fontpage_399_172_172), // '재' -- '재'
|
||||
FONTDATA_ITEM(400, 128, 128, fontpage_400_128_128), // '저' -- '저'
|
||||
FONTDATA_ITEM(400, 132, 132, fontpage_400_132_132), // '전' -- '전'
|
||||
FONTDATA_ITEM(400, 149, 149, fontpage_400_149_149), // '정' -- '정'
|
||||
FONTDATA_ITEM(400, 156, 156, fontpage_400_156_156), // '제' -- '제'
|
||||
FONTDATA_ITEM(401, 253, 253, fontpage_401_253_253), // '죽' -- '죽'
|
||||
FONTDATA_ITEM(402, 128, 128, fontpage_402_128_128), // '준' -- '준'
|
||||
FONTDATA_ITEM(402, 145, 145, fontpage_402_145_145), // '중' -- '중'
|
||||
FONTDATA_ITEM(403, 144, 144, fontpage_403_144_144), // '즐' -- '즐'
|
||||
FONTDATA_ITEM(403, 192, 192, fontpage_403_192_192), // '지' -- '지'
|
||||
FONTDATA_ITEM(409, 152, 152, fontpage_409_152_152), // '처' -- '처'
|
||||
FONTDATA_ITEM(410, 136, 136, fontpage_410_136_136), // '초' -- '초'
|
||||
FONTDATA_ITEM(411, 149, 149, fontpage_411_149_149), // '축' -- '축'
|
||||
FONTDATA_ITEM(411, 156, 156, fontpage_411_156_156), // '출' -- '출'
|
||||
FONTDATA_ITEM(411, 164, 164, fontpage_411_164_164), // '춤' -- '춤'
|
||||
FONTDATA_ITEM(411, 232, 232, fontpage_411_232_232), // '취' -- '취'
|
||||
FONTDATA_ITEM(412, 216, 216, fontpage_412_216_216), // '치' -- '치'
|
||||
FONTDATA_ITEM(412, 232, 232, fontpage_412_232_232), // '침' -- '침'
|
||||
FONTDATA_ITEM(412, 244, 244, fontpage_412_244_244), // '카' -- '카'
|
||||
FONTDATA_ITEM(414, 156, 156, fontpage_414_156_156), // '켜' -- '켜'
|
||||
FONTDATA_ITEM(417, 209, 209, fontpage_417_209_209), // '탑' -- '탑'
|
||||
FONTDATA_ITEM(418, 176, 176, fontpage_418_176_176), // '터' -- '터'
|
||||
FONTDATA_ITEM(418, 204, 204, fontpage_418_204_204), // '테' -- '테'
|
||||
FONTDATA_ITEM(419, 160, 160, fontpage_419_160_160), // '토' -- '토'
|
||||
FONTDATA_ITEM(421, 184, 184, fontpage_421_184_184), // '트' -- '트'
|
||||
FONTDATA_ITEM(423, 156, 156, fontpage_423_156_156), // '펜' -- '펜'
|
||||
FONTDATA_ITEM(426, 132, 132, fontpage_426_132_132), // '프' -- '프'
|
||||
FONTDATA_ITEM(426, 216, 216, fontpage_426_216_216), // '하' -- '하'
|
||||
FONTDATA_ITEM(426, 233, 233, fontpage_426_233_233), // '합' -- '합'
|
||||
FONTDATA_ITEM(428, 200, 200, fontpage_428_200_200), // '홈' -- '홈'
|
||||
FONTDATA_ITEM(428, 212, 212, fontpage_428_212_212), // '화' -- '화'
|
||||
FONTDATA_ITEM(431, 136, 136, fontpage_431_136_136), // '히' -- '히'
|
||||
};
|
||||
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_nl.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_nl.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_nl[] PROGMEM = {};
|
||||
|
||||
52
Marlin/src/lcd/dogm/fontdata/langdata_pl.h
Executable file → Normal file
52
Marlin/src/lcd/dogm/fontdata/langdata_pl.h
Executable file → Normal file
@@ -3,37 +3,39 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_2_133_133[30] U8G_FONT_SECTION("fontpage_2_133_133") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x85,0x85,0x00,0x05,0xfe,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0xfe,0x70,0x08,0x78,0x88,0x78,0x20,0x30};
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_2_132_133[45] U8G_FONT_SECTION("fontpage_2_132_133") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x84,0x85,0x00,0x07,0xFE,0x00,
|
||||
0x00,0x05,0x09,0x09,0x06,0x00,0xFE,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x10,0x08,
|
||||
0x05,0x07,0x07,0x06,0x00,0xFE,0x70,0x08,0x78,0x88,0x78,0x20,0x30};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_135_135[31] U8G_FONT_SECTION("fontpage_2_135_135") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x08,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x88,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_153_153[30] U8G_FONT_SECTION("fontpage_2_153_153") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x99,0x99,0x00,0x05,0xfe,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0xfe,0x70,0x88,0xf0,0x80,0x70,0x20,0x30};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x99,0x99,0x00,0x05,0xFE,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0xFE,0x70,0x88,0xF0,0x80,0x70,0x20,0x30};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_193_196[73] U8G_FONT_SECTION("fontpage_2_193_196") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xc1,0xc4,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x40,0x60,0xc0,0x40,0x40,0x78,0x03,0x07,
|
||||
0x07,0x06,0x01,0x00,0xc0,0x40,0x60,0xc0,0x40,0x40,0xe0,0x05,0x0a,0x0a,0x06,0x00,
|
||||
0x00,0x10,0x20,0x00,0x88,0x88,0xc8,0xa8,0x98,0x88,0x88,0x05,0x08,0x08,0x06,0x00,
|
||||
0x00,0x10,0x20,0x00,0xb0,0xc8,0x88,0x88,0x88};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC1,0xC4,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x40,0x60,0xC0,0x40,0x40,0x78,0x03,0x07,
|
||||
0x07,0x06,0x01,0x00,0xC0,0x40,0x60,0xC0,0x40,0x40,0xE0,0x05,0x0A,0x0A,0x06,0x00,
|
||||
0x00,0x10,0x20,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x05,0x08,0x08,0x06,0x00,
|
||||
0x00,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_218_219[47] U8G_FONT_SECTION("fontpage_2_218_219") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xda,0xdb,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x70,0x08,0x88,
|
||||
0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x78,0x80,0x70,0x08,0xf0};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDA,0xDB,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x70,0x08,0x88,
|
||||
0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x78,0x80,0x70,0x08,0xF0};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_252_252[30] U8G_FONT_SECTION("fontpage_2_252_252") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x00,0xf8,0x10,0x20,0x40,0xf8};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(2, 133, 133, fontpage_2_133_133), // 'ą' -- 'ą'
|
||||
FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // 'ć' -- 'ć'
|
||||
FONTDATA_ITEM(2, 153, 153, fontpage_2_153_153), // 'ę' -- 'ę'
|
||||
FONTDATA_ITEM(2, 193, 196, fontpage_2_193_196), // 'Ł' -- 'ń'
|
||||
FONTDATA_ITEM(2, 218, 219, fontpage_2_218_219), // 'Ś' -- 'ś'
|
||||
FONTDATA_ITEM(2, 252, 252, fontpage_2_252_252), // 'ż' -- 'ż'
|
||||
static const uxg_fontinfo_t g_fontinfo_pl[] PROGMEM = {
|
||||
FONTDATA_ITEM(2, 132, 133, fontpage_2_132_133), // 'Ą' -- 'ą'
|
||||
FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // 'ć' -- 'ć'
|
||||
FONTDATA_ITEM(2, 153, 153, fontpage_2_153_153), // 'ę' -- 'ę'
|
||||
FONTDATA_ITEM(2, 193, 196, fontpage_2_193_196), // 'Ł' -- 'ń'
|
||||
FONTDATA_ITEM(2, 218, 219, fontpage_2_218_219), // 'Ś' -- 'ś'
|
||||
FONTDATA_ITEM(2, 252, 252, fontpage_2_252_252), // 'ż' -- 'ż'
|
||||
};
|
||||
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_pt.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_pt.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_pt[] PROGMEM = {};
|
||||
|
||||
7
Marlin/src/lcd/dogm/fontdata/langdata_pt_br.h
Executable file → Normal file
7
Marlin/src/lcd/dogm/fontdata/langdata_pt_br.h
Executable file → Normal file
@@ -3,7 +3,8 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_pt_br[] PROGMEM = {};
|
||||
|
||||
10
Marlin/src/lcd/dogm/fontdata/langdata_ro.h
Normal file
10
Marlin/src/lcd/dogm/fontdata/langdata_ro.h
Normal file
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* Generated automatically by buildroot/share/fonts/uxggenpages.sh
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "langdata.h"
|
||||
|
||||
static const uxg_fontinfo_t g_fontinfo_ro[] PROGMEM = {};
|
||||
118
Marlin/src/lcd/dogm/fontdata/langdata_ru.h
Executable file → Normal file
118
Marlin/src/lcd/dogm/fontdata/langdata_ru.h
Executable file → Normal file
@@ -3,76 +3,72 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_8_144_152[135] U8G_FONT_SECTION("fontpage_8_144_152") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x90,0x98,0x00,0x07,0xff,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xf0,0x80,0x80,0xf0,0x88,0x88,0xf0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xf0,0x88,0x88,0xf0,0x88,0x88,0xf0,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x80,
|
||||
0x80,0x80,0x80,0x80,0x80,0x05,0x08,0x08,0x06,0x00,0xff,0x30,0x50,0x50,0x50,0x50,
|
||||
0x50,0xf8,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x80,0x80,0xf0,0x80,0x80,0xf8,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0xa8,0xa8,0x70,0x20,0x70,0xa8,0xa8,0x05,0x07,0x07,
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_8_144_168[348] U8G_FONT_SECTION("fontpage_8_144_168") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0xA8,0x00,0x0A,0xFE,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xF0,0x80,0x80,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,
|
||||
0x80,0x80,0x80,0x80,0x80,0x05,0x08,0x08,0x06,0x00,0xFF,0x30,0x50,0x50,0x50,0x50,
|
||||
0x50,0xF8,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0x70,0x20,0x70,0xA8,0xA8,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x70,0x88,0x08,0x70,0x08,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x88,0x88,0x98,0xa8,0xc8,0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_154_168[214] U8G_FONT_SECTION("fontpage_8_154_168") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x9a,0xa8,0x00,0x07,0xfe,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xa0,0xc0,0xa0,0x90,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x48,0x48,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x88,0xd8,0xa8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,
|
||||
0x88,0xf8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,
|
||||
0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xf0,0x88,0x88,0xf0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,
|
||||
0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,
|
||||
0x78,0x08,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,0xa8,0xa8,0xa8,0x70,0x20,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x05,0x09,0x09,
|
||||
0x06,0x00,0xfe,0x90,0x90,0x90,0x90,0x90,0x90,0xf8,0x08,0x08,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x88,0x88,0x88,0x78,0x08,0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0xa8,
|
||||
0xa8,0xa8,0xa8,0xa8,0xa8,0xf8};
|
||||
0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x88,0x70,0x00,
|
||||
0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,
|
||||
0xC0,0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x48,0x48,
|
||||
0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x88,
|
||||
0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x80,
|
||||
0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x88,0x88,0x88,0x88,0x78,0x08,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x20,
|
||||
0x70,0xA8,0xA8,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,
|
||||
0x50,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0xFE,0x90,0x90,0x90,0x90,0x90,0x90,0xF8,
|
||||
0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x78,0x08,0x08,0x08,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_171_173[56] U8G_FONT_SECTION("fontpage_8_171_173") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xab,0xad,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xc8,0xa8,0xa8,0xc8,0x04,0x07,
|
||||
0x07,0x06,0x01,0x00,0x80,0x80,0x80,0xe0,0x90,0x90,0xe0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAB,0xAD,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xC8,0xA8,0xA8,0xC8,0x04,0x07,
|
||||
0x07,0x06,0x01,0x00,0x80,0x80,0x80,0xE0,0x90,0x90,0xE0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x88,0x08,0x78,0x08,0x88,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_175_201[334] U8G_FONT_SECTION("fontpage_8_175_201") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xaf,0xc9,0x00,0x08,0xfe,0x00,
|
||||
const u8g_fntpgm_uint8_t fontpage_8_175_207[400] U8G_FONT_SECTION("fontpage_8_175_207") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xCF,0x00,0x08,0xFE,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x78,0x88,0x88,0x78,0x28,0x48,0x88,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
|
||||
0x80,0xf0,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xf0,0x88,0xf0,0x88,
|
||||
0xf0,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x80,0x80,0x80,0x80,0x05,0x06,0x06,0x06,
|
||||
0x00,0xff,0x30,0x50,0x50,0x50,0xf8,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,
|
||||
0xf0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xa8,0x70,0x20,0x70,0xa8,0x05,0x05,
|
||||
0x80,0xF0,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF0,0x88,0xF0,0x88,
|
||||
0xF0,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x05,0x06,0x06,0x06,
|
||||
0x00,0xFF,0x30,0x50,0x50,0x50,0xF8,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,
|
||||
0xF0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0x70,0x20,0x70,0xA8,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0x70,0x88,0x30,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x88,
|
||||
0x98,0xa8,0xc8,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x88,0x98,0xa8,
|
||||
0xc8,0x88,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xa0,0xc0,0xa0,0x90,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0xd8,
|
||||
0xa8,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xf8,0x88,0x88,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,
|
||||
0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0xfe,0xf0,0x88,0x88,0x88,0xf0,0x80,
|
||||
0x98,0xA8,0xC8,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x88,0x98,0xA8,
|
||||
0xC8,0x88,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xA0,0xC0,0xA0,0x90,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0xD8,
|
||||
0xA8,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xF8,0x88,0x88,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,
|
||||
0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0xFE,0xF0,0x88,0x88,0x88,0xF0,0x80,
|
||||
0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x80,0x88,0x70,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0xf8,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xfe,0x88,0x88,0x88,
|
||||
0x88,0x78,0x08,0x70,0x05,0x09,0x09,0x06,0x00,0xfe,0x20,0x20,0x70,0xa8,0xa8,0xa8,
|
||||
0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,
|
||||
0x88,0x78,0x08,0x70,0x05,0x09,0x09,0x06,0x00,0xFE,0x20,0x20,0x70,0xA8,0xA8,0xA8,
|
||||
0x70,0x20,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0xfe,0x90,0x90,0x90,0x90,0xf8,0x08,0x08,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x88,0x88,0x78,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0xa8,0xa8,0xa8,0xa8,
|
||||
0xf8,0x05,0x07,0x07,0x06,0x00,0xfe,0xa8,0xa8,0xa8,0xa8,0xf8,0x08,0x08};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_203_207[72] U8G_FONT_SECTION("fontpage_8_203_207") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xcb,0xcf,0x00,0x05,0x00,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xc8,0xa8,0xc8,0x04,0x05,0x05,0x06,
|
||||
0x01,0x00,0x80,0x80,0xe0,0x90,0xe0,0x04,0x05,0x05,0x06,0x01,0x00,0xe0,0x10,0x70,
|
||||
0x10,0xe0,0x05,0x05,0x05,0x06,0x00,0x00,0x90,0xa8,0xe8,0xa8,0x90,0x04,0x05,0x05,
|
||||
0x06,0x01,0x00,0x70,0x90,0x70,0x50,0x90};
|
||||
0x07,0x06,0x00,0xFE,0x90,0x90,0x90,0x90,0xF8,0x08,0x08,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x88,0x88,0x78,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0xA8,0xA8,0xA8,
|
||||
0xF8,0x05,0x07,0x07,0x06,0x00,0xFE,0xA8,0xA8,0xA8,0xA8,0xF8,0x08,0x08,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0xC0,0x40,0x70,0x48,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x88,
|
||||
0x88,0xC8,0xA8,0xC8,0x04,0x05,0x05,0x06,0x01,0x00,0x80,0x80,0xE0,0x90,0xE0,0x04,
|
||||
0x05,0x05,0x06,0x01,0x00,0xE0,0x10,0x70,0x10,0xE0,0x05,0x05,0x05,0x06,0x00,0x00,
|
||||
0x90,0xA8,0xE8,0xA8,0x90,0x04,0x05,0x05,0x06,0x01,0x00,0x70,0x90,0x70,0x50,0x90
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_209_209[30] U8G_FONT_SECTION("fontpage_8_209_209") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xd1,0xd1,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0xf0,0x80,0x70};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD1,0xD1,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0xF0,0x80,0x70};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(8, 144, 152, fontpage_8_144_152), // 'А' -- 'И'
|
||||
FONTDATA_ITEM(8, 154, 168, fontpage_8_154_168), // 'К' -- 'Ш'
|
||||
FONTDATA_ITEM(8, 171, 173, fontpage_8_171_173), // 'Ы' -- 'Э'
|
||||
FONTDATA_ITEM(8, 175, 201, fontpage_8_175_201), // 'Я' -- 'щ'
|
||||
FONTDATA_ITEM(8, 203, 207, fontpage_8_203_207), // 'ы' -- 'я'
|
||||
FONTDATA_ITEM(8, 209, 209, fontpage_8_209_209), // 'ё' -- 'ё'
|
||||
static const uxg_fontinfo_t g_fontinfo_ru[] PROGMEM = {
|
||||
FONTDATA_ITEM(8, 144, 168, fontpage_8_144_168), // 'А' -- 'Ш'
|
||||
FONTDATA_ITEM(8, 171, 173, fontpage_8_171_173), // 'Ы' -- 'Э'
|
||||
FONTDATA_ITEM(8, 175, 207, fontpage_8_175_207), // 'Я' -- 'я'
|
||||
FONTDATA_ITEM(8, 209, 209, fontpage_8_209_209), // 'ё' -- 'ё'
|
||||
};
|
||||
|
||||
76
Marlin/src/lcd/dogm/fontdata/langdata_sk.h
Executable file → Normal file
76
Marlin/src/lcd/dogm/fontdata/langdata_sk.h
Executable file → Normal file
@@ -3,54 +3,48 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_2_140_143[79] U8G_FONT_SECTION("fontpage_2_140_143") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x8c,0x8f,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x80,0x80,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8F,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x80,0x80,0x88,
|
||||
0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x88,0x70,0x05,
|
||||
0x0a,0x0a,0x06,0x00,0x00,0x50,0x20,0x00,0xf0,0x48,0x48,0x48,0x48,0x48,0xf0,0x06,
|
||||
0x0a,0x0a,0x06,0x00,0x00,0x14,0x08,0x00,0x08,0x08,0x78,0x88,0x88,0x88,0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_185_186[49] U8G_FONT_SECTION("fontpage_2_185_186") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xb9,0xba,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x10,0x20,0x00,0x80,0x80,0x80,0x80,0x80,0x80,
|
||||
0xf8,0x03,0x0a,0x0a,0x06,0x01,0x00,0x20,0x40,0x00,0xc0,0x40,0x40,0x40,0x40,0x40,
|
||||
0xe0};
|
||||
0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0xF0,0x06,
|
||||
0x0A,0x0A,0x06,0x00,0x00,0x14,0x08,0x00,0x08,0x08,0x78,0x88,0x88,0x88,0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_186_186[33] U8G_FONT_SECTION("fontpage_2_186_186") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBA,0xBA,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x03,0x0A,0x0A,0x06,0x01,0x00,0x20,0x40,0x00,0xC0,0x40,0x40,0x40,0x40,0x40,
|
||||
0xE0};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_189_190[49] U8G_FONT_SECTION("fontpage_2_189_190") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xbd,0xbe,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x50,0x20,0x00,0x80,0x80,0x80,0x80,0x80,0x80,
|
||||
0xf8,0x03,0x0a,0x0a,0x06,0x01,0x00,0xa0,0x40,0x00,0xc0,0x40,0x40,0x40,0x40,0x40,
|
||||
0xe0};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBD,0xBE,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x80,0x80,0x80,0x80,0x80,0x80,
|
||||
0xF8,0x03,0x0A,0x0A,0x06,0x01,0x00,0xA0,0x40,0x00,0xC0,0x40,0x40,0x40,0x40,0x40,
|
||||
0xE0};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_199_200[47] U8G_FONT_SECTION("fontpage_2_199_200") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xc7,0xc8,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x50,0x20,0x00,0x88,0x88,0xc8,0xa8,0x98,0x88,
|
||||
0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xb0,0xc8,0x88,0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_212_213[47] U8G_FONT_SECTION("fontpage_2_212_213") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xd4,0xd5,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x10,0x20,0x00,0xf0,0x88,0x88,0xf0,0xa0,0x90,
|
||||
0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0xb0,0xc8,0x80,0x80,0x80};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC7,0xC8,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,
|
||||
0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_224_225[47] U8G_FONT_SECTION("fontpage_2_224_225") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xe0,0xe1,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x70,0x08,0x88,
|
||||
0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x78,0x80,0x70,0x08,0xf0};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_228_229[49] U8G_FONT_SECTION("fontpage_2_228_229") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xe4,0xe5,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x50,0x20,0x00,0xf8,0x20,0x20,0x20,0x20,0x20,
|
||||
0x20,0x05,0x0a,0x0a,0x06,0x00,0x00,0x50,0x20,0x00,0x20,0x20,0xf8,0x20,0x20,0x20,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE0,0xE1,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x70,0x08,0x88,
|
||||
0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x78,0x80,0x70,0x08,0xF0};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_229_229[33] U8G_FONT_SECTION("fontpage_2_229_229") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x20,0x20,0xF8,0x20,0x20,0x20,
|
||||
0x18};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_253_254[47] U8G_FONT_SECTION("fontpage_2_253_254") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xfd,0xfe,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x50,0x20,0x00,0xf8,0x08,0x10,0x20,0x40,0x80,
|
||||
0xf8,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xf8,0x10,0x20,0x40,0xf8};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFE,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,
|
||||
0xF8,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(2, 140, 143, fontpage_2_140_143), // 'Č' -- 'ď'
|
||||
FONTDATA_ITEM(2, 185, 186, fontpage_2_185_186), // 'Ĺ' -- 'ĺ'
|
||||
FONTDATA_ITEM(2, 189, 190, fontpage_2_189_190), // 'Ľ' -- 'ľ'
|
||||
FONTDATA_ITEM(2, 199, 200, fontpage_2_199_200), // 'Ň' -- 'ň'
|
||||
FONTDATA_ITEM(2, 212, 213, fontpage_2_212_213), // 'Ŕ' -- 'ŕ'
|
||||
FONTDATA_ITEM(2, 224, 225, fontpage_2_224_225), // 'Š' -- 'š'
|
||||
FONTDATA_ITEM(2, 228, 229, fontpage_2_228_229), // 'Ť' -- 'ť'
|
||||
FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // 'Ž' -- 'ž'
|
||||
static const uxg_fontinfo_t g_fontinfo_sk[] PROGMEM = {
|
||||
FONTDATA_ITEM(2, 140, 143, fontpage_2_140_143), // 'Č' -- 'ď'
|
||||
FONTDATA_ITEM(2, 186, 186, fontpage_2_186_186), // 'ĺ' -- 'ĺ'
|
||||
FONTDATA_ITEM(2, 189, 190, fontpage_2_189_190), // 'Ľ' -- 'ľ'
|
||||
FONTDATA_ITEM(2, 199, 200, fontpage_2_199_200), // 'Ň' -- 'ň'
|
||||
FONTDATA_ITEM(2, 224, 225, fontpage_2_224_225), // 'Š' -- 'š'
|
||||
FONTDATA_ITEM(2, 229, 229, fontpage_2_229_229), // 'ť' -- 'ť'
|
||||
FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // 'Ž' -- 'ž'
|
||||
};
|
||||
|
||||
425
Marlin/src/lcd/dogm/fontdata/langdata_test.h
Executable file → Normal file
425
Marlin/src/lcd/dogm/fontdata/langdata_test.h
Executable file → Normal file
@@ -3,223 +3,230 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_8_128_255[1677] U8G_FONT_SECTION("fontpage_8_128_255") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x00,0x0a,0xfe,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0x00,0x40,0x20,0x00,0xf8,0x80,0x80,0xf0,0x80,0x80,
|
||||
0xf8,0x05,0x09,0x09,0x06,0x00,0x00,0x50,0x00,0xf8,0x80,0x80,0xf0,0x80,0x80,0xf8,
|
||||
0x05,0x09,0x09,0x06,0x00,0xfe,0xe0,0x40,0x40,0x70,0x48,0x48,0x48,0x08,0x30,0x05,
|
||||
0x0a,0x0a,0x06,0x00,0x00,0x10,0x20,0x00,0xf8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0xf0,0x80,0x88,0x70,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x03,0x07,0x07,0x06,0x01,0x00,0xe0,
|
||||
0x40,0x40,0x40,0x40,0x40,0xe0,0x03,0x09,0x09,0x06,0x01,0x00,0xa0,0x00,0xe0,0x40,
|
||||
0x40,0x40,0x40,0x40,0xe0,0x05,0x07,0x07,0x06,0x00,0x00,0x38,0x10,0x10,0x10,0x10,
|
||||
0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x60,0xa0,0xa0,0xb0,0xa8,0xa8,0xb0,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xa0,0xa0,0xa0,0xf0,0xa8,0xa8,0xb0,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0xe0,0x40,0x40,0x70,0x48,0x48,0x48,0x05,0x0a,0x0a,0x06,0x00,0x00,0x10,
|
||||
0x20,0x00,0x88,0x90,0xa0,0xc0,0xa0,0x90,0x88,0x05,0x0a,0x0a,0x06,0x00,0x00,0x40,
|
||||
0x20,0x00,0x88,0x88,0x98,0xa8,0xc8,0x88,0x88,0x05,0x0a,0x0a,0x06,0x00,0x00,0x88,
|
||||
0x70,0x00,0x88,0x88,0x88,0x88,0x78,0x08,0x70,0x05,0x09,0x09,0x06,0x00,0xfe,0x88,
|
||||
0x88,0x88,0x88,0x88,0x88,0xf8,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,
|
||||
0x88,0xf8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xf0,0x80,0x80,0xf0,0x88,
|
||||
0x88,0xf0,0x05,0x07,0x07,0x06,0x00,0x00,0xf0,0x88,0x88,0xf0,0x88,0x88,0xf0,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xf8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,0x08,0x08,0x06,
|
||||
0x00,0xff,0x30,0x50,0x50,0x50,0x50,0x50,0xf8,0x88,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0xf8,0x80,0x80,0xf0,0x80,0x80,0xf8,0x05,0x07,0x07,0x06,0x00,0x00,0xa8,0xa8,0x70,
|
||||
0x20,0x70,0xa8,0xa8,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x08,0x70,0x08,0x88,
|
||||
0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x98,0xa8,0xc8,0x88,0x88,0x05,0x0a,
|
||||
0x0a,0x06,0x00,0x00,0x88,0x70,0x00,0x88,0x88,0x98,0xa8,0xc8,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x88,0x90,0xa0,0xc0,0xa0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x38,0x48,0x48,0x48,0x48,0x48,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xd8,
|
||||
0xa8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xf8,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x0A,0xFE,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,0x20,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,
|
||||
0xF8,0x05,0x09,0x09,0x06,0x00,0x00,0x50,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,
|
||||
0x05,0x09,0x09,0x06,0x00,0xFE,0xE0,0x40,0x40,0x70,0x48,0x48,0x48,0x08,0x30,0x05,
|
||||
0x0A,0x0A,0x06,0x00,0x00,0x10,0x20,0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0xF0,0x80,0x88,0x70,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x03,0x07,0x07,0x06,0x01,0x00,0xE0,
|
||||
0x40,0x40,0x40,0x40,0x40,0xE0,0x03,0x09,0x09,0x06,0x01,0x00,0xA0,0x00,0xE0,0x40,
|
||||
0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x38,0x10,0x10,0x10,0x10,
|
||||
0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x60,0xA0,0xA0,0xB0,0xA8,0xA8,0xB0,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xA0,0xA0,0xA0,0xF0,0xA8,0xA8,0xB0,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0xE0,0x40,0x40,0x70,0x48,0x48,0x48,0x05,0x0A,0x0A,0x06,0x00,0x00,0x10,
|
||||
0x20,0x00,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,
|
||||
0x20,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x88,
|
||||
0x70,0x00,0x88,0x88,0x88,0x88,0x78,0x08,0x70,0x05,0x09,0x09,0x06,0x00,0xFE,0x88,
|
||||
0x88,0x88,0x88,0x88,0x88,0xF8,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,
|
||||
0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x80,0x80,0xF0,0x88,
|
||||
0x88,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,0x08,0x08,0x06,
|
||||
0x00,0xFF,0x30,0x50,0x50,0x50,0x50,0x50,0xF8,0x88,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0x70,
|
||||
0x20,0x70,0xA8,0xA8,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x08,0x70,0x08,0x88,
|
||||
0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x0A,
|
||||
0x0A,0x06,0x00,0x00,0x88,0x70,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x38,0x48,0x48,0x48,0x48,0x48,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,
|
||||
0xA8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,
|
||||
0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0xf0,0x88,0x88,0xf0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
|
||||
0x88,0x80,0x80,0x80,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x20,0x20,0x20,
|
||||
0x07,0x07,0x06,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0xF0,0x88,0x88,0xF0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
|
||||
0x88,0x80,0x80,0x80,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,
|
||||
0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,0x78,0x08,0x70,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,0xa8,0xa8,0xa8,0x70,0x20,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0xfe,
|
||||
0x90,0x90,0x90,0x90,0x90,0x90,0xf8,0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0x88,
|
||||
0x88,0x88,0x78,0x08,0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0xa8,0xa8,0xa8,0xa8,
|
||||
0xa8,0xa8,0xf8,0x05,0x09,0x09,0x06,0x00,0xfe,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xf8,
|
||||
0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0xc0,0x40,0x40,0x70,0x48,0x48,0x70,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xc8,0xa8,0xa8,0xc8,0x04,0x07,0x07,0x06,
|
||||
0x01,0x00,0x80,0x80,0x80,0xe0,0x90,0x90,0xe0,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
|
||||
0x88,0x08,0x78,0x08,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x90,0xa8,0xa8,0xe8,
|
||||
0xa8,0xa8,0x90,0x05,0x07,0x07,0x06,0x00,0x00,0x78,0x88,0x88,0x78,0x28,0x48,0x88,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,0xA8,0xA8,0xA8,0x70,0x20,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0xFE,
|
||||
0x90,0x90,0x90,0x90,0x90,0x90,0xF8,0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0x88,
|
||||
0x88,0x88,0x78,0x08,0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0xA8,0xA8,
|
||||
0xA8,0xA8,0xF8,0x05,0x09,0x09,0x06,0x00,0xFE,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,
|
||||
0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x70,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xC8,0xA8,0xA8,0xC8,0x04,0x07,0x07,0x06,
|
||||
0x01,0x00,0x80,0x80,0x80,0xE0,0x90,0x90,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
|
||||
0x88,0x08,0x78,0x08,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x90,0xA8,0xA8,0xE8,
|
||||
0xA8,0xA8,0x90,0x05,0x07,0x07,0x06,0x00,0x00,0x78,0x88,0x88,0x78,0x28,0x48,0x88,
|
||||
0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x80,0xf0,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xf0,0x88,
|
||||
0xf0,0x88,0xf0,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x80,0x80,0x80,0x80,0x05,0x06,
|
||||
0x06,0x06,0x00,0xff,0x30,0x50,0x50,0x50,0xf8,0x88,0x05,0x05,0x05,0x06,0x00,0x00,
|
||||
0x70,0x88,0xf0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xa8,0x70,0x20,0x70,0xa8,
|
||||
0x00,0x70,0x80,0xF0,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF0,0x88,
|
||||
0xF0,0x88,0xF0,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x05,0x06,
|
||||
0x06,0x06,0x00,0xFF,0x30,0x50,0x50,0x50,0xF8,0x88,0x05,0x05,0x05,0x06,0x00,0x00,
|
||||
0x70,0x88,0xF0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0x70,0x20,0x70,0xA8,
|
||||
0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x30,0x88,0x70,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x88,0x98,0xa8,0xc8,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x88,
|
||||
0x98,0xa8,0xc8,0x88,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xa0,0xc0,0xa0,0x90,0x05,
|
||||
0x00,0x88,0x98,0xA8,0xC8,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x88,
|
||||
0x98,0xA8,0xC8,0x88,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xA0,0xC0,0xA0,0x90,0x05,
|
||||
0x05,0x05,0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x88,0x05,0x05,0x05,0x06,0x00,0x00,
|
||||
0x88,0xd8,0xa8,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xf8,0x88,0x88,
|
||||
0x88,0xD8,0xA8,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xF8,0x88,0x88,
|
||||
0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0xf8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0xfe,0xf0,0x88,0x88,0x88,
|
||||
0xf0,0x80,0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x80,0x88,0x70,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0xf8,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xfe,0x88,
|
||||
0x88,0x88,0x88,0x78,0x08,0x70,0x05,0x09,0x09,0x06,0x00,0xfe,0x20,0x20,0x70,0xa8,
|
||||
0xa8,0xa8,0x70,0x20,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,
|
||||
0x05,0x07,0x07,0x06,0x00,0xfe,0x90,0x90,0x90,0x90,0xf8,0x08,0x08,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x88,0x88,0x78,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0xa8,0xa8,
|
||||
0xa8,0xa8,0xf8,0x05,0x07,0x07,0x06,0x00,0xfe,0xa8,0xa8,0xa8,0xa8,0xf8,0x08,0x08,
|
||||
0x05,0x05,0x05,0x06,0x00,0x00,0xc0,0x40,0x70,0x48,0x70,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x88,0x88,0xc8,0xa8,0xc8,0x04,0x05,0x05,0x06,0x01,0x00,0x80,0x80,0xe0,0x90,
|
||||
0xe0,0x04,0x05,0x05,0x06,0x01,0x00,0xe0,0x10,0x70,0x10,0xe0,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0x90,0xa8,0xe8,0xa8,0x90,0x04,0x05,0x05,0x06,0x01,0x00,0x70,0x90,0x70,
|
||||
0x50,0x90,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,0x70,0x88,0xf0,0x80,0x70,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0xf0,0x80,0x70,0x05,0x09,0x09,
|
||||
0x06,0x00,0xfe,0x40,0xe0,0x40,0x70,0x48,0x48,0x48,0x08,0x10,0x05,0x08,0x08,0x06,
|
||||
0x00,0x00,0x10,0x20,0x00,0xf8,0x80,0x80,0x80,0x80,0x04,0x05,0x05,0x06,0x01,0x00,
|
||||
0x70,0x80,0xe0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x78,0x80,0x70,0x08,0xf0,
|
||||
0x03,0x06,0x06,0x06,0x01,0x00,0x40,0x00,0xc0,0x40,0x40,0xe0,0x03,0x06,0x06,0x06,
|
||||
0x01,0x00,0xa0,0x00,0xc0,0x40,0x40,0xe0,0x04,0x08,0x08,0x06,0x01,0xfe,0x10,0x00,
|
||||
0x30,0x10,0x10,0x10,0x90,0x60,0x05,0x05,0x05,0x06,0x00,0x00,0x60,0xa0,0xb0,0xa8,
|
||||
0xb0,0x05,0x05,0x05,0x06,0x00,0x00,0xa0,0xa0,0xf0,0xa8,0xb0,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x40,0xe0,0x40,0x70,0x48,0x48,0x48,0x04,0x08,0x08,0x06,0x01,0x00,0x20,
|
||||
0x40,0x00,0x90,0xa0,0xc0,0xa0,0x90,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,
|
||||
0x88,0x98,0xa8,0xc8,0x88,0x05,0x0a,0x0a,0x06,0x00,0xfe,0x88,0x70,0x00,0x88,0x88,
|
||||
0x88,0x88,0x78,0x08,0x70,0x05,0x07,0x07,0x06,0x00,0xfe,0x88,0x88,0x88,0x88,0xf8,
|
||||
0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x88,0x88,0xa8,0xa8,0xa8,0x50,0x05,
|
||||
0x05,0x05,0x06,0x00,0x00,0x50,0x88,0xa8,0xa8,0x50,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x40,0xf0,0x40,0x70,0x48,0x48,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x40,0xf0,
|
||||
0x40,0x70,0x48,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x98,0xa0,0xa0,0xf8,0xa0,0xa0,
|
||||
0x98,0x05,0x05,0x05,0x06,0x00,0x00,0x98,0xa0,0xf8,0xa0,0x98,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x20,0x50,0x50,0x88,0xf8,0xa8,0xa8,0x05,0x06,0x06,0x06,0x00,0x00,0x20,
|
||||
0x50,0x50,0x88,0xf8,0xa8,0x05,0x07,0x07,0x06,0x00,0x00,0x90,0x90,0xb8,0xf8,0xb8,
|
||||
0xb8,0xb8,0x05,0x05,0x05,0x06,0x00,0x00,0x90,0x90,0xf8,0xb8,0xb8,0x05,0x08,0x08,
|
||||
0x06,0x00,0x00,0xf8,0x88,0x50,0x50,0x70,0xa8,0xa8,0xa8,0x05,0x06,0x06,0x06,0x00,
|
||||
0x00,0xf8,0x88,0x50,0x70,0xa8,0xa8,0x06,0x08,0x08,0x06,0x00,0x00,0xfc,0xc4,0xa8,
|
||||
0x90,0xf8,0xb8,0xb8,0xa8,0x06,0x06,0x06,0x06,0x00,0x00,0xfc,0xa8,0x90,0xf8,0xb8,
|
||||
0xa8,0x05,0x0c,0x0c,0x06,0x00,0xfe,0x50,0x20,0x00,0x70,0x88,0x08,0x30,0x08,0x08,
|
||||
0x70,0x80,0x70,0x05,0x0a,0x0a,0x06,0x00,0xfe,0x50,0x20,0x00,0x70,0x88,0x30,0x08,
|
||||
0x70,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xa8,0xa8,0xa8,0x70,0x20,0x20,0x20,
|
||||
0x05,0x05,0x05,0x06,0x00,0x00,0xa8,0xa8,0x70,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x88,0x88,0xf8,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,
|
||||
0xf8,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0x90,0x50,0x50,0x50,0x20,
|
||||
0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x90,0x50,0x50,0x20,0x05,0x0a,0x0a,0x06,0x00,
|
||||
0x00,0xF8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0xFE,0xF0,0x88,0x88,0x88,
|
||||
0xF0,0x80,0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x80,0x88,0x70,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,
|
||||
0x88,0x88,0x88,0x78,0x08,0x70,0x05,0x09,0x09,0x06,0x00,0xFE,0x20,0x20,0x70,0xA8,
|
||||
0xA8,0xA8,0x70,0x20,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,
|
||||
0x05,0x07,0x07,0x06,0x00,0xFE,0x90,0x90,0x90,0x90,0xF8,0x08,0x08,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x88,0x88,0x78,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0xA8,
|
||||
0xA8,0xA8,0xF8,0x05,0x07,0x07,0x06,0x00,0xFE,0xA8,0xA8,0xA8,0xA8,0xF8,0x08,0x08,
|
||||
0x05,0x05,0x05,0x06,0x00,0x00,0xC0,0x40,0x70,0x48,0x70,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x88,0x88,0xC8,0xA8,0xC8,0x04,0x05,0x05,0x06,0x01,0x00,0x80,0x80,0xE0,0x90,
|
||||
0xE0,0x04,0x05,0x05,0x06,0x01,0x00,0xE0,0x10,0x70,0x10,0xE0,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0x90,0xA8,0xE8,0xA8,0x90,0x04,0x05,0x05,0x06,0x01,0x00,0x70,0x90,0x70,
|
||||
0x50,0x90,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,0x70,0x88,0xF0,0x80,0x70,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0xF0,0x80,0x70,0x05,0x09,0x09,
|
||||
0x06,0x00,0xFE,0x40,0xE0,0x40,0x70,0x48,0x48,0x48,0x08,0x10,0x05,0x08,0x08,0x06,
|
||||
0x00,0x00,0x10,0x20,0x00,0xF8,0x80,0x80,0x80,0x80,0x04,0x05,0x05,0x06,0x01,0x00,
|
||||
0x70,0x80,0xE0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x78,0x80,0x70,0x08,0xF0,
|
||||
0x03,0x06,0x06,0x06,0x01,0x00,0x40,0x00,0xC0,0x40,0x40,0xE0,0x03,0x06,0x06,0x06,
|
||||
0x01,0x00,0xA0,0x00,0xC0,0x40,0x40,0xE0,0x04,0x08,0x08,0x06,0x01,0xFE,0x10,0x00,
|
||||
0x30,0x10,0x10,0x10,0x90,0x60,0x05,0x05,0x05,0x06,0x00,0x00,0x60,0xA0,0xB0,0xA8,
|
||||
0xB0,0x05,0x05,0x05,0x06,0x00,0x00,0xA0,0xA0,0xF0,0xA8,0xB0,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x40,0xE0,0x40,0x70,0x48,0x48,0x48,0x04,0x08,0x08,0x06,0x01,0x00,0x20,
|
||||
0x40,0x00,0x90,0xA0,0xC0,0xA0,0x90,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,
|
||||
0x88,0x98,0xA8,0xC8,0x88,0x05,0x0A,0x0A,0x06,0x00,0xFE,0x88,0x70,0x00,0x88,0x88,
|
||||
0x88,0x88,0x78,0x08,0x70,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,0x88,0xF8,
|
||||
0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x05,
|
||||
0x05,0x05,0x06,0x00,0x00,0x50,0x88,0xA8,0xA8,0x50,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x40,0xF0,0x40,0x70,0x48,0x48,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x40,0xF0,
|
||||
0x40,0x70,0x48,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x98,0xA0,0xA0,0xF8,0xA0,0xA0,
|
||||
0x98,0x05,0x05,0x05,0x06,0x00,0x00,0x98,0xA0,0xF8,0xA0,0x98,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x20,0x50,0x50,0x88,0xF8,0xA8,0xA8,0x05,0x06,0x06,0x06,0x00,0x00,0x20,
|
||||
0x50,0x50,0x88,0xF8,0xA8,0x05,0x07,0x07,0x06,0x00,0x00,0x90,0x90,0xB8,0xF8,0xB8,
|
||||
0xB8,0xB8,0x05,0x05,0x05,0x06,0x00,0x00,0x90,0x90,0xF8,0xB8,0xB8,0x05,0x08,0x08,
|
||||
0x06,0x00,0x00,0xF8,0x88,0x50,0x50,0x70,0xA8,0xA8,0xA8,0x05,0x06,0x06,0x06,0x00,
|
||||
0x00,0xF8,0x88,0x50,0x70,0xA8,0xA8,0x06,0x08,0x08,0x06,0x00,0x00,0xFC,0xC4,0xA8,
|
||||
0x90,0xF8,0xB8,0xB8,0xA8,0x06,0x06,0x06,0x06,0x00,0x00,0xFC,0xA8,0x90,0xF8,0xB8,
|
||||
0xA8,0x05,0x0C,0x0C,0x06,0x00,0xFE,0x50,0x20,0x00,0x70,0x88,0x08,0x30,0x08,0x08,
|
||||
0x70,0x80,0x70,0x05,0x0A,0x0A,0x06,0x00,0xFE,0x50,0x20,0x00,0x70,0x88,0x30,0x08,
|
||||
0x70,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0xA8,0x70,0x20,0x20,0x20,
|
||||
0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0xA8,0x70,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,
|
||||
0xF8,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0x90,0x50,0x50,0x50,0x20,
|
||||
0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x90,0x50,0x50,0x20,0x05,0x0A,0x0A,0x06,0x00,
|
||||
0x00,0x90,0x48,0x00,0x88,0x90,0x90,0x50,0x50,0x50,0x20,0x05,0x08,0x08,0x06,0x00,
|
||||
0x00,0x90,0x48,0x00,0x88,0x90,0x50,0x50,0x20,0x05,0x09,0x09,0x06,0x00,0xfe,0x40,
|
||||
0xa0,0xa0,0xb8,0xb8,0xb8,0x58,0x08,0x10,0x05,0x07,0x07,0x06,0x00,0xfe,0x58,0xb8,
|
||||
0xb8,0xb8,0x58,0x08,0x10,0x05,0x0a,0x0a,0x06,0x00,0xff,0x20,0x70,0xa8,0x88,0x88,
|
||||
0x88,0x88,0xa8,0x70,0x20,0x05,0x08,0x08,0x06,0x00,0xff,0x20,0x70,0xa8,0x88,0x88,
|
||||
0xa8,0x70,0x20,0x05,0x09,0x09,0x06,0x00,0x00,0x70,0x00,0x20,0x20,0x88,0x88,0x88,
|
||||
0xa8,0x50,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x00,0x20,0xa8,0x88,0xa8,0x50,0x05,
|
||||
0x0a,0x0a,0x06,0x00,0x00,0xf8,0xa8,0x00,0x50,0x88,0x88,0xa8,0xa8,0xa8,0x50,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0xf8,0xa8,0x00,0x50,0x88,0xa8,0xa8,0x50};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_129_191[870] U8G_FONT_SECTION("fontpage_97_129_191") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x81,0xbf,0x00,0x0a,0xff,0x00,
|
||||
0x00,0x0a,0x0b,0x16,0x0c,0x01,0xff,0x08,0x00,0x04,0x00,0x4e,0x00,0x55,0x00,0x64,
|
||||
0x80,0x48,0x40,0xa8,0x40,0x90,0x40,0x90,0x80,0x61,0x00,0x06,0x00,0x08,0x0b,0x0b,
|
||||
0x0c,0x01,0xff,0x20,0x10,0x70,0x1c,0x28,0xe2,0x39,0x21,0x21,0x12,0x0c,0x08,0x07,
|
||||
0x07,0x0c,0x02,0xff,0x28,0x2e,0xf5,0x21,0x16,0x10,0x10,0x0b,0x0b,0x16,0x0c,0x00,
|
||||
0xff,0x02,0x00,0x37,0x00,0x20,0x00,0x13,0xc0,0x9c,0x20,0x70,0x20,0x09,0xc0,0x08,
|
||||
0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x07,0x07,0x07,0x0c,0x03,0xff,0x10,0x9c,0xb2,
|
||||
0xd2,0x9c,0x10,0x20,0x0b,0x0b,0x16,0x0c,0x00,0xff,0x04,0x00,0x82,0x00,0x47,0x80,
|
||||
0x4a,0x40,0x52,0x20,0x62,0x20,0x6a,0x40,0x47,0x80,0x42,0x00,0x04,0x00,0x08,0x00,
|
||||
0x07,0x07,0x07,0x0c,0x02,0xff,0x10,0x1c,0x10,0x10,0x78,0x96,0x60,0x09,0x0b,0x16,
|
||||
0x0c,0x01,0xff,0x10,0x00,0x08,0x00,0x09,0x80,0x0e,0x00,0x08,0x00,0x08,0x00,0x08,
|
||||
0x00,0x78,0x00,0x8e,0x00,0x89,0x80,0x70,0x00,0x07,0x0b,0x0b,0x0c,0x02,0xff,0x20,
|
||||
0x18,0x40,0x80,0x80,0xbc,0xc2,0x82,0x02,0x0c,0x70,0x07,0x0b,0x0b,0x0c,0x02,0xff,
|
||||
0x88,0x54,0x52,0x62,0x62,0x42,0x42,0x04,0x04,0x08,0x10,0x08,0x0a,0x0a,0x0c,0x01,
|
||||
0xff,0x4e,0x34,0x08,0x10,0x3e,0x61,0x81,0x19,0x26,0x1c,0x0b,0x0b,0x16,0x0c,0x00,
|
||||
0xff,0x20,0x00,0x10,0x00,0x13,0x00,0x34,0x80,0xd8,0x80,0x10,0x80,0x10,0x80,0x30,
|
||||
0x80,0x50,0x80,0xb0,0x60,0x10,0x00,0x08,0x0a,0x0a,0x0c,0x01,0xff,0x4e,0x34,0x08,
|
||||
0x10,0x3e,0x61,0x81,0x01,0x06,0x18,0x08,0x07,0x07,0x0c,0x02,0xff,0x40,0x30,0xee,
|
||||
0x31,0x61,0xa2,0x24,0x0b,0x0b,0x16,0x0c,0x00,0xff,0x20,0x00,0x10,0x00,0x10,0x00,
|
||||
0x9b,0x80,0x7c,0x40,0x10,0x20,0x10,0x20,0x30,0x20,0x50,0x40,0xb1,0x80,0x10,0x00,
|
||||
0x0a,0x0a,0x14,0x0c,0x01,0xff,0x4e,0x00,0x34,0x00,0x04,0x00,0x1f,0x00,0x28,0x80,
|
||||
0x48,0x40,0x90,0x40,0x96,0x40,0x69,0x80,0x47,0x00,0x0a,0x0b,0x16,0x0c,0x01,0xff,
|
||||
0x20,0x00,0x1f,0x00,0x04,0x00,0x1f,0x00,0x20,0x80,0x4c,0x80,0x13,0x00,0x0c,0x00,
|
||||
0x00,0x00,0x59,0x80,0x86,0x40,0x09,0x0b,0x16,0x0c,0x01,0xff,0x08,0x00,0x08,0x00,
|
||||
0x9e,0x00,0x70,0x00,0x21,0x80,0x72,0x00,0x8c,0x00,0x14,0x00,0x24,0x00,0x20,0x00,
|
||||
0x1f,0x00,0x0a,0x0a,0x14,0x0c,0x01,0xff,0x10,0x00,0x08,0x00,0x08,0x00,0x10,0x00,
|
||||
0x10,0x00,0x38,0x00,0x24,0x00,0x44,0x40,0x44,0x80,0x83,0x00,0x0a,0x0b,0x16,0x0c,
|
||||
0x00,0xff,0x10,0x00,0x0c,0x80,0x00,0x40,0x1d,0x00,0xe2,0x80,0x02,0x00,0x02,0x00,
|
||||
0x04,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0xff,0xff,0xff,0xff,0x04,0x03,0x03,0x0c,
|
||||
0x00,0x07,0x20,0x90,0x40,0xff,0x04,0x03,0x03,0x0c,0x00,0x06,0x20,0x90,0x40,0x03,
|
||||
0x03,0x03,0x0c,0x00,0x06,0x40,0xa0,0x40,0xff,0xff,0xff,0x05,0x03,0x03,0x06,0x00,
|
||||
0x01,0xf8,0x00,0xf8,0x04,0x04,0x04,0x06,0x00,0x00,0xf0,0x10,0x60,0x40,0x05,0x06,
|
||||
0x06,0x06,0x00,0x00,0xf8,0x08,0x28,0x30,0x20,0x40,0x03,0x04,0x04,0x06,0x01,0x00,
|
||||
0x20,0x40,0xc0,0x40,0x04,0x06,0x06,0x06,0x00,0x00,0x10,0x20,0x60,0xa0,0x20,0x20,
|
||||
0x04,0x04,0x04,0x06,0x00,0x00,0x20,0xf0,0x90,0x20,0x05,0x06,0x06,0x06,0x00,0x00,
|
||||
0x20,0xf8,0x88,0x08,0x10,0x20,0x03,0x04,0x04,0x06,0x01,0x00,0xe0,0x40,0x40,0xe0,
|
||||
0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x20,0x20,0x20,0xf8,0x04,0x04,0x04,0x06,0x00,
|
||||
0x00,0x20,0xf0,0x60,0xa0,0x05,0x06,0x06,0x06,0x00,0x00,0x10,0xf8,0x30,0x50,0x90,
|
||||
0x10,0x05,0x06,0x06,0x06,0x00,0x00,0x40,0xf8,0x48,0x48,0x48,0x90,0x05,0x08,0x08,
|
||||
0x06,0x00,0x00,0x28,0x00,0x40,0xf8,0x48,0x48,0x48,0x90,0x05,0x06,0x06,0x06,0x00,
|
||||
0x00,0x20,0xf8,0x20,0xf8,0x20,0x20,0x05,0x08,0x08,0x06,0x00,0x00,0x28,0x00,0x20,
|
||||
0xf8,0x20,0xf8,0x20,0x20,0x04,0x05,0x05,0x06,0x00,0x00,0x70,0x90,0x10,0x20,0xc0,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x28,0x00,0x70,0x90,0x10,0x20,0xc0,0x05,0x06,0x06,
|
||||
0x06,0x00,0x00,0x40,0x78,0x90,0x10,0x10,0x20,0x05,0x08,0x08,0x06,0x00,0x00,0x28,
|
||||
0x00,0x40,0x78,0x90,0x10,0x10,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x08,0x08,
|
||||
0x08,0xf8,0x05,0x07,0x07,0x06,0x00,0x00,0x28,0x00,0xf8,0x08,0x08,0x08,0xf8,0x05,
|
||||
0x06,0x06,0x06,0x00,0x00,0x50,0xf8,0x50,0x10,0x20,0x40,0x05,0x08,0x08,0x06,0x00,
|
||||
0x00,0x28,0x00,0x50,0xf8,0x50,0x10,0x20,0x40,0x05,0x05,0x05,0x06,0x00,0x00,0xc0,
|
||||
0x08,0xc8,0x10,0xe0,0x05,0x07,0x07,0x06,0x00,0x00,0x28,0x00,0xc0,0x08,0xc8,0x10,
|
||||
0xe0,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x10,0x20,0x50,0x88,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x28,0x00,0xf8,0x10,0x20,0x50,0x88,0x05,0x06,0x06,0x06,0x00,0x00,0x40,
|
||||
0xf8,0x48,0x50,0x40,0x38,0x05,0x08,0x08,0x06,0x00,0x00,0x28,0x00,0x40,0xf8,0x48,
|
||||
0x50,0x40,0x38,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0x48,0x10,0x60,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x28,0x00,0x88,0x88,0x48,0x10,0x60,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x78,0x48,0xa8,0x10,0x60};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_193_255[753] U8G_FONT_SECTION("fontpage_97_193_255") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xc1,0xff,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x06,0x06,0x06,0x00,0x00,0x10,0xe0,0x20,0xf8,0x20,0x40,0x05,0x08,0x08,
|
||||
0x06,0x00,0x00,0x28,0x00,0x10,0xe0,0x20,0xf8,0x20,0x40,0x05,0x04,0x04,0x06,0x00,
|
||||
0x00,0xa8,0xa8,0x08,0x30,0x05,0x05,0x05,0x06,0x00,0x00,0xa8,0xa8,0x08,0x10,0x20,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x28,0x00,0xa8,0xa8,0x08,0x10,0x20,0x05,0x06,0x06,
|
||||
0x06,0x00,0x00,0x70,0x00,0xf8,0x20,0x20,0x40,0x05,0x08,0x08,0x06,0x00,0x00,0x28,
|
||||
0x00,0x70,0x00,0xf8,0x20,0x20,0x40,0x03,0x06,0x06,0x06,0x01,0x00,0x80,0x80,0xc0,
|
||||
0xa0,0x80,0x80,0x04,0x08,0x08,0x06,0x01,0x00,0x50,0x00,0x80,0x80,0xc0,0xa0,0x80,
|
||||
0x80,0x05,0x06,0x06,0x06,0x00,0x00,0x20,0xf8,0x20,0x20,0x40,0x80,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x70,0x00,0x00,0x00,0xf8,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x08,
|
||||
0x50,0x20,0xd0,0x05,0x06,0x06,0x06,0x00,0x00,0x20,0xf8,0x10,0x20,0x70,0xa8,0x03,
|
||||
0x06,0x06,0x06,0x01,0x00,0x20,0x20,0x20,0x20,0x40,0x80,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x10,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x28,0x00,0x10,0x88,
|
||||
0x88,0x88,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x18,0x18,0x00,0x10,0x88,0x88,0x88,
|
||||
0x88,0x05,0x06,0x06,0x06,0x00,0x00,0x80,0x80,0xf8,0x80,0x80,0x78,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x28,0x80,0x80,0xf8,0x80,0x80,0x78,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x18,0x98,0x80,0xf8,0x80,0x80,0x78,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x08,0x08,
|
||||
0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x28,0x00,0xf8,0x08,0x08,0x10,0x60,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0x18,0x18,0x00,0xf8,0x08,0x08,0x10,0x60,0x05,0x04,0x04,
|
||||
0x06,0x00,0x01,0x40,0xa0,0x10,0x08,0x05,0x06,0x06,0x06,0x00,0x01,0x28,0x00,0x40,
|
||||
0xa0,0x10,0x08,0x05,0x06,0x06,0x06,0x00,0x01,0x18,0x18,0x40,0xa0,0x10,0x08,0x05,
|
||||
0x06,0x06,0x06,0x00,0x00,0x20,0xf8,0x20,0xa8,0xa8,0x20,0x05,0x08,0x08,0x06,0x00,
|
||||
0x00,0x28,0x00,0x20,0xf8,0x20,0xa8,0xa8,0x20,0x05,0x08,0x08,0x06,0x00,0x00,0x18,
|
||||
0x18,0x20,0xf8,0x20,0xa8,0xa8,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x08,0x50,
|
||||
0x20,0x10,0x04,0x05,0x05,0x06,0x01,0x00,0xe0,0x00,0xe0,0x00,0xf0,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x20,0x40,0x88,0xf8,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0x08,0x28,
|
||||
0x10,0x28,0xc0,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x40,0xf8,0x40,0x38,0x05,0x04,
|
||||
0x04,0x06,0x00,0x00,0x40,0xf8,0x50,0x40,0x05,0x06,0x06,0x06,0x00,0x00,0x40,0xf8,
|
||||
0x48,0x50,0x40,0x40,0x04,0x04,0x04,0x06,0x00,0x00,0x60,0x20,0x20,0xf0,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0x70,0x10,0x10,0x10,0xf8,0x04,0x05,0x05,0x06,0x00,0x00,0xf0,
|
||||
0x10,0xf0,0x10,0xf0,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x08,0xf8,0x08,0xf8,0x05,
|
||||
0x06,0x06,0x06,0x00,0x00,0x70,0x00,0xf8,0x08,0x10,0x20,0x04,0x06,0x06,0x06,0x00,
|
||||
0x00,0x90,0x90,0x90,0x90,0x10,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x20,0xa0,0xa8,
|
||||
0xa8,0xb0,0x04,0x05,0x05,0x06,0x00,0x00,0x80,0x80,0x90,0xa0,0xc0,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0xf8,0x88,0x88,0x88,0xf8,0x04,0x04,0x04,0x06,0x00,0x00,0xf0,0x90,
|
||||
0x10,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x88,0x08,0x10,0x20,0x05,0x06,0x06,
|
||||
0x06,0x00,0x00,0x10,0xf8,0x50,0x50,0xf8,0x10,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,
|
||||
0x08,0x30,0x20,0xf8,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x08,0xf8,0x08,0x30,0x05,
|
||||
0x05,0x05,0x06,0x00,0x00,0xc0,0x08,0x08,0x10,0xe0,0x05,0x08,0x08,0x06,0x00,0x00,
|
||||
0x28,0x00,0x20,0xf8,0x88,0x08,0x10,0x20,0x04,0x04,0x04,0x06,0x00,0x00,0x40,0xf0,
|
||||
0x50,0xa0,0x04,0x04,0x04,0x06,0x00,0x00,0x40,0xf0,0x20,0x40,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x28,0x00,0xf8,0x88,0x08,0x10,0x60,0x05,0x08,0x08,0x06,0x00,0x00,0x28,
|
||||
0x00,0x10,0xf8,0x50,0x50,0xf8,0x10,0x05,0x07,0x07,0x06,0x00,0x00,0x28,0x00,0xf8,
|
||||
0x08,0x30,0x20,0xf8,0x05,0x07,0x07,0x06,0x00,0x00,0x28,0x00,0xf8,0x08,0xf8,0x08,
|
||||
0x30,0x02,0x02,0x02,0x06,0x02,0x02,0xc0,0xc0,0x05,0x01,0x01,0x06,0x00,0x02,0xf8,
|
||||
0x05,0x04,0x04,0x06,0x00,0x01,0x80,0x60,0x10,0x08,0x05,0x05,0x05,0x06,0x00,0x01,
|
||||
0x28,0x80,0x60,0x10,0x08,0x05,0x06,0x06,0x06,0x00,0x00,0xf8,0x08,0x08,0x08,0x08,
|
||||
0x08};
|
||||
0x00,0x90,0x48,0x00,0x88,0x90,0x50,0x50,0x20,0x05,0x09,0x09,0x06,0x00,0xFE,0x40,
|
||||
0xA0,0xA0,0xB8,0xB8,0xB8,0x58,0x08,0x10,0x05,0x07,0x07,0x06,0x00,0xFE,0x58,0xB8,
|
||||
0xB8,0xB8,0x58,0x08,0x10,0x05,0x0A,0x0A,0x06,0x00,0xFF,0x20,0x70,0xA8,0x88,0x88,
|
||||
0x88,0x88,0xA8,0x70,0x20,0x05,0x08,0x08,0x06,0x00,0xFF,0x20,0x70,0xA8,0x88,0x88,
|
||||
0xA8,0x70,0x20,0x05,0x09,0x09,0x06,0x00,0x00,0x70,0x00,0x20,0x20,0x88,0x88,0x88,
|
||||
0xA8,0x50,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x00,0x20,0xA8,0x88,0xA8,0x50,0x05,
|
||||
0x0A,0x0A,0x06,0x00,0x00,0xF8,0xA8,0x00,0x50,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x05,
|
||||
0x08,0x08,0x06,0x00,0x00,0xF8,0xA8,0x00,0x50,0x88,0xA8,0xA8,0x50};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_129_191[911] U8G_FONT_SECTION("fontpage_97_129_191") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x81,0xBF,0x00,0x0D,0xFF,0x00,
|
||||
0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x04,0x00,0x4E,0x00,0x55,0x00,0x64,
|
||||
0x80,0x48,0x40,0xA8,0x40,0x90,0x40,0x90,0x80,0x61,0x00,0x06,0x00,0x08,0x0B,0x0B,
|
||||
0x0C,0x01,0xFF,0x20,0x10,0x70,0x1C,0x28,0xE2,0x39,0x21,0x21,0x12,0x0C,0x08,0x07,
|
||||
0x07,0x0C,0x02,0xFF,0x28,0x2E,0xF5,0x21,0x16,0x10,0x10,0x0B,0x0B,0x16,0x0C,0x00,
|
||||
0xFF,0x02,0x00,0x37,0x00,0x20,0x00,0x13,0xC0,0x9C,0x20,0x70,0x20,0x09,0xC0,0x08,
|
||||
0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x07,0x07,0x07,0x0C,0x03,0xFF,0x10,0x9C,0xB2,
|
||||
0xD2,0x9C,0x10,0x20,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x82,0x00,0x47,0x80,
|
||||
0x4A,0x40,0x52,0x20,0x62,0x20,0x6A,0x40,0x47,0x80,0x42,0x00,0x04,0x00,0x08,0x00,
|
||||
0x07,0x07,0x07,0x0C,0x02,0xFF,0x10,0x1C,0x10,0x10,0x78,0x96,0x60,0x09,0x0B,0x16,
|
||||
0x0C,0x01,0xFF,0x10,0x00,0x08,0x00,0x09,0x80,0x0E,0x00,0x08,0x00,0x08,0x00,0x08,
|
||||
0x00,0x78,0x00,0x8E,0x00,0x89,0x80,0x70,0x00,0x07,0x0B,0x0B,0x0C,0x02,0xFF,0x20,
|
||||
0x18,0x40,0x80,0x80,0xBC,0xC2,0x82,0x02,0x0C,0x70,0x07,0x0B,0x0B,0x0C,0x02,0xFF,
|
||||
0x88,0x54,0x52,0x62,0x62,0x42,0x42,0x04,0x04,0x08,0x10,0x08,0x0A,0x0A,0x0C,0x01,
|
||||
0xFF,0x4E,0x34,0x08,0x10,0x3E,0x61,0x81,0x19,0x26,0x1C,0x0B,0x0B,0x16,0x0C,0x00,
|
||||
0xFF,0x20,0x00,0x10,0x00,0x13,0x00,0x34,0x80,0xD8,0x80,0x10,0x80,0x10,0x80,0x30,
|
||||
0x80,0x50,0x80,0xB0,0x60,0x10,0x00,0x08,0x0A,0x0A,0x0C,0x01,0xFF,0x4E,0x34,0x08,
|
||||
0x10,0x3E,0x61,0x81,0x01,0x06,0x18,0x08,0x07,0x07,0x0C,0x02,0xFF,0x40,0x30,0xEE,
|
||||
0x31,0x61,0xA2,0x24,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x10,0x00,0x10,0x00,
|
||||
0x9B,0x80,0x7C,0x40,0x10,0x20,0x10,0x20,0x30,0x20,0x50,0x40,0xB1,0x80,0x10,0x00,
|
||||
0x0A,0x0A,0x14,0x0C,0x01,0xFF,0x4E,0x00,0x34,0x00,0x04,0x00,0x1F,0x00,0x28,0x80,
|
||||
0x48,0x40,0x90,0x40,0x96,0x40,0x69,0x80,0x47,0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,
|
||||
0x20,0x00,0x1F,0x00,0x04,0x00,0x1F,0x00,0x20,0x80,0x4C,0x80,0x13,0x00,0x0C,0x00,
|
||||
0x00,0x00,0x59,0x80,0x86,0x40,0x09,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x08,0x00,
|
||||
0x9E,0x00,0x70,0x00,0x21,0x80,0x72,0x00,0x8C,0x00,0x14,0x00,0x24,0x00,0x20,0x00,
|
||||
0x1F,0x00,0x0A,0x0A,0x14,0x0C,0x01,0xFF,0x10,0x00,0x08,0x00,0x08,0x00,0x10,0x00,
|
||||
0x10,0x00,0x38,0x00,0x24,0x00,0x44,0x40,0x44,0x80,0x83,0x00,0x0A,0x0B,0x16,0x0C,
|
||||
0x00,0xFF,0x10,0x00,0x0C,0x80,0x00,0x40,0x1D,0x00,0xE2,0x80,0x02,0x00,0x02,0x00,
|
||||
0x04,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0xFF,0xFF,0xFF,0xFF,0x04,0x03,0x03,0x06,
|
||||
0x00,0x05,0x20,0x90,0x40,0xFF,0x04,0x03,0x03,0x06,0x00,0x05,0x20,0x90,0x40,0x03,
|
||||
0x03,0x03,0x06,0x00,0x05,0x40,0xA0,0x40,0xFF,0xFF,0xFF,0x05,0x03,0x03,0x06,0x00,
|
||||
0x03,0xF8,0x00,0xF8,0x04,0x05,0x05,0x06,0x00,0x00,0xF0,0x10,0x60,0x40,0x80,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xF8,0x08,0x28,0x30,0x20,0x20,0x40,0x04,0x05,0x05,0x06,
|
||||
0x00,0x00,0x10,0x20,0x60,0xA0,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x08,0x10,0x20,
|
||||
0x60,0xA0,0x20,0x20,0x04,0x05,0x05,0x06,0x00,0x00,0x20,0xF0,0x90,0x10,0x20,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x20,0xF8,0x88,0x88,0x08,0x10,0x60,0x03,0x04,0x04,0x06,
|
||||
0x00,0x00,0xE0,0x40,0x40,0xE0,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,
|
||||
0x20,0xF8,0x04,0x05,0x05,0x06,0x00,0x00,0x20,0xF0,0x20,0x60,0xA0,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x10,0xF8,0x10,0x30,0x50,0x90,0x10,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x40,0xF8,0x48,0x48,0x48,0x48,0x98,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x40,
|
||||
0xF8,0x48,0x48,0x48,0x48,0x98,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xF8,0x20,0x20,
|
||||
0xF8,0x10,0x10,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x20,0xF8,0x20,0x20,0xF8,
|
||||
0x10,0x10,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x78,0x48,0x88,0x08,0x10,0x60,0x05,
|
||||
0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x40,0x78,0x48,0x88,0x08,0x10,0x60,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x80,0xF8,0x90,0x90,0x10,0x10,0x20,0x05,0x09,0x09,0x06,0x00,
|
||||
0x00,0x28,0x28,0x80,0xF8,0x90,0x90,0x10,0x10,0x20,0x05,0x06,0x06,0x06,0x00,0x00,
|
||||
0xF8,0x08,0x08,0x08,0x08,0xF8,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0xF8,
|
||||
0x08,0x08,0x08,0x08,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0xF8,0x50,0x50,0x50,
|
||||
0x10,0x20,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x50,0xF8,0x50,0x50,0x50,0x10,
|
||||
0x20,0x05,0x06,0x06,0x06,0x00,0x00,0xC0,0x08,0xC8,0x08,0x10,0xE0,0x07,0x0D,0x0D,
|
||||
0x06,0x00,0x00,0x02,0x00,0x00,0x00,0x28,0x28,0x00,0xC0,0x08,0xC8,0x08,0x10,0xE0,
|
||||
0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x10,0x10,0x20,0x50,0x88,0x05,0x09,0x09,0x06,
|
||||
0x00,0x00,0x28,0x28,0x00,0x70,0x10,0x10,0x20,0x50,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x40,0x40,0xF8,0x48,0x50,0x40,0x38,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,
|
||||
0x40,0x40,0xF8,0x48,0x50,0x40,0x38,0x05,0x06,0x06,0x06,0x00,0x00,0x88,0x48,0x48,
|
||||
0x10,0x10,0x20,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0x88,0x48,0x48,0x10,
|
||||
0x10,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x78,0x48,0xA8,0x18,0x10,0x60};
|
||||
const u8g_fntpgm_uint8_t fontpage_97_193_255[822] U8G_FONT_SECTION("fontpage_97_193_255") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC1,0xFF,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0x60,0x20,0xF8,0x20,0x20,0x40,0x05,0x09,
|
||||
0x09,0x06,0x00,0x00,0x28,0x08,0x10,0x60,0x20,0xF8,0x20,0x20,0x40,0x05,0x04,0x04,
|
||||
0x06,0x00,0x00,0xA8,0xA8,0x08,0x30,0x05,0x06,0x06,0x06,0x00,0x00,0xA8,0xA8,0xA8,
|
||||
0x08,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0xA8,0xA8,0xA8,0x08,
|
||||
0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x00,0xF8,0x20,0x20,0x20,0x40,0x05,
|
||||
0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x70,0x00,0xF8,0x20,0x20,0x20,0x40,0x04,0x07,
|
||||
0x07,0x06,0x01,0x00,0x80,0x80,0xC0,0xA0,0x90,0x80,0x80,0x04,0x09,0x09,0x06,0x01,
|
||||
0x00,0x50,0x10,0x80,0x80,0xC0,0xA0,0x90,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x20,0x20,0xF8,0x20,0x20,0x40,0x80,0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x00,0x00,
|
||||
0x00,0x00,0xF8,0x05,0x06,0x06,0x06,0x00,0x00,0x78,0x08,0x28,0x10,0x28,0xC0,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0x20,0x70,0x10,0x20,0x70,0xA8,0x20,0x03,0x06,0x06,0x06,
|
||||
0x01,0x00,0x20,0x20,0x20,0x40,0x40,0x80,0x05,0x06,0x06,0x06,0x00,0x00,0x10,0x50,
|
||||
0x50,0x48,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0x10,0x50,0x50,
|
||||
0x48,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0x00,0x18,0x18,0x00,0x10,0x50,0x50,0x48,
|
||||
0x88,0x88,0x04,0x06,0x06,0x06,0x00,0x00,0x80,0x90,0xE0,0x80,0x80,0x70,0x05,0x09,
|
||||
0x09,0x06,0x00,0x00,0x28,0x28,0x00,0x80,0x90,0xE0,0x80,0x80,0x70,0x05,0x09,0x09,
|
||||
0x06,0x00,0x00,0x18,0x18,0x00,0x80,0x90,0xE0,0x80,0x80,0x70,0x05,0x06,0x06,0x06,
|
||||
0x00,0x00,0xF8,0x08,0x08,0x08,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,
|
||||
0x00,0xF8,0x08,0x08,0x08,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x18,0x18,0x00,
|
||||
0xF8,0x08,0x08,0x08,0x10,0x60,0x05,0x05,0x05,0x06,0x00,0x01,0x60,0xA0,0x10,0x10,
|
||||
0x08,0x05,0x08,0x08,0x06,0x00,0x01,0x28,0x28,0x00,0x60,0xA0,0x10,0x10,0x08,0x05,
|
||||
0x08,0x08,0x06,0x00,0x01,0x18,0x18,0x00,0x60,0xA0,0x10,0x10,0x08,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x20,0xF8,0x20,0xA8,0xA8,0xA8,0x20,0x05,0x09,0x09,0x06,0x00,0x00,
|
||||
0x28,0x08,0x20,0xF8,0x20,0xA8,0xA8,0xA8,0x20,0x05,0x09,0x09,0x06,0x00,0x00,0x18,
|
||||
0x18,0x20,0xF8,0x20,0xA8,0xA8,0xA8,0x20,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x08,
|
||||
0x08,0x50,0x20,0x10,0x04,0x06,0x06,0x06,0x01,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x30,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0x20,0x40,0x48,0xF8,0x08,0x05,0x06,0x06,
|
||||
0x06,0x00,0x00,0x08,0x48,0x30,0x10,0x28,0xC0,0x05,0x06,0x06,0x06,0x00,0x00,0xF0,
|
||||
0x40,0xF8,0x40,0x40,0x38,0x05,0x05,0x05,0x06,0x00,0x00,0x40,0xF8,0x48,0x50,0x40,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x40,0xF8,0x48,0x50,0x40,0x40,0x04,0x05,0x05,
|
||||
0x06,0x00,0x00,0x60,0x20,0x20,0x20,0xF0,0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x10,
|
||||
0x10,0x10,0x10,0xF8,0x04,0x05,0x05,0x06,0x00,0x00,0xF0,0x10,0xF0,0x10,0xF0,0x05,
|
||||
0x06,0x06,0x06,0x00,0x00,0xF8,0x08,0xF8,0x08,0x08,0xF8,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x00,0xF8,0x08,0x08,0x10,0x60,0x04,0x07,0x07,0x06,0x00,0x00,0x10,0x90,
|
||||
0x90,0x90,0x90,0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0xA0,0xA0,0xA8,
|
||||
0xA8,0xB0,0x05,0x06,0x06,0x06,0x00,0x00,0x80,0x80,0x80,0x88,0xB0,0xC0,0x05,0x06,
|
||||
0x06,0x06,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xF8,0x04,0x05,0x05,0x06,0x00,0x00,
|
||||
0xF0,0x90,0x10,0x10,0x60,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x88,0x88,0x08,0x10,
|
||||
0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0xF8,0x50,0x50,0xF8,0x10,0x10,0x05,0x06,
|
||||
0x06,0x06,0x00,0x00,0x70,0x10,0x20,0x20,0x20,0xF8,0x05,0x06,0x06,0x06,0x00,0x00,
|
||||
0xF8,0x08,0xF8,0x08,0x10,0x60,0x05,0x06,0x06,0x06,0x00,0x00,0xC0,0x08,0x08,0x08,
|
||||
0x10,0xE0,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x20,0xF8,0x88,0x88,0x08,0x10,
|
||||
0x60,0x04,0x05,0x05,0x06,0x00,0x00,0x40,0xF0,0x50,0x50,0xB0,0x04,0x05,0x05,0x06,
|
||||
0x00,0x00,0x80,0xF0,0xA0,0x20,0x40,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,
|
||||
0xF8,0x88,0x88,0x08,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x10,0xF8,
|
||||
0x50,0x50,0xF8,0x10,0x10,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0x70,0x10,
|
||||
0x20,0x20,0x20,0xF8,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0xF8,0x08,0xF8,
|
||||
0x08,0x10,0x60,0x02,0x02,0x02,0x06,0x02,0x03,0xC0,0xC0,0x05,0x02,0x02,0x06,0x00,
|
||||
0x03,0x80,0x78,0x05,0x04,0x04,0x06,0x00,0x02,0x80,0x60,0x10,0x08,0x05,0x07,0x07,
|
||||
0x06,0x00,0x02,0x28,0x28,0x00,0x80,0x60,0x10,0x08,0x05,0x06,0x06,0x06,0x00,0x00,
|
||||
0xF8,0x08,0x08,0x08,0x08,0x08};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(8, 128, 255, fontpage_8_128_255), // 'Ѐ' -- 'ѿ'
|
||||
FONTDATA_ITEM(97, 129, 191, fontpage_97_129_191), // 'め' -- 'タ'
|
||||
FONTDATA_ITEM(97, 193, 255, fontpage_97_193_255), // 'チ' -- 'ヿ'
|
||||
static const uxg_fontinfo_t g_fontinfo_test[] PROGMEM = {
|
||||
FONTDATA_ITEM(8, 128, 255, fontpage_8_128_255), // 'Ѐ' -- 'ѿ'
|
||||
FONTDATA_ITEM(97, 129, 191, fontpage_97_129_191), // 'め' -- 'タ'
|
||||
FONTDATA_ITEM(97, 193, 255, fontpage_97_193_255), // 'チ' -- 'ヿ'
|
||||
};
|
||||
|
||||
32
Marlin/src/lcd/dogm/fontdata/langdata_tr.h
Executable file → Normal file
32
Marlin/src/lcd/dogm/fontdata/langdata_tr.h
Executable file → Normal file
@@ -3,24 +3,26 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_2_159_159[33] U8G_FONT_SECTION("fontpage_2_159_159") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x9f,0x9f,0x00,0x08,0xfe,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x06,0x00,0xfe,0x88,0x70,0x00,0x70,0x88,0x88,0x88,0x78,0x08,
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_2_158_159[49] U8G_FONT_SECTION("fontpage_2_158_159") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9E,0x9F,0x00,0x0A,0xFE,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x88,0x70,0x00,0x70,0x88,0x80,0x80,0x98,0x88,
|
||||
0x70,0x05,0x0A,0x0A,0x06,0x00,0xFE,0x88,0x70,0x00,0x70,0x88,0x88,0x88,0x78,0x08,
|
||||
0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_176_177[43] U8G_FONT_SECTION("fontpage_2_176_177") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xb0,0xb1,0x00,0x09,0x00,0x00,
|
||||
0x00,0x03,0x09,0x09,0x06,0x01,0x00,0x40,0x00,0xe0,0x40,0x40,0x40,0x40,0x40,0xe0,
|
||||
0x03,0x05,0x05,0x06,0x01,0x00,0xc0,0x40,0x40,0x40,0xe0};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB0,0xB1,0x00,0x09,0x00,0x00,
|
||||
0x00,0x03,0x09,0x09,0x06,0x01,0x00,0x40,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0xE0,
|
||||
0x03,0x05,0x05,0x06,0x01,0x00,0xC0,0x40,0x40,0x40,0xE0};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_222_223[45] U8G_FONT_SECTION("fontpage_2_222_223") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xde,0xdf,0x00,0x07,0xfe,0x00,
|
||||
0x00,0x05,0x09,0x09,0x06,0x00,0xfe,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x10,0x60,
|
||||
0x05,0x07,0x07,0x06,0x00,0xfe,0x78,0x80,0x70,0x08,0xf0,0x10,0x60};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDE,0xDF,0x00,0x07,0xFE,0x00,
|
||||
0x00,0x05,0x09,0x09,0x06,0x00,0xFE,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x10,0x60,
|
||||
0x05,0x07,0x07,0x06,0x00,0xFE,0x78,0x80,0x70,0x08,0xF0,0x10,0x60};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(2, 159, 159, fontpage_2_159_159), // 'ğ' -- 'ğ'
|
||||
FONTDATA_ITEM(2, 176, 177, fontpage_2_176_177), // 'İ' -- 'ı'
|
||||
FONTDATA_ITEM(2, 222, 223, fontpage_2_222_223), // 'Ş' -- 'ş'
|
||||
static const uxg_fontinfo_t g_fontinfo_tr[] PROGMEM = {
|
||||
FONTDATA_ITEM(2, 158, 159, fontpage_2_158_159), // 'Ğ' -- 'ğ'
|
||||
FONTDATA_ITEM(2, 176, 177, fontpage_2_176_177), // 'İ' -- 'ı'
|
||||
FONTDATA_ITEM(2, 222, 223, fontpage_2_222_223), // 'Ş' -- 'ş'
|
||||
};
|
||||
|
||||
149
Marlin/src/lcd/dogm/fontdata/langdata_uk.h
Executable file → Normal file
149
Marlin/src/lcd/dogm/fontdata/langdata_uk.h
Executable file → Normal file
@@ -3,91 +3,84 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_8_134_134[30] U8G_FONT_SECTION("fontpage_8_134_134") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x86,0x86,0x00,0x07,0x00,0x00,
|
||||
0x00,0x03,0x07,0x07,0x06,0x01,0x00,0xe0,0x40,0x40,0x40,0x40,0x40,0xe0};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_144_146[56] U8G_FONT_SECTION("fontpage_8_144_146") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x90,0x92,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xf0,0x80,0x80,0xf0,0x88,0x88,0xf0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xf0,0x88,0x88,0xf0,0x88,0x88,0xf0};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_148_149[44] U8G_FONT_SECTION("fontpage_8_148_149") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x94,0x95,0x00,0x07,0xff,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0xff,0x30,0x50,0x50,0x50,0x50,0x50,0xf8,0x88,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xf8,0x80,0x80,0xf0,0x80,0x80,0xf8};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_151_154[72] U8G_FONT_SECTION("fontpage_8_151_154") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x97,0x9a,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x08,0x70,0x08,0x88,0x70,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x88,0x88,0x98,0xa8,0xc8,0x88,0x88,0x05,0x0a,0x0a,0x06,0x00,
|
||||
0x00,0x88,0x70,0x00,0x88,0x88,0x98,0xa8,0xc8,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x88,0x90,0xa0,0xc0,0xa0,0x90,0x88};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_156_164[134] U8G_FONT_SECTION("fontpage_8_156_164") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x9c,0xa4,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xd8,0xa8,0x88,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xf8,0x88,
|
||||
0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xf0,0x88,0x88,0xf0,0x80,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x86,0x86,0x00,0x07,0x00,0x00,
|
||||
0x00,0x03,0x07,0x07,0x06,0x01,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0xE0};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_144_169[363] U8G_FONT_SECTION("fontpage_8_144_169") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0xA9,0x00,0x0A,0xFE,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0xF0,0x80,0x80,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,
|
||||
0x80,0x80,0x80,0x80,0x80,0x05,0x08,0x08,0x06,0x00,0xFF,0x30,0x50,0x50,0x50,0x50,
|
||||
0x50,0xF8,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,
|
||||
0x05,0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0x70,0x20,0x70,0xA8,0xA8,0x05,0x07,0x07,
|
||||
0x06,0x00,0x00,0x70,0x88,0x08,0x70,0x08,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,
|
||||
0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x88,0x70,0x00,
|
||||
0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,
|
||||
0xC0,0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x48,0x48,
|
||||
0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
|
||||
0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x88,
|
||||
0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x80,
|
||||
0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,
|
||||
0x07,0x07,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x88,0x88,0x88,0x88,0x78,0x08,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x20,
|
||||
0x70,0xa8,0xa8,0xa8,0x70,0x20};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_166_166[32] U8G_FONT_SECTION("fontpage_8_166_166") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa6,0xa6,0x00,0x07,0xfe,0x00,
|
||||
0x00,0x05,0x09,0x09,0x06,0x00,0xfe,0x90,0x90,0x90,0x90,0x90,0x90,0xf8,0x08,0x08
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_168_168[30] U8G_FONT_SECTION("fontpage_8_168_168") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa8,0xa8,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xf8};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_176_201[321] U8G_FONT_SECTION("fontpage_8_176_201") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xb0,0xc9,0x00,0x08,0xfe,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,
|
||||
0x00,0x00,0x70,0x80,0xf0,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xf0,
|
||||
0x88,0xf0,0x88,0xf0,0x05,0x05,0x05,0x06,0x00,0x00,0xf8,0x80,0x80,0x80,0x80,0x05,
|
||||
0x06,0x06,0x06,0x00,0xff,0x30,0x50,0x50,0x50,0xf8,0x88,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x70,0x88,0xf0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xa8,0x70,0x20,0x70,
|
||||
0xa8,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x30,0x88,0x70,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0x88,0x98,0xa8,0xc8,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,
|
||||
0x88,0x98,0xa8,0xc8,0x88,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xa0,0xc0,0xa0,0x90,
|
||||
0x05,0x05,0x05,0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x88,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x88,0xd8,0xa8,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xf8,0x88,
|
||||
0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0xf8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0xfe,0xf0,0x88,0x88,
|
||||
0x88,0xf0,0x80,0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x80,0x88,0x70,0x05,
|
||||
0x05,0x05,0x06,0x00,0x00,0xf8,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xfe,
|
||||
0x88,0x88,0x88,0x88,0x78,0x08,0x70,0x05,0x09,0x09,0x06,0x00,0xfe,0x20,0x20,0x70,
|
||||
0xa8,0xa8,0xa8,0x70,0x20,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,
|
||||
0x88,0x05,0x07,0x07,0x06,0x00,0xfe,0x90,0x90,0x90,0x90,0xf8,0x08,0x08,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0x88,0x88,0x78,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0xa8,
|
||||
0xa8,0xa8,0xa8,0xf8,0x05,0x07,0x07,0x06,0x00,0xfe,0xa8,0xa8,0xa8,0xa8,0xf8,0x08,
|
||||
0x08};
|
||||
0x70,0xA8,0xA8,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,
|
||||
0x50,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0xFE,0x90,0x90,0x90,0x90,0x90,0x90,0xF8,
|
||||
0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x78,0x08,0x08,0x08,0x05,
|
||||
0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,0x05,0x09,0x09,0x06,
|
||||
0x00,0xFE,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,0x08,0x08};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_172_172[30] U8G_FONT_SECTION("fontpage_8_172_172") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x07,0x00,0x00,
|
||||
0x00,0x04,0x07,0x07,0x06,0x01,0x00,0x80,0x80,0x80,0xE0,0x90,0x90,0xE0};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_175_201[334] U8G_FONT_SECTION("fontpage_8_175_201") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xC9,0x00,0x08,0xFE,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x78,0x88,0x88,0x78,0x28,0x48,0x88,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
|
||||
0x80,0xF0,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF0,0x88,0xF0,0x88,
|
||||
0xF0,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x05,0x06,0x06,0x06,
|
||||
0x00,0xFF,0x30,0x50,0x50,0x50,0xF8,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,
|
||||
0xF0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0x70,0x20,0x70,0xA8,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0x70,0x88,0x30,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x88,
|
||||
0x98,0xA8,0xC8,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x88,0x98,0xA8,
|
||||
0xC8,0x88,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xA0,0xC0,0xA0,0x90,0x05,0x05,0x05,
|
||||
0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0xD8,
|
||||
0xA8,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xF8,0x88,0x88,0x05,0x05,
|
||||
0x05,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,
|
||||
0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0xFE,0xF0,0x88,0x88,0x88,0xF0,0x80,
|
||||
0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x80,0x88,0x70,0x05,0x05,0x05,0x06,
|
||||
0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,
|
||||
0x88,0x78,0x08,0x70,0x05,0x09,0x09,0x06,0x00,0xFE,0x20,0x20,0x70,0xA8,0xA8,0xA8,
|
||||
0x70,0x20,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x05,0x07,
|
||||
0x07,0x06,0x00,0xFE,0x90,0x90,0x90,0x90,0xF8,0x08,0x08,0x05,0x05,0x05,0x06,0x00,
|
||||
0x00,0x88,0x88,0x78,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0xA8,0xA8,0xA8,
|
||||
0xF8,0x05,0x07,0x07,0x06,0x00,0xFE,0xA8,0xA8,0xA8,0xA8,0xF8,0x08,0x08};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_204_204[28] U8G_FONT_SECTION("fontpage_8_204_204") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xcc,0xcc,0x00,0x05,0x00,0x00,
|
||||
0x00,0x04,0x05,0x05,0x06,0x01,0x00,0x80,0x80,0xe0,0x90,0xe0};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0x00,0x05,0x00,0x00,
|
||||
0x00,0x04,0x05,0x05,0x06,0x01,0x00,0x80,0x80,0xE0,0x90,0xE0};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_206_207[39] U8G_FONT_SECTION("fontpage_8_206_207") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xce,0xcf,0x00,0x05,0x00,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x90,0xa8,0xe8,0xa8,0x90,0x04,0x05,0x05,0x06,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCE,0xCF,0x00,0x05,0x00,0x00,
|
||||
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x90,0xA8,0xE8,0xA8,0x90,0x04,0x05,0x05,0x06,
|
||||
0x01,0x00,0x70,0x90,0x70,0x50,0x90};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_212_212[28] U8G_FONT_SECTION("fontpage_8_212_212") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xd4,0xd4,0x00,0x05,0x00,0x00,
|
||||
0x00,0x04,0x05,0x05,0x06,0x01,0x00,0x70,0x80,0xe0,0x80,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_214_214[29] U8G_FONT_SECTION("fontpage_8_214_214") = {
|
||||
0x00,0x06,0x0c,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xd6,0xd6,0x00,0x06,0x00,0x00,
|
||||
0x00,0x03,0x06,0x06,0x06,0x01,0x00,0x40,0x00,0xc0,0x40,0x40,0xe0};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x05,0x00,0x00,
|
||||
0x00,0x04,0x05,0x05,0x06,0x01,0x00,0x70,0x80,0xE0,0x80,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_8_214_215[41] U8G_FONT_SECTION("fontpage_8_214_215") = {
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD6,0xD7,0x00,0x06,0x00,0x00,
|
||||
0x00,0x03,0x06,0x06,0x06,0x01,0x00,0x40,0x00,0xC0,0x40,0x40,0xE0,0x03,0x06,0x06,
|
||||
0x06,0x01,0x00,0xA0,0x00,0xC0,0x40,0x40,0xE0};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(8, 134, 134, fontpage_8_134_134), // 'І' -- 'І'
|
||||
FONTDATA_ITEM(8, 144, 146, fontpage_8_144_146), // 'А' -- 'В'
|
||||
FONTDATA_ITEM(8, 148, 149, fontpage_8_148_149), // 'Д' -- 'Е'
|
||||
FONTDATA_ITEM(8, 151, 154, fontpage_8_151_154), // 'З' -- 'К'
|
||||
FONTDATA_ITEM(8, 156, 164, fontpage_8_156_164), // 'М' -- 'Ф'
|
||||
FONTDATA_ITEM(8, 166, 166, fontpage_8_166_166), // 'Ц' -- 'Ц'
|
||||
FONTDATA_ITEM(8, 168, 168, fontpage_8_168_168), // 'Ш' -- 'Ш'
|
||||
FONTDATA_ITEM(8, 176, 201, fontpage_8_176_201), // 'а' -- 'щ'
|
||||
FONTDATA_ITEM(8, 204, 204, fontpage_8_204_204), // 'ь' -- 'ь'
|
||||
FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // 'ю' -- 'я'
|
||||
FONTDATA_ITEM(8, 212, 212, fontpage_8_212_212), // 'є' -- 'є'
|
||||
FONTDATA_ITEM(8, 214, 214, fontpage_8_214_214), // 'і' -- 'і'
|
||||
static const uxg_fontinfo_t g_fontinfo_uk[] PROGMEM = {
|
||||
FONTDATA_ITEM(8, 134, 134, fontpage_8_134_134), // 'І' -- 'І'
|
||||
FONTDATA_ITEM(8, 144, 169, fontpage_8_144_169), // 'А' -- 'Щ'
|
||||
FONTDATA_ITEM(8, 172, 172, fontpage_8_172_172), // 'Ь' -- 'Ь'
|
||||
FONTDATA_ITEM(8, 175, 201, fontpage_8_175_201), // 'Я' -- 'щ'
|
||||
FONTDATA_ITEM(8, 204, 204, fontpage_8_204_204), // 'ь' -- 'ь'
|
||||
FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // 'ю' -- 'я'
|
||||
FONTDATA_ITEM(8, 212, 212, fontpage_8_212_212), // 'є' -- 'є'
|
||||
FONTDATA_ITEM(8, 214, 215, fontpage_8_214_215), // 'і' -- 'ї'
|
||||
};
|
||||
|
||||
270
Marlin/src/lcd/dogm/fontdata/langdata_vi.h
Executable file → Normal file
270
Marlin/src/lcd/dogm/fontdata/langdata_vi.h
Executable file → Normal file
@@ -3,230 +3,226 @@
|
||||
* Contents will be REPLACED by future processing!
|
||||
* Use genallfont.sh to generate font data for updated languages.
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
#pragma once
|
||||
|
||||
#include "langdata.h"
|
||||
|
||||
const u8g_fntpgm_uint8_t fontpage_2_131_131[31] U8G_FONT_SECTION("fontpage_2_131_131") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x83,0x83,0x00,0x08,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x83,0x83,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x70,0x08,0x78,0x88,0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_144_145[44] U8G_FONT_SECTION("fontpage_2_144_145") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x90,0x91,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0xf0,0x48,0x48,0xe8,0x48,0x48,0xf0,0x06,0x08,
|
||||
0x08,0x06,0x00,0x00,0x08,0x1c,0x08,0x78,0x88,0x88,0x88,0x78};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0x91,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x48,0x48,0xE8,0x48,0x48,0xF0,0x06,0x08,
|
||||
0x08,0x06,0x00,0x00,0x08,0x1C,0x08,0x78,0x88,0x88,0x88,0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_2_169_169[31] U8G_FONT_SECTION("fontpage_2_169_169") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa9,0xa9,0x00,0x08,0x00,0x00,
|
||||
0x00,0x04,0x08,0x08,0x06,0x00,0x00,0x50,0xa0,0x00,0x60,0x20,0x20,0x20,0x70};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA9,0xA9,0x00,0x08,0x00,0x00,
|
||||
0x00,0x04,0x08,0x08,0x06,0x00,0x00,0x50,0xA0,0x00,0x60,0x20,0x20,0x20,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_3_161_161[30] U8G_FONT_SECTION("fontpage_3_161_161") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa1,0xa1,0x00,0x07,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA1,0x00,0x07,0x00,0x00,
|
||||
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x08,0x08,0x70,0x88,0x88,0x88,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_3_175_176[43] U8G_FONT_SECTION("fontpage_3_175_176") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xaf,0xb0,0x00,0x08,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xB0,0x00,0x08,0x00,0x00,
|
||||
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x08,0x98,0x90,0x90,0x90,0x90,0x90,0x60,0x05,
|
||||
0x06,0x06,0x06,0x00,0x00,0x08,0x98,0x90,0x90,0xb0,0x50};
|
||||
0x06,0x06,0x06,0x00,0x00,0x08,0x98,0x90,0x90,0xB0,0x50};
|
||||
const u8g_fntpgm_uint8_t fontpage_6_131_131[25] U8G_FONT_SECTION("fontpage_6_131_131") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x83,0x83,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x02,0x02,0x06,0x00,0x08,0x68,0xb0};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x83,0x83,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x02,0x02,0x06,0x00,0x08,0x68,0xB0};
|
||||
const u8g_fntpgm_uint8_t fontpage_6_137_137[26] U8G_FONT_SECTION("fontpage_6_137_137") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x03,0x03,0x03,0x06,0x01,0x07,0xc0,0x20,0x40};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x03,0x03,0x03,0x06,0x01,0x07,0xC0,0x20,0x40};
|
||||
const u8g_fntpgm_uint8_t fontpage_6_163_163[24] U8G_FONT_SECTION("fontpage_6_163_163") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa3,0xa3,0x00,0x00,0xfe,0x00,
|
||||
0x00,0x01,0x01,0x01,0x06,0x02,0xfe,0x80};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA3,0xA3,0x00,0x00,0xFE,0x00,
|
||||
0x00,0x01,0x01,0x01,0x06,0x02,0xFE,0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_6_192_193[33] U8G_FONT_SECTION("fontpage_6_192_193") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xc0,0xc1,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC0,0xC1,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x02,0x02,0x02,0x06,0x01,0x08,0x80,0x40,0x02,0x02,0x02,0x06,0x02,0x08,0x40,
|
||||
0x80};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_161_161[30] U8G_FONT_SECTION("fontpage_61_161_161") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa1,0xa1,0x00,0x05,0xfe,0x00,
|
||||
0x00,0x05,0x07,0x07,0x07,0x00,0xfe,0x70,0x08,0x78,0x88,0x78,0x00,0x20};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA1,0x00,0x05,0xFE,0x00,
|
||||
0x00,0x05,0x07,0x07,0x07,0x00,0xFE,0x70,0x08,0x78,0x88,0x78,0x00,0x20};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_163_163[32] U8G_FONT_SECTION("fontpage_61_163_163") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa3,0xa3,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA3,0xA3,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x09,0x09,0x07,0x00,0x00,0x30,0x10,0x20,0x00,0x70,0x08,0x78,0x88,0x78
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_165_165[33] U8G_FONT_SECTION("fontpage_61_165_165") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa5,0xa5,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x06,0x0a,0x0a,0x07,0x00,0x00,0x04,0x08,0x30,0x48,0x00,0x70,0x08,0x78,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA5,0xA5,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x06,0x0A,0x0A,0x07,0x00,0x00,0x04,0x08,0x30,0x48,0x00,0x70,0x08,0x78,0x88,
|
||||
0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_167_167[33] U8G_FONT_SECTION("fontpage_61_167_167") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa7,0xa7,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x07,0x00,0x00,0x10,0x08,0x30,0x48,0x00,0x70,0x08,0x78,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA7,0xA7,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x10,0x08,0x30,0x48,0x00,0x70,0x08,0x78,0x88,
|
||||
0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_169_169[34] U8G_FONT_SECTION("fontpage_61_169_169") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xa9,0xa9,0x00,0x0b,0x00,0x00,
|
||||
0x00,0x06,0x0b,0x0b,0x07,0x00,0x00,0x0c,0x04,0x08,0x30,0x48,0x00,0x70,0x08,0x78,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA9,0xA9,0x00,0x0B,0x00,0x00,
|
||||
0x00,0x06,0x0B,0x0B,0x07,0x00,0x00,0x0C,0x04,0x08,0x30,0x48,0x00,0x70,0x08,0x78,
|
||||
0x88,0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_173_173[33] U8G_FONT_SECTION("fontpage_61_173_173") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xad,0xad,0x00,0x08,0xfe,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x07,0x00,0xfe,0x30,0x48,0x00,0x70,0x08,0x78,0x88,0x78,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAD,0xAD,0x00,0x08,0xFE,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x07,0x00,0xFE,0x30,0x48,0x00,0x70,0x08,0x78,0x88,0x78,0x00,
|
||||
0x20};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_175_175[33] U8G_FONT_SECTION("fontpage_61_175_175") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xaf,0xaf,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x07,0x00,0x00,0x08,0x10,0x48,0x30,0x00,0x70,0x08,0x78,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xAF,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x08,0x10,0x48,0x30,0x00,0x70,0x08,0x78,0x88,
|
||||
0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_177_177[33] U8G_FONT_SECTION("fontpage_61_177_177") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xb1,0xb1,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x07,0x00,0x00,0x40,0x20,0x48,0x30,0x00,0x70,0x08,0x78,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB1,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x40,0x20,0x48,0x30,0x00,0x70,0x08,0x78,0x88,
|
||||
0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_179_179[34] U8G_FONT_SECTION("fontpage_61_179_179") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xb3,0xb3,0x00,0x0b,0x00,0x00,
|
||||
0x00,0x05,0x0b,0x0b,0x07,0x00,0x00,0x18,0x08,0x10,0x48,0x30,0x00,0x70,0x08,0x78,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB3,0xB3,0x00,0x0B,0x00,0x00,
|
||||
0x00,0x05,0x0B,0x0B,0x07,0x00,0x00,0x18,0x08,0x10,0x48,0x30,0x00,0x70,0x08,0x78,
|
||||
0x88,0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_181_181[34] U8G_FONT_SECTION("fontpage_61_181_181") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xb5,0xb5,0x00,0x0b,0x00,0x00,
|
||||
0x00,0x06,0x0b,0x0b,0x07,0x00,0x00,0x14,0x28,0x00,0x48,0x30,0x00,0x70,0x08,0x78,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB5,0xB5,0x00,0x0B,0x00,0x00,
|
||||
0x00,0x06,0x0B,0x0B,0x07,0x00,0x00,0x14,0x28,0x00,0x48,0x30,0x00,0x70,0x08,0x78,
|
||||
0x88,0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_183_183[33] U8G_FONT_SECTION("fontpage_61_183_183") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xb7,0xb7,0x00,0x08,0xfe,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x07,0x00,0xfe,0x48,0x30,0x00,0x70,0x08,0x78,0x88,0x78,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB7,0xB7,0x00,0x08,0xFE,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x07,0x00,0xFE,0x48,0x30,0x00,0x70,0x08,0x78,0x88,0x78,0x00,
|
||||
0x20};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_187_187[32] U8G_FONT_SECTION("fontpage_61_187_187") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xbb,0xbb,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x09,0x09,0x07,0x00,0x00,0x30,0x10,0x20,0x00,0x70,0x88,0xf0,0x80,0x78
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_191_191[33] U8G_FONT_SECTION("fontpage_61_191_191") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xbf,0xbf,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x06,0x0a,0x0a,0x07,0x00,0x00,0x04,0x08,0x20,0x50,0x00,0x70,0x88,0xf0,0x80,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBF,0xBF,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x06,0x0A,0x0A,0x07,0x00,0x00,0x04,0x08,0x20,0x50,0x00,0x70,0x88,0xF0,0x80,
|
||||
0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_193_193[33] U8G_FONT_SECTION("fontpage_61_193_193") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xc1,0xc1,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x07,0x00,0x00,0x10,0x08,0x20,0x50,0x00,0x70,0x88,0xf0,0x80,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC1,0xC1,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x10,0x08,0x20,0x50,0x00,0x70,0x88,0xF0,0x80,
|
||||
0x78};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_195_195[34] U8G_FONT_SECTION("fontpage_61_195_195") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3,0x00,0x0b,0x00,0x00,
|
||||
0x00,0x05,0x0b,0x0b,0x07,0x00,0x00,0x18,0x08,0x10,0x60,0x90,0x00,0x60,0x90,0xf0,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC3,0xC3,0x00,0x0B,0x00,0x00,
|
||||
0x00,0x05,0x0B,0x0B,0x07,0x00,0x00,0x18,0x08,0x10,0x60,0x90,0x00,0x60,0x90,0xF0,
|
||||
0x80,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_199_199[33] U8G_FONT_SECTION("fontpage_61_199_199") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x08,0xfe,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x07,0x00,0xfe,0x20,0x50,0x00,0x70,0x88,0xf0,0x80,0x78,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC7,0xC7,0x00,0x08,0xFE,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x07,0x00,0xFE,0x20,0x50,0x00,0x70,0x88,0xF0,0x80,0x78,0x00,
|
||||
0x20};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_201_201[32] U8G_FONT_SECTION("fontpage_61_201_201") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xc9,0xc9,0x00,0x09,0x00,0x00,
|
||||
0x00,0x03,0x09,0x09,0x07,0x02,0x00,0x60,0x20,0x40,0x00,0xc0,0x40,0x40,0x40,0xe0
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC9,0xC9,0x00,0x09,0x00,0x00,
|
||||
0x00,0x03,0x09,0x09,0x07,0x02,0x00,0x60,0x20,0x40,0x00,0xC0,0x40,0x40,0x40,0xE0
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_203_203[32] U8G_FONT_SECTION("fontpage_61_203_203") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xcb,0xcb,0x00,0x07,0xfe,0x00,
|
||||
0x00,0x03,0x09,0x09,0x07,0x02,0xfe,0x40,0x00,0xc0,0x40,0x40,0x40,0xe0,0x00,0x40
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCB,0xCB,0x00,0x07,0xFE,0x00,
|
||||
0x00,0x03,0x09,0x09,0x07,0x02,0xFE,0x40,0x00,0xC0,0x40,0x40,0x40,0xE0,0x00,0x40
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_205_205[30] U8G_FONT_SECTION("fontpage_61_205_205") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xcd,0xcd,0x00,0x05,0xfe,0x00,
|
||||
0x00,0x05,0x07,0x07,0x07,0x00,0xfe,0x70,0x88,0x88,0x88,0x70,0x00,0x20};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCD,0x00,0x05,0xFE,0x00,
|
||||
0x00,0x05,0x07,0x07,0x07,0x00,0xFE,0x70,0x88,0x88,0x88,0x70,0x00,0x20};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_207_207[32] U8G_FONT_SECTION("fontpage_61_207_207") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xcf,0xcf,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCF,0xCF,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x09,0x09,0x07,0x00,0x00,0x30,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x70
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_209_209[33] U8G_FONT_SECTION("fontpage_61_209_209") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xd1,0xd1,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x06,0x0a,0x0a,0x07,0x00,0x00,0x04,0x08,0x20,0x50,0x00,0x70,0x88,0x88,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD1,0xD1,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x06,0x0A,0x0A,0x07,0x00,0x00,0x04,0x08,0x20,0x50,0x00,0x70,0x88,0x88,0x88,
|
||||
0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_211_211[33] U8G_FONT_SECTION("fontpage_61_211_211") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xd3,0xd3,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x07,0x00,0x00,0x10,0x08,0x20,0x50,0x00,0x70,0x88,0x88,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD3,0xD3,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x10,0x08,0x20,0x50,0x00,0x70,0x88,0x88,0x88,
|
||||
0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_213_213[33] U8G_FONT_SECTION("fontpage_61_213_213") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xd5,0xd5,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x07,0x00,0x00,0x18,0x08,0x30,0x50,0x00,0x70,0x88,0x88,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD5,0xD5,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x18,0x08,0x30,0x50,0x00,0x70,0x88,0x88,0x88,
|
||||
0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_215_215[34] U8G_FONT_SECTION("fontpage_61_215_215") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xd7,0xd7,0x00,0x0b,0x00,0x00,
|
||||
0x00,0x05,0x0b,0x0b,0x07,0x00,0x00,0x28,0x50,0x00,0x20,0x50,0x00,0x70,0x88,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD7,0xD7,0x00,0x0B,0x00,0x00,
|
||||
0x00,0x05,0x0B,0x0B,0x07,0x00,0x00,0x28,0x50,0x00,0x20,0x50,0x00,0x70,0x88,0x88,
|
||||
0x88,0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_217_217[33] U8G_FONT_SECTION("fontpage_61_217_217") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xd9,0xd9,0x00,0x08,0xfe,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x07,0x00,0xfe,0x20,0x50,0x00,0x70,0x88,0x88,0x88,0x70,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD9,0xD9,0x00,0x08,0xFE,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x07,0x00,0xFE,0x20,0x50,0x00,0x70,0x88,0x88,0x88,0x70,0x00,
|
||||
0x20};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_219_219[32] U8G_FONT_SECTION("fontpage_61_219_219") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xdb,0xdb,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDB,0xDB,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x09,0x09,0x07,0x00,0x00,0x20,0x40,0x10,0x08,0x70,0x88,0x88,0x88,0x70
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_221_221[32] U8G_FONT_SECTION("fontpage_61_221_221") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xdd,0xdd,0x00,0x09,0x00,0x00,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDD,0xDD,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x09,0x09,0x07,0x00,0x00,0x80,0x40,0x10,0x08,0x70,0x88,0x88,0x88,0x70
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_223_223[33] U8G_FONT_SECTION("fontpage_61_223_223") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xdf,0xdf,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x07,0x00,0x00,0x60,0x20,0x40,0x10,0x08,0x70,0x88,0x88,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDF,0xDF,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x60,0x20,0x40,0x10,0x08,0x70,0x88,0x88,0x88,
|
||||
0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_225_225[32] U8G_FONT_SECTION("fontpage_61_225_225") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xe1,0xe1,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x09,0x09,0x07,0x00,0x00,0x50,0xa0,0x10,0x08,0x70,0x88,0x88,0x88,0x70
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE1,0xE1,0x00,0x09,0x00,0x00,
|
||||
0x00,0x05,0x09,0x09,0x07,0x00,0x00,0x50,0xA0,0x10,0x08,0x70,0x88,0x88,0x88,0x70
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_227_227[32] U8G_FONT_SECTION("fontpage_61_227_227") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xe3,0xe3,0x00,0x07,0xfe,0x00,
|
||||
0x00,0x05,0x09,0x09,0x00,0x00,0xfe,0x10,0x08,0x70,0x88,0x88,0x88,0x70,0x00,0x20
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE3,0xE3,0x00,0x07,0xFE,0x00,
|
||||
0x00,0x05,0x09,0x09,0x00,0x00,0xFE,0x10,0x08,0x70,0x88,0x88,0x88,0x70,0x00,0x20
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_229_229[30] U8G_FONT_SECTION("fontpage_61_229_229") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xe5,0xe5,0x00,0x05,0xfe,0x00,
|
||||
0x00,0x05,0x07,0x07,0x07,0x00,0xfe,0x88,0x88,0x88,0x88,0x70,0x00,0x20};
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x05,0xFE,0x00,
|
||||
0x00,0x05,0x07,0x07,0x07,0x00,0xFE,0x88,0x88,0x88,0x88,0x70,0x00,0x20};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_231_231[33] U8G_FONT_SECTION("fontpage_61_231_231") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xe7,0xe7,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x05,0x0a,0x0a,0x07,0x00,0x00,0x30,0x10,0x20,0x00,0x00,0x88,0x88,0x88,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE7,0xE7,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x30,0x10,0x20,0x00,0x00,0x88,0x88,0x88,0x88,
|
||||
0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_233_233[32] U8G_FONT_SECTION("fontpage_61_233_233") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xe9,0xe9,0x00,0x09,0x00,0x00,
|
||||
0x00,0x06,0x09,0x09,0x07,0x00,0x00,0x10,0x20,0x0c,0x04,0x88,0x88,0x88,0x88,0x70
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE9,0xE9,0x00,0x09,0x00,0x00,
|
||||
0x00,0x06,0x09,0x09,0x07,0x00,0x00,0x10,0x20,0x0C,0x04,0x88,0x88,0x88,0x88,0x70
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_235_235[32] U8G_FONT_SECTION("fontpage_61_235_235") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xeb,0xeb,0x00,0x09,0x00,0x00,
|
||||
0x00,0x06,0x09,0x09,0x07,0x00,0x00,0x40,0x20,0x0c,0x04,0x88,0x88,0x88,0x88,0x70
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEB,0xEB,0x00,0x09,0x00,0x00,
|
||||
0x00,0x06,0x09,0x09,0x07,0x00,0x00,0x40,0x20,0x0C,0x04,0x88,0x88,0x88,0x88,0x70
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_237_237[33] U8G_FONT_SECTION("fontpage_61_237_237") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xed,0xed,0x00,0x0a,0x00,0x00,
|
||||
0x00,0x06,0x0a,0x0a,0x07,0x00,0x00,0x30,0x10,0x20,0x0c,0x04,0x88,0x88,0x88,0x88,
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xED,0xED,0x00,0x0A,0x00,0x00,
|
||||
0x00,0x06,0x0A,0x0A,0x07,0x00,0x00,0x30,0x10,0x20,0x0C,0x04,0x88,0x88,0x88,0x88,
|
||||
0x70};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_239_239[32] U8G_FONT_SECTION("fontpage_61_239_239") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xef,0xef,0x00,0x09,0x00,0x00,
|
||||
0x00,0x06,0x09,0x09,0x07,0x00,0x00,0x28,0x50,0x0c,0x04,0x88,0x88,0x88,0x88,0x70
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEF,0xEF,0x00,0x09,0x00,0x00,
|
||||
0x00,0x06,0x09,0x09,0x07,0x00,0x00,0x28,0x50,0x0C,0x04,0x88,0x88,0x88,0x88,0x70
|
||||
};
|
||||
const u8g_fntpgm_uint8_t fontpage_61_241_241[32] U8G_FONT_SECTION("fontpage_61_241_241") = {
|
||||
0x00,0x0c,0x0d,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xf1,0xf1,0x00,0x07,0xfe,0x00,
|
||||
0x00,0x06,0x09,0x09,0x07,0x00,0xfe,0x0c,0x04,0x88,0x88,0x88,0x88,0x70,0x00,0x20
|
||||
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF1,0xF1,0x00,0x07,0xFE,0x00,
|
||||
0x00,0x06,0x09,0x09,0x07,0x00,0xFE,0x0C,0x04,0x88,0x88,0x88,0x88,0x70,0x00,0x20
|
||||
};
|
||||
|
||||
#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
|
||||
static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
|
||||
FONTDATA_ITEM(2, 131, 131, fontpage_2_131_131), // 'ă' -- 'ă'
|
||||
FONTDATA_ITEM(2, 144, 145, fontpage_2_144_145), // 'Đ' -- 'đ'
|
||||
FONTDATA_ITEM(2, 169, 169, fontpage_2_169_169), // 'ĩ' -- 'ĩ'
|
||||
FONTDATA_ITEM(3, 161, 161, fontpage_3_161_161), // 'ơ' -- 'ơ'
|
||||
FONTDATA_ITEM(3, 175, 176, fontpage_3_175_176), // 'Ư' -- 'ư'
|
||||
FONTDATA_ITEM(6, 131, 131, fontpage_6_131_131), // '̃' -- '̃'
|
||||
FONTDATA_ITEM(6, 137, 137, fontpage_6_137_137), // '̉' -- '̉'
|
||||
FONTDATA_ITEM(6, 163, 163, fontpage_6_163_163), // '̣' -- '̣'
|
||||
FONTDATA_ITEM(6, 192, 193, fontpage_6_192_193), // '̀' -- '́'
|
||||
FONTDATA_ITEM(61, 161, 161, fontpage_61_161_161), // 'ạ' -- 'ạ'
|
||||
FONTDATA_ITEM(61, 163, 163, fontpage_61_163_163), // 'ả' -- 'ả'
|
||||
FONTDATA_ITEM(61, 165, 165, fontpage_61_165_165), // 'ấ' -- 'ấ'
|
||||
FONTDATA_ITEM(61, 167, 167, fontpage_61_167_167), // 'ầ' -- 'ầ'
|
||||
FONTDATA_ITEM(61, 169, 169, fontpage_61_169_169), // 'ẩ' -- 'ẩ'
|
||||
FONTDATA_ITEM(61, 173, 173, fontpage_61_173_173), // 'ậ' -- 'ậ'
|
||||
FONTDATA_ITEM(61, 175, 175, fontpage_61_175_175), // 'ắ' -- 'ắ'
|
||||
FONTDATA_ITEM(61, 177, 177, fontpage_61_177_177), // 'ằ' -- 'ằ'
|
||||
FONTDATA_ITEM(61, 179, 179, fontpage_61_179_179), // 'ẳ' -- 'ẳ'
|
||||
FONTDATA_ITEM(61, 181, 181, fontpage_61_181_181), // 'ẵ' -- 'ẵ'
|
||||
FONTDATA_ITEM(61, 183, 183, fontpage_61_183_183), // 'ặ' -- 'ặ'
|
||||
FONTDATA_ITEM(61, 187, 187, fontpage_61_187_187), // 'ẻ' -- 'ẻ'
|
||||
FONTDATA_ITEM(61, 191, 191, fontpage_61_191_191), // 'ế' -- 'ế'
|
||||
FONTDATA_ITEM(61, 193, 193, fontpage_61_193_193), // 'ề' -- 'ề'
|
||||
FONTDATA_ITEM(61, 195, 195, fontpage_61_195_195), // 'ể' -- 'ể'
|
||||
FONTDATA_ITEM(61, 199, 199, fontpage_61_199_199), // 'ệ' -- 'ệ'
|
||||
FONTDATA_ITEM(61, 201, 201, fontpage_61_201_201), // 'ỉ' -- 'ỉ'
|
||||
FONTDATA_ITEM(61, 203, 203, fontpage_61_203_203), // 'ị' -- 'ị'
|
||||
FONTDATA_ITEM(61, 205, 205, fontpage_61_205_205), // 'ọ' -- 'ọ'
|
||||
FONTDATA_ITEM(61, 207, 207, fontpage_61_207_207), // 'ỏ' -- 'ỏ'
|
||||
FONTDATA_ITEM(61, 209, 209, fontpage_61_209_209), // 'ố' -- 'ố'
|
||||
FONTDATA_ITEM(61, 211, 211, fontpage_61_211_211), // 'ồ' -- 'ồ'
|
||||
FONTDATA_ITEM(61, 213, 213, fontpage_61_213_213), // 'ổ' -- 'ổ'
|
||||
FONTDATA_ITEM(61, 215, 215, fontpage_61_215_215), // 'ỗ' -- 'ỗ'
|
||||
FONTDATA_ITEM(61, 217, 217, fontpage_61_217_217), // 'ộ' -- 'ộ'
|
||||
FONTDATA_ITEM(61, 219, 219, fontpage_61_219_219), // 'ớ' -- 'ớ'
|
||||
FONTDATA_ITEM(61, 221, 221, fontpage_61_221_221), // 'ờ' -- 'ờ'
|
||||
FONTDATA_ITEM(61, 223, 223, fontpage_61_223_223), // 'ở' -- 'ở'
|
||||
FONTDATA_ITEM(61, 225, 225, fontpage_61_225_225), // 'ỡ' -- 'ỡ'
|
||||
FONTDATA_ITEM(61, 227, 227, fontpage_61_227_227), // 'ợ' -- 'ợ'
|
||||
FONTDATA_ITEM(61, 229, 229, fontpage_61_229_229), // 'ụ' -- 'ụ'
|
||||
FONTDATA_ITEM(61, 231, 231, fontpage_61_231_231), // 'ủ' -- 'ủ'
|
||||
FONTDATA_ITEM(61, 233, 233, fontpage_61_233_233), // 'ứ' -- 'ứ'
|
||||
FONTDATA_ITEM(61, 235, 235, fontpage_61_235_235), // 'ừ' -- 'ừ'
|
||||
FONTDATA_ITEM(61, 237, 237, fontpage_61_237_237), // 'ử' -- 'ử'
|
||||
FONTDATA_ITEM(61, 239, 239, fontpage_61_239_239), // 'ữ' -- 'ữ'
|
||||
FONTDATA_ITEM(61, 241, 241, fontpage_61_241_241), // 'ự' -- 'ự'
|
||||
static const uxg_fontinfo_t g_fontinfo_vi[] PROGMEM = {
|
||||
FONTDATA_ITEM(2, 131, 131, fontpage_2_131_131), // 'ă' -- 'ă'
|
||||
FONTDATA_ITEM(2, 144, 145, fontpage_2_144_145), // 'Đ' -- 'đ'
|
||||
FONTDATA_ITEM(2, 169, 169, fontpage_2_169_169), // 'ĩ' -- 'ĩ'
|
||||
FONTDATA_ITEM(3, 161, 161, fontpage_3_161_161), // 'ơ' -- 'ơ'
|
||||
FONTDATA_ITEM(3, 175, 176, fontpage_3_175_176), // 'Ư' -- 'ư'
|
||||
FONTDATA_ITEM(6, 131, 131, fontpage_6_131_131), // '̃' -- '̃'
|
||||
FONTDATA_ITEM(6, 137, 137, fontpage_6_137_137), // '̉' -- '̉'
|
||||
FONTDATA_ITEM(6, 163, 163, fontpage_6_163_163), // '̣' -- '̣'
|
||||
FONTDATA_ITEM(6, 192, 193, fontpage_6_192_193), // '̀' -- '́'
|
||||
FONTDATA_ITEM(61, 161, 161, fontpage_61_161_161), // 'ạ' -- 'ạ'
|
||||
FONTDATA_ITEM(61, 163, 163, fontpage_61_163_163), // 'ả' -- 'ả'
|
||||
FONTDATA_ITEM(61, 165, 165, fontpage_61_165_165), // 'ấ' -- 'ấ'
|
||||
FONTDATA_ITEM(61, 167, 167, fontpage_61_167_167), // 'ầ' -- 'ầ'
|
||||
FONTDATA_ITEM(61, 169, 169, fontpage_61_169_169), // 'ẩ' -- 'ẩ'
|
||||
FONTDATA_ITEM(61, 173, 173, fontpage_61_173_173), // 'ậ' -- 'ậ'
|
||||
FONTDATA_ITEM(61, 175, 175, fontpage_61_175_175), // 'ắ' -- 'ắ'
|
||||
FONTDATA_ITEM(61, 177, 177, fontpage_61_177_177), // 'ằ' -- 'ằ'
|
||||
FONTDATA_ITEM(61, 179, 179, fontpage_61_179_179), // 'ẳ' -- 'ẳ'
|
||||
FONTDATA_ITEM(61, 181, 181, fontpage_61_181_181), // 'ẵ' -- 'ẵ'
|
||||
FONTDATA_ITEM(61, 183, 183, fontpage_61_183_183), // 'ặ' -- 'ặ'
|
||||
FONTDATA_ITEM(61, 191, 191, fontpage_61_191_191), // 'ế' -- 'ế'
|
||||
FONTDATA_ITEM(61, 193, 193, fontpage_61_193_193), // 'ề' -- 'ề'
|
||||
FONTDATA_ITEM(61, 195, 195, fontpage_61_195_195), // 'ể' -- 'ể'
|
||||
FONTDATA_ITEM(61, 199, 199, fontpage_61_199_199), // 'ệ' -- 'ệ'
|
||||
FONTDATA_ITEM(61, 201, 201, fontpage_61_201_201), // 'ỉ' -- 'ỉ'
|
||||
FONTDATA_ITEM(61, 203, 203, fontpage_61_203_203), // 'ị' -- 'ị'
|
||||
FONTDATA_ITEM(61, 205, 205, fontpage_61_205_205), // 'ọ' -- 'ọ'
|
||||
FONTDATA_ITEM(61, 207, 207, fontpage_61_207_207), // 'ỏ' -- 'ỏ'
|
||||
FONTDATA_ITEM(61, 209, 209, fontpage_61_209_209), // 'ố' -- 'ố'
|
||||
FONTDATA_ITEM(61, 211, 211, fontpage_61_211_211), // 'ồ' -- 'ồ'
|
||||
FONTDATA_ITEM(61, 213, 213, fontpage_61_213_213), // 'ổ' -- 'ổ'
|
||||
FONTDATA_ITEM(61, 215, 215, fontpage_61_215_215), // 'ỗ' -- 'ỗ'
|
||||
FONTDATA_ITEM(61, 217, 217, fontpage_61_217_217), // 'ộ' -- 'ộ'
|
||||
FONTDATA_ITEM(61, 219, 219, fontpage_61_219_219), // 'ớ' -- 'ớ'
|
||||
FONTDATA_ITEM(61, 221, 221, fontpage_61_221_221), // 'ờ' -- 'ờ'
|
||||
FONTDATA_ITEM(61, 223, 223, fontpage_61_223_223), // 'ở' -- 'ở'
|
||||
FONTDATA_ITEM(61, 225, 225, fontpage_61_225_225), // 'ỡ' -- 'ỡ'
|
||||
FONTDATA_ITEM(61, 227, 227, fontpage_61_227_227), // 'ợ' -- 'ợ'
|
||||
FONTDATA_ITEM(61, 229, 229, fontpage_61_229_229), // 'ụ' -- 'ụ'
|
||||
FONTDATA_ITEM(61, 231, 231, fontpage_61_231_231), // 'ủ' -- 'ủ'
|
||||
FONTDATA_ITEM(61, 233, 233, fontpage_61_233_233), // 'ứ' -- 'ứ'
|
||||
FONTDATA_ITEM(61, 235, 235, fontpage_61_235_235), // 'ừ' -- 'ừ'
|
||||
FONTDATA_ITEM(61, 237, 237, fontpage_61_237_237), // 'ử' -- 'ử'
|
||||
FONTDATA_ITEM(61, 239, 239, fontpage_61_239_239), // 'ữ' -- 'ữ'
|
||||
FONTDATA_ITEM(61, 241, 241, fontpage_61_241_241), // 'ự' -- 'ự'
|
||||
};
|
||||
|
||||
2605
Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h
Executable file → Normal file
2605
Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
2362
Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h
Executable file → Normal file
2362
Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
8
Marlin/src/lcd/dogm/lcdprint_u8g.cpp
Executable file → Normal file
8
Marlin/src/lcd/dogm/lcdprint_u8g.cpp
Executable file → Normal file
@@ -9,11 +9,11 @@
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if HAS_GRAPHICAL_LCD
|
||||
#if HAS_MARLINUI_U8GLIB
|
||||
|
||||
#include "ultralcd_DOGM.h"
|
||||
#include "marlinui_DOGM.h"
|
||||
|
||||
#include "../ultralcd.h"
|
||||
#include "../marlinui.h"
|
||||
#include "../../MarlinCore.h"
|
||||
|
||||
#include "../fontutils.h"
|
||||
@@ -53,4 +53,4 @@ int lcd_put_u8str_max_P(PGM_P utf8_str_P, pixel_len_t max_length) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif // HAS_GRAPHICAL_LCD
|
||||
#endif // HAS_MARLINUI_U8GLIB
|
||||
|
||||
334
Marlin/src/lcd/dogm/ultralcd_DOGM.cpp → Marlin/src/lcd/dogm/marlinui_DOGM.cpp
Executable file → Normal file
334
Marlin/src/lcd/dogm/ultralcd_DOGM.cpp → Marlin/src/lcd/dogm/marlinui_DOGM.cpp
Executable file → Normal file
@@ -16,30 +16,30 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* lcd/dogm/ultralcd_DOGM.h
|
||||
* lcd/dogm/marlinui_DOGM.h
|
||||
*
|
||||
* Implementation of the LCD display routines for a DOGM128 graphic display.
|
||||
* by STB for ErikZalm/Marlin. Common LCD 128x64 pixel graphic displays.
|
||||
*
|
||||
* Demonstrator: http://www.reprap.org/wiki/STB_Electronics
|
||||
* License: http://opensource.org/licenses/BSD-3-Clause
|
||||
* Demonstrator: https://www.reprap.org/wiki/STB_Electronics
|
||||
* License: https://opensource.org/licenses/BSD-3-Clause
|
||||
*
|
||||
* With the use of:
|
||||
* u8glib by Oliver Kraus
|
||||
* https://github.com/olikraus/U8glib_Arduino
|
||||
* License: http://opensource.org/licenses/BSD-3-Clause
|
||||
* License: https://opensource.org/licenses/BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if HAS_GRAPHICAL_LCD
|
||||
#if HAS_MARLINUI_U8GLIB
|
||||
|
||||
#include "ultralcd_DOGM.h"
|
||||
#include "marlinui_DOGM.h"
|
||||
#include "u8g_fontutf8.h"
|
||||
|
||||
#if ENABLED(SHOW_BOOTSCREEN)
|
||||
@@ -49,11 +49,12 @@
|
||||
#include "../lcdprint.h"
|
||||
#include "../fontutils.h"
|
||||
#include "../../libs/numtostr.h"
|
||||
#include "../ultralcd.h"
|
||||
#include "../marlinui.h"
|
||||
|
||||
#include "../../sd/cardreader.h"
|
||||
#include "../../module/temperature.h"
|
||||
#include "../../module/printcounter.h"
|
||||
#include "../../MarlinCore.h"
|
||||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
#include "../../libs/duration_t.h"
|
||||
@@ -65,7 +66,7 @@
|
||||
|
||||
/**
|
||||
* Include all needed font files
|
||||
* (See http://marlinfw.org/docs/development/fonts.html)
|
||||
* (See https://marlinfw.org/docs/development/fonts.html)
|
||||
*/
|
||||
#include "fontdata/fontdata_ISO10646_1.h"
|
||||
#if ENABLED(USE_SMALL_INFOFONT)
|
||||
@@ -75,19 +76,24 @@
|
||||
#define FONT_STATUSMENU_NAME MENU_FONT_NAME
|
||||
#endif
|
||||
|
||||
U8G_CLASS u8g(U8G_PARAM);
|
||||
U8G_CLASS u8g;
|
||||
|
||||
#include LANGUAGE_DATA_INCL(LCD_LANGUAGE)
|
||||
#ifdef LCD_LANGUAGE_2
|
||||
#include LANGUAGE_DATA_INCL(LCD_LANGUAGE_2)
|
||||
#endif
|
||||
#ifdef LCD_LANGUAGE_3
|
||||
#include LANGUAGE_DATA_INCL(LCD_LANGUAGE_3)
|
||||
#endif
|
||||
#ifdef LCD_LANGUAGE_4
|
||||
#include LANGUAGE_DATA_INCL(LCD_LANGUAGE_4)
|
||||
#endif
|
||||
#ifdef LCD_LANGUAGE_5
|
||||
#include LANGUAGE_DATA_INCL(LCD_LANGUAGE_5)
|
||||
#endif
|
||||
|
||||
#if HAS_LCD_CONTRAST
|
||||
|
||||
int16_t MarlinUI::contrast = DEFAULT_LCD_CONTRAST;
|
||||
|
||||
void MarlinUI::set_contrast(const int16_t value) {
|
||||
contrast = constrain(value, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX);
|
||||
u8g.setContrast(contrast);
|
||||
}
|
||||
|
||||
void MarlinUI::_set_contrast() { u8g.setContrast(contrast); }
|
||||
#endif
|
||||
|
||||
void MarlinUI::set_font(const MarlinFont font_nr) {
|
||||
@@ -110,19 +116,23 @@ bool MarlinUI::detected() { return true; }
|
||||
// Draws a slice of a particular frame of the custom bootscreen, without the u8g loop
|
||||
void MarlinUI::draw_custom_bootscreen(const uint8_t frame/*=0*/) {
|
||||
constexpr u8g_uint_t left = u8g_uint_t((LCD_PIXEL_WIDTH - (CUSTOM_BOOTSCREEN_BMPWIDTH)) / 2),
|
||||
top = u8g_uint_t((LCD_PIXEL_HEIGHT - (CUSTOM_BOOTSCREEN_BMPHEIGHT)) / 2);
|
||||
top = u8g_uint_t(CUSTOM_BOOTSCREEN_Y);
|
||||
#if ENABLED(CUSTOM_BOOTSCREEN_INVERTED)
|
||||
constexpr u8g_uint_t right = left + CUSTOM_BOOTSCREEN_BMPWIDTH,
|
||||
bottom = top + CUSTOM_BOOTSCREEN_BMPHEIGHT;
|
||||
#endif
|
||||
|
||||
const u8g_pgm_uint8_t * const bmp =
|
||||
#if ENABLED(CUSTOM_BOOTSCREEN_ANIMATED)
|
||||
(u8g_pgm_uint8_t*)pgm_read_ptr(&custom_bootscreen_animation[frame])
|
||||
#if ENABLED(CUSTOM_BOOTSCREEN_ANIMATED)
|
||||
#if ENABLED(CUSTOM_BOOTSCREEN_ANIMATED_FRAME_TIME)
|
||||
const u8g_pgm_uint8_t * const bmp = (u8g_pgm_uint8_t*)pgm_read_ptr(&custom_bootscreen_animation[frame].bitmap);
|
||||
#else
|
||||
custom_start_bmp
|
||||
const u8g_pgm_uint8_t * const bmp = (u8g_pgm_uint8_t*)pgm_read_ptr(&custom_bootscreen_animation[frame]);
|
||||
#endif
|
||||
;
|
||||
#else
|
||||
const u8g_pgm_uint8_t * const bmp = custom_start_bmp;
|
||||
#endif
|
||||
|
||||
UNUSED(frame);
|
||||
|
||||
u8g.drawBitmapP(left, top, CUSTOM_BOOTSCREEN_BMP_BYTEWIDTH, CUSTOM_BOOTSCREEN_BMPHEIGHT, bmp);
|
||||
|
||||
@@ -140,27 +150,36 @@ bool MarlinUI::detected() { return true; }
|
||||
// Shows the custom bootscreen, with the u8g loop, animations and delays
|
||||
void MarlinUI::show_custom_bootscreen() {
|
||||
#if DISABLED(CUSTOM_BOOTSCREEN_ANIMATED)
|
||||
constexpr millis_t d = 0;
|
||||
constexpr millis_t frame_time = 0;
|
||||
constexpr uint8_t f = 0;
|
||||
#else
|
||||
constexpr millis_t d = CUSTOM_BOOTSCREEN_FRAME_TIME;
|
||||
#if DISABLED(CUSTOM_BOOTSCREEN_ANIMATED_FRAME_TIME)
|
||||
constexpr millis_t frame_time = CUSTOM_BOOTSCREEN_FRAME_TIME;
|
||||
#endif
|
||||
LOOP_L_N(f, COUNT(custom_bootscreen_animation))
|
||||
#endif
|
||||
{
|
||||
#if ENABLED(CUSTOM_BOOTSCREEN_ANIMATED_FRAME_TIME)
|
||||
const uint8_t fr = _MIN(f, COUNT(custom_bootscreen_animation) - 1);
|
||||
const millis_t frame_time = pgm_read_word(&custom_bootscreen_animation[fr].duration);
|
||||
#endif
|
||||
u8g.firstPage();
|
||||
do { draw_custom_bootscreen(f); } while (u8g.nextPage());
|
||||
if (d) safe_delay(d);
|
||||
if (frame_time) safe_delay(frame_time);
|
||||
}
|
||||
|
||||
#ifndef CUSTOM_BOOTSCREEN_TIMEOUT
|
||||
#define CUSTOM_BOOTSCREEN_TIMEOUT 2500
|
||||
#endif
|
||||
safe_delay(CUSTOM_BOOTSCREEN_TIMEOUT);
|
||||
#if CUSTOM_BOOTSCREEN_TIMEOUT
|
||||
safe_delay(CUSTOM_BOOTSCREEN_TIMEOUT);
|
||||
#endif
|
||||
}
|
||||
#endif // SHOW_CUSTOM_BOOTSCREEN
|
||||
|
||||
// Two-part needed to display all info
|
||||
constexpr bool two_part = ((LCD_PIXEL_HEIGHT) - (START_BMPHEIGHT)) < ((MENU_FONT_ASCENT) * 2);
|
||||
constexpr uint8_t bootscreen_pages = 1 + two_part;
|
||||
|
||||
// Draw the static Marlin bootscreen from a u8g loop
|
||||
// or the animated boot screen within its own u8g loop
|
||||
@@ -209,30 +228,31 @@ bool MarlinUI::detected() { return true; }
|
||||
#if DISABLED(BOOT_MARLIN_LOGO_ANIMATED)
|
||||
draw_bootscreen_bmp(start_bmp);
|
||||
#else
|
||||
constexpr millis_t d = MARLIN_BOOTSCREEN_FRAME_TIME;
|
||||
constexpr millis_t frame_time = MARLIN_BOOTSCREEN_FRAME_TIME;
|
||||
LOOP_L_N(f, COUNT(marlin_bootscreen_animation)) {
|
||||
draw_bootscreen_bmp((uint8_t*)pgm_read_ptr(&marlin_bootscreen_animation[f]));
|
||||
if (d) safe_delay(d);
|
||||
if (frame_time) safe_delay(frame_time);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Show the Marlin bootscreen, with the u8g loop and delays
|
||||
void MarlinUI::show_marlin_bootscreen() {
|
||||
constexpr uint8_t pages = two_part ? 2 : 1;
|
||||
for (uint8_t q = pages; q--;) {
|
||||
for (uint8_t q = bootscreen_pages; q--;) {
|
||||
draw_marlin_bootscreen(q == 0);
|
||||
safe_delay((BOOTSCREEN_TIMEOUT) / pages);
|
||||
if (q) safe_delay((BOOTSCREEN_TIMEOUT) / bootscreen_pages);
|
||||
}
|
||||
}
|
||||
|
||||
void MarlinUI::show_bootscreen() {
|
||||
#if ENABLED(SHOW_CUSTOM_BOOTSCREEN)
|
||||
show_custom_bootscreen();
|
||||
#endif
|
||||
TERN_(SHOW_CUSTOM_BOOTSCREEN, show_custom_bootscreen());
|
||||
show_marlin_bootscreen();
|
||||
}
|
||||
|
||||
void MarlinUI::bootscreen_completion(const millis_t sofar) {
|
||||
if ((BOOTSCREEN_TIMEOUT) / bootscreen_pages > sofar) safe_delay((BOOTSCREEN_TIMEOUT) / bootscreen_pages - sofar);
|
||||
}
|
||||
|
||||
#endif // SHOW_BOOTSCREEN
|
||||
|
||||
#if ENABLED(LIGHTWEIGHT_UI)
|
||||
@@ -241,60 +261,71 @@ bool MarlinUI::detected() { return true; }
|
||||
|
||||
// Initialize or re-initialize the LCD
|
||||
void MarlinUI::init_lcd() {
|
||||
#if DISABLED(MKS_LCD12864B)
|
||||
|
||||
#if PIN_EXISTS(LCD_BACKLIGHT)
|
||||
OUT_WRITE(LCD_BACKLIGHT_PIN, (
|
||||
#if ENABLED(DELAYED_BACKLIGHT_INIT)
|
||||
LOW // Illuminate after reset
|
||||
#else
|
||||
HIGH // Illuminate right away
|
||||
#endif
|
||||
));
|
||||
static bool did_init_u8g = false;
|
||||
if (!did_init_u8g) {
|
||||
u8g.init(U8G_PARAM);
|
||||
did_init_u8g = true;
|
||||
}
|
||||
|
||||
#if PIN_EXISTS(LCD_BACKLIGHT)
|
||||
OUT_WRITE(LCD_BACKLIGHT_PIN, DISABLED(DELAYED_BACKLIGHT_INIT)); // Illuminate after reset or right away
|
||||
#endif
|
||||
|
||||
#if ANY(MKS_12864OLED, MKS_12864OLED_SSD1306, FYSETC_242_OLED_12864, ZONESTAR_12864OLED, K3D_242_OLED_CONTROLLER)
|
||||
SET_OUTPUT(LCD_PINS_DC);
|
||||
#ifndef LCD_RESET_PIN
|
||||
#define LCD_RESET_PIN LCD_PINS_RS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306)
|
||||
SET_OUTPUT(LCD_PINS_DC);
|
||||
#ifndef LCD_RESET_PIN
|
||||
#define LCD_RESET_PIN LCD_PINS_RS
|
||||
#if PIN_EXISTS(LCD_RESET)
|
||||
// Perform a clean hardware reset with needed delays
|
||||
OUT_WRITE(LCD_RESET_PIN, LOW);
|
||||
_delay_ms(5);
|
||||
WRITE(LCD_RESET_PIN, HIGH);
|
||||
_delay_ms(5);
|
||||
u8g.begin();
|
||||
#endif
|
||||
|
||||
#if PIN_EXISTS(LCD_BACKLIGHT) && ENABLED(DELAYED_BACKLIGHT_INIT)
|
||||
WRITE(LCD_BACKLIGHT_PIN, HIGH);
|
||||
#endif
|
||||
|
||||
TERN_(HAS_LCD_CONTRAST, refresh_contrast());
|
||||
|
||||
TERN_(LCD_SCREEN_ROT_90, u8g.setRot90());
|
||||
TERN_(LCD_SCREEN_ROT_180, u8g.setRot180());
|
||||
TERN_(LCD_SCREEN_ROT_270, u8g.setRot270());
|
||||
|
||||
update_language_font();
|
||||
}
|
||||
|
||||
void MarlinUI::update_language_font() {
|
||||
#if HAS_MULTI_LANGUAGE
|
||||
switch (language) {
|
||||
default: uxg_SetUtf8Fonts(LANG_FONT_INFO(LCD_LANGUAGE), COUNT(LANG_FONT_INFO(LCD_LANGUAGE))); break;
|
||||
#ifdef LCD_LANGUAGE_2
|
||||
case 1: uxg_SetUtf8Fonts(LANG_FONT_INFO(LCD_LANGUAGE_2), COUNT(LANG_FONT_INFO(LCD_LANGUAGE_2))); break;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if PIN_EXISTS(LCD_RESET)
|
||||
// Perform a clean hardware reset with needed delays
|
||||
OUT_WRITE(LCD_RESET_PIN, LOW);
|
||||
_delay_ms(5);
|
||||
WRITE(LCD_RESET_PIN, HIGH);
|
||||
_delay_ms(5);
|
||||
u8g.begin();
|
||||
#endif
|
||||
|
||||
#if PIN_EXISTS(LCD_BACKLIGHT) && ENABLED(DELAYED_BACKLIGHT_INIT)
|
||||
WRITE(LCD_BACKLIGHT_PIN, HIGH);
|
||||
#endif
|
||||
|
||||
#if HAS_LCD_CONTRAST
|
||||
refresh_contrast();
|
||||
#endif
|
||||
|
||||
#if ENABLED(LCD_SCREEN_ROT_90)
|
||||
u8g.setRot90();
|
||||
#elif ENABLED(LCD_SCREEN_ROT_180)
|
||||
u8g.setRot180();
|
||||
#elif ENABLED(LCD_SCREEN_ROT_270)
|
||||
u8g.setRot270();
|
||||
#endif
|
||||
|
||||
#endif // !MKS_LCD12864B
|
||||
|
||||
uxg_SetUtf8Fonts(g_fontinfo, COUNT(g_fontinfo));
|
||||
#ifdef LCD_LANGUAGE_3
|
||||
case 2: uxg_SetUtf8Fonts(LANG_FONT_INFO(LCD_LANGUAGE_3), COUNT(LANG_FONT_INFO(LCD_LANGUAGE_3))); break;
|
||||
#endif
|
||||
#ifdef LCD_LANGUAGE_4
|
||||
case 3: uxg_SetUtf8Fonts(LANG_FONT_INFO(LCD_LANGUAGE_4), COUNT(LANG_FONT_INFO(LCD_LANGUAGE_4))); break;
|
||||
#endif
|
||||
#ifdef LCD_LANGUAGE_5
|
||||
case 4: uxg_SetUtf8Fonts(LANG_FONT_INFO(LCD_LANGUAGE_5), COUNT(LANG_FONT_INFO(LCD_LANGUAGE_5))); break;
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
uxg_SetUtf8Fonts(LANG_FONT_INFO(LCD_LANGUAGE), COUNT(LANG_FONT_INFO(LCD_LANGUAGE)));
|
||||
#endif
|
||||
}
|
||||
|
||||
// The kill screen is displayed for unrecoverable conditions
|
||||
void MarlinUI::draw_kill_screen() {
|
||||
#if ENABLED(LIGHTWEIGHT_UI)
|
||||
ST7920_Lite_Status_Screen::clear_text_buffer();
|
||||
#endif
|
||||
TERN_(LIGHTWEIGHT_UI, ST7920_Lite_Status_Screen::clear_text_buffer());
|
||||
const u8g_uint_t h4 = u8g.getHeight() / 4;
|
||||
u8g.firstPage();
|
||||
do {
|
||||
@@ -307,6 +338,15 @@ void MarlinUI::draw_kill_screen() {
|
||||
|
||||
void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
|
||||
|
||||
#if HAS_LCD_BRIGHTNESS
|
||||
void MarlinUI::_set_brightness() {
|
||||
#if PIN_EXISTS(TFT_BACKLIGHT)
|
||||
if (PWM_PIN(TFT_BACKLIGHT_PIN))
|
||||
analogWrite(pin_t(TFT_BACKLIGHT_PIN), brightness);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAS_LCD_MENU
|
||||
|
||||
#include "../menu/menu.h"
|
||||
@@ -316,24 +356,24 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
|
||||
void MarlinUI::draw_hotend_status(const uint8_t row, const uint8_t extruder) {
|
||||
row_y1 = row * (MENU_FONT_HEIGHT) + 1;
|
||||
row_y2 = row_y1 + MENU_FONT_HEIGHT - 1;
|
||||
u8g_uint_t y1 = row * (MENU_FONT_HEIGHT) + 1, y2 = y1 + MENU_FONT_HEIGHT - 1;
|
||||
|
||||
if (!PAGE_CONTAINS(row_y1 + 1, row_y2 + 2)) return;
|
||||
if (!PAGE_CONTAINS(y1 + 1, y2 + 2)) return;
|
||||
|
||||
lcd_put_wchar(LCD_PIXEL_WIDTH - 11 * (MENU_FONT_WIDTH), row_y2, 'E');
|
||||
lcd_put_wchar(LCD_PIXEL_WIDTH - 11 * (MENU_FONT_WIDTH), y2, 'E');
|
||||
lcd_put_wchar((char)('1' + extruder));
|
||||
lcd_put_wchar(' ');
|
||||
lcd_put_u8str(i16tostr3rj(thermalManager.degHotend(extruder)));
|
||||
lcd_put_u8str(i16tostr3rj(thermalManager.wholeDegHotend(extruder)));
|
||||
lcd_put_wchar('/');
|
||||
|
||||
if (get_blink() || !thermalManager.hotend_idle[extruder].timed_out)
|
||||
if (get_blink() || !thermalManager.heater_idle[extruder].timed_out)
|
||||
lcd_put_u8str(i16tostr3rj(thermalManager.degTargetHotend(extruder)));
|
||||
}
|
||||
|
||||
#endif // ADVANCED_PAUSE_FEATURE
|
||||
|
||||
// Set the colors for a menu item based on whether it is selected
|
||||
// Mark a menu item and set font color if selected.
|
||||
// Return 'false' if the item is not on screen.
|
||||
static bool mark_as_selected(const uint8_t row, const bool sel) {
|
||||
row_y1 = row * (MENU_FONT_HEIGHT) + 1;
|
||||
row_y2 = row_y1 + MENU_FONT_HEIGHT - 1;
|
||||
@@ -345,15 +385,13 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
|
||||
u8g.drawHLine(0, row_y1 + 1, LCD_PIXEL_WIDTH);
|
||||
u8g.drawHLine(0, row_y2 + 2, LCD_PIXEL_WIDTH);
|
||||
#else
|
||||
u8g.setColorIndex(1); // black on white
|
||||
u8g.setColorIndex(1); // solid outline
|
||||
u8g.drawBox(0, row_y1 + 2, LCD_PIXEL_WIDTH, MENU_FONT_HEIGHT - 1);
|
||||
u8g.setColorIndex(0); // white on black
|
||||
u8g.setColorIndex(0); // inverted text
|
||||
#endif
|
||||
}
|
||||
#if DISABLED(MENU_HOLLOW_FRAME)
|
||||
else {
|
||||
u8g.setColorIndex(1); // unmarked text is black on white
|
||||
}
|
||||
else u8g.setColorIndex(1); // solid text
|
||||
#endif
|
||||
|
||||
if (!PAGE_CONTAINS(row_y1, row_y2)) return false;
|
||||
@@ -363,18 +401,20 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
|
||||
}
|
||||
|
||||
// Draw a static line of text in the same idiom as a menu item
|
||||
void MenuItem_static::draw(const uint8_t row, PGM_P const pstr, const uint8_t style/*=SS_DEFAULT*/, const char * const valstr/*=nullptr*/) {
|
||||
void MenuItem_static::draw(const uint8_t row, PGM_P const pstr, const uint8_t style/*=SS_DEFAULT*/, const char * const vstr/*=nullptr*/) {
|
||||
|
||||
if (mark_as_selected(row, style & SS_INVERT)) {
|
||||
pixel_len_t n = LCD_PIXEL_WIDTH; // pixel width of string allowed
|
||||
|
||||
u8g_uint_t n = LCD_PIXEL_WIDTH; // pixel width of string allowed
|
||||
|
||||
if ((style & SS_CENTER) && !valstr) {
|
||||
int8_t pad = (LCD_WIDTH - utf8_strlen_P(pstr)) / 2;
|
||||
while (--pad >= 0) { lcd_put_wchar(' '); n--; }
|
||||
const int plen = pstr ? calculateWidth(pstr) : 0,
|
||||
vlen = vstr ? utf8_strlen(vstr) : 0;
|
||||
if (style & SS_CENTER) {
|
||||
int pad = (LCD_PIXEL_WIDTH - plen - vlen * MENU_FONT_WIDTH) / MENU_FONT_WIDTH / 2;
|
||||
while (--pad >= 0) n -= lcd_put_wchar(' ');
|
||||
}
|
||||
n = lcd_put_u8str_ind_P(pstr, itemIndex, LCD_WIDTH) * (MENU_FONT_WIDTH);
|
||||
if (valstr) n -= lcd_put_u8str_max(valstr, n);
|
||||
|
||||
if (plen) n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, n / (MENU_FONT_WIDTH)) * (MENU_FONT_WIDTH);
|
||||
if (vlen) n -= lcd_put_u8str_max(vstr, n);
|
||||
while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
|
||||
}
|
||||
}
|
||||
@@ -382,7 +422,7 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
|
||||
// Draw a generic menu item
|
||||
void MenuItemBase::_draw(const bool sel, const uint8_t row, PGM_P const pstr, const char, const char post_char) {
|
||||
if (mark_as_selected(row, sel)) {
|
||||
u8g_uint_t n = lcd_put_u8str_ind_P(pstr, itemIndex, LCD_WIDTH - 2) * (MENU_FONT_WIDTH);
|
||||
pixel_len_t n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, LCD_WIDTH - 1) * (MENU_FONT_WIDTH);
|
||||
while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
|
||||
lcd_put_wchar(LCD_PIXEL_WIDTH - (MENU_FONT_WIDTH), row_y2, post_char);
|
||||
lcd_put_wchar(' ');
|
||||
@@ -390,31 +430,35 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
|
||||
}
|
||||
|
||||
// Draw a menu item with an editable value
|
||||
void MenuEditItemBase::draw(const bool sel, const uint8_t row, PGM_P const pstr, const char* const data, const bool pgm) {
|
||||
void MenuEditItemBase::draw(const bool sel, const uint8_t row, PGM_P const pstr, const char * const inStr, const bool pgm) {
|
||||
if (mark_as_selected(row, sel)) {
|
||||
const uint8_t vallen = (pgm ? utf8_strlen_P(data) : utf8_strlen((char*)data));
|
||||
u8g_uint_t n = lcd_put_u8str_ind_P(pstr, itemIndex, LCD_WIDTH - 2 - vallen) * (MENU_FONT_WIDTH);
|
||||
const uint8_t vallen = (pgm ? utf8_strlen_P(inStr) : utf8_strlen((char*)inStr)),
|
||||
pixelwidth = (pgm ? uxg_GetUtf8StrPixelWidthP(u8g.getU8g(), inStr) : uxg_GetUtf8StrPixelWidth(u8g.getU8g(), (char*)inStr));
|
||||
const u8g_uint_t prop = USE_WIDE_GLYPH ? 2 : 1;
|
||||
|
||||
pixel_len_t n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, LCD_WIDTH - 2 - vallen * prop) * (MENU_FONT_WIDTH);
|
||||
if (vallen) {
|
||||
lcd_put_wchar(':');
|
||||
while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
|
||||
lcd_moveto(LCD_PIXEL_WIDTH - (MENU_FONT_WIDTH) * vallen, row_y2);
|
||||
if (pgm) lcd_put_u8str_P(data); else lcd_put_u8str((char*)data);
|
||||
lcd_moveto(LCD_PIXEL_WIDTH - _MAX((MENU_FONT_WIDTH) * vallen, pixelwidth + 2), row_y2);
|
||||
if (pgm) lcd_put_u8str_P(inStr); else lcd_put_u8str((char*)inStr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MenuEditItemBase::draw_edit_screen(PGM_P const pstr, const char* const value/*=nullptr*/) {
|
||||
void MenuEditItemBase::draw_edit_screen(PGM_P const pstr, const char * const value/*=nullptr*/) {
|
||||
ui.encoder_direction_normal();
|
||||
|
||||
const u8g_uint_t prop = USE_WIDE_GLYPH ? 2 : 1;
|
||||
const u8g_uint_t labellen = utf8_strlen_P(pstr), vallen = utf8_strlen(value);
|
||||
bool extra_row = labellen > LCD_WIDTH - 2 - vallen;
|
||||
bool extra_row = labellen * prop > LCD_WIDTH - 2 - vallen * prop;
|
||||
|
||||
#if ENABLED(USE_BIG_EDIT_FONT)
|
||||
// Use the menu font if the label won't fit on a single line
|
||||
constexpr u8g_uint_t lcd_edit_width = (LCD_PIXEL_WIDTH) / (EDIT_FONT_WIDTH);
|
||||
u8g_uint_t lcd_chr_fit, one_chr_width;
|
||||
if (labellen <= lcd_edit_width - 1) {
|
||||
if (labellen + vallen + 1 > lcd_edit_width) extra_row = true;
|
||||
if (labellen * prop <= lcd_edit_width - 1) {
|
||||
if (labellen * prop + vallen * prop + 1 > lcd_edit_width) extra_row = true;
|
||||
lcd_chr_fit = lcd_edit_width + 1;
|
||||
one_chr_width = EDIT_FONT_WIDTH;
|
||||
ui.set_font(FONT_EDIT);
|
||||
@@ -435,10 +479,10 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
|
||||
|
||||
// Assume the label is alpha-numeric (with a descender)
|
||||
bool onpage = PAGE_CONTAINS(baseline - (EDIT_FONT_ASCENT - 1), baseline + EDIT_FONT_DESCENT);
|
||||
if (onpage) lcd_put_u8str_ind_P(0, baseline, pstr, itemIndex);
|
||||
if (onpage) lcd_put_u8str_ind_P(0, baseline, pstr, itemIndex, itemString);
|
||||
|
||||
// If a value is included, print a colon, then print the value right-justified
|
||||
if (value != nullptr) {
|
||||
if (value) {
|
||||
lcd_put_wchar(':');
|
||||
if (extra_row) {
|
||||
// Assume that value is numeric (with no descender)
|
||||
@@ -446,38 +490,41 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
|
||||
onpage = PAGE_CONTAINS(baseline - (EDIT_FONT_ASCENT - 1), baseline);
|
||||
}
|
||||
if (onpage) {
|
||||
lcd_put_wchar(((lcd_chr_fit - 1) - (vallen + 1)) * one_chr_width, baseline, ' '); // Right-justified, padded, add a leading space
|
||||
lcd_put_wchar(((lcd_chr_fit - 1) - (vallen * prop + 1)) * one_chr_width, baseline, ' '); // Right-justified, padded, add a leading space
|
||||
lcd_put_u8str(value);
|
||||
}
|
||||
}
|
||||
TERN_(USE_BIG_EDIT_FONT, ui.set_font(FONT_MENU));
|
||||
}
|
||||
|
||||
inline void draw_boxed_string(const u8g_uint_t x, const u8g_uint_t y, PGM_P const pstr, const bool inv) {
|
||||
const u8g_uint_t len = utf8_strlen_P(pstr), bw = len * (MENU_FONT_WIDTH),
|
||||
bx = x * (MENU_FONT_WIDTH), by = (y + 1) * (MENU_FONT_HEIGHT);
|
||||
const u8g_uint_t len = utf8_strlen_P(pstr),
|
||||
by = (y + 1) * (MENU_FONT_HEIGHT);
|
||||
const u8g_uint_t prop = USE_WIDE_GLYPH ? 2 : 1;
|
||||
const pixel_len_t bw = len * prop * (MENU_FONT_WIDTH), bx = x * prop * (MENU_FONT_WIDTH);
|
||||
if (inv) {
|
||||
u8g.setColorIndex(1);
|
||||
u8g.drawBox(bx - 1, by - (MENU_FONT_ASCENT) + 1, bw + 2, MENU_FONT_HEIGHT - 1);
|
||||
u8g.drawBox(bx / prop - 1, by - (MENU_FONT_ASCENT), bw + 2, MENU_FONT_HEIGHT);
|
||||
u8g.setColorIndex(0);
|
||||
}
|
||||
lcd_put_u8str_P(bx, by, pstr);
|
||||
lcd_put_u8str_P(bx / prop, by, pstr);
|
||||
if (inv) u8g.setColorIndex(1);
|
||||
}
|
||||
|
||||
void MenuItem_confirm::draw_select_screen(PGM_P const yes, PGM_P const no, const bool yesno, PGM_P const pref, const char * const string/*=nullptr*/, PGM_P const suff/*=nullptr*/) {
|
||||
ui.draw_select_screen_prompt(pref, string, suff);
|
||||
draw_boxed_string(1, LCD_HEIGHT - 1, no, !yesno);
|
||||
draw_boxed_string(LCD_WIDTH - (utf8_strlen_P(yes) + 1), LCD_HEIGHT - 1, yes, yesno);
|
||||
draw_boxed_string(LCD_WIDTH - (utf8_strlen_P(yes) * (USE_WIDE_GLYPH ? 2 : 1) + 1), LCD_HEIGHT - 1, yes, yesno);
|
||||
}
|
||||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
|
||||
void MenuItem_sdbase::draw(const bool sel, const uint8_t row, PGM_P const, CardReader &theCard, const bool isDir) {
|
||||
if (mark_as_selected(row, sel)) {
|
||||
const uint8_t maxlen = LCD_WIDTH - isDir;
|
||||
if (isDir) lcd_put_wchar(LCD_STR_FOLDER[0]);
|
||||
constexpr uint8_t maxlen = LCD_WIDTH - 1;
|
||||
const u8g_uint_t pixw = maxlen * (MENU_FONT_WIDTH);
|
||||
u8g_uint_t n = pixw - lcd_put_u8str_max(ui.scrolled_filename(theCard, maxlen, row, sel), pixw);
|
||||
const pixel_len_t pixw = maxlen * (MENU_FONT_WIDTH);
|
||||
pixel_len_t n = pixw - lcd_put_u8str_max(ui.scrolled_filename(theCard, maxlen, row, sel), pixw);
|
||||
while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
|
||||
}
|
||||
}
|
||||
@@ -528,7 +575,7 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
|
||||
|
||||
// Fill in the Specified Mesh Point
|
||||
|
||||
const uint8_t y_plot_inv = (GRID_MAX_POINTS_Y - 1) - y_plot; // The origin is typically in the lower right corner. We need to
|
||||
const uint8_t y_plot_inv = (GRID_MAX_POINTS_Y) - 1 - y_plot; // The origin is typically in the lower right corner. We need to
|
||||
// invert the Y to get it to plot in the right location.
|
||||
|
||||
const u8g_uint_t by = y_offset + y_plot_inv * pixels_per_y_mesh_pnt;
|
||||
@@ -573,6 +620,12 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
|
||||
|
||||
#if EITHER(BABYSTEP_ZPROBE_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY)
|
||||
|
||||
//
|
||||
// Draw knob rotation => Z motion key for:
|
||||
// - menu.cpp:lcd_babystep_zoffset
|
||||
// - menu_ubl.cpp:_lcd_mesh_fine_tune
|
||||
//
|
||||
|
||||
const unsigned char cw_bmp[] PROGMEM = {
|
||||
B00000000,B11111110,B00000000,
|
||||
B00000011,B11111111,B10000000,
|
||||
@@ -662,7 +715,7 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
|
||||
B00001100,B00000000
|
||||
};
|
||||
|
||||
void _lcd_zoffset_overlay_gfx(const float zvalue) {
|
||||
void _lcd_zoffset_overlay_gfx(const_float_t zvalue) {
|
||||
// Determine whether the user is raising or lowering the nozzle.
|
||||
static int8_t dir;
|
||||
static float old_zvalue;
|
||||
@@ -671,28 +724,23 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
|
||||
old_zvalue = zvalue;
|
||||
}
|
||||
|
||||
#if ENABLED(OVERLAY_GFX_REVERSE)
|
||||
const unsigned char *rot_up = ccw_bmp, *rot_down = cw_bmp;
|
||||
#else
|
||||
const unsigned char *rot_up = cw_bmp, *rot_down = ccw_bmp;
|
||||
#endif
|
||||
const unsigned char *rot_up = TERN(OVERLAY_GFX_REVERSE, ccw_bmp, cw_bmp),
|
||||
*rot_down = TERN(OVERLAY_GFX_REVERSE, cw_bmp, ccw_bmp);
|
||||
|
||||
#if ENABLED(USE_BIG_EDIT_FONT)
|
||||
const int left = 0, right = 45, nozzle = 95;
|
||||
#else
|
||||
const int left = 5, right = 90, nozzle = 60;
|
||||
#endif
|
||||
const int left = TERN(USE_BIG_EDIT_FONT, 0, 5),
|
||||
right = TERN(USE_BIG_EDIT_FONT, 45, 90),
|
||||
nozzle = TERN(USE_BIG_EDIT_FONT, 95, 60);
|
||||
|
||||
// Draw a representation of the nozzle
|
||||
if (PAGE_CONTAINS(3, 16)) u8g.drawBitmapP(nozzle + 6, 4 - dir, 2, 12, nozzle_bmp);
|
||||
if (PAGE_CONTAINS(20, 20)) u8g.drawBitmapP(nozzle + 0, 20, 3, 1, offset_bedline_bmp);
|
||||
// Draw nozzle lowered or raised according to direction moved
|
||||
if (PAGE_CONTAINS( 3, 16)) u8g.drawBitmapP(nozzle + 6, 4 - dir, 2, 12, nozzle_bmp);
|
||||
if (PAGE_CONTAINS(20, 20)) u8g.drawBitmapP(nozzle + 0, 20 , 3, 1, offset_bedline_bmp);
|
||||
|
||||
// Draw cw/ccw indicator and up/down arrows.
|
||||
if (PAGE_CONTAINS(47, 62)) {
|
||||
u8g.drawBitmapP(right + 0, 48 - dir, 2, 13, up_arrow_bmp);
|
||||
u8g.drawBitmapP(left + 0, 49 - dir, 2, 13, down_arrow_bmp);
|
||||
u8g.drawBitmapP(left + 13, 47, 3, 16, rot_down);
|
||||
u8g.drawBitmapP(right + 13, 47, 3, 16, rot_up);
|
||||
u8g.drawBitmapP(right + 0, 48 - dir, 2, 13, up_arrow_bmp);
|
||||
u8g.drawBitmapP(left + 0, 49 - dir, 2, 13, down_arrow_bmp);
|
||||
u8g.drawBitmapP(left + 13, 47 , 3, 16, rot_down);
|
||||
u8g.drawBitmapP(right + 13, 47 , 3, 16, rot_up);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -700,4 +748,4 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
|
||||
|
||||
#endif // HAS_LCD_MENU
|
||||
|
||||
#endif // HAS_GRAPHICAL_LCD
|
||||
#endif // HAS_MARLINUI_U8GLIB
|
||||
165
Marlin/src/lcd/dogm/ultralcd_DOGM.h → Marlin/src/lcd/dogm/marlinui_DOGM.h
Executable file → Normal file
165
Marlin/src/lcd/dogm/ultralcd_DOGM.h → Marlin/src/lcd/dogm/marlinui_DOGM.h
Executable file → Normal file
@@ -16,25 +16,28 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* lcd/dogm/ultralcd_DOGM.h
|
||||
* lcd/dogm/marlinui_DOGM.h
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#include <U8glib.h>
|
||||
#include <U8glib-HAL.h>
|
||||
#include "HAL_LCD_class_defines.h"
|
||||
|
||||
//#define ALTERNATIVE_LCD
|
||||
|
||||
#if ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
|
||||
|
||||
// RepRapWorld Graphical LCD
|
||||
|
||||
#define U8G_CLASS U8GLIB_ST7920_128X64_4X
|
||||
#if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SCK_PIN) && (LCD_PINS_ENABLE == MOSI_PIN)
|
||||
#if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN) && (LCD_PINS_ENABLE == SD_MOSI_PIN)
|
||||
#define U8G_PARAM LCD_PINS_RS
|
||||
#else
|
||||
#define U8G_PARAM LCD_PINS_D4, LCD_PINS_ENABLE, LCD_PINS_RS
|
||||
@@ -43,8 +46,9 @@
|
||||
#elif ENABLED(U8GLIB_ST7920)
|
||||
|
||||
// RepRap Discount Full Graphics Smart Controller
|
||||
// and other variant LCDs using ST7920
|
||||
|
||||
#if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SCK_PIN) && (LCD_PINS_ENABLE == MOSI_PIN)
|
||||
#if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN) && (LCD_PINS_ENABLE == SD_MOSI_PIN)
|
||||
#define U8G_CLASS U8GLIB_ST7920_128X64_4X_HAL // 2 stripes, HW SPI (Shared with SD card. Non-standard LCD adapter on AVR.)
|
||||
#define U8G_PARAM LCD_PINS_RS
|
||||
#else
|
||||
@@ -70,7 +74,7 @@
|
||||
|
||||
#elif ENABLED(U8GLIB_LM6059_AF)
|
||||
|
||||
// Based on the Adafruit ST7565 (http://www.adafruit.com/products/250)
|
||||
// Based on the Adafruit ST7565 (https://www.adafruit.com/products/250)
|
||||
|
||||
#if ENABLED(ALTERNATIVE_LCD)
|
||||
#define U8G_CLASS U8GLIB_LM6059 // 8 stripes (HW-SPI)
|
||||
@@ -84,10 +88,29 @@
|
||||
|
||||
#define SMART_RAMPS MB(RAMPS_SMART_EFB, RAMPS_SMART_EEB, RAMPS_SMART_EFF, RAMPS_SMART_EEF, RAMPS_SMART_SF)
|
||||
#define U8G_CLASS U8GLIB_64128N_2X_HAL // 4 stripes (HW-SPI)
|
||||
#if SMART_RAMPS || DOGLCD_SCK != SCK_PIN || DOGLCD_MOSI != MOSI_PIN
|
||||
|
||||
#if (SMART_RAMPS && defined(__SAM3X8E__)) || DOGLCD_SCK != SD_SCK_PIN || DOGLCD_MOSI != SD_MOSI_PIN
|
||||
#define FORCE_SOFT_SPI // SW-SPI
|
||||
#endif
|
||||
|
||||
#elif ANY(FYSETC_MINI_12864, MKS_MINI_12864, ENDER2_STOCKDISPLAY)
|
||||
|
||||
// The FYSETC Mini 12864 display // "4 stripes"
|
||||
|
||||
// The MKS_MINI_12864 V1/V2 aren't exact copies of the MiniPanel.
|
||||
// Panel management is in u8g_dev_uc1701_mini12864_HAL.cpp with
|
||||
// extra delays added to remove glitches seen with fast MCUs.
|
||||
|
||||
#define U8G_CLASS U8GLIB_MINI12864_2X_HAL // 8 stripes (HW-SPI)
|
||||
|
||||
#elif ENABLED(MINIPANEL)
|
||||
|
||||
#if ENABLED(ALTERNATIVE_LCD)
|
||||
#define U8G_CLASS U8GLIB_MINI12864
|
||||
#else
|
||||
#define U8G_CLASS U8GLIB_MINI12864_2X // 8 stripes (HW-SPI)
|
||||
#endif
|
||||
|
||||
#elif ENABLED(MKS_12864OLED_SSD1306)
|
||||
|
||||
// MKS 128x64 (SSD1306) OLED I2C LCD
|
||||
@@ -100,29 +123,50 @@
|
||||
#define U8G_CLASS U8GLIB_SSD1306_128X64 // 8 stripes
|
||||
#endif
|
||||
|
||||
#elif ENABLED(U8GLIB_SSD1306)
|
||||
#elif EITHER(FYSETC_242_OLED_12864, K3D_242_OLED_CONTROLLER)
|
||||
|
||||
// Generic SSD1306 OLED I2C LCD
|
||||
|
||||
#if ENABLED(ALTERNATIVE_LCD)
|
||||
#define U8G_CLASS U8GLIB_SSD1306_128X64_2X_I2C_2_WIRE // 4 stripes
|
||||
#else
|
||||
#define U8G_CLASS U8GLIB_SSD1306_128X64_2X // 4 stripes
|
||||
#endif
|
||||
#define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST)
|
||||
|
||||
#elif ENABLED(MKS_12864OLED)
|
||||
|
||||
// MKS 128x64 (SH1106) OLED I2C LCD
|
||||
// FYSETC OLED 2.42" 128 × 64 Full Graphics Controller
|
||||
// or K3D OLED 2.42" 128 × 64 Full Graphics Controller
|
||||
|
||||
#define FORCE_SOFT_SPI // SW-SPI
|
||||
|
||||
#if ENABLED(ALTERNATIVE_LCD)
|
||||
#define U8G_CLASS U8GLIB_SSD1306_128X64_2X // 4 stripes
|
||||
#else
|
||||
#define U8G_CLASS U8GLIB_SSD1309_128X64_HAL
|
||||
#endif
|
||||
|
||||
#elif ENABLED(ZONESTAR_12864OLED_SSD1306)
|
||||
|
||||
// Zonestar SSD1306 OLED SPI LCD
|
||||
|
||||
#define FORCE_SOFT_SPI // SW-SPI
|
||||
#if ENABLED(ALTERNATIVE_LCD)
|
||||
#define U8G_CLASS U8GLIB_SH1306_128X64_2X // 4 stripes
|
||||
#else
|
||||
#define U8G_CLASS U8GLIB_SH1306_128X64 // 8 stripes
|
||||
#endif
|
||||
|
||||
#elif EITHER(MKS_12864OLED, ZONESTAR_12864OLED)
|
||||
|
||||
// MKS 128x64 (SH1106) OLED I2C LCD
|
||||
// - or -
|
||||
// Zonestar SH1106 OLED SPI LCD
|
||||
|
||||
#define FORCE_SOFT_SPI // SW-SPI
|
||||
#if ENABLED(ALTERNATIVE_LCD)
|
||||
#define U8G_CLASS U8GLIB_SH1106_128X64_2X // 4 stripes
|
||||
#else
|
||||
#define U8G_CLASS U8GLIB_SH1106_128X64 // 8 stripes
|
||||
#endif
|
||||
|
||||
#elif ENABLED(U8GLIB_SH1106_EINSTART)
|
||||
|
||||
// Connected via motherboard header
|
||||
|
||||
#define U8G_CLASS U8GLIB_SH1106_128X64
|
||||
#define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, LCD_PINS_DC, LCD_PINS_RS
|
||||
|
||||
#elif ENABLED(U8GLIB_SH1106)
|
||||
|
||||
// Generic SH1106 OLED I2C LCD
|
||||
@@ -141,41 +185,27 @@
|
||||
#define U8G_CLASS U8GLIB_SSD1309_128X64
|
||||
#define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST) // I2C
|
||||
|
||||
#elif ENABLED(FYSETC_MINI_12864)
|
||||
#elif ENABLED(U8GLIB_SSD1306)
|
||||
|
||||
// The FYSETC Mini 12864 display
|
||||
|
||||
#define U8G_CLASS U8GLIB_MINI12864_2X_HAL // 4 stripes
|
||||
|
||||
#elif EITHER(MKS_MINI_12864, ENDER2_STOCKDISPLAY)
|
||||
|
||||
// The MKS_MINI_12864 V1/V2 aren't exact copies of the MiniPanel.
|
||||
// Panel management is in u8g_dev_uc1701_mini12864_HAL.cpp with
|
||||
// extra delays added to remove glitches seen with fast MCUs.
|
||||
|
||||
#define U8G_CLASS U8GLIB_MINI12864_2X_HAL // 8 stripes (HW-SPI)
|
||||
|
||||
#elif ENABLED(MINIPANEL)
|
||||
// Generic SSD1306 OLED I2C LCD
|
||||
|
||||
#if ENABLED(ALTERNATIVE_LCD)
|
||||
#define U8G_CLASS U8GLIB_MINI12864
|
||||
#define U8G_CLASS U8GLIB_SSD1306_128X64_2X_I2C_2_WIRE // 4 stripes
|
||||
#else
|
||||
#define U8G_CLASS U8GLIB_MINI12864_2X // 8 stripes (HW-SPI)
|
||||
#define U8G_CLASS U8GLIB_SSD1306_128X64_2X // 4 stripes
|
||||
#endif
|
||||
#define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST)
|
||||
|
||||
#elif ENABLED(U8GLIB_SH1106_EINSTART)
|
||||
|
||||
// Connected via motherboard header
|
||||
|
||||
#define U8G_CLASS U8GLIB_SH1106_128X64
|
||||
#define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, LCD_PINS_DC, LCD_PINS_RS
|
||||
|
||||
#elif ENABLED(FSMC_GRAPHICAL_TFT)
|
||||
#elif TFT_SCALED_DOGLCD
|
||||
|
||||
// Unspecified 320x240 TFT pre-initialized by built-in bootloader
|
||||
|
||||
#define U8G_CLASS U8GLIB_TFT_320X240_UPSCALE_FROM_128X64
|
||||
#define U8G_PARAM FSMC_CS_PIN, FSMC_RS_PIN
|
||||
#if HAS_FSMC_GRAPHICAL_TFT
|
||||
#define U8G_PARAM FSMC_CS_PIN, FSMC_RS_PIN
|
||||
#else
|
||||
#define U8G_PARAM -1, -1
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
@@ -196,54 +226,9 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// LCD_FULL_PIXEL_WIDTH =
|
||||
// LCD_PIXEL_OFFSET_X + (LCD_PIXEL_WIDTH * 2) + LCD_PIXEL_OFFSET_X
|
||||
#if ENABLED(FSMC_GRAPHICAL_TFT)
|
||||
#define LCD_FULL_PIXEL_WIDTH 320
|
||||
#define LCD_PIXEL_OFFSET_X 32
|
||||
#define LCD_FULL_PIXEL_HEIGHT 240
|
||||
#define LCD_PIXEL_OFFSET_Y 32
|
||||
#endif
|
||||
|
||||
// For selective rendering within a Y range
|
||||
#define PAGE_OVER(ya) ((ya) <= u8g.getU8g()->current_page.y1) // Does the current page follow a region top?
|
||||
#define PAGE_UNDER(yb) ((yb) >= u8g.getU8g()->current_page.y0) // Does the current page precede a region bottom?
|
||||
#define PAGE_CONTAINS(ya, yb) ((yb) >= u8g.getU8g()->current_page.y0 && (ya) <= u8g.getU8g()->current_page.y1) // Do two vertical regions overlap?
|
||||
|
||||
// Only Western languages support big / small fonts
|
||||
#if DISABLED(DISPLAY_CHARSET_ISO10646_1)
|
||||
#undef USE_BIG_EDIT_FONT
|
||||
#undef USE_SMALL_INFOFONT
|
||||
#endif
|
||||
|
||||
#define MENU_FONT_NAME ISO10646_1_5x7
|
||||
#define MENU_FONT_WIDTH 6
|
||||
#define MENU_FONT_ASCENT 10
|
||||
#define MENU_FONT_DESCENT 2
|
||||
#define MENU_FONT_HEIGHT (MENU_FONT_ASCENT + MENU_FONT_DESCENT)
|
||||
|
||||
#if ENABLED(USE_BIG_EDIT_FONT)
|
||||
#define EDIT_FONT_NAME u8g_font_9x18
|
||||
#define EDIT_FONT_WIDTH 9
|
||||
#define EDIT_FONT_ASCENT 10
|
||||
#define EDIT_FONT_DESCENT 3
|
||||
#else
|
||||
#define EDIT_FONT_NAME MENU_FONT_NAME
|
||||
#define EDIT_FONT_WIDTH MENU_FONT_WIDTH
|
||||
#define EDIT_FONT_ASCENT MENU_FONT_ASCENT
|
||||
#define EDIT_FONT_DESCENT MENU_FONT_DESCENT
|
||||
#endif
|
||||
#define EDIT_FONT_HEIGHT (EDIT_FONT_ASCENT + EDIT_FONT_DESCENT)
|
||||
|
||||
// Get the Ascent, Descent, and total Height for the Info Screen font
|
||||
#if ENABLED(USE_SMALL_INFOFONT)
|
||||
extern const u8g_fntpgm_uint8_t u8g_font_6x9[];
|
||||
#define INFO_FONT_ASCENT 7
|
||||
#else
|
||||
#define INFO_FONT_ASCENT 8
|
||||
#endif
|
||||
#define INFO_FONT_DESCENT 2
|
||||
#define INFO_FONT_HEIGHT (INFO_FONT_ASCENT + INFO_FONT_DESCENT)
|
||||
#define INFO_FONT_WIDTH 6
|
||||
|
||||
extern U8G_CLASS u8g;
|
||||
68
Marlin/src/lcd/dogm/status/ammeter.h
Normal file
68
Marlin/src/lcd/dogm/status/ammeter.h
Normal file
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
//
|
||||
// lcd/dogm/status/ammeter.h - Status Screen Laser Ammeter bitmaps
|
||||
//
|
||||
|
||||
#define STATUS_AMMETER_WIDTH 20
|
||||
|
||||
const unsigned char status_ammeter_bmp_mA[] PROGMEM = {
|
||||
B00000000,B11111100,B00000000,
|
||||
B00000011,B00000011,B00000000,
|
||||
B00000100,B00000000,B10000000,
|
||||
B00001000,B00000000,B01000000,
|
||||
B00010000,B00000110,B00100000,
|
||||
B00010000,B00001001,B00100000,
|
||||
B00100000,B00001001,B00010000,
|
||||
B00100011,B01001111,B00010000,
|
||||
B11100010,B10101001,B00011100,
|
||||
B00100010,B10101001,B00010000,
|
||||
B00100010,B10101001,B00010000,
|
||||
B00010000,B00000000,B00100000,
|
||||
B00010000,B00000000,B00100000,
|
||||
B00001000,B00000000,B01000000,
|
||||
B00000100,B00000000,B10000000,
|
||||
B00000011,B00000011,B00000000,
|
||||
B00000000,B11111100,B00000000
|
||||
};
|
||||
|
||||
const unsigned char status_ammeter_bmp_A[] PROGMEM = {
|
||||
B00000000,B11111100,B00000000,
|
||||
B00000011,B00000011,B00000000,
|
||||
B00000100,B00000000,B10000000,
|
||||
B00001000,B00000000,B01000000,
|
||||
B00010000,B00000000,B00100000,
|
||||
B00010000,B00110000,B00100000,
|
||||
B00100000,B01001000,B00010000,
|
||||
B00100000,B01001000,B00010000,
|
||||
B11100000,B01111000,B00011100,
|
||||
B00100000,B01001000,B00010000,
|
||||
B00100000,B01001000,B00010000,
|
||||
B00010000,B01001000,B00100000,
|
||||
B00010000,B00000000,B00100000,
|
||||
B00001000,B00000000,B01000000,
|
||||
B00000100,B00000000,B10000000,
|
||||
B00000011,B00000011,B00000000,
|
||||
B00000000,B11111100,B00000000,
|
||||
};
|
||||
109
Marlin/src/lcd/dogm/status/bed.h
Normal file
109
Marlin/src/lcd/dogm/status/bed.h
Normal file
@@ -0,0 +1,109 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
//
|
||||
// lcd/dogm/status/bed.h - Status Screen Bed bitmaps
|
||||
//
|
||||
|
||||
#if ENABLED(STATUS_ALT_BED_BITMAP)
|
||||
|
||||
#define STATUS_BED_ANIM
|
||||
#define STATUS_BED_WIDTH 24
|
||||
|
||||
#define STATUS_BED_TEXT_X (STATUS_BED_X + 11)
|
||||
|
||||
const unsigned char status_bed_bmp[] PROGMEM = {
|
||||
B11111111,B11111111,B11000000,
|
||||
B01000000,B00000000,B00100000,
|
||||
B00100000,B00000000,B00010000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00001000,B00000000,B00000100,
|
||||
B00000100,B00000000,B00000010,
|
||||
B00000011,B11111111,B11111111
|
||||
};
|
||||
|
||||
const unsigned char status_bed_on_bmp[] PROGMEM = {
|
||||
B00000010,B00100010,B00000000,
|
||||
B00000100,B01000100,B00000000,
|
||||
B00000100,B01000100,B00000000,
|
||||
B00000010,B00100010,B00000000,
|
||||
B00000001,B00010001,B00000000,
|
||||
B11111111,B11111111,B11000000,
|
||||
B01000000,B10001000,B10100000,
|
||||
B00100001,B00010001,B00010000,
|
||||
B00010010,B00100010,B00001000,
|
||||
B00001000,B00000000,B00000100,
|
||||
B00000100,B00000000,B00000010,
|
||||
B00000011,B11111111,B11111111
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
#define STATUS_BED_WIDTH 21
|
||||
|
||||
#ifdef STATUS_BED_ANIM
|
||||
|
||||
const unsigned char status_bed_bmp[] PROGMEM = {
|
||||
B00011111,B11111111,B11111000,
|
||||
B00011111,B11111111,B11111000
|
||||
};
|
||||
|
||||
const unsigned char status_bed_on_bmp[] PROGMEM = {
|
||||
B00000100,B00010000,B01000000,
|
||||
B00000010,B00001000,B00100000,
|
||||
B00000010,B00001000,B00100000,
|
||||
B00000100,B00010000,B01000000,
|
||||
B00001000,B00100000,B10000000,
|
||||
B00010000,B01000001,B00000000,
|
||||
B00010000,B01000001,B00000000,
|
||||
B00001000,B00100000,B10000000,
|
||||
B00000100,B00010000,B01000000,
|
||||
B00000000,B00000000,B00000000,
|
||||
B00011111,B11111111,B11111000,
|
||||
B00011111,B11111111,B11111000
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
const unsigned char status_bed_bmp[] PROGMEM = {
|
||||
B00000100,B00010000,B01000000,
|
||||
B00000010,B00001000,B00100000,
|
||||
B00000010,B00001000,B00100000,
|
||||
B00000100,B00010000,B01000000,
|
||||
B00001000,B00100000,B10000000,
|
||||
B00010000,B01000001,B00000000,
|
||||
B00010000,B01000001,B00000000,
|
||||
B00001000,B00100000,B10000000,
|
||||
B00000100,B00010000,B01000000,
|
||||
B00000000,B00000000,B00000000,
|
||||
B00011111,B11111111,B11111000,
|
||||
B00011111,B11111111,B11111000
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef STATUS_BED_X
|
||||
#define STATUS_BED_X (LCD_PIXEL_WIDTH - (STATUS_BED_BYTEWIDTH + STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8 - TERN0(STATUS_HEAT_PERCENT, 4))
|
||||
#endif
|
||||
89
Marlin/src/lcd/dogm/status/chamber.h
Normal file
89
Marlin/src/lcd/dogm/status/chamber.h
Normal file
@@ -0,0 +1,89 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
//
|
||||
// lcd/dogm/status/chamber.h - Status Screen Chamber bitmaps
|
||||
//
|
||||
|
||||
#define STATUS_CHAMBER_WIDTH 21
|
||||
#if STATUS_HEATERS_WIDTH
|
||||
#if ENABLED(STATUS_COMBINE_HEATERS)
|
||||
#define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - 2 - (STATUS_CHAMBER_BYTEWIDTH) * 8)
|
||||
#elif HAS_FAN0 && HAS_HEATED_BED && HOTENDS <= 2
|
||||
#define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - 2 - (STATUS_HEATERS_BYTEWIDTH - STATUS_CHAMBER_BYTEWIDTH) * 8)
|
||||
#elif HAS_FAN0 && !HAS_HEATED_BED
|
||||
#define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
|
||||
#else
|
||||
#define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH) * 8)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef STATUS_CHAMBER_ANIM
|
||||
|
||||
const unsigned char status_chamber_bmp[] PROGMEM = {
|
||||
B00011111,B11111111,B11111000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00011111,B11111111,B11111000,
|
||||
B00011111,B11111111,B11111000
|
||||
};
|
||||
const unsigned char status_chamber_on_bmp[] PROGMEM = {
|
||||
B00011111,B11111111,B11111000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00010000,B10000100,B00001000,
|
||||
B00010000,B01000010,B00001000,
|
||||
B00010000,B01000010,B00001000,
|
||||
B00010000,B10000100,B00001000,
|
||||
B00010001,B00001000,B00001000,
|
||||
B00010001,B00001000,B00001000,
|
||||
B00010000,B10000100,B00001000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00011111,B11111111,B11111000,
|
||||
B00011111,B11111111,B11111000
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
const unsigned char status_chamber_bmp[] PROGMEM = {
|
||||
B00011111,B11111111,B11111000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00010000,B10000100,B00001000,
|
||||
B00010000,B01000010,B00001000,
|
||||
B00010000,B01000010,B00001000,
|
||||
B00010000,B10000100,B00001000,
|
||||
B00010001,B00001000,B00001000,
|
||||
B00010001,B00001000,B00001000,
|
||||
B00010000,B10000100,B00001000,
|
||||
B00010000,B00000000,B00001000,
|
||||
B00011111,B11111111,B11111000,
|
||||
B00011111,B11111111,B11111000
|
||||
};
|
||||
|
||||
#endif
|
||||
309
Marlin/src/lcd/dogm/status/combined.h
Normal file
309
Marlin/src/lcd/dogm/status/combined.h
Normal file
@@ -0,0 +1,309 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
//
|
||||
// lcd/dogm/status/combined.h - Status Screen Combined Heater bitmaps
|
||||
//
|
||||
|
||||
#undef STATUS_HOTEND_ANIM
|
||||
#undef STATUS_BED_ANIM
|
||||
#define STATUS_HEATERS_XSPACE 24
|
||||
|
||||
//
|
||||
// Status Screen Combined Heater bitmaps
|
||||
//
|
||||
#if HAS_HEATED_BED && HOTENDS <= 4
|
||||
|
||||
#if HOTENDS == 0
|
||||
|
||||
#define STATUS_HEATERS_WIDTH 96
|
||||
|
||||
const unsigned char status_heaters_bmp[] PROGMEM = {
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000,
|
||||
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
|
||||
};
|
||||
|
||||
#elif HOTENDS == 1
|
||||
|
||||
#define STATUS_HEATERS_WIDTH 96
|
||||
|
||||
const unsigned char status_heaters_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
|
||||
B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
|
||||
B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000,
|
||||
B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
|
||||
};
|
||||
|
||||
#elif HOTENDS == 2
|
||||
|
||||
#define STATUS_HEATERS_WIDTH 96
|
||||
|
||||
const unsigned char status_heaters_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111011,B01110000,B00000000,B00111100,B11110000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111011,B01110000,B00000000,B00111010,B11110000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111011,B01110000,B00000000,B00111110,B11110000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
|
||||
#else
|
||||
B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
|
||||
B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
|
||||
#endif
|
||||
B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000,
|
||||
B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
|
||||
};
|
||||
|
||||
#elif HOTENDS == 3
|
||||
|
||||
#define STATUS_HEATERS_WIDTH 96
|
||||
|
||||
const unsigned char status_heaters_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000100,B00010000,B01000000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111011,B01110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111011,B01110000,B00000000,B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00001000,B00100000,B10000000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111011,B01110000,B00000000,B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00001000,B00100000,B10000000,
|
||||
#else
|
||||
B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00001000,B00100000,B10000000,
|
||||
B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00001000,B00100000,B10000000,
|
||||
#endif
|
||||
B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00011111,B11111111,B11111000,
|
||||
B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00011111,B11111111,B11111000
|
||||
};
|
||||
|
||||
#else // HOTENDS > 3
|
||||
|
||||
#define STATUS_HEATERS_WIDTH 120
|
||||
|
||||
const unsigned char status_heaters_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000100,B00010000,B01000000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111011,B01110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111011,B01110000,B00000000,B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00001000,B00100000,B10000000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111011,B01110000,B00000000,B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00001000,B00100000,B10000000,
|
||||
#else
|
||||
B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
|
||||
B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,B00000000,B00001000,B00100000,B10000000,
|
||||
B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,B00000000,B00010000,B01000001,B00000000,
|
||||
B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,B00000000,B00001000,B00100000,B10000000,
|
||||
#endif
|
||||
B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000100,B00010000,B01000000,
|
||||
B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,
|
||||
B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00011111,B11111111,B11111000,
|
||||
B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00011111,B11111111,B11111000
|
||||
};
|
||||
|
||||
#endif // HOTENDS
|
||||
|
||||
#define STATUS_BED_TEXT_X (STATUS_HEATERS_WIDTH - 10)
|
||||
|
||||
#else // !HAS_HEATED_BED || HOTENDS > 3
|
||||
|
||||
#if HOTENDS == 0
|
||||
|
||||
#define STATUS_HEATERS_WIDTH 0
|
||||
|
||||
#elif HOTENDS == 1
|
||||
|
||||
#define STATUS_HEATERS_WIDTH 12
|
||||
|
||||
const unsigned char status_heaters_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00111111,B11110000,
|
||||
B00111111,B11110000,
|
||||
B00111111,B11110000,
|
||||
B00011111,B11100000,
|
||||
B00011111,B11100000,
|
||||
B00111111,B11110000,
|
||||
B00111111,B11110000,
|
||||
B00111111,B11110000,
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#elif HOTENDS == 2
|
||||
|
||||
#define STATUS_HEATERS_WIDTH 36
|
||||
|
||||
const unsigned char status_heaters_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,B00000000,B00011111,B11100000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,
|
||||
B00111011,B01110000,B00000000,B00111100,B11110000,
|
||||
B00111011,B01110000,B00000000,B00111010,B11110000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,
|
||||
B00111011,B01110000,B00000000,B00111110,B11110000,
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,
|
||||
#else
|
||||
B00111110,B11110000,B00000000,B00111100,B11110000,
|
||||
B00111100,B11110000,B00000000,B00111011,B01110000,
|
||||
B00111010,B11110000,B00000000,B00111111,B01110000,
|
||||
B00011110,B11100000,B00000000,B00011110,B11100000,
|
||||
B00011110,B11100000,B00000000,B00011101,B11100000,
|
||||
B00111110,B11110000,B00000000,B00111011,B11110000,
|
||||
B00111110,B11110000,B00000000,B00111000,B01110000,
|
||||
#endif
|
||||
B00111111,B11110000,B00000000,B00111111,B11110000,
|
||||
B00001111,B11000000,B00000000,B00001111,B11000000,
|
||||
B00000111,B10000000,B00000000,B00000111,B10000000,
|
||||
B00000011,B00000000,B00000000,B00000011,B00000000
|
||||
};
|
||||
|
||||
#elif HOTENDS == 3
|
||||
|
||||
#define STATUS_HEATERS_WIDTH 60
|
||||
|
||||
const unsigned char status_heaters_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111100,B11110000,
|
||||
B00111011,B01110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,
|
||||
B00111011,B01110000,B00000000,B00111010,B11110000,B00000000,B00111111,B01110000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011110,B11100000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011101,B11100000,
|
||||
B00111011,B01110000,B00000000,B00111110,B11110000,B00000000,B00111011,B11110000,
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111000,B01110000,
|
||||
#else
|
||||
B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,
|
||||
B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,
|
||||
B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,
|
||||
B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,
|
||||
B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,
|
||||
B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,
|
||||
B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,
|
||||
#endif
|
||||
B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,
|
||||
B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,
|
||||
B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,
|
||||
B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
|
||||
};
|
||||
|
||||
#elif HOTENDS == 4
|
||||
|
||||
#define STATUS_HEATERS_WIDTH 84
|
||||
|
||||
const unsigned char status_heaters_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,
|
||||
B00111011,B01110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,
|
||||
B00111011,B01110000,B00000000,B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,
|
||||
B00111011,B01110000,B00000000,B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,
|
||||
#else
|
||||
B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,
|
||||
B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,
|
||||
B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,
|
||||
B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,
|
||||
B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,
|
||||
B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,
|
||||
B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,
|
||||
#endif
|
||||
B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,
|
||||
B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,
|
||||
B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,
|
||||
B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
|
||||
};
|
||||
|
||||
#else // HOTENDS > 4
|
||||
|
||||
#define STATUS_HEATERS_WIDTH 108
|
||||
|
||||
const unsigned char status_heaters_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,
|
||||
B00111011,B01110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,
|
||||
B00111011,B01110000,B00000000,B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,
|
||||
B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,
|
||||
B00111011,B01110000,B00000000,B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,
|
||||
B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,
|
||||
#else
|
||||
B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111000,B01110000,
|
||||
B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B11110000,
|
||||
B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,B00000000,B00111000,B11110000,
|
||||
B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,B00000000,B00011111,B01100000,
|
||||
B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,B00000000,B00011111,B01100000,
|
||||
B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,
|
||||
B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,B00000000,B00111100,B11110000,
|
||||
#endif
|
||||
B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,
|
||||
B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,
|
||||
B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,
|
||||
B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
|
||||
};
|
||||
|
||||
#endif // HOTENDS
|
||||
|
||||
#endif // !HAS_HEATED_BED || HOTENDS > 3
|
||||
119
Marlin/src/lcd/dogm/status/cooler.h
Normal file
119
Marlin/src/lcd/dogm/status/cooler.h
Normal file
@@ -0,0 +1,119 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
//
|
||||
// lcd/dogm/status/cooler.h - Status Screen Laser Cooler bitmaps
|
||||
//
|
||||
#if HAS_COOLER
|
||||
|
||||
#define STATUS_COOLER_WIDTH 22
|
||||
|
||||
const unsigned char status_cooler_bmp2[] PROGMEM = {
|
||||
B00000001,B00000000,B10000000,
|
||||
B00000001,B00100100,B10010000,
|
||||
B00000101,B01000010,B10100000,
|
||||
B00000011,B10000001,B11000000,
|
||||
B00001111,B11101111,B11110000,
|
||||
B00000011,B10000001,B11000000,
|
||||
B00000101,B01000010,B10100000,
|
||||
B00001001,B00001000,B10010000,
|
||||
B00000001,B00001000,B00000000,
|
||||
B00000000,B01001001,B00000000,
|
||||
B00000000,B00101010,B00000000,
|
||||
B00000000,B00011100,B00000000,
|
||||
B00000001,B11111111,B11000000,
|
||||
B00000000,B00011100,B00000000,
|
||||
B00000000,B00101010,B00000000,
|
||||
B00000000,B01001001,B00000000
|
||||
};
|
||||
const unsigned char status_cooler_bmp1[] PROGMEM = {
|
||||
B00000001,B00000000,B10000000,
|
||||
B00000001,B00100100,B10010000,
|
||||
B00000101,B01000010,B10100000,
|
||||
B00000010,B10000001,B01000000,
|
||||
B00001100,B01110110,B00110000,
|
||||
B00000010,B10000001,B01000000,
|
||||
B00000101,B01000010,B10100000,
|
||||
B00001001,B00001000,B10010000,
|
||||
B00000001,B00001000,B00000000,
|
||||
B00000000,B01001001,B00000000,
|
||||
B00000000,B00101010,B00000000,
|
||||
B00000000,B00010100,B00000000,
|
||||
B00000001,B11100011,B11000000,
|
||||
B00000000,B00010100,B00000000,
|
||||
B00000000,B00101010,B00000000,
|
||||
B00000000,B01001001,B00000000
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#if ENABLED(LASER_COOLANT_FLOW_METER)
|
||||
|
||||
#define STATUS_FLOWMETER_WIDTH 24
|
||||
|
||||
const unsigned char status_flowmeter_bmp2[] PROGMEM = {
|
||||
B00000000,B01111110,B00000000,
|
||||
B00000001,B10000001,B10000000,
|
||||
B00000010,B00011000,B01000000,
|
||||
B00000100,B00011000,B00100000,
|
||||
B00001000,B00011000,B00010000,
|
||||
B00001000,B00011000,B00010000,
|
||||
B00010000,B00011000,B00001000,
|
||||
B00010000,B00011000,B00001000,
|
||||
B00010111,B11111111,B11101000,
|
||||
B00010111,B11111111,B11101000,
|
||||
B00010000,B00011000,B00001000,
|
||||
B00010000,B00011000,B00001000,
|
||||
B00001000,B00011000,B00010000,
|
||||
B00001000,B00011000,B00010000,
|
||||
B00000100,B00011000,B00100000,
|
||||
B00000010,B00011000,B01000000,
|
||||
B00000001,B10000001,B10000000,
|
||||
B00000000,B01111110,B00000000,
|
||||
B00000000,B00011000,B00000000,
|
||||
B00000111,B11111111,B11100000
|
||||
};
|
||||
const unsigned char status_flowmeter_bmp1[] PROGMEM = {
|
||||
B00000000,B01111110,B00000000,
|
||||
B00000001,B10000001,B10000000,
|
||||
B00000010,B00000000,B01000000,
|
||||
B00000101,B00000000,B10100000,
|
||||
B00001011,B10000001,B11010000,
|
||||
B00001001,B11000011,B10010000,
|
||||
B00010000,B11100111,B00001000,
|
||||
B00010000,B01111110,B00001000,
|
||||
B00010000,B00111100,B00001000,
|
||||
B00010000,B00111100,B00001000,
|
||||
B00010000,B01111110,B00001000,
|
||||
B00010000,B11100111,B00001000,
|
||||
B00001001,B11000011,B10010000,
|
||||
B00001011,B10000001,B11010000,
|
||||
B00000101,B00000000,B10100000,
|
||||
B00000010,B00000000,B01000000,
|
||||
B00000001,B10000001,B10000000,
|
||||
B00000000,B01111110,B00000000,
|
||||
B00000000,B00011000,B00000000,
|
||||
B00000111,B11111111,B11100000
|
||||
};
|
||||
|
||||
#endif
|
||||
123
Marlin/src/lcd/dogm/status/cutter.h
Normal file
123
Marlin/src/lcd/dogm/status/cutter.h
Normal file
@@ -0,0 +1,123 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
//
|
||||
// lcd/dogm/status/cutter.h - Status Screen Laser / Spindle bitmaps
|
||||
//
|
||||
|
||||
#define STATUS_CUTTER_WIDTH 24
|
||||
#define STATUS_CUTTER_X 80
|
||||
|
||||
#if ENABLED(LASER_FEATURE)
|
||||
#ifdef STATUS_CUTTER_ANIM
|
||||
const unsigned char status_cutter_on_bmp[] PROGMEM = {
|
||||
B00000000,B00100100,B00000000,
|
||||
B00000000,B01100110,B00000000,
|
||||
B00000000,B11000011,B00000000,
|
||||
B00000001,B10011001,B10000000,
|
||||
B00000011,B00100100,B11000000,
|
||||
B00000000,B01000010,B00000000,
|
||||
B00000000,B01000010,B00000000,
|
||||
B00000011,B00100100,B11000000,
|
||||
B00000001,B10011001,B10000000,
|
||||
B00000000,B11000011,B00000000,
|
||||
B00000000,B01100110,B00000000,
|
||||
B00000000,B00100100,B00000000
|
||||
};
|
||||
const unsigned char status_cutter_bmp[] PROGMEM = {
|
||||
B00000000,B00100100,B00000000,
|
||||
B00000000,B01100110,B00000000,
|
||||
B00000000,B00000000,B00000000,
|
||||
B00000001,B00000000,B10000000,
|
||||
B00000011,B00000000,B11000000,
|
||||
B00000000,B00011000,B00000000,
|
||||
B00000000,B00011000,B00000000,
|
||||
B00000011,B00000000,B11000000,
|
||||
B00000001,B00000000,B10000000,
|
||||
B00000000,B00000000,B00000000,
|
||||
B00000000,B01100110,B00000000,
|
||||
B00000000,B00100100,B00000000
|
||||
};
|
||||
#else
|
||||
const unsigned char status_cutter_bmp[] PROGMEM = {
|
||||
B00000000,B00100100,B00000000,
|
||||
B00000000,B01100110,B00000000,
|
||||
B00000000,B11000011,B00000000,
|
||||
B00000001,B10000001,B10000000,
|
||||
B00000011,B00000000,B11000000,
|
||||
B00000000,B00000000,B00000000,
|
||||
B00000000,B00000000,B00000000,
|
||||
B00000011,B00000000,B11000000,
|
||||
B00000001,B10000001,B10000000,
|
||||
B00000000,B11000011,B00000000,
|
||||
B00000000,B01100110,B00000000,
|
||||
B00000000,B00100100,B00000000
|
||||
};
|
||||
#endif
|
||||
#else
|
||||
#ifdef STATUS_CUTTER_ANIM
|
||||
const unsigned char status_cutter_on_bmp[] PROGMEM = {
|
||||
B00000001,B11111110,B10000000,
|
||||
B00000000,B11000000,B00000000,
|
||||
B00000001,B10000000,B10000000,
|
||||
B00000001,B00000000,B10000000,
|
||||
B00000001,B11111100,B10000000,
|
||||
B00000000,B11100000,B00000000,
|
||||
B00000001,B11000000,B10000000,
|
||||
B00000000,B10000001,B00000000,
|
||||
B00000000,B01111010,B00000000,
|
||||
B00000000,B00110100,B00000000,
|
||||
B00000000,B00011000,B00000000,
|
||||
B00000000,B00000000,B00000000
|
||||
};
|
||||
const unsigned char status_cutter_bmp[] PROGMEM = {
|
||||
B00000001,B11111110,B10000000,
|
||||
B00000000,B11000000,B00000000,
|
||||
B00000001,B10000000,B10000000,
|
||||
B00000001,B00000000,B10000000,
|
||||
B00000001,B11111100,B10000000,
|
||||
B00000000,B11100000,B00000000,
|
||||
B00000001,B11000000,B10000000,
|
||||
B00000000,B10000001,B00000000,
|
||||
B00000000,B01111010,B00000000,
|
||||
B00000000,B00110100,B00000000,
|
||||
B00000000,B00011000,B00000000,
|
||||
B00000000,B00000000,B00000000
|
||||
};
|
||||
#else
|
||||
const unsigned char status_cutter_bmp[] PROGMEM = {
|
||||
B00000001,B11000010,B10000000,
|
||||
B00000001,B00011100,B10000000,
|
||||
B00000000,B11100001,B00000000,
|
||||
B00000001,B00001110,B10000000,
|
||||
B00000001,B01110000,B10000000,
|
||||
B00000000,B10000111,B10000000,
|
||||
B00000001,B00111111,B10000000,
|
||||
B00000000,B11111111,B00000000,
|
||||
B00000000,B01111110,B00000000,
|
||||
B00000000,B00111100,B00000000,
|
||||
B00000000,B00011000,B00000000,
|
||||
B00000000,B00000000,B00000000
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
443
Marlin/src/lcd/dogm/status/fan.h
Normal file
443
Marlin/src/lcd/dogm/status/fan.h
Normal file
@@ -0,0 +1,443 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
//
|
||||
// lcd/dogm/status/fan.h - Status Screen Fan bitmaps
|
||||
//
|
||||
|
||||
#undef STATUS_FAN_WIDTH
|
||||
#define STATUS_FAN_WIDTH 20
|
||||
|
||||
#if STATUS_FAN_FRAMES <= 2
|
||||
|
||||
#define STATUS_FAN_Y 2
|
||||
|
||||
#if ENABLED(STATUS_ALT_FAN_BITMAP)
|
||||
|
||||
const unsigned char status_fan0_bmp[] PROGMEM = {
|
||||
B00000001,B11111110,B00000000,
|
||||
B00000110,B00000001,B10000000,
|
||||
B00001000,B11111100,B01000000,
|
||||
B00010000,B11111100,B00100000,
|
||||
B00010000,B01111000,B00100000,
|
||||
B00100000,B00110000,B00010000,
|
||||
B00101100,B00000000,B11010000,
|
||||
B00101110,B00110001,B11010000,
|
||||
B00101111,B01111011,B11010000,
|
||||
B00101111,B01111011,B11010000,
|
||||
B00101110,B00110001,B11010000,
|
||||
B00101100,B00000000,B11010000,
|
||||
B00100000,B00110000,B00010000,
|
||||
B00010000,B01111000,B00100000,
|
||||
B00010000,B11111100,B00100000,
|
||||
B00001000,B11111100,B01000000,
|
||||
B00000110,B00000001,B10000000,
|
||||
B00000001,B11111110,B00000000
|
||||
};
|
||||
|
||||
#if STATUS_FAN_FRAMES == 2
|
||||
const unsigned char status_fan1_bmp[] PROGMEM = {
|
||||
B00000001,B11111110,B00000000,
|
||||
B00000110,B00000001,B10000000,
|
||||
B00001001,B10000110,B01000000,
|
||||
B00010011,B10000111,B00100000,
|
||||
B00010111,B10000111,B10100000,
|
||||
B00101111,B10000111,B11010000,
|
||||
B00101111,B00000011,B11010000,
|
||||
B00100000,B00110000,B00010000,
|
||||
B00100000,B01111000,B00010000,
|
||||
B00100000,B01111000,B00010000,
|
||||
B00100000,B00110000,B00010000,
|
||||
B00101111,B00000011,B11010000,
|
||||
B00101111,B10000111,B11010000,
|
||||
B00010111,B10000111,B10100000,
|
||||
B00010011,B10000111,B00100000,
|
||||
B00001001,B10000110,B01000000,
|
||||
B00000110,B00000001,B10000000,
|
||||
B00000001,B11111110,B00000000
|
||||
};
|
||||
#endif
|
||||
|
||||
#else // !STATUS_ALT_FAN_BITMAP
|
||||
|
||||
const unsigned char status_fan0_bmp[] PROGMEM = {
|
||||
B00111111,B11111111,B11110000,
|
||||
B00111000,B00000000,B01110000,
|
||||
B00110000,B11111100,B00110000,
|
||||
B00100000,B11111100,B00010000,
|
||||
B00100000,B01111000,B00010000,
|
||||
B00100000,B00110000,B00010000,
|
||||
B00101100,B00000000,B11010000,
|
||||
B00101110,B00110001,B11010000,
|
||||
B00101111,B01111011,B11010000,
|
||||
B00101111,B01111011,B11010000,
|
||||
B00101110,B00110001,B11010000,
|
||||
B00101100,B00000000,B11010000,
|
||||
B00100000,B00110000,B00010000,
|
||||
B00100000,B01111000,B00010000,
|
||||
B00100000,B11111100,B00010000,
|
||||
B00110000,B11111100,B00110000,
|
||||
B00111000,B00000000,B01110000,
|
||||
B00111111,B11111111,B11110000
|
||||
};
|
||||
|
||||
#if STATUS_FAN_FRAMES == 2
|
||||
const unsigned char status_fan1_bmp[] PROGMEM = {
|
||||
B00111111,B11111111,B11110000,
|
||||
B00111000,B00000000,B01110000,
|
||||
B00110001,B10000110,B00110000,
|
||||
B00100011,B10000111,B00010000,
|
||||
B00100111,B10000111,B10010000,
|
||||
B00101111,B10000111,B11010000,
|
||||
B00101111,B00000011,B11010000,
|
||||
B00100000,B00110000,B00010000,
|
||||
B00100000,B01111000,B00010000,
|
||||
B00100000,B01111000,B00010000,
|
||||
B00100000,B00110000,B00010000,
|
||||
B00101111,B00000011,B11010000,
|
||||
B00101111,B10000111,B11010000,
|
||||
B00100111,B10000111,B10010000,
|
||||
B00100011,B10000111,B00010000,
|
||||
B00110001,B10000110,B00110000,
|
||||
B00111000,B00000000,B01110000,
|
||||
B00111111,B11111111,B11110000
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif // !STATUS_ALT_FAN_BITMAP
|
||||
|
||||
#elif STATUS_FAN_FRAMES == 3
|
||||
|
||||
#if ENABLED(STATUS_ALT_FAN_BITMAP)
|
||||
|
||||
const unsigned char status_fan0_bmp[] PROGMEM = {
|
||||
B00000001,B11111111,B00000000,
|
||||
B00000110,B00000000,B11000000,
|
||||
B00001001,B00000001,B00100000,
|
||||
B00010111,B10000011,B11010000,
|
||||
B00010111,B10000011,B11010000,
|
||||
B00101111,B11000111,B11101000,
|
||||
B00100111,B11000111,B11001000,
|
||||
B00100001,B11111111,B00001000,
|
||||
B00100000,B01111100,B00001000,
|
||||
B00100000,B01111100,B00001000,
|
||||
B00100000,B01111100,B00001000,
|
||||
B00100001,B11111111,B00001000,
|
||||
B00100111,B11000111,B11001000,
|
||||
B00101111,B11000111,B11101000,
|
||||
B00010111,B10000011,B11010000,
|
||||
B00010111,B10000011,B11010000,
|
||||
B00001001,B00000001,B00100000,
|
||||
B00000110,B00000000,B11000000,
|
||||
B00000001,B11111111,B00000000
|
||||
};
|
||||
const unsigned char status_fan1_bmp[] PROGMEM = {
|
||||
B00000001,B11111111,B00000000,
|
||||
B00000110,B00110000,B11000000,
|
||||
B00001001,B11110000,B00100000,
|
||||
B00010001,B11110000,B00010000,
|
||||
B00010000,B11110000,B00010000,
|
||||
B00100000,B11110000,B01101000,
|
||||
B00100000,B00110001,B11101000,
|
||||
B00100000,B00111001,B11101000,
|
||||
B00100000,B01111111,B11111000,
|
||||
B00111111,B11111111,B11111000,
|
||||
B00111111,B11111100,B00001000,
|
||||
B00101111,B00111000,B00001000,
|
||||
B00101110,B00011000,B00001000,
|
||||
B00101100,B00011110,B00001000,
|
||||
B00010000,B00011110,B00010000,
|
||||
B00010000,B00011111,B00010000,
|
||||
B00001000,B00011111,B00100000,
|
||||
B00000110,B00011000,B11000000,
|
||||
B00000001,B11111111,B00000000
|
||||
};
|
||||
const unsigned char status_fan2_bmp[] PROGMEM = {
|
||||
B00000001,B11111111,B00000000,
|
||||
B00000110,B00011000,B11000000,
|
||||
B00001000,B00011111,B00100000,
|
||||
B00010000,B00011111,B10010000,
|
||||
B00010100,B00011111,B00010000,
|
||||
B00101110,B00011110,B00001000,
|
||||
B00101111,B00011100,B00001000,
|
||||
B00101111,B10111000,B00001000,
|
||||
B00111111,B11111100,B00001000,
|
||||
B00111111,B11111111,B11111000,
|
||||
B00100000,B01111111,B11111000,
|
||||
B00100000,B00111011,B11101000,
|
||||
B00100000,B01110001,B11101000,
|
||||
B00100000,B11110000,B11101000,
|
||||
B00010001,B11110000,B01010000,
|
||||
B00010011,B11110000,B00010000,
|
||||
B00001001,B11110000,B00100000,
|
||||
B00000110,B00110000,B11000000,
|
||||
B00000001,B11111111,B00000000
|
||||
};
|
||||
|
||||
#else // !STATUS_ALT_FAN_BITMAP
|
||||
|
||||
const unsigned char status_fan0_bmp[] PROGMEM = {
|
||||
B00111111,B11111111,B11111000,
|
||||
B00111110,B00000000,B11111000,
|
||||
B00111001,B00000001,B00111000,
|
||||
B00110111,B10000011,B11011000,
|
||||
B00110111,B10000011,B11011000,
|
||||
B00101111,B11000111,B11101000,
|
||||
B00100111,B11000111,B11001000,
|
||||
B00100001,B11111111,B00001000,
|
||||
B00100000,B01111100,B00001000,
|
||||
B00100000,B01111100,B00001000,
|
||||
B00100000,B01111100,B00001000,
|
||||
B00100001,B11111111,B00001000,
|
||||
B00100111,B11000111,B11001000,
|
||||
B00101111,B11000111,B11101000,
|
||||
B00110111,B10000011,B11011000,
|
||||
B00110111,B10000011,B11011000,
|
||||
B00111001,B00000001,B00111000,
|
||||
B00111110,B00000000,B11111000,
|
||||
B00111111,B11111111,B11111000
|
||||
};
|
||||
const unsigned char status_fan1_bmp[] PROGMEM = {
|
||||
B00111111,B11111111,B11111000,
|
||||
B00111110,B00110000,B11111000,
|
||||
B00111001,B11110000,B00111000,
|
||||
B00110001,B11110000,B00011000,
|
||||
B00110000,B11110000,B00011000,
|
||||
B00100000,B11110000,B01101000,
|
||||
B00100000,B00110001,B11101000,
|
||||
B00100000,B00111001,B11101000,
|
||||
B00100000,B01111111,B11111000,
|
||||
B00111111,B11111111,B11111000,
|
||||
B00111111,B11111100,B00001000,
|
||||
B00101111,B00111000,B00001000,
|
||||
B00101110,B00011000,B00001000,
|
||||
B00101100,B00011110,B00001000,
|
||||
B00110000,B00011110,B00011000,
|
||||
B00110000,B00011111,B00011000,
|
||||
B00111000,B00011111,B00111000,
|
||||
B00111110,B00011000,B11111000,
|
||||
B00111111,B11111111,B11111000
|
||||
};
|
||||
const unsigned char status_fan2_bmp[] PROGMEM = {
|
||||
B00111111,B11111111,B11111000,
|
||||
B00111110,B00011000,B11111000,
|
||||
B00111000,B00011111,B00111000,
|
||||
B00110000,B00011111,B10011000,
|
||||
B00110100,B00011111,B00011000,
|
||||
B00101110,B00011110,B00001000,
|
||||
B00101111,B00011100,B00001000,
|
||||
B00101111,B10111000,B00001000,
|
||||
B00111111,B11111100,B00001000,
|
||||
B00111111,B11111111,B11111000,
|
||||
B00100000,B01111111,B11111000,
|
||||
B00100000,B00111011,B11101000,
|
||||
B00100000,B01110001,B11101000,
|
||||
B00100000,B11110000,B11101000,
|
||||
B00110001,B11110000,B01011000,
|
||||
B00110011,B11110000,B00011000,
|
||||
B00111001,B11110000,B00111000,
|
||||
B00111110,B00110000,B11111000,
|
||||
B00111111,B11111111,B11111000
|
||||
};
|
||||
|
||||
#endif // !STATUS_ALT_FAN_BITMAP
|
||||
|
||||
#elif STATUS_FAN_FRAMES == 4
|
||||
|
||||
#if ENABLED(STATUS_ALT_FAN_BITMAP)
|
||||
|
||||
const unsigned char status_fan0_bmp[] PROGMEM = {
|
||||
B00000001,B11111111,B00000000,
|
||||
B00000110,B00000000,B11000000,
|
||||
B00001000,B00111111,B00100000,
|
||||
B00010000,B01111110,B00010000,
|
||||
B00010000,B01111100,B00010000,
|
||||
B00101000,B01111100,B00001000,
|
||||
B00101100,B00111000,B00001000,
|
||||
B00101111,B00111001,B11001000,
|
||||
B00101111,B11111111,B11101000,
|
||||
B00101111,B11000111,B11101000,
|
||||
B00101111,B11111111,B11101000,
|
||||
B00100111,B00111001,B11101000,
|
||||
B00100000,B00111000,B01101000,
|
||||
B00100000,B01111100,B00101000,
|
||||
B00010000,B01111100,B00010000,
|
||||
B00010000,B11111100,B00010000,
|
||||
B00001001,B11111000,B00100000,
|
||||
B00000110,B00000000,B11000000,
|
||||
B00000001,B11111111,B00000000
|
||||
};
|
||||
const unsigned char status_fan1_bmp[] PROGMEM = {
|
||||
B00000001,B11111111,B00000000,
|
||||
B00000110,B00000000,B11000000,
|
||||
B00001000,B00001111,B00100000,
|
||||
B00010100,B00011111,B11010000,
|
||||
B00010110,B00011111,B10010000,
|
||||
B00101111,B00011111,B00001000,
|
||||
B00101111,B10011110,B00001000,
|
||||
B00101111,B11111100,B00001000,
|
||||
B00101111,B11011100,B00001000,
|
||||
B00100111,B11101111,B11001000,
|
||||
B00100000,B01110111,B11101000,
|
||||
B00100000,B01111111,B11101000,
|
||||
B00100000,B11110011,B11101000,
|
||||
B00100001,B11110001,B11101000,
|
||||
B00010011,B11110000,B11010000,
|
||||
B00010111,B11110000,B01010000,
|
||||
B00001001,B11100000,B00100000,
|
||||
B00000110,B00000000,B11000000,
|
||||
B00000001,B11111111,B00000000
|
||||
};
|
||||
const unsigned char status_fan2_bmp[] PROGMEM = {
|
||||
B00000001,B11111111,B00000000,
|
||||
B00000110,B10000000,B11000000,
|
||||
B00001001,B10000000,B00100000,
|
||||
B00010111,B10000001,B11010000,
|
||||
B00010111,B11000011,B11010000,
|
||||
B00100111,B11000111,B11101000,
|
||||
B00100011,B11000111,B11111000,
|
||||
B00100001,B11111111,B10001000,
|
||||
B00100000,B01101100,B00001000,
|
||||
B00100000,B01101100,B00001000,
|
||||
B00100000,B01101100,B00001000,
|
||||
B00100011,B11111111,B00001000,
|
||||
B00111111,B11000111,B10001000,
|
||||
B00101111,B11000111,B11001000,
|
||||
B00010111,B10000111,B11010000,
|
||||
B00010111,B00000011,B11010000,
|
||||
B00001000,B00000011,B00100000,
|
||||
B00000110,B00000010,B11000000,
|
||||
B00000001,B11111111,B00000000
|
||||
};
|
||||
const unsigned char status_fan3_bmp[] PROGMEM = {
|
||||
B00000001,B11111111,B00000000,
|
||||
B00000110,B00000000,B11000000,
|
||||
B00001001,B11110000,B00100000,
|
||||
B00010001,B11100000,B00010000,
|
||||
B00010001,B11100000,B00010000,
|
||||
B00100001,B11100001,B11101000,
|
||||
B00100000,B11110011,B11101000,
|
||||
B00100000,B01111111,B11101000,
|
||||
B00100000,B01110111,B11101000,
|
||||
B00101000,B11101110,B00101000,
|
||||
B00101111,B11011100,B00001000,
|
||||
B00101111,B11111100,B00001000,
|
||||
B00101111,B10011110,B00001000,
|
||||
B00101111,B00001111,B00001000,
|
||||
B00010000,B00001111,B00010000,
|
||||
B00010000,B00001111,B00010000,
|
||||
B00001000,B00011111,B00100000,
|
||||
B00000110,B00000000,B11000000,
|
||||
B00000001,B11111111,B00000000
|
||||
};
|
||||
|
||||
#else // !STATUS_ALT_FAN_BITMAP
|
||||
|
||||
const unsigned char status_fan0_bmp[] PROGMEM = {
|
||||
B00111111,B11111111,B11111000,
|
||||
B00111110,B00000000,B11111000,
|
||||
B00111000,B00111111,B00111000,
|
||||
B00110000,B01111110,B00011000,
|
||||
B00110000,B01111100,B00011000,
|
||||
B00101000,B01111100,B00001000,
|
||||
B00101100,B00111000,B00001000,
|
||||
B00101111,B00111001,B11001000,
|
||||
B00101111,B11111111,B11101000,
|
||||
B00101111,B11000111,B11101000,
|
||||
B00101111,B11111111,B11101000,
|
||||
B00100111,B00111001,B11101000,
|
||||
B00100000,B00111000,B01101000,
|
||||
B00100000,B01111100,B00101000,
|
||||
B00110000,B01111100,B00011000,
|
||||
B00110000,B11111100,B00011000,
|
||||
B00111001,B11111000,B00111000,
|
||||
B00111110,B00000000,B11111000,
|
||||
B00111111,B11111111,B11111000
|
||||
};
|
||||
const unsigned char status_fan1_bmp[] PROGMEM = {
|
||||
B00111111,B11111111,B11111000,
|
||||
B00111110,B00000000,B11111000,
|
||||
B00111000,B00001111,B00111000,
|
||||
B00110100,B00011111,B11011000,
|
||||
B00110110,B00011111,B10011000,
|
||||
B00101111,B00011111,B00001000,
|
||||
B00101111,B10011110,B00001000,
|
||||
B00101111,B11111100,B00001000,
|
||||
B00101111,B11011100,B00001000,
|
||||
B00100111,B11101111,B11001000,
|
||||
B00100000,B01110111,B11101000,
|
||||
B00100000,B01111111,B11101000,
|
||||
B00100000,B11110011,B11101000,
|
||||
B00100001,B11110001,B11101000,
|
||||
B00110011,B11110000,B11011000,
|
||||
B00110111,B11110000,B01011000,
|
||||
B00111001,B11100000,B00111000,
|
||||
B00111110,B00000000,B11111000,
|
||||
B00111111,B11111111,B11111000
|
||||
};
|
||||
const unsigned char status_fan2_bmp[] PROGMEM = {
|
||||
B00111111,B11111111,B11111000,
|
||||
B00111110,B10000000,B11111000,
|
||||
B00111001,B10000000,B00111000,
|
||||
B00110111,B10000001,B11011000,
|
||||
B00110111,B11000011,B11011000,
|
||||
B00100111,B11000111,B11101000,
|
||||
B00100011,B11000111,B11111000,
|
||||
B00100001,B11111111,B10001000,
|
||||
B00100000,B01101100,B00001000,
|
||||
B00100000,B01101100,B00001000,
|
||||
B00100000,B01101100,B00001000,
|
||||
B00100011,B11111111,B00001000,
|
||||
B00111111,B11000111,B10001000,
|
||||
B00101111,B11000111,B11001000,
|
||||
B00110111,B10000111,B11011000,
|
||||
B00110111,B00000011,B11011000,
|
||||
B00111000,B00000011,B00111000,
|
||||
B00111110,B00000010,B11111000,
|
||||
B00111111,B11111111,B11111000
|
||||
};
|
||||
const unsigned char status_fan3_bmp[] PROGMEM = {
|
||||
B00111111,B11111111,B11111000,
|
||||
B00111110,B00000000,B11111000,
|
||||
B00111001,B11110000,B00111000,
|
||||
B00110001,B11100000,B00011000,
|
||||
B00110001,B11100000,B00011000,
|
||||
B00100001,B11100001,B11101000,
|
||||
B00100000,B11110011,B11101000,
|
||||
B00100000,B01111111,B11101000,
|
||||
B00100000,B01110111,B11101000,
|
||||
B00101000,B11101110,B00101000,
|
||||
B00101111,B11011100,B00001000,
|
||||
B00101111,B11111100,B00001000,
|
||||
B00101111,B10011110,B00001000,
|
||||
B00101111,B00001111,B00001000,
|
||||
B00110000,B00001111,B00011000,
|
||||
B00110000,B00001111,B00011000,
|
||||
B00111000,B00011111,B00111000,
|
||||
B00111110,B00000000,B11111000,
|
||||
B00111111,B11111111,B11111000
|
||||
};
|
||||
|
||||
#endif // !STATUS_ALT_FAN_BITMAP
|
||||
|
||||
#endif
|
||||
759
Marlin/src/lcd/dogm/status/hotend.h
Normal file
759
Marlin/src/lcd/dogm/status/hotend.h
Normal file
@@ -0,0 +1,759 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
//
|
||||
// lcd/dogm/status/hotend.h - Status Screen Hotends bitmaps
|
||||
//
|
||||
|
||||
#if HAS_MMU
|
||||
#define STATUS_HOTEND_BITMAPS EXTRUDERS
|
||||
#define MAX_HOTEND_BITMAPS 8
|
||||
#else
|
||||
#define STATUS_HOTEND_BITMAPS HOTENDS
|
||||
#define MAX_HOTEND_BITMAPS 5
|
||||
#endif
|
||||
#if STATUS_HOTEND_BITMAPS > MAX_HOTEND_BITMAPS
|
||||
#undef STATUS_HOTEND_BITMAPS
|
||||
#define STATUS_HOTEND_BITMAPS MAX_HOTEND_BITMAPS
|
||||
#endif
|
||||
|
||||
#define STATUS_HOTEND1_WIDTH 16
|
||||
|
||||
#if STATUS_HOTEND_BITMAPS == 1 || defined(STATUS_HOTEND_NUMBERLESS)
|
||||
|
||||
const unsigned char status_hotend_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
#if defined(STATUS_HOTEND_INVERTED) && !defined(STATUS_HOTEND_ANIM)
|
||||
B00100000,B00010000,
|
||||
B00100000,B00010000,
|
||||
B00100000,B00010000,
|
||||
B00010000,B00100000,
|
||||
B00010000,B00100000,
|
||||
B00100000,B00010000,
|
||||
B00100000,B00010000,
|
||||
B00110000,B00110000,
|
||||
B00001000,B01000000,
|
||||
B00000100,B10000000,
|
||||
#else
|
||||
B00111111,B11110000,
|
||||
B00111111,B11110000,
|
||||
B00111111,B11110000,
|
||||
B00011111,B11100000,
|
||||
B00011111,B11100000,
|
||||
B00111111,B11110000,
|
||||
B00111111,B11110000,
|
||||
B00111111,B11110000,
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
#endif
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#ifdef STATUS_HOTEND_ANIM
|
||||
|
||||
const unsigned char status_hotend_b_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00100000,B00010000,
|
||||
B00100000,B00010000,
|
||||
B00100000,B00010000,
|
||||
B00010000,B00100000,
|
||||
B00010000,B00100000,
|
||||
B00100000,B00010000,
|
||||
B00100000,B00010000,
|
||||
B00110000,B00110000,
|
||||
B00001000,B01000000,
|
||||
B00000100,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#elif STATUS_HOTEND_BITMAPS > 1
|
||||
|
||||
#ifdef STATUS_HOTEND_ANIM
|
||||
|
||||
const unsigned char status_hotend1_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00111111,B11110000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B11110000,
|
||||
B00111011,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00011011,B01100000,
|
||||
B00011011,B01100000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#else
|
||||
B00111110,B11110000,
|
||||
B00111100,B11110000,
|
||||
B00011010,B11100000,
|
||||
B00011110,B11100000,
|
||||
B00111110,B11110000,
|
||||
B00111110,B11110000,
|
||||
B00111110,B11110000,
|
||||
#endif
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
const unsigned char status_hotend1_b_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00100000,B00010000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00100011,B00010000,
|
||||
B00100100,B10010000,
|
||||
B00010100,B10100000,
|
||||
B00010100,B10100000,
|
||||
B00100100,B10010000,
|
||||
B00100100,B10010000,
|
||||
B00110011,B00110000,
|
||||
#else
|
||||
B00100001,B00010000,
|
||||
B00100011,B00010000,
|
||||
B00010101,B00100000,
|
||||
B00010001,B00100000,
|
||||
B00100001,B00010000,
|
||||
B00100001,B00010000,
|
||||
B00110001,B00110000,
|
||||
#endif
|
||||
B00001000,B01000000,
|
||||
B00000100,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
const unsigned char status_hotend2_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00111111,B11110000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111110,B11110000,
|
||||
B00111100,B11110000,
|
||||
B00011010,B11100000,
|
||||
B00011110,B11100000,
|
||||
B00111110,B11110000,
|
||||
B00111110,B11110000,
|
||||
B00111110,B11110000,
|
||||
#else
|
||||
B00111100,B11110000,
|
||||
B00111011,B01110000,
|
||||
B00011111,B01100000,
|
||||
B00011110,B11100000,
|
||||
B00111101,B11110000,
|
||||
B00111011,B11110000,
|
||||
B00111000,B01110000,
|
||||
#endif
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
const unsigned char status_hotend2_b_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00100000,B00010000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00100001,B00010000,
|
||||
B00100011,B00010000,
|
||||
B00010101,B00100000,
|
||||
B00010001,B00100000,
|
||||
B00100001,B00010000,
|
||||
B00100001,B00010000,
|
||||
B00110001,B00110000,
|
||||
#else
|
||||
B00100011,B00010000,
|
||||
B00100100,B10010000,
|
||||
B00010000,B10100000,
|
||||
B00010001,B00100000,
|
||||
B00100010,B00010000,
|
||||
B00100100,B00010000,
|
||||
B00110111,B10110000,
|
||||
#endif
|
||||
B00001000,B01000000,
|
||||
B00000100,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
const unsigned char status_hotend1_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B11110000,
|
||||
B00111011,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00011011,B01100000,
|
||||
B00011011,B01100000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#else
|
||||
B00111110,B11110000,
|
||||
B00111100,B11110000,
|
||||
B00111010,B11110000,
|
||||
B00011110,B11100000,
|
||||
B00011110,B11100000,
|
||||
B00111110,B11110000,
|
||||
B00111110,B11110000,
|
||||
#endif
|
||||
B00111111,B11110000,
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
const unsigned char status_hotend2_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111110,B11110000,
|
||||
B00111100,B11110000,
|
||||
B00111010,B11110000,
|
||||
B00011110,B11100000,
|
||||
B00011110,B11100000,
|
||||
B00111110,B11110000,
|
||||
B00111110,B11110000,
|
||||
#else
|
||||
B00111100,B11110000,
|
||||
B00111011,B01110000,
|
||||
B00111111,B01110000,
|
||||
B00011110,B11100000,
|
||||
B00011101,B11100000,
|
||||
B00111011,B11110000,
|
||||
B00111000,B01110000,
|
||||
#endif
|
||||
B00111111,B11110000,
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#if STATUS_HOTEND_BITMAPS >= 3
|
||||
|
||||
#ifdef STATUS_HOTEND_ANIM
|
||||
|
||||
const unsigned char status_hotend3_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00111111,B11110000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B11110000,
|
||||
B00111011,B01110000,
|
||||
B00011111,B01100000,
|
||||
B00011110,B11100000,
|
||||
B00111101,B11110000,
|
||||
B00111011,B11110000,
|
||||
B00111000,B01110000,
|
||||
#else
|
||||
B00111100,B11110000,
|
||||
B00111011,B01110000,
|
||||
B00011111,B01100000,
|
||||
B00011100,B11100000,
|
||||
B00111111,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#endif
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
const unsigned char status_hotend3_b_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00100000,B00010000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00100011,B00010000,
|
||||
B00100100,B10010000,
|
||||
B00010000,B10100000,
|
||||
B00010001,B00100000,
|
||||
B00100010,B00010000,
|
||||
B00100100,B00010000,
|
||||
B00110111,B10110000,
|
||||
#else
|
||||
B00100011,B00010000,
|
||||
B00100100,B10010000,
|
||||
B00010000,B10100000,
|
||||
B00010011,B00100000,
|
||||
B00100000,B10010000,
|
||||
B00100100,B10010000,
|
||||
B00110011,B00110000,
|
||||
#endif
|
||||
B00001000,B01000000,
|
||||
B00000100,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
const unsigned char status_hotend3_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B11110000,
|
||||
B00111011,B01110000,
|
||||
B00111111,B01110000,
|
||||
B00011110,B11100000,
|
||||
B00011101,B11100000,
|
||||
B00111011,B11110000,
|
||||
B00111000,B01110000,
|
||||
#else
|
||||
B00111100,B11110000,
|
||||
B00111011,B01110000,
|
||||
B00111111,B01110000,
|
||||
B00011100,B11100000,
|
||||
B00011111,B01100000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#endif
|
||||
B00111111,B11110000,
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if STATUS_HOTEND_BITMAPS >= 4
|
||||
|
||||
#ifdef STATUS_HOTEND_ANIM
|
||||
|
||||
const unsigned char status_hotend4_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00111111,B11110000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B11110000,
|
||||
B00111011,B01110000,
|
||||
B00011111,B01100000,
|
||||
B00011100,B11100000,
|
||||
B00111111,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#else
|
||||
B00111011,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00011011,B01100000,
|
||||
B00011011,B01100000,
|
||||
B00111000,B00110000,
|
||||
B00111111,B01110000,
|
||||
B00111111,B01110000,
|
||||
#endif
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
const unsigned char status_hotend4_b_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00100000,B00010000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00100011,B00010000,
|
||||
B00100100,B10010000,
|
||||
B00010000,B10100000,
|
||||
B00010011,B00100000,
|
||||
B00100000,B10010000,
|
||||
B00100100,B10010000,
|
||||
B00110011,B00110000,
|
||||
#else
|
||||
B00100100,B10010000,
|
||||
B00100100,B10010000,
|
||||
B00010100,B10100000,
|
||||
B00010100,B10100000,
|
||||
B00100111,B11010000,
|
||||
B00100000,B10010000,
|
||||
B00110000,B10110000,
|
||||
#endif
|
||||
B00001000,B01000000,
|
||||
B00000100,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
const unsigned char status_hotend4_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B11110000,
|
||||
B00111011,B01110000,
|
||||
B00111111,B01110000,
|
||||
B00011100,B11100000,
|
||||
B00011111,B01100000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#else
|
||||
B00111011,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00011011,B01100000,
|
||||
B00011000,B00100000,
|
||||
B00111111,B01110000,
|
||||
B00111111,B01110000,
|
||||
#endif
|
||||
B00111111,B11110000,
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if STATUS_HOTEND_BITMAPS >= 5
|
||||
|
||||
#ifdef STATUS_HOTEND_ANIM
|
||||
|
||||
const unsigned char status_hotend5_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00111111,B11110000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111011,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00011011,B01100000,
|
||||
B00011011,B01100000,
|
||||
B00111000,B00110000,
|
||||
B00111111,B01110000,
|
||||
B00111111,B01110000,
|
||||
#else
|
||||
B00111000,B01110000,
|
||||
B00111011,B11110000,
|
||||
B00011000,B11100000,
|
||||
B00011111,B01100000,
|
||||
B00111111,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#endif
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
const unsigned char status_hotend5_b_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00100000,B00010000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00100100,B10010000,
|
||||
B00100100,B10010000,
|
||||
B00010100,B10100000,
|
||||
B00010100,B10100000,
|
||||
B00100111,B11010000,
|
||||
B00100000,B10010000,
|
||||
B00110000,B10110000,
|
||||
#else
|
||||
B00100111,B10010000,
|
||||
B00100100,B00010000,
|
||||
B00010111,B00100000,
|
||||
B00010000,B10100000,
|
||||
B00100000,B10010000,
|
||||
B00100100,B10010000,
|
||||
B00110011,B00110000,
|
||||
#endif
|
||||
B00001000,B01000000,
|
||||
B00000100,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
const unsigned char status_hotend5_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111011,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00011011,B01100000,
|
||||
B00011000,B00100000,
|
||||
B00111111,B01110000,
|
||||
B00111111,B01110000,
|
||||
#else
|
||||
B00111000,B01110000,
|
||||
B00111011,B11110000,
|
||||
B00111000,B11110000,
|
||||
B00011111,B01100000,
|
||||
B00011111,B01100000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#endif
|
||||
B00111111,B11110000,
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if STATUS_HOTEND_BITMAPS >= 6
|
||||
|
||||
#ifdef STATUS_HOTEND_ANIM
|
||||
|
||||
const unsigned char status_hotend6_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00111111,B11110000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111000,B01110000,
|
||||
B00111011,B11110000,
|
||||
B00011000,B11100000,
|
||||
B00011111,B01100000,
|
||||
B00111111,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#else
|
||||
B00111100,B01110000,
|
||||
B00111011,B11110000,
|
||||
B00011011,B11100000,
|
||||
B00011000,B11100000,
|
||||
B00111011,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#endif
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
const unsigned char status_hotend6_b_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00100000,B00010000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00100111,B10010000,
|
||||
B00100100,B00010000,
|
||||
B00010111,B00100000,
|
||||
B00010000,B10100000,
|
||||
B00100000,B10010000,
|
||||
B00100100,B10010000,
|
||||
B00110011,B00110000,
|
||||
#else
|
||||
B00100011,B10010000,
|
||||
B00100100,B00010000,
|
||||
B00010100,B00100000,
|
||||
B00010111,B00100000,
|
||||
B00100100,B10010000,
|
||||
B00100100,B10010000,
|
||||
B00110011,B00110000,
|
||||
#endif
|
||||
B00001000,B01000000,
|
||||
B00000100,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
const unsigned char status_hotend6_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111000,B01110000,
|
||||
B00111011,B11110000,
|
||||
B00111000,B11110000,
|
||||
B00011111,B01100000,
|
||||
B00011111,B01100000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#else
|
||||
B00111100,B01110000,
|
||||
B00111011,B11110000,
|
||||
B00111011,B11110000,
|
||||
B00011000,B11100000,
|
||||
B00011011,B01100000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#endif
|
||||
B00111111,B11110000,
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if STATUS_HOTEND_BITMAPS >= 7
|
||||
|
||||
#ifdef STATUS_HOTEND_ANIM
|
||||
|
||||
const unsigned char status_hotend7_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00111111,B11110000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B01110000,
|
||||
B00111011,B11110000,
|
||||
B00011011,B11100000,
|
||||
B00011000,B11100000,
|
||||
B00111011,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#else
|
||||
B00111000,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00011111,B01100000,
|
||||
B00011110,B11100000,
|
||||
B00111110,B11110000,
|
||||
B00111101,B11110000,
|
||||
B00111101,B11110000,
|
||||
#endif
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
const unsigned char status_hotend7_b_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00100000,B00010000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00100011,B10010000,
|
||||
B00100100,B00010000,
|
||||
B00010100,B00100000,
|
||||
B00010111,B00100000,
|
||||
B00100100,B10010000,
|
||||
B00100100,B10010000,
|
||||
B00110011,B00110000,
|
||||
#else
|
||||
B00100111,B10010000,
|
||||
B00100100,B10010000,
|
||||
B00010000,B10100000,
|
||||
B00010001,B00100000,
|
||||
B00100001,B00010000,
|
||||
B00100010,B00010000,
|
||||
B00110010,B00110000,
|
||||
#endif
|
||||
B00001000,B01000000,
|
||||
B00000100,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
const unsigned char status_hotend7_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111100,B01110000,
|
||||
B00111011,B11110000,
|
||||
B00111011,B11110000,
|
||||
B00011000,B11100000,
|
||||
B00011011,B01100000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#else
|
||||
B00111000,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00111111,B01110000,
|
||||
B00011110,B11100000,
|
||||
B00011110,B11100000,
|
||||
B00111101,B11110000,
|
||||
B00111101,B11110000,
|
||||
#endif
|
||||
B00111111,B11110000,
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if STATUS_HOTEND_BITMAPS >= 8
|
||||
|
||||
#ifdef STATUS_HOTEND_ANIM
|
||||
|
||||
const unsigned char status_hotend8_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00111111,B11110000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111000,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00011111,B01100000,
|
||||
B00011110,B11100000,
|
||||
B00111110,B11110000,
|
||||
B00111101,B11110000,
|
||||
B00111101,B11110000,
|
||||
#else
|
||||
B00111100,B11110000,
|
||||
B00111011,B01110000,
|
||||
B00011011,B01100000,
|
||||
B00011100,B11100000,
|
||||
B00111011,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#endif
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
const unsigned char status_hotend8_b_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
B00100000,B00010000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00100111,B10010000,
|
||||
B00100100,B10010000,
|
||||
B00010000,B10100000,
|
||||
B00010001,B00100000,
|
||||
B00100001,B00010000,
|
||||
B00100010,B00010000,
|
||||
B00110010,B00110000,
|
||||
#else
|
||||
B00100011,B00010000,
|
||||
B00100100,B10010000,
|
||||
B00010100,B10100000,
|
||||
B00010011,B00100000,
|
||||
B00100100,B10010000,
|
||||
B00100100,B10010000,
|
||||
B00110011,B00110000,
|
||||
#endif
|
||||
B00001000,B01000000,
|
||||
B00000100,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
const unsigned char status_hotend8_a_bmp[] PROGMEM = {
|
||||
B00011111,B11100000,
|
||||
#if LCD_FIRST_TOOL == 0
|
||||
B00111000,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00111111,B01110000,
|
||||
B00011110,B11100000,
|
||||
B00011110,B11100000,
|
||||
B00111101,B11110000,
|
||||
B00111101,B11110000,
|
||||
#else
|
||||
B00111100,B11110000,
|
||||
B00111011,B01110000,
|
||||
B00111011,B01110000,
|
||||
B00011100,B11100000,
|
||||
B00011011,B01100000,
|
||||
B00111011,B01110000,
|
||||
B00111100,B11110000,
|
||||
#endif
|
||||
B00111111,B11110000,
|
||||
B00001111,B11000000,
|
||||
B00000111,B10000000,
|
||||
B00000011,B00000000
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
550
Marlin/src/lcd/dogm/status_screen_DOGM.cpp
Executable file → Normal file
550
Marlin/src/lcd/dogm/status_screen_DOGM.cpp
Executable file → Normal file
@@ -16,7 +16,7 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -27,27 +27,44 @@
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if HAS_GRAPHICAL_LCD && DISABLED(LIGHTWEIGHT_UI)
|
||||
#if HAS_MARLINUI_U8GLIB && DISABLED(LIGHTWEIGHT_UI)
|
||||
|
||||
#include "dogm_Statusscreen.h"
|
||||
#include "ultralcd_DOGM.h"
|
||||
#include "../ultralcd.h"
|
||||
#include "marlinui_DOGM.h"
|
||||
#include "../marlinui.h"
|
||||
#include "../lcdprint.h"
|
||||
#include "../../libs/numtostr.h"
|
||||
|
||||
#include "../../module/motion.h"
|
||||
#include "../../module/temperature.h"
|
||||
|
||||
#include "../../gcode/parser.h" // for units (and volumetric)
|
||||
|
||||
#if ENABLED(LCD_SHOW_E_TOTAL)
|
||||
#include "../../MarlinCore.h" // for printingIsActive()
|
||||
#endif
|
||||
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
||||
#include "../../feature/filwidth.h"
|
||||
#include "../../module/planner.h"
|
||||
#include "../../gcode/parser.h"
|
||||
#endif
|
||||
|
||||
#if HAS_CUTTER
|
||||
#include "../../feature/spindle_laser.h"
|
||||
#endif
|
||||
|
||||
#if EITHER(HAS_COOLER, LASER_COOLANT_FLOW_METER)
|
||||
#include "../../feature/cooler.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(I2C_AMMETER)
|
||||
#include "../../feature/ammeter.h"
|
||||
#endif
|
||||
|
||||
#if HAS_POWER_MONITOR
|
||||
#include "../../feature/power_monitor.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
#include "../../sd/cardreader.h"
|
||||
#endif
|
||||
@@ -56,77 +73,164 @@
|
||||
#include "../../module/printcounter.h"
|
||||
#endif
|
||||
|
||||
#if DUAL_MIXING_EXTRUDER
|
||||
#if HAS_DUAL_MIXING
|
||||
#include "../../feature/mixing.h"
|
||||
#endif
|
||||
|
||||
#define X_LABEL_POS 3
|
||||
#define X_VALUE_POS 11
|
||||
#define XYZ_SPACING 37
|
||||
|
||||
#define X_LABEL_POS_IN (X_LABEL_POS - 2)
|
||||
#define X_VALUE_POS_IN (X_VALUE_POS - 5)
|
||||
#define XYZ_SPACING_IN (XYZ_SPACING + 9)
|
||||
|
||||
#define XYZ_BASELINE (30 + INFO_FONT_ASCENT)
|
||||
#define EXTRAS_BASELINE (40 + INFO_FONT_ASCENT)
|
||||
#define STATUS_BASELINE (LCD_PIXEL_HEIGHT - INFO_FONT_DESCENT)
|
||||
|
||||
#if ANIM_HBCC
|
||||
enum HeatBits : uint8_t {
|
||||
HEATBIT_HOTEND,
|
||||
HEATBIT_BED = HOTENDS,
|
||||
HEATBIT_CHAMBER,
|
||||
HEATBIT_CUTTER
|
||||
DRAWBIT_HOTEND,
|
||||
DRAWBIT_BED = HOTENDS,
|
||||
DRAWBIT_CHAMBER,
|
||||
DRAWBIT_CUTTER
|
||||
};
|
||||
IF<(HEATBIT_CUTTER > 7), uint16_t, uint8_t>::type heat_bits;
|
||||
IF<(DRAWBIT_CUTTER > 7), uint16_t, uint8_t>::type draw_bits;
|
||||
#endif
|
||||
|
||||
#if ANIM_HOTEND
|
||||
#define HOTEND_ALT(N) TEST(heat_bits, HEATBIT_HOTEND + N)
|
||||
#define HOTEND_ALT(N) TEST(draw_bits, DRAWBIT_HOTEND + N)
|
||||
#else
|
||||
#define HOTEND_ALT(N) false
|
||||
#endif
|
||||
#if ANIM_BED
|
||||
#define BED_ALT() TEST(heat_bits, HEATBIT_BED)
|
||||
#define BED_ALT() TEST(draw_bits, DRAWBIT_BED)
|
||||
#else
|
||||
#define BED_ALT() false
|
||||
#endif
|
||||
#if ANIM_CHAMBER
|
||||
#define CHAMBER_ALT() TEST(heat_bits, HEATBIT_CHAMBER)
|
||||
#define CHAMBER_ALT() TEST(draw_bits, DRAWBIT_CHAMBER)
|
||||
#else
|
||||
#define CHAMBER_ALT() false
|
||||
#endif
|
||||
#if ANIM_CUTTER
|
||||
#define CUTTER_ALT(N) TEST(heat_bits, HEATBIT_CUTTER)
|
||||
#define CUTTER_ALT(N) TEST(draw_bits, DRAWBIT_CUTTER)
|
||||
#else
|
||||
#define CUTTER_ALT() false
|
||||
#endif
|
||||
|
||||
#if DO_DRAW_HOTENDS
|
||||
#define MAX_HOTEND_DRAW _MIN(HOTENDS, ((LCD_PIXEL_WIDTH - (STATUS_LOGO_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8) / (STATUS_HEATERS_XSPACE)))
|
||||
#endif
|
||||
|
||||
#if EITHER(DO_DRAW_BED, DO_DRAW_HOTENDS)
|
||||
#define STATUS_HEATERS_BOT (STATUS_HEATERS_Y + STATUS_HEATERS_HEIGHT - 1)
|
||||
#endif
|
||||
|
||||
#if HAS_POWER_MONITOR
|
||||
|
||||
void display_power_monitor(const uint8_t x, const uint8_t y) {
|
||||
|
||||
lcd_moveto(x, y);
|
||||
|
||||
#if HAS_POWER_MONITOR_WATTS
|
||||
const bool wflag = power_monitor.power_display_enabled();
|
||||
#endif
|
||||
#if ENABLED(POWER_MONITOR_CURRENT)
|
||||
const bool iflag = power_monitor.current_display_enabled();
|
||||
#endif
|
||||
#if ENABLED(POWER_MONITOR_VOLTAGE)
|
||||
const bool vflag = power_monitor.voltage_display_enabled();
|
||||
#endif
|
||||
|
||||
#if HAS_POWER_MONITOR_WATTS
|
||||
// Cycle between current, voltage, and power
|
||||
if (ELAPSED(millis(), power_monitor.display_item_ms)) {
|
||||
power_monitor.display_item_ms = millis() + 1000UL;
|
||||
++power_monitor.display_item;
|
||||
}
|
||||
#elif ENABLED(POWER_MONITOR_CURRENT)
|
||||
power_monitor.display_item = 0;
|
||||
#elif ENABLED(POWER_MONITOR_VOLTAGE)
|
||||
power_monitor.display_item = 1;
|
||||
#endif
|
||||
|
||||
// ensure we have the right one selected for display
|
||||
for (uint8_t i = 0; i < 3; i++) {
|
||||
#if ENABLED(POWER_MONITOR_CURRENT)
|
||||
if (power_monitor.display_item == 0 && !iflag) ++power_monitor.display_item;
|
||||
#endif
|
||||
#if ENABLED(POWER_MONITOR_VOLTAGE)
|
||||
if (power_monitor.display_item == 1 && !vflag) ++power_monitor.display_item;
|
||||
#endif
|
||||
#if HAS_POWER_MONITOR_WATTS
|
||||
if (power_monitor.display_item == 2 && !wflag) ++power_monitor.display_item;
|
||||
#endif
|
||||
if (power_monitor.display_item >= 3) power_monitor.display_item = 0;
|
||||
}
|
||||
|
||||
switch (power_monitor.display_item) {
|
||||
#if ENABLED(POWER_MONITOR_CURRENT) // Current
|
||||
case 0: if (iflag) power_monitor.draw_current(); break;
|
||||
#endif
|
||||
#if ENABLED(POWER_MONITOR_VOLTAGE) // Voltage
|
||||
case 1: if (vflag) power_monitor.draw_voltage(); break;
|
||||
#endif
|
||||
#if HAS_POWER_MONITOR_WATTS // Power
|
||||
case 2: if (wflag) power_monitor.draw_power(); break;
|
||||
#endif
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#define PROGRESS_BAR_X 54
|
||||
#define PROGRESS_BAR_Y (EXTRAS_BASELINE + 1)
|
||||
#define PROGRESS_BAR_WIDTH (LCD_PIXEL_WIDTH - PROGRESS_BAR_X)
|
||||
|
||||
FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, const uint8_t ty) {
|
||||
const char *str = i16tostr3rj(temp);
|
||||
const uint8_t len = str[0] != ' ' ? 3 : str[1] != ' ' ? 2 : 1;
|
||||
lcd_put_u8str(tx - len * (INFO_FONT_WIDTH) / 2 + 1, ty, &str[3-len]);
|
||||
lcd_put_wchar(LCD_STR_DEGREE[0]);
|
||||
FORCE_INLINE void _draw_centered_temp(const celsius_t temp, const uint8_t tx, const uint8_t ty) {
|
||||
if (temp < 0)
|
||||
lcd_put_u8str(tx - 3 * (INFO_FONT_WIDTH) / 2 + 1, ty, "err");
|
||||
else {
|
||||
const char *str = i16tostr3rj(temp);
|
||||
const uint8_t len = str[0] != ' ' ? 3 : str[1] != ' ' ? 2 : 1;
|
||||
lcd_put_u8str(tx - len * (INFO_FONT_WIDTH) / 2 + 1, ty, &str[3-len]);
|
||||
lcd_put_wchar(LCD_STR_DEGREE[0]);
|
||||
}
|
||||
}
|
||||
|
||||
#if DO_DRAW_FLOWMETER
|
||||
FORCE_INLINE void _draw_centered_flowrate(const float flow, const uint8_t tx, const uint8_t ty) {
|
||||
const char *str = ftostr11ns(flow);
|
||||
const uint8_t len = str[0] != ' ' ? 3 : str[1] != ' ' ? 2 : 1;
|
||||
lcd_put_u8str(tx - len * (INFO_FONT_WIDTH) / 2 + 1, ty, &str[3-len]);
|
||||
lcd_put_u8str("L");
|
||||
}
|
||||
#endif
|
||||
|
||||
#if DO_DRAW_AMMETER
|
||||
FORCE_INLINE void _draw_centered_current(const float current, const uint8_t tx, const uint8_t ty) {
|
||||
const char *str = ftostr31ns(current);
|
||||
const uint8_t len = str[0] != ' ' ? 3 : str[1] != ' ' ? 2 : 1;
|
||||
lcd_put_u8str(tx - len * (INFO_FONT_WIDTH) / 2 + 1, ty, &str[3-len]);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if DO_DRAW_HOTENDS
|
||||
|
||||
// Draw hotend bitmap with current and target temperatures
|
||||
FORCE_INLINE void _draw_hotend_status(const heater_ind_t heater, const bool blink) {
|
||||
FORCE_INLINE void _draw_hotend_status(const heater_id_t heater_id, const bool blink) {
|
||||
#if !HEATER_IDLE_HANDLER
|
||||
UNUSED(blink);
|
||||
#endif
|
||||
|
||||
const bool isHeat = HOTEND_ALT(heater);
|
||||
const bool isHeat = HOTEND_ALT(heater_id);
|
||||
|
||||
const uint8_t tx = STATUS_HOTEND_TEXT_X(heater);
|
||||
const uint8_t tx = STATUS_HOTEND_TEXT_X(heater_id);
|
||||
|
||||
const float temp = thermalManager.degHotend(heater),
|
||||
target = thermalManager.degTargetHotend(heater);
|
||||
const celsius_t temp = thermalManager.wholeDegHotend(heater_id),
|
||||
target = thermalManager.degTargetHotend(heater_id);
|
||||
|
||||
#if DISABLED(STATUS_HOTEND_ANIM)
|
||||
#define STATIC_HOTEND true
|
||||
@@ -136,24 +240,20 @@ FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, cons
|
||||
#define HOTEND_DOT false
|
||||
#endif
|
||||
|
||||
#if ANIM_HOTEND && BOTH(STATUS_HOTEND_INVERTED, STATUS_HOTEND_NUMBERLESS)
|
||||
#define OFF_BMP(N) status_hotend_b_bmp
|
||||
#define ON_BMP(N) status_hotend_a_bmp
|
||||
#elif ANIM_HOTEND && DISABLED(STATUS_HOTEND_INVERTED) && ENABLED(STATUS_HOTEND_NUMBERLESS)
|
||||
#define OFF_BMP(N) status_hotend_a_bmp
|
||||
#define ON_BMP(N) status_hotend_b_bmp
|
||||
#elif ANIM_HOTEND && ENABLED(STATUS_HOTEND_INVERTED)
|
||||
#define OFF_BMP(N) status_hotend##N##_b_bmp
|
||||
#define ON_BMP(N) status_hotend##N##_a_bmp
|
||||
#if ENABLED(STATUS_HOTEND_NUMBERLESS)
|
||||
#define OFF_BMP(N) TERN(STATUS_HOTEND_INVERTED, status_hotend_b_bmp, status_hotend_a_bmp)
|
||||
#define ON_BMP(N) TERN(STATUS_HOTEND_INVERTED, status_hotend_a_bmp, status_hotend_b_bmp)
|
||||
#else
|
||||
#define OFF_BMP(N) status_hotend##N##_a_bmp
|
||||
#define ON_BMP(N) status_hotend##N##_b_bmp
|
||||
#define OFF_BMP(N) TERN(STATUS_HOTEND_INVERTED, status_hotend##N##_b_bmp, status_hotend##N##_a_bmp)
|
||||
#define ON_BMP(N) TERN(STATUS_HOTEND_INVERTED, status_hotend##N##_a_bmp, status_hotend##N##_b_bmp)
|
||||
#endif
|
||||
|
||||
#if STATUS_HOTEND_BITMAPS > 1
|
||||
static const unsigned char* const status_hotend_gfx[STATUS_HOTEND_BITMAPS] PROGMEM = ARRAY_N(STATUS_HOTEND_BITMAPS, OFF_BMP(1), OFF_BMP(2), OFF_BMP(3), OFF_BMP(4), OFF_BMP(5), OFF_BMP(6));
|
||||
#define _OFF_BMP(N) OFF_BMP(N),
|
||||
#define _ON_BMP(N) ON_BMP(N),
|
||||
static const unsigned char* const status_hotend_gfx[STATUS_HOTEND_BITMAPS] PROGMEM = { REPEAT_1(STATUS_HOTEND_BITMAPS, _OFF_BMP) };
|
||||
#if ANIM_HOTEND
|
||||
static const unsigned char* const status_hotend_on_gfx[STATUS_HOTEND_BITMAPS] PROGMEM = ARRAY_N(STATUS_HOTEND_BITMAPS, ON_BMP(1), ON_BMP(2), ON_BMP(3), ON_BMP(4), ON_BMP(5), ON_BMP(6));
|
||||
static const unsigned char* const status_hotend_on_gfx[STATUS_HOTEND_BITMAPS] PROGMEM = { REPEAT_1(STATUS_HOTEND_BITMAPS, _ON_BMP) };
|
||||
#define HOTEND_BITMAP(N,S) (unsigned char*)pgm_read_ptr((S) ? &status_hotend_on_gfx[(N) % (STATUS_HOTEND_BITMAPS)] : &status_hotend_gfx[(N) % (STATUS_HOTEND_BITMAPS)])
|
||||
#else
|
||||
#define HOTEND_BITMAP(N,S) (unsigned char*)pgm_read_ptr(&status_hotend_gfx[(N) % (STATUS_HOTEND_BITMAPS)])
|
||||
@@ -164,43 +264,45 @@ FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, cons
|
||||
#define HOTEND_BITMAP(N,S) status_hotend_a_bmp
|
||||
#endif
|
||||
|
||||
if (PAGE_CONTAINS(STATUS_HEATERS_Y, STATUS_HEATERS_BOT)) {
|
||||
#if DISABLED(STATUS_COMBINE_HEATERS)
|
||||
|
||||
#define BAR_TALL (STATUS_HEATERS_HEIGHT - 2)
|
||||
if (PAGE_CONTAINS(STATUS_HEATERS_Y, STATUS_HEATERS_BOT)) {
|
||||
|
||||
const float prop = target - 20,
|
||||
perc = prop > 0 && temp >= 20 ? (temp - 20) / prop : 0;
|
||||
uint8_t tall = uint8_t(perc * BAR_TALL + 0.5f);
|
||||
NOMORE(tall, BAR_TALL);
|
||||
#define BAR_TALL (STATUS_HEATERS_HEIGHT - 2)
|
||||
|
||||
const float prop = target - 20,
|
||||
perc = prop > 0 && temp >= 20 ? (temp - 20) / prop : 0;
|
||||
uint8_t tall = uint8_t(perc * BAR_TALL + 0.5f);
|
||||
NOMORE(tall, BAR_TALL);
|
||||
|
||||
#if ANIM_HOTEND
|
||||
// Draw hotend bitmap, either whole or split by the heating percent
|
||||
const uint8_t hx = STATUS_HOTEND_X(heater),
|
||||
bw = STATUS_HOTEND_BYTEWIDTH(heater);
|
||||
const uint8_t hx = STATUS_HOTEND_X(heater_id),
|
||||
bw = STATUS_HOTEND_BYTEWIDTH(heater_id);
|
||||
#if ENABLED(STATUS_HEAT_PERCENT)
|
||||
if (isHeat && tall <= BAR_TALL) {
|
||||
const uint8_t ph = STATUS_HEATERS_HEIGHT - 1 - tall;
|
||||
u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, ph, HOTEND_BITMAP(heater, false));
|
||||
u8g.drawBitmapP(hx, STATUS_HEATERS_Y + ph, bw, tall + 1, HOTEND_BITMAP(heater, true) + ph * bw);
|
||||
u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, ph, HOTEND_BITMAP(TERN(HAS_MMU, active_extruder, heater_id), false));
|
||||
u8g.drawBitmapP(hx, STATUS_HEATERS_Y + ph, bw, tall + 1, HOTEND_BITMAP(TERN(HAS_MMU, active_extruder, heater_id), true) + ph * bw);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, STATUS_HEATERS_HEIGHT, HOTEND_BITMAP(heater, isHeat));
|
||||
#endif
|
||||
u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, STATUS_HEATERS_HEIGHT, HOTEND_BITMAP(TERN(HAS_MMU, active_extruder, heater_id), isHeat));
|
||||
|
||||
} // PAGE_CONTAINS
|
||||
} // PAGE_CONTAINS
|
||||
|
||||
#endif // !STATUS_COMBINE_HEATERS
|
||||
|
||||
if (PAGE_UNDER(7)) {
|
||||
#if HEATER_IDLE_HANDLER
|
||||
const bool dodraw = (blink || !thermalManager.hotend_idle[heater].timed_out);
|
||||
const bool dodraw = (blink || !thermalManager.heater_idle[heater_id].timed_out);
|
||||
#else
|
||||
constexpr bool dodraw = true;
|
||||
#endif
|
||||
if (dodraw) _draw_centered_temp(target + 0.5, tx, 7);
|
||||
if (dodraw) _draw_centered_temp(target, tx, 7);
|
||||
}
|
||||
|
||||
if (PAGE_CONTAINS(28 - INFO_FONT_ASCENT, 28 - 1))
|
||||
_draw_centered_temp(temp + 0.5f, tx, 28);
|
||||
_draw_centered_temp(temp, tx, 28);
|
||||
|
||||
if (STATIC_HOTEND && HOTEND_DOT && PAGE_CONTAINS(17, 19)) {
|
||||
u8g.setColorIndex(0); // set to white on black
|
||||
@@ -222,8 +324,8 @@ FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, cons
|
||||
|
||||
const uint8_t tx = STATUS_BED_TEXT_X;
|
||||
|
||||
const float temp = thermalManager.degBed(),
|
||||
target = thermalManager.degTargetBed();
|
||||
const celsius_t temp = thermalManager.wholeDegBed(),
|
||||
target = thermalManager.degTargetBed();
|
||||
|
||||
#if ENABLED(STATUS_HEAT_PERCENT) || DISABLED(STATUS_BED_ANIM)
|
||||
const bool isHeat = BED_ALT();
|
||||
@@ -265,15 +367,15 @@ FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, cons
|
||||
|
||||
if (PAGE_UNDER(7)) {
|
||||
#if HEATER_IDLE_HANDLER
|
||||
const bool dodraw = (blink || !thermalManager.bed_idle.timed_out);
|
||||
const bool dodraw = (blink || !thermalManager.heater_idle[thermalManager.IDLE_INDEX_BED].timed_out);
|
||||
#else
|
||||
constexpr bool dodraw = true;
|
||||
#endif
|
||||
if (dodraw) _draw_centered_temp(target + 0.5, tx, 7);
|
||||
if (dodraw) _draw_centered_temp(target, tx, 7);
|
||||
}
|
||||
|
||||
if (PAGE_CONTAINS(28 - INFO_FONT_ASCENT, 28 - 1))
|
||||
_draw_centered_temp(temp + 0.5f, tx, 28);
|
||||
_draw_centered_temp(temp, tx, 28);
|
||||
|
||||
if (STATIC_BED && BED_DOT && PAGE_CONTAINS(17, 19)) {
|
||||
u8g.setColorIndex(0); // set to white on black
|
||||
@@ -286,18 +388,36 @@ FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, cons
|
||||
#endif // DO_DRAW_BED
|
||||
|
||||
#if DO_DRAW_CHAMBER
|
||||
|
||||
FORCE_INLINE void _draw_chamber_status() {
|
||||
#if HAS_HEATED_CHAMBER
|
||||
if (PAGE_UNDER(7))
|
||||
_draw_centered_temp(thermalManager.degTargetChamber() + 0.5f, STATUS_CHAMBER_TEXT_X, 7);
|
||||
_draw_centered_temp(thermalManager.degTargetChamber(), STATUS_CHAMBER_TEXT_X, 7);
|
||||
#endif
|
||||
|
||||
if (PAGE_CONTAINS(28 - INFO_FONT_ASCENT, 28 - 1))
|
||||
_draw_centered_temp(thermalManager.degChamber() + 0.5f, STATUS_CHAMBER_TEXT_X, 28);
|
||||
_draw_centered_temp(thermalManager.wholeDegChamber(), STATUS_CHAMBER_TEXT_X, 28);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // DO_DRAW_CHAMBER
|
||||
#if DO_DRAW_COOLER
|
||||
FORCE_INLINE void _draw_cooler_status() {
|
||||
if (PAGE_CONTAINS(28 - INFO_FONT_ASCENT, 28 - 1))
|
||||
_draw_centered_temp(thermalManager.wholeDegCooler(), STATUS_COOLER_TEXT_X, 28);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if DO_DRAW_FLOWMETER
|
||||
FORCE_INLINE void _draw_flowmeter_status() {
|
||||
if (PAGE_CONTAINS(28 - INFO_FONT_ASCENT, 28 - 1))
|
||||
_draw_centered_flowrate(cooler.flowrate, STATUS_FLOWMETER_TEXT_X, 28);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if DO_DRAW_AMMETER
|
||||
FORCE_INLINE void _draw_ammeter_status() {
|
||||
if (PAGE_CONTAINS(28 - INFO_FONT_ASCENT, 28 - 1))
|
||||
_draw_centered_current(ammeter.read(), STATUS_AMMETER_TEXT_X, 28);
|
||||
}
|
||||
#endif
|
||||
|
||||
//
|
||||
// Before homing, blink '123' <-> '???'.
|
||||
@@ -305,50 +425,44 @@ FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, cons
|
||||
// Homed and known, display constantly.
|
||||
//
|
||||
FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink) {
|
||||
const AxisEnum a = (
|
||||
#if ENABLED(LCD_SHOW_E_TOTAL)
|
||||
axis == E_AXIS ? X_AXIS :
|
||||
#endif
|
||||
axis
|
||||
);
|
||||
const uint8_t offs = (XYZ_SPACING) * a;
|
||||
lcd_put_wchar(X_LABEL_POS + offs, XYZ_BASELINE, axis_codes[axis]);
|
||||
lcd_moveto(X_VALUE_POS + offs, XYZ_BASELINE);
|
||||
const bool is_inch = parser.using_inch_units();
|
||||
const AxisEnum a = TERN(LCD_SHOW_E_TOTAL, axis == E_AXIS ? X_AXIS : axis, axis);
|
||||
const uint8_t offs = a * (is_inch ? XYZ_SPACING_IN : XYZ_SPACING);
|
||||
lcd_put_wchar((is_inch ? X_LABEL_POS_IN : X_LABEL_POS) + offs, XYZ_BASELINE, axis_codes[axis]);
|
||||
lcd_moveto((is_inch ? X_VALUE_POS_IN : X_VALUE_POS) + offs, XYZ_BASELINE);
|
||||
|
||||
if (blink)
|
||||
lcd_put_u8str(value);
|
||||
else {
|
||||
if (!TEST(axis_homed, axis))
|
||||
while (const char c = *value++) lcd_put_wchar(c <= '.' ? c : '?');
|
||||
else {
|
||||
#if NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING)
|
||||
if (!TEST(axis_known_position, axis))
|
||||
lcd_put_u8str_P(axis == Z_AXIS ? PSTR(" ") : PSTR(" "));
|
||||
else
|
||||
#endif
|
||||
lcd_put_u8str(value);
|
||||
}
|
||||
}
|
||||
else if (axis_should_home(axis))
|
||||
while (const char c = *value++) lcd_put_wchar(c <= '.' ? c : '?');
|
||||
else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !axis_is_trusted(axis))
|
||||
lcd_put_u8str_P(axis == Z_AXIS ? PSTR(" ") : PSTR(" "));
|
||||
else
|
||||
lcd_put_u8str(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw the Status Screen for a 128x64 DOGM (U8glib) display.
|
||||
*
|
||||
* Called as needed to update the current display stripe.
|
||||
* Use the PAGE_CONTAINS macros to avoid pointless draw calls.
|
||||
*/
|
||||
void MarlinUI::draw_status_screen() {
|
||||
constexpr int xystorage = TERN(INCH_MODE_SUPPORT, 8, 5);
|
||||
static char xstring[TERN(LCD_SHOW_E_TOTAL, 12, xystorage)], ystring[xystorage], zstring[8];
|
||||
|
||||
static char xstring[5
|
||||
#if ENABLED(LCD_SHOW_E_TOTAL)
|
||||
+ 7
|
||||
#endif
|
||||
], ystring[5], zstring[8];
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
||||
static char wstring[5], mstring[4];
|
||||
#endif
|
||||
|
||||
#if HAS_PRINT_PROGRESS
|
||||
#if DISABLED(DOGM_SD_PERCENT)
|
||||
#if DISABLED(SHOW_SD_PERCENT)
|
||||
#define _SD_INFO_X(len) (PROGRESS_BAR_X + (PROGRESS_BAR_WIDTH) / 2 - (len) * (MENU_FONT_WIDTH) / 2)
|
||||
#else
|
||||
#define _SD_INFO_X(len) (LCD_PIXEL_WIDTH - (len) * (MENU_FONT_WIDTH))
|
||||
#endif
|
||||
|
||||
#if ENABLED(DOGM_SD_PERCENT)
|
||||
#if ENABLED(SHOW_SD_PERCENT)
|
||||
static char progress_string[5];
|
||||
#endif
|
||||
static uint8_t lastElapsed = 0xFF, lastProgress = 0xFF;
|
||||
@@ -357,7 +471,7 @@ void MarlinUI::draw_status_screen() {
|
||||
#if ENABLED(SHOW_REMAINING_TIME)
|
||||
static u8g_uint_t estimation_x_pos = 0;
|
||||
static char estimation_string[10];
|
||||
#if BOTH(DOGM_SD_PERCENT, ROTATE_PROGRESS_DISPLAY)
|
||||
#if BOTH(SHOW_SD_PERCENT, ROTATE_PROGRESS_DISPLAY)
|
||||
static u8g_uint_t progress_x_pos = 0;
|
||||
static uint8_t progress_state = 0;
|
||||
static bool prev_blink = 0;
|
||||
@@ -365,44 +479,37 @@ void MarlinUI::draw_status_screen() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
const bool showxy = (true
|
||||
#if ENABLED(LCD_SHOW_E_TOTAL)
|
||||
&& !printingIsActive()
|
||||
#endif
|
||||
);
|
||||
const bool show_e_total = TERN0(LCD_SHOW_E_TOTAL, printingIsActive());
|
||||
|
||||
// At the first page, generate new display values
|
||||
if (first_page) {
|
||||
#if ANIM_HBCC
|
||||
uint8_t new_bits = 0;
|
||||
#if ANIM_HOTEND
|
||||
HOTEND_LOOP() if (thermalManager.isHeatingHotend(e)) SBI(new_bits, HEATBIT_HOTEND + e);
|
||||
#endif
|
||||
#if ANIM_BED
|
||||
if (thermalManager.isHeatingBed()) SBI(new_bits, HEATBIT_BED);
|
||||
HOTEND_LOOP() if (thermalManager.isHeatingHotend(e)) SBI(new_bits, DRAWBIT_HOTEND + e);
|
||||
#endif
|
||||
if (TERN0(ANIM_BED, thermalManager.isHeatingBed())) SBI(new_bits, DRAWBIT_BED);
|
||||
#if DO_DRAW_CHAMBER && HAS_HEATED_CHAMBER
|
||||
if (thermalManager.isHeatingChamber()) SBI(new_bits, HEATBIT_CHAMBER);
|
||||
if (thermalManager.isHeatingChamber()) SBI(new_bits, DRAWBIT_CHAMBER);
|
||||
#endif
|
||||
#if ANIM_CUTTER
|
||||
if (cutter.enabled()) SBI(new_bits, HEATBIT_CUTTER);
|
||||
#endif
|
||||
heat_bits = new_bits;
|
||||
if (TERN0(ANIM_CUTTER, cutter.enabled())) SBI(new_bits, DRAWBIT_CUTTER);
|
||||
draw_bits = new_bits;
|
||||
#endif
|
||||
|
||||
const xyz_pos_t lpos = current_position.asLogical();
|
||||
strcpy(zstring, ftostr52sp(lpos.z));
|
||||
const bool is_inch = parser.using_inch_units();
|
||||
strcpy(zstring, is_inch ? ftostr42_52(LINEAR_UNIT(lpos.z)) : ftostr52sp(lpos.z));
|
||||
|
||||
if (showxy) {
|
||||
strcpy(xstring, ftostr4sign(lpos.x));
|
||||
strcpy(ystring, ftostr4sign(lpos.y));
|
||||
}
|
||||
else {
|
||||
if (show_e_total) {
|
||||
#if ENABLED(LCD_SHOW_E_TOTAL)
|
||||
const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm
|
||||
sprintf_P(xstring, PSTR("%ld%cm"), uint32_t(_MAX(e_move_accumulator, 0.0f)) / escale, escale == 10 ? 'c' : 'm'); // 1234567mm
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
strcpy(xstring, is_inch ? ftostr53_63(LINEAR_UNIT(lpos.x)) : ftostr4sign(lpos.x));
|
||||
strcpy(ystring, is_inch ? ftostr53_63(LINEAR_UNIT(lpos.y)) : ftostr4sign(lpos.y));
|
||||
}
|
||||
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
||||
strcpy(wstring, ftostr12ns(filwidth.measured_mm));
|
||||
@@ -411,13 +518,7 @@ void MarlinUI::draw_status_screen() {
|
||||
|
||||
// Progress / elapsed / estimation updates and string formatting to avoid float math on each LCD draw
|
||||
#if HAS_PRINT_PROGRESS
|
||||
const progress_t progress =
|
||||
#if HAS_PRINT_PROGRESS_PERMYRIAD
|
||||
get_progress_permyriad()
|
||||
#else
|
||||
get_progress_percent()
|
||||
#endif
|
||||
;
|
||||
const progress_t progress = TERN(HAS_PRINT_PROGRESS_PERMYRIAD, get_progress_permyriad, get_progress_percent)();
|
||||
duration_t elapsed = print_job_timer.duration();
|
||||
const uint8_t p = progress & 0xFF, ev = elapsed.value & 0xFF;
|
||||
if (p != lastProgress) {
|
||||
@@ -425,7 +526,7 @@ void MarlinUI::draw_status_screen() {
|
||||
|
||||
progress_bar_solid_width = u8g_uint_t((PROGRESS_BAR_WIDTH - 2) * (progress / (PROGRESS_SCALE)) * 0.01f);
|
||||
|
||||
#if ENABLED(DOGM_SD_PERCENT)
|
||||
#if ENABLED(SHOW_SD_PERCENT)
|
||||
if (progress == 0) {
|
||||
progress_string[0] = '\0';
|
||||
#if ENABLED(SHOW_REMAINING_TIME)
|
||||
@@ -433,22 +534,16 @@ void MarlinUI::draw_status_screen() {
|
||||
estimation_x_pos = _SD_INFO_X(0);
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
strcpy(progress_string, (
|
||||
#if ENABLED(PRINT_PROGRESS_SHOW_DECIMALS)
|
||||
permyriadtostr4(progress)
|
||||
#else
|
||||
ui8tostr3rj(progress / (PROGRESS_SCALE))
|
||||
#endif
|
||||
));
|
||||
}
|
||||
else
|
||||
strcpy(progress_string, TERN(PRINT_PROGRESS_SHOW_DECIMALS, permyriadtostr4(progress), ui8tostr3rj(progress / (PROGRESS_SCALE))));
|
||||
|
||||
#if BOTH(SHOW_REMAINING_TIME, ROTATE_PROGRESS_DISPLAY) // Tri-state progress display mode
|
||||
progress_x_pos = _SD_INFO_X(strlen(progress_string) + 1);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
constexpr bool can_show_days = DISABLED(DOGM_SD_PERCENT) || ENABLED(ROTATE_PROGRESS_DISPLAY);
|
||||
constexpr bool can_show_days = DISABLED(SHOW_SD_PERCENT) || ENABLED(ROTATE_PROGRESS_DISPLAY);
|
||||
if (ev != lastElapsed) {
|
||||
lastElapsed = ev;
|
||||
const uint8_t len = elapsed.toDigital(elapsed_string, can_show_days && elapsed.value >= 60*60*24L);
|
||||
@@ -469,11 +564,7 @@ void MarlinUI::draw_status_screen() {
|
||||
else {
|
||||
duration_t estimation = timeval;
|
||||
const uint8_t len = estimation.toDigital(estimation_string, can_show_days && estimation.value >= 60*60*24L);
|
||||
estimation_x_pos = _SD_INFO_X(len
|
||||
#if !BOTH(DOGM_SD_PERCENT, ROTATE_PROGRESS_DISPLAY)
|
||||
+ 1
|
||||
#endif
|
||||
);
|
||||
estimation_x_pos = _SD_INFO_X(len + !BOTH(SHOW_SD_PERCENT, ROTATE_PROGRESS_DISPLAY));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -564,27 +655,62 @@ void MarlinUI::draw_status_screen() {
|
||||
// Extruders
|
||||
#if DO_DRAW_HOTENDS
|
||||
LOOP_L_N(e, MAX_HOTEND_DRAW)
|
||||
_draw_hotend_status((heater_ind_t)e, blink);
|
||||
_draw_hotend_status((heater_id_t)e, blink);
|
||||
#endif
|
||||
|
||||
// Laser / Spindle
|
||||
#if DO_DRAW_CUTTER
|
||||
if (cutter.power && PAGE_CONTAINS(STATUS_CUTTER_TEXT_Y - INFO_FONT_ASCENT, STATUS_CUTTER_TEXT_Y - 1)) {
|
||||
lcd_put_u8str(STATUS_CUTTER_TEXT_X, STATUS_CUTTER_TEXT_Y, i16tostr3rj(cutter.powerPercent(cutter.power)));
|
||||
lcd_put_wchar('%');
|
||||
if (cutter.isReady && PAGE_CONTAINS(STATUS_CUTTER_TEXT_Y - INFO_FONT_ASCENT, STATUS_CUTTER_TEXT_Y - 1)) {
|
||||
#if CUTTER_UNIT_IS(PERCENT)
|
||||
lcd_put_u8str(STATUS_CUTTER_TEXT_X, STATUS_CUTTER_TEXT_Y, cutter_power2str(cutter.unitPower));
|
||||
#elif CUTTER_UNIT_IS(RPM)
|
||||
lcd_put_u8str(STATUS_CUTTER_TEXT_X - 2, STATUS_CUTTER_TEXT_Y, ftostr51rj(float(cutter.unitPower) / 1000));
|
||||
lcd_put_wchar('K');
|
||||
#else
|
||||
lcd_put_u8str(STATUS_CUTTER_TEXT_X, STATUS_CUTTER_TEXT_Y, cutter_power2str(cutter.unitPower));
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
// Heated Bed
|
||||
#if DO_DRAW_BED
|
||||
_draw_bed_status(blink);
|
||||
// Laser Cooler
|
||||
#if DO_DRAW_COOLER
|
||||
const uint8_t coolery = STATUS_COOLER_Y(status_cooler_bmp1),
|
||||
coolerh = STATUS_COOLER_HEIGHT(status_cooler_bmp1);
|
||||
if (PAGE_CONTAINS(coolery, coolery + coolerh - 1))
|
||||
u8g.drawBitmapP(STATUS_COOLER_X, coolery, STATUS_COOLER_BYTEWIDTH, coolerh, blink && cooler.enabled ? status_cooler_bmp2 : status_cooler_bmp1);
|
||||
#endif
|
||||
|
||||
// Heated Chamber
|
||||
#if DO_DRAW_CHAMBER
|
||||
_draw_chamber_status();
|
||||
// Laser Cooler Flow Meter
|
||||
#if DO_DRAW_FLOWMETER
|
||||
const uint8_t flowmetery = STATUS_FLOWMETER_Y(status_flowmeter_bmp1),
|
||||
flowmeterh = STATUS_FLOWMETER_HEIGHT(status_flowmeter_bmp1);
|
||||
if (PAGE_CONTAINS(flowmetery, flowmetery + flowmeterh - 1))
|
||||
u8g.drawBitmapP(STATUS_FLOWMETER_X, flowmetery, STATUS_FLOWMETER_BYTEWIDTH, flowmeterh, blink && cooler.flowpulses ? status_flowmeter_bmp2 : status_flowmeter_bmp1);
|
||||
#endif
|
||||
|
||||
// Laser Ammeter
|
||||
#if DO_DRAW_AMMETER
|
||||
const uint8_t ammetery = STATUS_AMMETER_Y(status_ammeter_bmp_mA),
|
||||
ammeterh = STATUS_AMMETER_HEIGHT(status_ammeter_bmp_mA);
|
||||
if (PAGE_CONTAINS(ammetery, ammetery + ammeterh - 1))
|
||||
u8g.drawBitmapP(STATUS_AMMETER_X, ammetery, STATUS_AMMETER_BYTEWIDTH, ammeterh, (ammeter.current < 0.1f) ? status_ammeter_bmp_mA : status_ammeter_bmp_A);
|
||||
#endif
|
||||
|
||||
// Heated Bed
|
||||
TERN_(DO_DRAW_BED, _draw_bed_status(blink));
|
||||
|
||||
// Heated Chamber
|
||||
TERN_(DO_DRAW_CHAMBER, _draw_chamber_status());
|
||||
|
||||
// Cooler
|
||||
TERN_(DO_DRAW_COOLER, _draw_cooler_status());
|
||||
|
||||
// Flowmeter
|
||||
TERN_(DO_DRAW_FLOWMETER, _draw_flowmeter_status());
|
||||
|
||||
// Flowmeter
|
||||
TERN_(DO_DRAW_AMMETER, _draw_ammeter_status());
|
||||
|
||||
// Fan, if a bitmap was provided
|
||||
#if DO_DRAW_FAN
|
||||
if (PAGE_CONTAINS(STATUS_FAN_TEXT_Y - INFO_FONT_ASCENT, STATUS_FAN_TEXT_Y - 1)) {
|
||||
@@ -597,7 +723,7 @@ void MarlinUI::draw_status_screen() {
|
||||
c = '*';
|
||||
}
|
||||
#endif
|
||||
lcd_put_u8str(STATUS_FAN_TEXT_X, STATUS_FAN_TEXT_Y, i16tostr3rj(thermalManager.fanPercent(spd)));
|
||||
lcd_put_u8str(STATUS_FAN_TEXT_X, STATUS_FAN_TEXT_Y, i16tostr3rj(thermalManager.pwmToPercent(spd)));
|
||||
lcd_put_wchar(c);
|
||||
}
|
||||
}
|
||||
@@ -625,19 +751,19 @@ void MarlinUI::draw_status_screen() {
|
||||
// Progress bar frame
|
||||
//
|
||||
|
||||
if (PAGE_CONTAINS(49, 52))
|
||||
u8g.drawFrame(PROGRESS_BAR_X, 49, PROGRESS_BAR_WIDTH, 4);
|
||||
if (PAGE_CONTAINS(PROGRESS_BAR_Y, PROGRESS_BAR_Y + 3))
|
||||
u8g.drawFrame(PROGRESS_BAR_X, PROGRESS_BAR_Y, PROGRESS_BAR_WIDTH, 4);
|
||||
|
||||
//
|
||||
// Progress bar solid part
|
||||
//
|
||||
|
||||
if (PAGE_CONTAINS(50, 51)) // 50-51 (or just 50)
|
||||
u8g.drawBox(PROGRESS_BAR_X + 1, 50, progress_bar_solid_width, 2);
|
||||
if (PAGE_CONTAINS(PROGRESS_BAR_Y + 1, PROGRESS_BAR_Y + 2))
|
||||
u8g.drawBox(PROGRESS_BAR_X + 1, PROGRESS_BAR_Y + 1, progress_bar_solid_width, 2);
|
||||
|
||||
if (PAGE_CONTAINS(EXTRAS_BASELINE - INFO_FONT_ASCENT, EXTRAS_BASELINE - 1)) {
|
||||
|
||||
#if ALL(DOGM_SD_PERCENT, SHOW_REMAINING_TIME, ROTATE_PROGRESS_DISPLAY)
|
||||
#if ALL(SHOW_SD_PERCENT, SHOW_REMAINING_TIME, ROTATE_PROGRESS_DISPLAY)
|
||||
|
||||
if (prev_blink != blink) {
|
||||
prev_blink = blink;
|
||||
@@ -659,15 +785,15 @@ void MarlinUI::draw_status_screen() {
|
||||
lcd_put_u8str(elapsed_x_pos, EXTRAS_BASELINE, elapsed_string);
|
||||
}
|
||||
|
||||
#else // !DOGM_SD_PERCENT || !SHOW_REMAINING_TIME || !ROTATE_PROGRESS_DISPLAY
|
||||
#else // !SHOW_SD_PERCENT || !SHOW_REMAINING_TIME || !ROTATE_PROGRESS_DISPLAY
|
||||
|
||||
//
|
||||
// SD Percent Complete
|
||||
//
|
||||
|
||||
#if ENABLED(DOGM_SD_PERCENT)
|
||||
#if ENABLED(SHOW_SD_PERCENT)
|
||||
if (progress_string[0]) {
|
||||
lcd_put_u8str(55, 48, progress_string); // Percent complete
|
||||
lcd_put_u8str(55, EXTRAS_BASELINE, progress_string); // Percent complete
|
||||
lcd_put_wchar('%');
|
||||
}
|
||||
#endif
|
||||
@@ -685,7 +811,7 @@ void MarlinUI::draw_status_screen() {
|
||||
#endif
|
||||
lcd_put_u8str(elapsed_x_pos, EXTRAS_BASELINE, elapsed_string);
|
||||
|
||||
#endif // !DOGM_SD_PERCENT || !SHOW_REMAINING_TIME || !ROTATE_PROGRESS_DISPLAY
|
||||
#endif // !SHOW_SD_PERCENT || !SHOW_REMAINING_TIME || !ROTATE_PROGRESS_DISPLAY
|
||||
}
|
||||
|
||||
#endif // HAS_PRINT_PROGRESS
|
||||
@@ -694,7 +820,7 @@ void MarlinUI::draw_status_screen() {
|
||||
// XYZ Coordinates
|
||||
//
|
||||
|
||||
#if ENABLED(XYZ_HOLLOW_FRAME)
|
||||
#if EITHER(XYZ_NO_FRAME, XYZ_HOLLOW_FRAME)
|
||||
#define XYZ_FRAME_TOP 29
|
||||
#define XYZ_FRAME_HEIGHT INFO_FONT_ASCENT + 3
|
||||
#else
|
||||
@@ -704,54 +830,68 @@ void MarlinUI::draw_status_screen() {
|
||||
|
||||
if (PAGE_CONTAINS(XYZ_FRAME_TOP, XYZ_FRAME_TOP + XYZ_FRAME_HEIGHT - 1)) {
|
||||
|
||||
#if ENABLED(XYZ_HOLLOW_FRAME)
|
||||
u8g.drawFrame(0, XYZ_FRAME_TOP, LCD_PIXEL_WIDTH, XYZ_FRAME_HEIGHT); // 8: 29-40 7: 29-39
|
||||
#else
|
||||
u8g.drawBox(0, XYZ_FRAME_TOP, LCD_PIXEL_WIDTH, XYZ_FRAME_HEIGHT); // 8: 30-39 7: 30-37
|
||||
#if DISABLED(XYZ_NO_FRAME)
|
||||
#if ENABLED(XYZ_HOLLOW_FRAME)
|
||||
u8g.drawFrame(0, XYZ_FRAME_TOP, LCD_PIXEL_WIDTH, XYZ_FRAME_HEIGHT); // 8: 29-40 7: 29-39
|
||||
#else
|
||||
u8g.drawBox(0, XYZ_FRAME_TOP, LCD_PIXEL_WIDTH, XYZ_FRAME_HEIGHT); // 8: 30-39 7: 30-37
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (PAGE_CONTAINS(XYZ_BASELINE - (INFO_FONT_ASCENT - 1), XYZ_BASELINE)) {
|
||||
|
||||
#if DISABLED(XYZ_HOLLOW_FRAME)
|
||||
#if NONE(XYZ_NO_FRAME, XYZ_HOLLOW_FRAME)
|
||||
u8g.setColorIndex(0); // white on black
|
||||
#endif
|
||||
|
||||
#if DUAL_MIXING_EXTRUDER
|
||||
#if HAS_DUAL_MIXING
|
||||
|
||||
// Two-component mix / gradient instead of XY
|
||||
|
||||
char mixer_messages[12];
|
||||
const char *mix_label;
|
||||
char mixer_messages[15];
|
||||
PGM_P mix_label;
|
||||
#if ENABLED(GRADIENT_MIX)
|
||||
if (mixer.gradient.enabled) {
|
||||
mixer.update_mix_from_gradient();
|
||||
mix_label = "Gr";
|
||||
mix_label = PSTR("Gr");
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
mixer.update_mix_from_vtool();
|
||||
mix_label = "Mx";
|
||||
mix_label = PSTR("Mx");
|
||||
}
|
||||
sprintf_P(mixer_messages, PSTR("%s %d;%d%% "), mix_label, int(mixer.mix[0]), int(mixer.mix[1]));
|
||||
|
||||
#if GCC_VERSION <= 50000
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wformat-overflow"
|
||||
#endif
|
||||
|
||||
sprintf_P(mixer_messages, PSTR(S_FMT " %d;%d%% "), mix_label, int(mixer.mix[0]), int(mixer.mix[1]));
|
||||
lcd_put_u8str(X_LABEL_POS, XYZ_BASELINE, mixer_messages);
|
||||
|
||||
#if GCC_VERSION <= 50000
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
if (showxy) {
|
||||
_draw_axis_value(X_AXIS, xstring, blink);
|
||||
_draw_axis_value(Y_AXIS, ystring, blink);
|
||||
if (show_e_total) {
|
||||
#if ENABLED(LCD_SHOW_E_TOTAL)
|
||||
_draw_axis_value(E_AXIS, xstring, true);
|
||||
lcd_put_u8str_P(PSTR(" "));
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
_draw_axis_value(E_AXIS, xstring, true);
|
||||
lcd_put_u8str_P(PSTR(" "));
|
||||
_draw_axis_value(X_AXIS, xstring, blink);
|
||||
_draw_axis_value(Y_AXIS, ystring, blink);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
_draw_axis_value(Z_AXIS, zstring, blink);
|
||||
|
||||
#if DISABLED(XYZ_HOLLOW_FRAME)
|
||||
#if NONE(XYZ_NO_FRAME, XYZ_HOLLOW_FRAME)
|
||||
u8g.setColorIndex(1); // black on white
|
||||
#endif
|
||||
}
|
||||
@@ -799,52 +939,68 @@ void MarlinUI::draw_status_screen() {
|
||||
lcd_put_wchar(':');
|
||||
lcd_put_u8str(mstring);
|
||||
lcd_put_wchar('%');
|
||||
return;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
draw_status_message(blink);
|
||||
|
||||
draw_status_message(blink);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw the Status Message area
|
||||
*/
|
||||
void MarlinUI::draw_status_message(const bool blink) {
|
||||
|
||||
// Get the UTF8 character count of the string
|
||||
uint8_t slen = utf8_strlen(status_message);
|
||||
uint8_t lcd_width = LCD_WIDTH, pixel_width = LCD_PIXEL_WIDTH,
|
||||
slen = utf8_strlen(status_message);
|
||||
|
||||
#if HAS_POWER_MONITOR
|
||||
if (power_monitor.display_enabled()) {
|
||||
// make room at the end of the status line for the power monitor reading
|
||||
lcd_width -= 6;
|
||||
pixel_width -= (MENU_FONT_WIDTH) * 6;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if ENABLED(STATUS_MESSAGE_SCROLLING)
|
||||
|
||||
static bool last_blink = false;
|
||||
|
||||
if (slen <= LCD_WIDTH) {
|
||||
if (slen <= lcd_width) {
|
||||
// The string fits within the line. Print with no scrolling
|
||||
lcd_put_u8str(status_message);
|
||||
while (slen < LCD_WIDTH) { lcd_put_wchar(' '); ++slen; }
|
||||
while (slen < lcd_width) { lcd_put_wchar(' '); ++slen; }
|
||||
}
|
||||
else {
|
||||
// String is longer than the available space
|
||||
if (blink != last_blink) {
|
||||
last_blink = blink;
|
||||
advance_status_scroll();
|
||||
}
|
||||
|
||||
// Get a pointer to the next valid UTF8 character
|
||||
// and the string remaining length
|
||||
uint8_t rlen;
|
||||
const char *stat = status_and_len(rlen);
|
||||
lcd_put_u8str_max(stat, LCD_PIXEL_WIDTH);
|
||||
lcd_put_u8str_max(stat, pixel_width);
|
||||
|
||||
// If the remaining string doesn't completely fill the screen
|
||||
if (rlen < LCD_WIDTH) {
|
||||
lcd_put_wchar('.'); // Always at 1+ spaces left, draw a dot
|
||||
uint8_t chars = LCD_WIDTH - rlen; // Amount of space left in characters
|
||||
if (--chars) { // Draw a second dot if there's space
|
||||
lcd_put_wchar('.');
|
||||
if (--chars) { // Print a second copy of the message
|
||||
lcd_put_u8str_max(status_message, LCD_PIXEL_WIDTH - (rlen + 2) * (MENU_FONT_WIDTH));
|
||||
if (rlen < lcd_width) {
|
||||
uint8_t chars = lcd_width - rlen; // Amount of space left in characters
|
||||
lcd_put_wchar(' '); // Always at 1+ spaces left, draw a space
|
||||
if (--chars) { // Draw a second space if there's room
|
||||
lcd_put_wchar(' ');
|
||||
if (--chars) { // Draw a third space if there's room
|
||||
lcd_put_wchar(' ');
|
||||
if (--chars) { // Print a second copy of the message
|
||||
lcd_put_u8str_max(status_message, pixel_width - (rlen + 2) * (MENU_FONT_WIDTH));
|
||||
lcd_put_wchar(' ');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (last_blink != blink) {
|
||||
last_blink = blink;
|
||||
advance_status_scroll();
|
||||
}
|
||||
}
|
||||
|
||||
#else // !STATUS_MESSAGE_SCROLLING
|
||||
@@ -852,12 +1008,16 @@ void MarlinUI::draw_status_message(const bool blink) {
|
||||
UNUSED(blink);
|
||||
|
||||
// Just print the string to the LCD
|
||||
lcd_put_u8str_max(status_message, LCD_PIXEL_WIDTH);
|
||||
lcd_put_u8str_max(status_message, pixel_width);
|
||||
|
||||
// Fill the rest with spaces
|
||||
for (; slen < LCD_WIDTH; ++slen) lcd_put_wchar(' ');
|
||||
for (; slen < lcd_width; ++slen) lcd_put_wchar(' ');
|
||||
|
||||
#endif // !STATUS_MESSAGE_SCROLLING
|
||||
|
||||
#if HAS_POWER_MONITOR
|
||||
display_power_monitor(pixel_width + MENU_FONT_WIDTH, STATUS_BASELINE);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // HAS_GRAPHICAL_LCD && !LIGHTWEIGHT_UI
|
||||
#endif // HAS_MARLINUI_U8GLIB && !LIGHTWEIGHT_UI
|
||||
|
||||
151
Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp
Executable file → Normal file
151
Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp
Executable file → Normal file
@@ -11,7 +11,6 @@
|
||||
* any later version. The code is distributed WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -47,7 +46,7 @@
|
||||
|
||||
#include "status_screen_lite_ST7920.h"
|
||||
|
||||
#include "../ultralcd.h"
|
||||
#include "../marlinui.h"
|
||||
#include "../fontutils.h"
|
||||
#include "../lcdprint.h"
|
||||
#include "../../libs/duration_t.h"
|
||||
@@ -431,7 +430,7 @@ void ST7920_Lite_Status_Screen::draw_static_elements() {
|
||||
|
||||
// Draw the static icons in GDRAM
|
||||
draw_gdram_icon(0, 0, nozzle_icon);
|
||||
#if HOTENDS > 1
|
||||
#if HAS_MULTI_HOTEND
|
||||
draw_gdram_icon(0, 1, nozzle_icon);
|
||||
draw_gdram_icon(0, 2, bed_icon);
|
||||
#else
|
||||
@@ -448,7 +447,7 @@ void ST7920_Lite_Status_Screen::draw_static_elements() {
|
||||
* data buffer (DDRAM) to be used in conjunction with the graphics
|
||||
* bitmap buffer (CGRAM). The contents of the graphics buffer is
|
||||
* XORed with the data from the character generator. This allows
|
||||
* us to make the progess bar out of graphical data (the bar) and
|
||||
* us to make the progress bar out of graphical data (the bar) and
|
||||
* text data (the percentage).
|
||||
*/
|
||||
void ST7920_Lite_Status_Screen::draw_progress_bar(const uint8_t value) {
|
||||
@@ -541,10 +540,7 @@ static struct {
|
||||
bool bed_show_target : 1;
|
||||
#endif
|
||||
} display_state = {
|
||||
true, true
|
||||
#if HAS_HEATED_BED
|
||||
, true
|
||||
#endif
|
||||
true, true, TERN_(HAS_HEATED_BED, true)
|
||||
};
|
||||
|
||||
void ST7920_Lite_Status_Screen::draw_temps(uint8_t line, const int16_t temp, const int16_t target, bool showTarget, bool targetStateChange) {
|
||||
@@ -584,7 +580,7 @@ void ST7920_Lite_Status_Screen::draw_extruder_2_temp(const int16_t temp, const i
|
||||
#if HAS_HEATED_BED
|
||||
void ST7920_Lite_Status_Screen::draw_bed_temp(const int16_t temp, const int16_t target, bool forceUpdate) {
|
||||
const bool show_target = target && FAR(temp, target);
|
||||
draw_temps(HOTENDS > 1 ? 2 : 1, temp, target, show_target, display_state.bed_show_target != show_target || forceUpdate);
|
||||
draw_temps(TERN(HAS_MULTI_HOTEND, 2, 1), temp, target, show_target, display_state.bed_show_target != show_target || forceUpdate);
|
||||
display_state.bed_show_target = show_target;
|
||||
}
|
||||
#endif
|
||||
@@ -596,16 +592,17 @@ void ST7920_Lite_Status_Screen::draw_fan_speed(const uint8_t value) {
|
||||
write_byte('%');
|
||||
}
|
||||
|
||||
void ST7920_Lite_Status_Screen::draw_print_time(const duration_t &elapsed) {
|
||||
void ST7920_Lite_Status_Screen::draw_print_time(const duration_t &elapsed, char suffix) {
|
||||
#if HOTENDS == 1
|
||||
set_ddram_address(DDRAM_LINE_3);
|
||||
#else
|
||||
set_ddram_address(DDRAM_LINE_3 + 5);
|
||||
#endif
|
||||
char str[7];
|
||||
str[elapsed.toDigital(str)] = ' ';
|
||||
int str_length = elapsed.toDigital(str);
|
||||
str[str_length++] = suffix;
|
||||
begin_data();
|
||||
write_str(str, 6);
|
||||
write_str(str, str_length);
|
||||
}
|
||||
|
||||
void ST7920_Lite_Status_Screen::draw_feedrate_percentage(const uint16_t percentage) {
|
||||
@@ -645,11 +642,14 @@ void ST7920_Lite_Status_Screen::draw_status_message() {
|
||||
|
||||
// If the remaining string doesn't completely fill the screen
|
||||
if (rlen < TEXT_MODE_LCD_WIDTH) {
|
||||
write_byte('.'); // Always at 1+ spaces left, draw a dot
|
||||
uint8_t chars = TEXT_MODE_LCD_WIDTH - rlen; // Amount of space left in characters
|
||||
if (--chars) { // Draw a second dot if there's space
|
||||
write_byte('.');
|
||||
if (--chars) write_str(str, chars); // Print a second copy of the message
|
||||
uint8_t chars = TEXT_MODE_LCD_WIDTH - rlen; // Amount of space left in characters
|
||||
write_byte(' '); // Always at 1+ spaces left, draw a space
|
||||
if (--chars) { // Draw a second space if there's room
|
||||
write_byte(' ');
|
||||
if (--chars) { // Draw a third space if there's room
|
||||
write_byte(' ');
|
||||
if (--chars) write_str(str, chars); // Print a second copy of the message
|
||||
}
|
||||
}
|
||||
}
|
||||
ui.advance_status_scroll();
|
||||
@@ -664,19 +664,15 @@ void ST7920_Lite_Status_Screen::draw_status_message() {
|
||||
#endif
|
||||
}
|
||||
|
||||
void ST7920_Lite_Status_Screen::draw_position(const xyze_pos_t &pos, const bool position_known) {
|
||||
void ST7920_Lite_Status_Screen::draw_position(const xyze_pos_t &pos, const bool position_trusted) {
|
||||
char str[7];
|
||||
set_ddram_address(DDRAM_LINE_4);
|
||||
begin_data();
|
||||
|
||||
// If position is unknown, flash the labels.
|
||||
const unsigned char alt_label = position_known ? 0 : (ui.get_blink() ? ' ' : 0);
|
||||
const unsigned char alt_label = position_trusted ? 0 : (ui.get_blink() ? ' ' : 0);
|
||||
|
||||
if (true
|
||||
#if ENABLED(LCD_SHOW_E_TOTAL)
|
||||
&& !printingIsActive()
|
||||
#endif
|
||||
) {
|
||||
if (TERN1(LCD_SHOW_E_TOTAL, !printingIsActive())) {
|
||||
write_byte(alt_label ? alt_label : 'X');
|
||||
write_str(dtostrf(pos.x, -4, 0, str), 4);
|
||||
|
||||
@@ -700,25 +696,20 @@ bool ST7920_Lite_Status_Screen::indicators_changed() {
|
||||
// We only add the target temperatures to the checksum
|
||||
// because the actual temps fluctuate so by updating
|
||||
// them only during blinks we gain a bit of stability.
|
||||
const bool blink = ui.get_blink();
|
||||
const uint16_t feedrate_perc = feedrate_percentage;
|
||||
const uint16_t fs = thermalManager.scaledFanSpeed(0);
|
||||
const int16_t extruder_1_target = thermalManager.degTargetHotend(0);
|
||||
#if HOTENDS > 1
|
||||
const int16_t extruder_2_target = thermalManager.degTargetHotend(1);
|
||||
const bool blink = ui.get_blink();
|
||||
const uint16_t feedrate_perc = feedrate_percentage;
|
||||
const uint16_t fs = thermalManager.scaledFanSpeed(0);
|
||||
const celsius_t extruder_1_target = thermalManager.degTargetHotend(0);
|
||||
#if HAS_MULTI_HOTEND
|
||||
const celsius_t extruder_2_target = thermalManager.degTargetHotend(1);
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
const int16_t bed_target = thermalManager.degTargetBed();
|
||||
const celsius_t bed_target = thermalManager.degTargetBed();
|
||||
#endif
|
||||
static uint16_t last_checksum = 0;
|
||||
const uint16_t checksum = blink ^ feedrate_perc ^ fs ^ extruder_1_target
|
||||
#if HOTENDS > 1
|
||||
^ extruder_2_target
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
^ bed_target
|
||||
#endif
|
||||
;
|
||||
^ TERN0(HAS_MULTI_HOTEND, extruder_2_target)
|
||||
^ TERN0(HAS_HEATED_BED, bed_target);
|
||||
if (last_checksum == checksum) return false;
|
||||
last_checksum = checksum;
|
||||
return true;
|
||||
@@ -726,44 +717,49 @@ bool ST7920_Lite_Status_Screen::indicators_changed() {
|
||||
|
||||
void ST7920_Lite_Status_Screen::update_indicators(const bool forceUpdate) {
|
||||
if (forceUpdate || indicators_changed()) {
|
||||
const bool blink = ui.get_blink();
|
||||
const duration_t elapsed = print_job_timer.duration();
|
||||
const uint16_t feedrate_perc = feedrate_percentage;
|
||||
const int16_t extruder_1_temp = thermalManager.degHotend(0),
|
||||
extruder_1_target = thermalManager.degTargetHotend(0);
|
||||
#if HOTENDS > 1
|
||||
const int16_t extruder_2_temp = thermalManager.degHotend(1),
|
||||
extruder_2_target = thermalManager.degTargetHotend(1);
|
||||
const bool blink = ui.get_blink();
|
||||
const duration_t elapsed = print_job_timer.duration();
|
||||
duration_t remaining = TERN0(USE_M73_REMAINING_TIME, ui.get_remaining_time());
|
||||
const uint16_t feedrate_perc = feedrate_percentage;
|
||||
const celsius_t extruder_1_temp = thermalManager.wholeDegHotend(0),
|
||||
extruder_1_target = thermalManager.degTargetHotend(0);
|
||||
#if HAS_MULTI_HOTEND
|
||||
const celsius_t extruder_2_temp = thermalManager.wholeDegHotend(1),
|
||||
extruder_2_target = thermalManager.degTargetHotend(1);
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
const int16_t bed_temp = thermalManager.degBed(),
|
||||
bed_target = thermalManager.degTargetBed();
|
||||
const celsius_t bed_temp = thermalManager.wholeDegBed(),
|
||||
bed_target = thermalManager.degTargetBed();
|
||||
#endif
|
||||
|
||||
draw_extruder_1_temp(extruder_1_temp, extruder_1_target, forceUpdate);
|
||||
#if HOTENDS > 1
|
||||
draw_extruder_2_temp(extruder_2_temp, extruder_2_target, forceUpdate);
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
draw_bed_temp(bed_temp, bed_target, forceUpdate);
|
||||
#endif
|
||||
|
||||
uint16_t spd = thermalManager.fan_speed[0];
|
||||
TERN_(HAS_MULTI_HOTEND, draw_extruder_2_temp(extruder_2_temp, extruder_2_target, forceUpdate));
|
||||
TERN_(HAS_HEATED_BED, draw_bed_temp(bed_temp, bed_target, forceUpdate));
|
||||
|
||||
uint8_t spd = thermalManager.fan_speed[0];
|
||||
#if ENABLED(ADAPTIVE_FAN_SLOWING)
|
||||
if (!blink && thermalManager.fan_speed_scaler[0] < 128)
|
||||
spd = thermalManager.scaledFanSpeed(0, spd);
|
||||
#endif
|
||||
draw_fan_speed(thermalManager.pwmToPercent(spd));
|
||||
|
||||
// Draw elapsed/remaining time
|
||||
const bool show_remaining = ENABLED(SHOW_REMAINING_TIME) && (DISABLED(ROTATE_PROGRESS_DISPLAY) || blink);
|
||||
if (show_remaining && !remaining.second()) {
|
||||
const auto progress = ui.get_progress_percent();
|
||||
if (progress)
|
||||
remaining = elapsed.second() * (100 - progress) / progress;
|
||||
}
|
||||
if (show_remaining && remaining.second())
|
||||
draw_print_time(remaining, 'R');
|
||||
else
|
||||
draw_print_time(elapsed);
|
||||
|
||||
draw_fan_speed(thermalManager.fanPercent(spd));
|
||||
draw_print_time(elapsed);
|
||||
draw_feedrate_percentage(feedrate_perc);
|
||||
|
||||
// Update the fan and bed animations
|
||||
if (spd) draw_fan_icon(blink);
|
||||
#if HAS_HEATED_BED
|
||||
draw_heat_icon(bed_target > 0 && blink, bed_target > 0);
|
||||
#endif
|
||||
TERN_(HAS_HEATED_BED, draw_heat_icon(bed_target > 0 && blink, bed_target > 0));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -813,9 +809,7 @@ void ST7920_Lite_Status_Screen::update_status_or_position(bool forceUpdate) {
|
||||
* If STATUS_EXPIRE_SECONDS is zero, only the status is shown.
|
||||
*/
|
||||
if (forceUpdate || status_changed()) {
|
||||
#if ENABLED(STATUS_MESSAGE_SCROLLING)
|
||||
ui.status_scroll_offset = 0;
|
||||
#endif
|
||||
TERN_(STATUS_MESSAGE_SCROLLING, ui.status_scroll_offset = 0);
|
||||
#if STATUS_EXPIRE_SECONDS
|
||||
countdown = ui.status_message[0] ? STATUS_EXPIRE_SECONDS : 0;
|
||||
#endif
|
||||
@@ -823,40 +817,25 @@ void ST7920_Lite_Status_Screen::update_status_or_position(bool forceUpdate) {
|
||||
blink_changed(); // Clear changed flag
|
||||
}
|
||||
#if !STATUS_EXPIRE_SECONDS
|
||||
#if ENABLED(STATUS_MESSAGE_SCROLLING)
|
||||
else if (blink_changed())
|
||||
draw_status_message();
|
||||
#endif
|
||||
else if (TERN0(STATUS_MESSAGE_SCROLLING, blink_changed()))
|
||||
draw_status_message();
|
||||
#else
|
||||
else if (blink_changed()) {
|
||||
if (countdown > 1) {
|
||||
countdown--;
|
||||
#if ENABLED(STATUS_MESSAGE_SCROLLING)
|
||||
draw_status_message();
|
||||
#endif
|
||||
TERN_(STATUS_MESSAGE_SCROLLING, draw_status_message());
|
||||
}
|
||||
else if (countdown > 0) {
|
||||
if (position_changed()) {
|
||||
countdown--;
|
||||
forceUpdate = true;
|
||||
}
|
||||
#if ENABLED(STATUS_MESSAGE_SCROLLING)
|
||||
draw_status_message();
|
||||
#endif
|
||||
TERN_(STATUS_MESSAGE_SCROLLING, draw_status_message());
|
||||
}
|
||||
}
|
||||
|
||||
if (countdown == 0 && (forceUpdate || position_changed()
|
||||
#if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING)
|
||||
|| blink_changed()
|
||||
#endif
|
||||
)) {
|
||||
draw_position(current_position, true
|
||||
#if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING)
|
||||
&& all_axes_known()
|
||||
#endif
|
||||
);
|
||||
}
|
||||
if (countdown == 0 && (forceUpdate || position_changed() || TERN(DISABLE_REDUCED_ACCURACY_WARNING, 0, blink_changed())))
|
||||
draw_position(current_position, TERN(DISABLE_REDUCED_ACCURACY_WARNING, 1, all_axes_trusted()));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -878,7 +857,7 @@ void ST7920_Lite_Status_Screen::update_progress(const bool forceUpdate) {
|
||||
|
||||
UNUSED(forceUpdate);
|
||||
|
||||
#endif // LCD_SET_PROGRESS_MANUALLY || SDSUPPORT
|
||||
#endif
|
||||
}
|
||||
|
||||
void ST7920_Lite_Status_Screen::update(const bool forceUpdate) {
|
||||
|
||||
11
Marlin/src/lcd/dogm/status_screen_lite_ST7920.h
Executable file → Normal file
11
Marlin/src/lcd/dogm/status_screen_lite_ST7920.h
Executable file → Normal file
@@ -11,7 +11,6 @@
|
||||
* any later version. The code is distributed WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
@@ -80,14 +79,14 @@ class ST7920_Lite_Status_Screen {
|
||||
static void draw_fan_icon(const bool whichIcon);
|
||||
static void draw_heat_icon(const bool whichIcon, const bool heating);
|
||||
static void draw_temps(uint8_t line, const int16_t temp, const int16_t target, bool showTarget, bool targetStateChange);
|
||||
static void draw_extruder_1_temp(const int16_t temp, const int16_t target, bool forceUpdate = false);
|
||||
static void draw_extruder_2_temp(const int16_t temp, const int16_t target, bool forceUpdate = false);
|
||||
static void draw_bed_temp(const int16_t temp, const int16_t target, bool forceUpdate = false);
|
||||
static void draw_extruder_1_temp(const int16_t temp, const int16_t target, bool forceUpdate=false);
|
||||
static void draw_extruder_2_temp(const int16_t temp, const int16_t target, bool forceUpdate=false);
|
||||
static void draw_bed_temp(const int16_t temp, const int16_t target, bool forceUpdate=false);
|
||||
static void draw_fan_speed(const uint8_t value);
|
||||
static void draw_print_time(const duration_t &elapsed);
|
||||
static void draw_print_time(const duration_t &elapsed, char suffix=' ');
|
||||
static void draw_feedrate_percentage(const uint16_t percentage);
|
||||
static void draw_status_message();
|
||||
static void draw_position(const xyze_pos_t &pos, bool position_known = true);
|
||||
static void draw_position(const xyze_pos_t &pos, bool position_known=true);
|
||||
|
||||
static bool indicators_changed();
|
||||
static bool position_changed();
|
||||
|
||||
9
Marlin/src/lcd/dogm/u8g_dev_ssd1306_sh1106_128x64_I2C.cpp
Executable file → Normal file
9
Marlin/src/lcd/dogm/u8g_dev_ssd1306_sh1106_128x64_I2C.cpp
Executable file → Normal file
@@ -16,7 +16,7 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if HAS_GRAPHICAL_LCD
|
||||
#if HAS_MARLINUI_U8GLIB
|
||||
|
||||
#include "HAL_LCD_com_defines.h"
|
||||
|
||||
@@ -245,9 +245,8 @@ u8g_dev_t u8g_dev_ssd1306_128x64_2x_i2c_2_wire = { u8g_dev_ssd1306_128x64_2x_2_w
|
||||
|
||||
uint8_t u8g_WriteEscSeqP_2_wire(u8g_t *u8g, u8g_dev_t *dev, const uint8_t *esc_seq) {
|
||||
uint8_t is_escape = 0;
|
||||
uint8_t value;
|
||||
for (;;) {
|
||||
value = u8g_pgm_read(esc_seq);
|
||||
uint8_t value = u8g_pgm_read(esc_seq);
|
||||
if (is_escape == 0) {
|
||||
if (value != 255) {
|
||||
if (u8g_WriteByte(u8g, dev, value) == 0 )
|
||||
@@ -300,4 +299,4 @@ uint8_t u8g_WriteEscSeqP_2_wire(u8g_t *u8g, u8g_dev_t *dev, const uint8_t *esc_s
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif // HAS_GRAPHICAL_LCD
|
||||
#endif // HAS_MARLINUI_U8GLIB
|
||||
|
||||
129
Marlin/src/lcd/dogm/u8g_dev_ssd1309_12864.cpp
Normal file
129
Marlin/src/lcd/dogm/u8g_dev_ssd1309_12864.cpp
Normal file
@@ -0,0 +1,129 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if HAS_MARLINUI_U8GLIB
|
||||
|
||||
#include "HAL_LCD_com_defines.h"
|
||||
#include <U8glib-HAL.h>
|
||||
|
||||
#define WIDTH 128
|
||||
#define HEIGHT 64
|
||||
#define PAGE_HEIGHT 8
|
||||
|
||||
// SSD1309 init sequence
|
||||
static const uint8_t u8g_dev_ssd1309_128x64_init_seq[] PROGMEM = {
|
||||
U8G_ESC_CS(0), // Disable chip
|
||||
U8G_ESC_ADR(0), // Instruction mode
|
||||
U8G_ESC_RST(1), // Do reset low pulse with (1*16)+2 milliseconds
|
||||
U8G_ESC_CS(1), // Enable chip
|
||||
|
||||
0xFD,0x12, // Command Lock
|
||||
0xAE, // Set Display Off
|
||||
0xD5,0xA0, // Set Display Clock Divide Ratio/Oscillator Frequency
|
||||
0xA8,0x3F, // Set Multiplex Ratio
|
||||
0x3D,0x00, // Set Display Offset
|
||||
0x40, // Set Display Start Line
|
||||
0xA1, // Set Segment Re-Map
|
||||
0xC8, // Set COM Output Scan Direction
|
||||
0xDA,0x12, // Set COM Pins Hardware Configuration
|
||||
0x81,0xDF, // Set Current Control
|
||||
0xD9,0x82, // Set Pre-Charge Period
|
||||
0xDB,0x34, // Set VCOMH Deselect Level
|
||||
0xA4, // Set Entire Display On/Off
|
||||
0xA6, // Set Normal/Inverse Display
|
||||
U8G_ESC_VCC(1), // Power up VCC & Stabilized
|
||||
U8G_ESC_DLY(50),
|
||||
0xAF, // Set Display On
|
||||
U8G_ESC_DLY(50),
|
||||
U8G_ESC_CS(0), // Disable chip
|
||||
U8G_ESC_END // End of sequence
|
||||
};
|
||||
|
||||
// Select one init sequence here
|
||||
#define u8g_dev_ssd1309_128x64_init_seq u8g_dev_ssd1309_128x64_init_seq
|
||||
|
||||
static const uint8_t u8g_dev_ssd1309_128x64_data_start[] PROGMEM = {
|
||||
U8G_ESC_ADR(0), // Instruction mode
|
||||
U8G_ESC_CS(1), // Enable chip
|
||||
0x010, // Set upper 4 bit of the col adr to 0
|
||||
0x000, // Set lower 4 bit of the col adr to 4
|
||||
U8G_ESC_END // End of sequence
|
||||
};
|
||||
|
||||
static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = {
|
||||
U8G_ESC_ADR(0), // Instruction mode
|
||||
U8G_ESC_CS(1), // Enable chip
|
||||
0x0AE, // Display off
|
||||
U8G_ESC_CS(0), // Disable chip
|
||||
U8G_ESC_END // End of sequence
|
||||
};
|
||||
|
||||
static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = {
|
||||
U8G_ESC_ADR(0), // Instruction mode
|
||||
U8G_ESC_CS(1), // Enable chip
|
||||
0x0AF, // Display on
|
||||
U8G_ESC_DLY(50), // Delay 50 ms
|
||||
U8G_ESC_CS(0), // Disable chip
|
||||
U8G_ESC_END // End of sequence
|
||||
};
|
||||
|
||||
uint8_t u8g_dev_ssd1309_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
|
||||
switch (msg) {
|
||||
case U8G_DEV_MSG_INIT:
|
||||
u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS);
|
||||
u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1309_128x64_init_seq);
|
||||
break;
|
||||
case U8G_DEV_MSG_STOP:
|
||||
break;
|
||||
case U8G_DEV_MSG_PAGE_NEXT: {
|
||||
u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
|
||||
u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1309_128x64_data_start);
|
||||
u8g_WriteByte(u8g, dev, 0x0B0 | pb->p.page); // Select current page (SSD1306)
|
||||
u8g_SetAddress(u8g, dev, 1); // Data mode
|
||||
if (u8g_pb_WriteBuffer(pb, u8g, dev) == 0) return 0;
|
||||
u8g_SetChipSelect(u8g, dev, 0);
|
||||
}
|
||||
break;
|
||||
case U8G_DEV_MSG_CONTRAST:
|
||||
u8g_SetChipSelect(u8g, dev, 1);
|
||||
u8g_SetAddress(u8g, dev, 0); // Instruction mode
|
||||
u8g_WriteByte(u8g, dev, 0x081);
|
||||
u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) ); // 11 Jul 2015: fixed contrast calculation
|
||||
u8g_SetChipSelect(u8g, dev, 0);
|
||||
return 1;
|
||||
case U8G_DEV_MSG_SLEEP_ON:
|
||||
u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on);
|
||||
return 1;
|
||||
case U8G_DEV_MSG_SLEEP_OFF:
|
||||
u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off);
|
||||
return 1;
|
||||
}
|
||||
return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
|
||||
}
|
||||
|
||||
uint8_t u8g_dev_ssd1309_buf[WIDTH*2] U8G_NOCOMMON ;
|
||||
u8g_pb_t u8g_dev_ssd1309_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1309_buf};
|
||||
u8g_dev_t u8g_dev_ssd1309_sw_spi = { u8g_dev_ssd1309_128x64_fn, &u8g_dev_ssd1309_pb, U8G_COM_HAL_SW_SPI_FN };
|
||||
|
||||
#endif // HAS_MARLINUI_U8GLIB
|
||||
8
Marlin/src/lcd/dogm/u8g_dev_st7565_64128n_HAL.cpp
Executable file → Normal file
8
Marlin/src/lcd/dogm/u8g_dev_st7565_64128n_HAL.cpp
Executable file → Normal file
@@ -16,7 +16,7 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -55,9 +55,9 @@
|
||||
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
|
||||
#if HAS_GRAPHICAL_LCD
|
||||
#if HAS_MARLINUI_U8GLIB
|
||||
|
||||
#include <U8glib.h>
|
||||
#include <U8glib-HAL.h>
|
||||
#include "HAL_LCD_com_defines.h"
|
||||
|
||||
#define WIDTH 128
|
||||
@@ -233,4 +233,4 @@ u8g_dev_t u8g_dev_st7565_64128n_HAL_2x_sw_spi = { u8g_dev_st7565_64128n_HAL_2x_f
|
||||
U8G_PB_DEV(u8g_dev_st7565_64128n_HAL_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_64128n_HAL_fn, U8G_COM_HAL_HW_SPI_FN);
|
||||
u8g_dev_t u8g_dev_st7565_64128n_HAL_2x_hw_spi = { u8g_dev_st7565_64128n_HAL_2x_fn, &u8g_dev_st7565_64128n_HAL_2x_pb, U8G_COM_HAL_HW_SPI_FN };
|
||||
|
||||
#endif // HAS_GRAPHICAL_LCD
|
||||
#endif // HAS_MARLINUI_U8GLIB
|
||||
|
||||
10
Marlin/src/lcd/dogm/u8g_dev_st7920_128x64_HAL.cpp
Executable file → Normal file
10
Marlin/src/lcd/dogm/u8g_dev_st7920_128x64_HAL.cpp
Executable file → Normal file
@@ -16,7 +16,7 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if HAS_GRAPHICAL_LCD
|
||||
#if HAS_MARLINUI_U8GLIB && DISABLED(TFT_CLASSIC_UI)
|
||||
|
||||
#include "HAL_LCD_com_defines.h"
|
||||
|
||||
@@ -73,7 +73,7 @@ static const uint8_t u8g_dev_st7920_128x64_HAL_init_seq[] PROGMEM = {
|
||||
0x038, // 8 Bit interface (DL=1), basic instruction set (RE=0)
|
||||
0x00C, // display on, cursor & blink off; 0x08: all off
|
||||
0x006, // Entry mode: Cursor move to right, DDRAM address counter (AC) plus 1, no shift
|
||||
0x002, // disable scroll, enable CGRAM adress
|
||||
0x002, // disable scroll, enable CGRAM address
|
||||
0x001, // clear RAM, needs 1.6 ms
|
||||
U8G_ESC_DLY(100), // delay 100 ms
|
||||
|
||||
@@ -201,8 +201,8 @@ u8g_dev_t u8g_dev_st7920_128x64_HAL_4x_hw_spi = { u8g_dev_st7920_128x64_HAL_4x_f
|
||||
|
||||
#if NONE(__AVR__, ARDUINO_ARCH_STM32, ARDUINO_ARCH_ESP32) || defined(U8G_HAL_LINKS)
|
||||
// Also use this device for HAL version of rrd class. This results in the same device being used
|
||||
// for the ST7920 for HAL systems no matter what is selected in ultralcd_impl_DOGM.h.
|
||||
// for the ST7920 for HAL systems no matter what is selected in marlinui_DOGM.h.
|
||||
u8g_dev_t u8g_dev_st7920_128x64_rrd_sw_spi = { u8g_dev_st7920_128x64_HAL_4x_fn, &u8g_dev_st7920_128x64_HAL_4x_pb, U8G_COM_ST7920_HAL_SW_SPI };
|
||||
#endif
|
||||
|
||||
#endif // HAS_GRAPHICAL_LCD
|
||||
#endif // HAS_MARLINUI_U8GLIB
|
||||
|
||||
@@ -1,718 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
u8g_dev_tft_320x240_upscale_from_128x64.cpp
|
||||
|
||||
Universal 8bit Graphics Library
|
||||
|
||||
Copyright (c) 2011, olikraus@gmail.com
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this list
|
||||
of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
||||
list of conditions and the following disclaimer in the documentation and/or other
|
||||
materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
|
||||
#if HAS_GRAPHICAL_LCD && PIN_EXISTS(FSMC_CS)
|
||||
|
||||
#include "HAL_LCD_com_defines.h"
|
||||
#include "ultralcd_DOGM.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#if ENABLED(LCD_USE_DMA_FSMC)
|
||||
extern void LCD_IO_WriteReg(uint16_t Reg);
|
||||
extern void LCD_IO_WriteData(uint16_t RegValue);
|
||||
extern void LCD_IO_WriteSequence(uint16_t *data, uint16_t length);
|
||||
extern void LCD_IO_WriteSequence_Async(uint16_t *data, uint16_t length);
|
||||
extern void LCD_IO_WaitSequence_Async();
|
||||
extern void LCD_IO_WriteMultiple(uint16_t color, uint32_t count);
|
||||
#endif
|
||||
|
||||
#define WIDTH LCD_PIXEL_WIDTH
|
||||
#define HEIGHT LCD_PIXEL_HEIGHT
|
||||
#define PAGE_HEIGHT 8
|
||||
|
||||
#define X_LO LCD_PIXEL_OFFSET_X
|
||||
#define Y_LO LCD_PIXEL_OFFSET_Y
|
||||
#define X_HI (X_LO + 2 * WIDTH - 1)
|
||||
#define Y_HI (Y_LO + 2 * HEIGHT - 1)
|
||||
|
||||
// see https://ee-programming-notepad.blogspot.com/2016/10/16-bit-color-generator-picker.html
|
||||
|
||||
#define COLOR_BLACK 0x0000 // #000000
|
||||
#define COLOR_WHITE 0xFFFF // #FFFFFF
|
||||
#define COLOR_SILVER 0xC618 // #C0C0C0
|
||||
#define COLOR_GREY 0x7BEF // #808080
|
||||
#define COLOR_DARKGREY 0x4208 // #404040
|
||||
#define COLOR_DARKGREY2 0x39E7 // #303030
|
||||
#define COLOR_DARK 0x0003 // Some dark color
|
||||
|
||||
#define COLOR_RED 0xF800 // #FF0000
|
||||
#define COLOR_LIME 0x7E00 // #00FF00
|
||||
#define COLOR_BLUE 0x001F // #0000FF
|
||||
#define COLOR_YELLOW 0xFFE0 // #FFFF00
|
||||
#define COLOR_MAGENTA 0xF81F // #FF00FF
|
||||
#define COLOR_FUCHSIA 0xF81F // #FF00FF
|
||||
#define COLOR_CYAN 0x07FF // #00FFFF
|
||||
#define COLOR_AQUA 0x07FF // #00FFFF
|
||||
|
||||
#define COLOR_MAROON 0x7800 // #800000
|
||||
#define COLOR_GREEN 0x03E0 // #008000
|
||||
#define COLOR_NAVY 0x000F // #000080
|
||||
#define COLOR_OLIVE 0x8400 // #808000
|
||||
#define COLOR_PURPLE 0x8010 // #800080
|
||||
#define COLOR_TEAL 0x0410 // #008080
|
||||
|
||||
#define COLOR_ORANGE 0xFC00 // #FF7F00
|
||||
|
||||
#ifndef TFT_MARLINUI_COLOR
|
||||
#define TFT_MARLINUI_COLOR COLOR_WHITE
|
||||
#endif
|
||||
#ifndef TFT_MARLINBG_COLOR
|
||||
#define TFT_MARLINBG_COLOR COLOR_BLACK
|
||||
#endif
|
||||
#ifndef TFT_DISABLED_COLOR
|
||||
#define TFT_DISABLED_COLOR COLOR_DARK
|
||||
#endif
|
||||
#ifndef TFT_BTCANCEL_COLOR
|
||||
#define TFT_BTCANCEL_COLOR COLOR_RED
|
||||
#endif
|
||||
#ifndef TFT_BTARROWS_COLOR
|
||||
#define TFT_BTARROWS_COLOR COLOR_BLUE
|
||||
#endif
|
||||
#ifndef TFT_BTOKMENU_COLOR
|
||||
#define TFT_BTOKMENU_COLOR COLOR_RED
|
||||
#endif
|
||||
|
||||
static uint32_t lcd_id = 0;
|
||||
|
||||
#define ST7789V_CASET 0x2A /* Column address register */
|
||||
#define ST7789V_RASET 0x2B /* Row address register */
|
||||
#define ST7789V_WRITE_RAM 0x2C /* Write data to GRAM */
|
||||
|
||||
|
||||
/* Mind the mess: with landscape screen orientation 'Horizontal' is Y and 'Vertical' is X */
|
||||
#define ILI9328_HASET 0x20 /* Horizontal GRAM address register (0-255) */
|
||||
#define ILI9328_VASET 0x21 /* Vertical GRAM address register (0-511)*/
|
||||
#define ILI9328_WRITE_RAM 0x22 /* Write data to GRAM */
|
||||
|
||||
#define ILI9328_HASTART 0x50 /* Horizontal address start position (0-255) */
|
||||
#define ILI9328_HAEND 0x51 /* Horizontal address end position (0-255) */
|
||||
#define ILI9328_VASTART 0x52 /* Vertical address start position (0-511) */
|
||||
#define ILI9328_VAEND 0x53 /* Vertical address end position (0-511) */
|
||||
|
||||
|
||||
static void setWindow_ili9328(u8g_t *u8g, u8g_dev_t *dev, uint16_t Xmin, uint16_t Ymin, uint16_t Xmax, uint16_t Ymax) {
|
||||
#ifdef LCD_USE_DMA_FSMC
|
||||
LCD_IO_WriteReg(ILI9328_HASTART);
|
||||
LCD_IO_WriteData(Ymin);
|
||||
LCD_IO_WriteReg(ILI9328_HAEND);
|
||||
LCD_IO_WriteData(Ymax);
|
||||
LCD_IO_WriteReg(ILI9328_VASTART);
|
||||
LCD_IO_WriteData(Xmin);
|
||||
LCD_IO_WriteReg(ILI9328_VAEND);
|
||||
LCD_IO_WriteData(Xmax);
|
||||
|
||||
LCD_IO_WriteReg(ILI9328_HASET);
|
||||
LCD_IO_WriteData(Ymin);
|
||||
LCD_IO_WriteReg(ILI9328_VASET);
|
||||
LCD_IO_WriteData(Xmin);
|
||||
|
||||
LCD_IO_WriteReg(ILI9328_WRITE_RAM);
|
||||
#else
|
||||
u8g_SetAddress(u8g, dev, 0);
|
||||
|
||||
u8g_WriteByte(u8g, dev, ILI9328_HASTART);
|
||||
u8g_WriteSequence(u8g, dev, 2, (uint8_t *)&Ymin);
|
||||
u8g_WriteByte(u8g, dev, ILI9328_HAEND);
|
||||
u8g_WriteSequence(u8g, dev, 2, (uint8_t *)&Ymax);
|
||||
u8g_WriteByte(u8g, dev, ILI9328_VASTART);
|
||||
u8g_WriteSequence(u8g, dev, 2, (uint8_t *)&Xmin);
|
||||
u8g_WriteByte(u8g, dev, ILI9328_VAEND);
|
||||
u8g_WriteSequence(u8g, dev, 2, (uint8_t *)&Xmax);
|
||||
|
||||
u8g_WriteByte(u8g, dev, ILI9328_HASET);
|
||||
u8g_WriteSequence(u8g, dev, 2, (uint8_t *)&Ymin);
|
||||
u8g_WriteByte(u8g, dev, ILI9328_VASET);
|
||||
u8g_WriteSequence(u8g, dev, 2, (uint8_t *)&Xmin);
|
||||
|
||||
u8g_WriteByte(u8g, dev, ILI9328_WRITE_RAM);
|
||||
u8g_SetAddress(u8g, dev, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void setWindow_st7789v(u8g_t *u8g, u8g_dev_t *dev, uint16_t Xmin, uint16_t Ymin, uint16_t Xmax, uint16_t Ymax) {
|
||||
#ifdef LCD_USE_DMA_FSMC
|
||||
LCD_IO_WriteReg(ST7789V_CASET);
|
||||
LCD_IO_WriteData((Xmin >> 8) & 0xFF);
|
||||
LCD_IO_WriteData(Xmin & 0xFF);
|
||||
LCD_IO_WriteData((Xmax >> 8) & 0xFF);
|
||||
LCD_IO_WriteData(Xmax & 0xFF);
|
||||
|
||||
LCD_IO_WriteReg(ST7789V_RASET);
|
||||
LCD_IO_WriteData((Ymin >> 8) & 0xFF);
|
||||
LCD_IO_WriteData(Ymin & 0xFF);
|
||||
LCD_IO_WriteData((Ymax >> 8) & 0xFF);
|
||||
LCD_IO_WriteData(Ymax & 0xFF);
|
||||
|
||||
LCD_IO_WriteReg(ST7789V_WRITE_RAM);
|
||||
#else
|
||||
u8g_SetAddress(u8g, dev, 0); u8g_WriteByte(u8g, dev, ST7789V_CASET); u8g_SetAddress(u8g, dev, 1);
|
||||
u8g_WriteByte(u8g, dev, (Xmin >> 8) & 0xFF);
|
||||
u8g_WriteByte(u8g, dev, Xmin & 0xFF);
|
||||
u8g_WriteByte(u8g, dev, (Xmax >> 8) & 0xFF);
|
||||
u8g_WriteByte(u8g, dev, Xmax & 0xFF);
|
||||
|
||||
u8g_SetAddress(u8g, dev, 0); u8g_WriteByte(u8g, dev, ST7789V_RASET); u8g_SetAddress(u8g, dev, 1);
|
||||
u8g_WriteByte(u8g, dev, (Ymin >> 8) & 0xFF);
|
||||
u8g_WriteByte(u8g, dev, Ymin & 0xFF);
|
||||
u8g_WriteByte(u8g, dev, (Ymax >> 8) & 0xFF);
|
||||
u8g_WriteByte(u8g, dev, Ymax & 0xFF);
|
||||
|
||||
u8g_SetAddress(u8g, dev, 0); u8g_WriteByte(u8g, dev, ST7789V_WRITE_RAM); u8g_SetAddress(u8g, dev, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void setWindow_none(u8g_t *u8g, u8g_dev_t *dev, uint16_t Xmin, uint16_t Ymin, uint16_t Xmax, uint16_t Ymax) {}
|
||||
void (*setWindow)(u8g_t *u8g, u8g_dev_t *dev, uint16_t Xmin, uint16_t Ymin, uint16_t Xmax, uint16_t Ymax) = setWindow_none;
|
||||
|
||||
|
||||
#define ESC_REG(x) 0xFFFF, 0x00FF & (uint16_t)x
|
||||
#define ESC_DELAY(x) 0xFFFF, 0x8000 | (x & 0x7FFF)
|
||||
#define ESC_END 0xFFFF, 0x7FFF
|
||||
#define ESC_FFFF 0xFFFF, 0xFFFF
|
||||
|
||||
#ifdef LCD_USE_DMA_FSMC
|
||||
void writeEscSequence(const uint16_t *sequence) {
|
||||
uint16_t data;
|
||||
for (;;) {
|
||||
data = *sequence++;
|
||||
if (data != 0xFFFF) {
|
||||
LCD_IO_WriteData(data);
|
||||
continue;
|
||||
}
|
||||
data = *sequence++;
|
||||
if (data == 0x7FFF) return;
|
||||
if (data == 0xFFFF) {
|
||||
LCD_IO_WriteData(data);
|
||||
} else if (data & 0x8000) {
|
||||
delay(data & 0x7FFF);
|
||||
} else if ((data & 0xFF00) == 0) {
|
||||
LCD_IO_WriteReg(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
void writeEscSequence8(u8g_t *u8g, u8g_dev_t *dev, const uint16_t *sequence) {
|
||||
uint16_t data;
|
||||
u8g_SetAddress(u8g, dev, 1);
|
||||
for (;;) {
|
||||
data = *sequence++;
|
||||
if (data != 0xFFFF) {
|
||||
u8g_WriteByte(u8g, dev, data & 0xFF);
|
||||
continue;
|
||||
}
|
||||
data = *sequence++;
|
||||
if (data == 0x7FFF) return;
|
||||
if (data == 0xFFFF) {
|
||||
u8g_WriteByte(u8g, dev, data & 0xFF);
|
||||
} else if (data & 0x8000) {
|
||||
delay(data & 0x7FFF);
|
||||
} else if ((data & 0xFF00) == 0) {
|
||||
u8g_SetAddress(u8g, dev, 0);
|
||||
u8g_WriteByte(u8g, dev, data & 0xFF);
|
||||
u8g_SetAddress(u8g, dev, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void writeEscSequence16(u8g_t *u8g, u8g_dev_t *dev, const uint16_t *sequence) {
|
||||
uint16_t data;
|
||||
u8g_SetAddress(u8g, dev, 0);
|
||||
for (;;) {
|
||||
data = *sequence++;
|
||||
if (data != 0xFFFF) {
|
||||
u8g_WriteSequence(u8g, dev, 2, (uint8_t *)&data);
|
||||
continue;
|
||||
}
|
||||
data = *sequence++;
|
||||
if (data == 0x7FFF) return;
|
||||
if (data == 0xFFFF) {
|
||||
u8g_WriteSequence(u8g, dev, 2, (uint8_t *)&data);
|
||||
} else if (data & 0x8000) {
|
||||
delay(data & 0x7FFF);
|
||||
} else if ((data & 0xFF00) == 0) {
|
||||
u8g_WriteByte(u8g, dev, data & 0xFF);
|
||||
}
|
||||
}
|
||||
u8g_SetAddress(u8g, dev, 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
static const uint16_t st7789v_init[] = {
|
||||
ESC_REG(0x0010), ESC_DELAY(10),
|
||||
ESC_REG(0x0001), ESC_DELAY(200),
|
||||
ESC_REG(0x0011), ESC_DELAY(120),
|
||||
ESC_REG(0x0036), 0x00A0,
|
||||
ESC_REG(0x003A), 0x0055,
|
||||
ESC_REG(0x002A), 0x0000, 0x0000, 0x0001, 0x003F,
|
||||
ESC_REG(0x002B), 0x0000, 0x0000, 0x0000, 0x00EF,
|
||||
ESC_REG(0x00B2), 0x000C, 0x000C, 0x0000, 0x0033, 0x0033,
|
||||
ESC_REG(0x00B7), 0x0035,
|
||||
ESC_REG(0x00BB), 0x001F,
|
||||
ESC_REG(0x00C0), 0x002C,
|
||||
ESC_REG(0x00C2), 0x0001, 0x00C3,
|
||||
ESC_REG(0x00C4), 0x0020,
|
||||
ESC_REG(0x00C6), 0x000F,
|
||||
ESC_REG(0x00D0), 0x00A4, 0x00A1,
|
||||
ESC_REG(0x0029),
|
||||
ESC_REG(0x0011),
|
||||
ESC_END
|
||||
};
|
||||
|
||||
static const uint16_t ili9328_init[] = {
|
||||
ESC_REG(0x0001), 0x0100,
|
||||
ESC_REG(0x0002), 0x0400,
|
||||
ESC_REG(0x0003), 0x1038,
|
||||
ESC_REG(0x0004), 0x0000,
|
||||
ESC_REG(0x0008), 0x0202,
|
||||
ESC_REG(0x0009), 0x0000,
|
||||
ESC_REG(0x000A), 0x0000,
|
||||
ESC_REG(0x000C), 0x0000,
|
||||
ESC_REG(0x000D), 0x0000,
|
||||
ESC_REG(0x000F), 0x0000,
|
||||
ESC_REG(0x0010), 0x0000,
|
||||
ESC_REG(0x0011), 0x0007,
|
||||
ESC_REG(0x0012), 0x0000,
|
||||
ESC_REG(0x0013), 0x0000,
|
||||
ESC_REG(0x0007), 0x0001,
|
||||
ESC_DELAY(200),
|
||||
ESC_REG(0x0010), 0x1690,
|
||||
ESC_REG(0x0011), 0x0227,
|
||||
ESC_DELAY(50),
|
||||
ESC_REG(0x0012), 0x008C,
|
||||
ESC_DELAY(50),
|
||||
ESC_REG(0x0013), 0x1500,
|
||||
ESC_REG(0x0029), 0x0004,
|
||||
ESC_REG(0x002B), 0x000D,
|
||||
ESC_DELAY(50),
|
||||
ESC_REG(0x0050), 0x0000,
|
||||
ESC_REG(0x0051), 0x00EF,
|
||||
ESC_REG(0x0052), 0x0000,
|
||||
ESC_REG(0x0053), 0x013F,
|
||||
ESC_REG(0x0020), 0x0000,
|
||||
ESC_REG(0x0021), 0x0000,
|
||||
ESC_REG(0x0060), 0x2700,
|
||||
ESC_REG(0x0061), 0x0001,
|
||||
ESC_REG(0x006A), 0x0000,
|
||||
ESC_REG(0x0080), 0x0000,
|
||||
ESC_REG(0x0081), 0x0000,
|
||||
ESC_REG(0x0082), 0x0000,
|
||||
ESC_REG(0x0083), 0x0000,
|
||||
ESC_REG(0x0084), 0x0000,
|
||||
ESC_REG(0x0085), 0x0000,
|
||||
ESC_REG(0x0090), 0x0010,
|
||||
ESC_REG(0x0092), 0x0600,
|
||||
ESC_REG(0x0007), 0x0133,
|
||||
ESC_REG(0x0022),
|
||||
ESC_END
|
||||
};
|
||||
|
||||
static const uint16_t ili9341_init[] = {
|
||||
ESC_REG(0x0010), ESC_DELAY(10),
|
||||
ESC_REG(0x0001), ESC_DELAY(200),
|
||||
ESC_REG(0x0036), 0x00E8,
|
||||
ESC_REG(0x003A), 0x0055,
|
||||
ESC_REG(0x002A), 0x0000, 0x0000, 0x0001, 0x003F,
|
||||
ESC_REG(0x002B), 0x0000, 0x0000, 0x0000, 0x00EF,
|
||||
ESC_REG(0x00C5), 0x003E, 0x0028,
|
||||
ESC_REG(0x00C7), 0x0086,
|
||||
ESC_REG(0x00B1), 0x0000, 0x0018,
|
||||
ESC_REG(0x00C0), 0x0023,
|
||||
ESC_REG(0x00C1), 0x0010,
|
||||
ESC_REG(0x0029),
|
||||
ESC_REG(0x0011),
|
||||
ESC_DELAY(100),
|
||||
ESC_END
|
||||
};
|
||||
|
||||
#if ENABLED(TOUCH_BUTTONS)
|
||||
|
||||
static const uint8_t buttonD[] = {
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00011000,B00110000,B00000001,
|
||||
B10000000,B00001100,B01100000,B00000001,
|
||||
B10000000,B00000110,B11000000,B00000001,
|
||||
B10000000,B00000011,B10000000,B00000001,
|
||||
B10000000,B00000011,B10000000,B00000001,
|
||||
B10000000,B00000110,B11000000,B00000001,
|
||||
B10000000,B00001100,B01100000,B00000001,
|
||||
B10000000,B00011000,B00110000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
};
|
||||
|
||||
#if ENABLED(REVERSE_MENU_DIRECTION)
|
||||
|
||||
static const uint8_t buttonA[] = {
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00111111,B11100001,
|
||||
B10000111,B11111100,B00111111,B11100001,
|
||||
B10000011,B11111000,B00000000,B00000001,
|
||||
B10000001,B11110000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B01000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
};
|
||||
static const uint8_t buttonB[] = {
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B01100000,B00000010,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00001111,B10000001,
|
||||
B10000000,B01100000,B00011111,B11000001,
|
||||
B10000111,B11111110,B00111111,B11100001,
|
||||
B10000111,B11111110,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
static const uint8_t buttonA[] = {
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B01000000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000001,B11110000,B00000000,B00000001,
|
||||
B10000011,B11111000,B00000000,B00000001,
|
||||
B10000111,B11111100,B00111111,B11100001,
|
||||
B10000000,B11100000,B00111111,B11100001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
};
|
||||
|
||||
static const uint8_t buttonB[] = {
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000111,B11111110,B00000111,B00000001,
|
||||
B10000111,B11111110,B00111111,B11100001,
|
||||
B10000000,B01100000,B00011111,B11000001,
|
||||
B10000000,B01100000,B00001111,B10000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000010,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
static const uint8_t buttonC[] = {
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00011100,B00000001,
|
||||
B10000000,B00000100,B00011100,B00000001,
|
||||
B10000000,B00001100,B00011100,B00000001,
|
||||
B10000000,B00011111,B11111100,B00000001,
|
||||
B10000000,B00111111,B11111100,B00000001,
|
||||
B10000000,B00011111,B11111100,B00000001,
|
||||
B10000000,B00001100,B00000000,B00000001,
|
||||
B10000000,B00000100,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
};
|
||||
|
||||
void drawImage(const uint8_t *data, u8g_t *u8g, u8g_dev_t *dev, uint16_t length, uint16_t height, uint16_t color) {
|
||||
uint16_t buffer[128];
|
||||
|
||||
for (uint16_t i = 0; i < height; i++) {
|
||||
uint16_t k = 0;
|
||||
for (uint16_t j = 0; j < length; j++) {
|
||||
uint16_t v = TFT_MARLINBG_COLOR;
|
||||
if (*(data + (i * (length >> 3) + (j >> 3))) & (0x80 >> (j & 7)))
|
||||
v = color;
|
||||
else
|
||||
v = TFT_MARLINBG_COLOR;
|
||||
buffer[k++] = v; buffer[k++] = v;
|
||||
}
|
||||
#ifdef LCD_USE_DMA_FSMC
|
||||
if (k <= 80) { // generally is... for our buttons
|
||||
memcpy(&buffer[k], &buffer[0], k * sizeof(uint16_t));
|
||||
LCD_IO_WriteSequence(buffer, k * sizeof(uint16_t));
|
||||
}
|
||||
else {
|
||||
LCD_IO_WriteSequence(buffer, k);
|
||||
LCD_IO_WriteSequence(buffer, k);
|
||||
}
|
||||
#else
|
||||
u8g_WriteSequence(u8g, dev, k << 1, (uint8_t *)buffer);
|
||||
u8g_WriteSequence(u8g, dev, k << 1, (uint8_t *)buffer);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#endif // TOUCH_BUTTONS
|
||||
|
||||
// Used to fill RGB565 (16bits) background
|
||||
inline void memset2(const void *ptr, uint16_t fill, size_t cnt) {
|
||||
uint16_t* wptr = (uint16_t*)ptr;
|
||||
for (size_t i = 0; i < cnt; i += 2) { *wptr = fill; wptr++; }
|
||||
}
|
||||
|
||||
static bool preinit = true;
|
||||
static uint8_t page;
|
||||
|
||||
uint8_t u8g_dev_tft_320x240_upscale_from_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
|
||||
u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
|
||||
#ifdef LCD_USE_DMA_FSMC
|
||||
static uint16_t bufferA[512], bufferB[512];
|
||||
uint16_t* buffer = &bufferA[0];
|
||||
bool allow_async = true;
|
||||
#else
|
||||
uint16_t buffer[WIDTH*2]; // 16-bit RGB 565 pixel line buffer
|
||||
#endif
|
||||
switch (msg) {
|
||||
case U8G_DEV_MSG_INIT:
|
||||
dev->com_fn(u8g, U8G_COM_MSG_INIT, U8G_SPI_CLK_CYCLE_NONE, &lcd_id);
|
||||
|
||||
switch(lcd_id & 0xFFFF) {
|
||||
case 0x8552: // ST7789V
|
||||
#ifdef LCD_USE_DMA_FSMC
|
||||
writeEscSequence(st7789v_init);
|
||||
#else
|
||||
writeEscSequence8(u8g, dev, st7789v_init);
|
||||
#endif
|
||||
setWindow = setWindow_st7789v;
|
||||
break;
|
||||
case 0x9328: // ILI9328
|
||||
#ifdef LCD_USE_DMA_FSMC
|
||||
writeEscSequence(ili9328_init);
|
||||
#else
|
||||
writeEscSequence16(u8g, dev, ili9328_init);
|
||||
#endif
|
||||
setWindow = setWindow_ili9328;
|
||||
break;
|
||||
case 0x9341: // ILI9341
|
||||
#ifdef LCD_USE_DMA_FSMC
|
||||
writeEscSequence(ili9341_init);
|
||||
#else
|
||||
writeEscSequence8(u8g, dev, ili9341_init);
|
||||
#endif
|
||||
setWindow = setWindow_st7789v;
|
||||
break;
|
||||
case 0x0404: // No connected display on FSMC
|
||||
lcd_id = 0;
|
||||
return 0;
|
||||
case 0xFFFF: // No connected display on SPI
|
||||
lcd_id = 0;
|
||||
return 0;
|
||||
default:
|
||||
if (lcd_id && 0xFF000000)
|
||||
setWindow = setWindow_st7789v;
|
||||
else
|
||||
setWindow = setWindow_ili9328;
|
||||
break;
|
||||
}
|
||||
|
||||
if (preinit) {
|
||||
preinit = false;
|
||||
return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
|
||||
}
|
||||
|
||||
// Clear Screen
|
||||
setWindow(u8g, dev, 0, 0, LCD_FULL_PIXEL_WIDTH - 1, LCD_FULL_PIXEL_HEIGHT - 1);
|
||||
#ifdef LCD_USE_DMA_FSMC
|
||||
LCD_IO_WriteMultiple(TFT_MARLINBG_COLOR, LCD_FULL_PIXEL_WIDTH * LCD_FULL_PIXEL_HEIGHT);
|
||||
#else
|
||||
memset2(buffer, TFT_MARLINBG_COLOR, 160);
|
||||
for (uint16_t i = 0; i < 960; i++)
|
||||
u8g_WriteSequence(u8g, dev, 160, (uint8_t *)buffer);
|
||||
#endif
|
||||
|
||||
// bottom line and buttons
|
||||
#if ENABLED(TOUCH_BUTTONS)
|
||||
|
||||
setWindow(u8g, dev, 10, 170, 309, 171);
|
||||
#ifdef LCD_USE_DMA_FSMC
|
||||
LCD_IO_WriteMultiple(TFT_DISABLED_COLOR, 600);
|
||||
#else
|
||||
memset2(buffer, TFT_DISABLED_COLOR, 150);
|
||||
for (uint8_t i = 8; i--;)
|
||||
u8g_WriteSequence(u8g, dev, 150, (uint8_t *)buffer);
|
||||
#endif
|
||||
|
||||
setWindow(u8g, dev, 14, 185, 77, 224);
|
||||
drawImage(buttonD, u8g, dev, 32, 20, TFT_BTCANCEL_COLOR);
|
||||
|
||||
setWindow(u8g, dev, 90, 185, 153, 224);
|
||||
drawImage(buttonA, u8g, dev, 32, 20, TFT_BTARROWS_COLOR);
|
||||
|
||||
setWindow(u8g, dev, 166, 185, 229, 224);
|
||||
drawImage(buttonB, u8g, dev, 32, 20, TFT_BTARROWS_COLOR);
|
||||
|
||||
setWindow(u8g, dev, 242, 185, 305, 224);
|
||||
drawImage(buttonC, u8g, dev, 32, 20, TFT_BTOKMENU_COLOR);
|
||||
#endif // TOUCH_BUTTONS
|
||||
|
||||
return 0;
|
||||
|
||||
case U8G_DEV_MSG_STOP: preinit = true; break;
|
||||
|
||||
case U8G_DEV_MSG_PAGE_FIRST:
|
||||
page = 0;
|
||||
setWindow(u8g, dev, X_LO, Y_LO, X_HI, Y_HI);
|
||||
break;
|
||||
|
||||
case U8G_DEV_MSG_PAGE_NEXT:
|
||||
if (++page > (HEIGHT / PAGE_HEIGHT)) return 1;
|
||||
|
||||
LOOP_L_N(y, PAGE_HEIGHT) {
|
||||
uint32_t k = 0;
|
||||
#ifdef LCD_USE_DMA_FSMC
|
||||
buffer = (y & 1) ? bufferB : bufferA;
|
||||
#endif
|
||||
for (uint16_t i = 0; i < (uint32_t)pb->width; i++) {
|
||||
const uint8_t b = *(((uint8_t *)pb->buf) + i);
|
||||
const uint16_t c = TEST(b, y) ? TFT_MARLINUI_COLOR : TFT_MARLINBG_COLOR;
|
||||
buffer[k++] = c; buffer[k++] = c;
|
||||
}
|
||||
#ifdef LCD_USE_DMA_FSMC
|
||||
memcpy(&buffer[256], &buffer[0], 512);
|
||||
if (allow_async) {
|
||||
if (y > 0 || page > 1) LCD_IO_WaitSequence_Async();
|
||||
if (y == 7 && page == 8)
|
||||
LCD_IO_WriteSequence(buffer, 512); // last line of last page
|
||||
else
|
||||
LCD_IO_WriteSequence_Async(buffer, 512);
|
||||
}
|
||||
else
|
||||
LCD_IO_WriteSequence(buffer, 512);
|
||||
#else
|
||||
uint8_t* bufptr = (uint8_t*) buffer;
|
||||
for (uint8_t i = 2; i--;) {
|
||||
u8g_WriteSequence(u8g, dev, WIDTH, &bufptr[0]);
|
||||
u8g_WriteSequence(u8g, dev, WIDTH, &bufptr[WIDTH]);
|
||||
u8g_WriteSequence(u8g, dev, WIDTH, &bufptr[WIDTH*2]);
|
||||
u8g_WriteSequence(u8g, dev, WIDTH, &bufptr[WIDTH*3]);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
case U8G_DEV_MSG_SLEEP_ON:
|
||||
// Enter Sleep Mode (10h)
|
||||
return 1;
|
||||
case U8G_DEV_MSG_SLEEP_OFF:
|
||||
// Sleep Out (11h)
|
||||
return 1;
|
||||
}
|
||||
return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
|
||||
}
|
||||
|
||||
U8G_PB_DEV(u8g_dev_tft_320x240_upscale_from_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_tft_320x240_upscale_from_128x64_fn, U8G_COM_HAL_FSMC_FN);
|
||||
|
||||
#endif // HAS_GRAPHICAL_LCD && FSMC_CS
|
||||
557
Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp
Normal file
557
Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp
Normal file
@@ -0,0 +1,557 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* u8g_dev_tft_320x240_upscale_from_128x64.cpp
|
||||
*
|
||||
* Universal 8bit Graphics Library
|
||||
*
|
||||
* Copyright (c) 2011, olikraus@gmail.com
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or other
|
||||
* materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
|
||||
#if HAS_MARLINUI_U8GLIB && (PIN_EXISTS(FSMC_CS) || HAS_SPI_GRAPHICAL_TFT || HAS_LTDC_GRAPHICAL_TFT)
|
||||
|
||||
#include "HAL_LCD_com_defines.h"
|
||||
#include "marlinui_DOGM.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#if ANY(LCD_USE_DMA_FSMC, LCD_USE_DMA_SPI, HAS_LTDC_GRAPHICAL_TFT)
|
||||
#define HAS_LCD_IO 1
|
||||
#endif
|
||||
|
||||
#include "../tft_io/tft_io.h"
|
||||
TFT_IO tftio;
|
||||
|
||||
#define WIDTH LCD_PIXEL_WIDTH
|
||||
#define HEIGHT LCD_PIXEL_HEIGHT
|
||||
#define PAGE_HEIGHT 8
|
||||
|
||||
#if ENABLED(TOUCH_SCREEN_CALIBRATION)
|
||||
#include "../tft_io/touch_calibration.h"
|
||||
#include "../marlinui.h"
|
||||
#endif
|
||||
|
||||
#if HAS_TOUCH_BUTTONS
|
||||
#include "../touch/touch_buttons.h"
|
||||
#if HAS_TOUCH_SLEEP
|
||||
#define HAS_TOUCH_BUTTONS_SLEEP 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define X_HI (UPSCALE(TFT_PIXEL_OFFSET_X, WIDTH) - 1)
|
||||
#define Y_HI (UPSCALE(TFT_PIXEL_OFFSET_Y, HEIGHT) - 1)
|
||||
|
||||
// 16 bit color generator: https://ee-programming-notepad.blogspot.com/2016/10/16-bit-color-generator-picker.html
|
||||
// RGB565 color picker: https://trolsoft.ru/en/articles/rgb565-color-picker
|
||||
|
||||
#define COLOR_BLACK 0x0000 // #000000
|
||||
#define COLOR_WHITE 0xFFFF // #FFFFFF
|
||||
#define COLOR_SILVER 0xC618 // #C0C0C0
|
||||
#define COLOR_GREY 0x7BEF // #808080
|
||||
#define COLOR_DARKGREY 0x4208 // #404040
|
||||
#define COLOR_DARKGREY2 0x39E7 // #303030
|
||||
#define COLOR_DARK 0x0003 // #000019
|
||||
|
||||
#define COLOR_RED 0xF800 // #FF0000
|
||||
#define COLOR_LIME 0x7E00 // #00FF00
|
||||
#define COLOR_BLUE 0x001F // #0000FF
|
||||
#define COLOR_YELLOW 0xFFE0 // #FFFF00
|
||||
#define COLOR_MAGENTA 0xF81F // #FF00FF
|
||||
#define COLOR_FUCHSIA 0xF81F // #FF00FF
|
||||
#define COLOR_CYAN 0x07FF // #00FFFF
|
||||
#define COLOR_AQUA 0x07FF // #00FFFF
|
||||
|
||||
#define COLOR_MAROON 0x7800 // #800000
|
||||
#define COLOR_GREEN 0x03E0 // #008000
|
||||
#define COLOR_NAVY 0x000F // #000080
|
||||
#define COLOR_OLIVE 0x8400 // #808000
|
||||
#define COLOR_PURPLE 0x8010 // #800080
|
||||
#define COLOR_TEAL 0x0410 // #008080
|
||||
|
||||
#define COLOR_ORANGE 0xFC00 // #FF7F00
|
||||
|
||||
#ifndef TFT_MARLINUI_COLOR
|
||||
#define TFT_MARLINUI_COLOR COLOR_WHITE
|
||||
#endif
|
||||
#ifndef TFT_MARLINBG_COLOR
|
||||
#define TFT_MARLINBG_COLOR COLOR_BLACK
|
||||
#endif
|
||||
#ifndef TFT_DISABLED_COLOR
|
||||
#define TFT_DISABLED_COLOR COLOR_DARK
|
||||
#endif
|
||||
#ifndef TFT_BTCANCEL_COLOR
|
||||
#define TFT_BTCANCEL_COLOR COLOR_RED
|
||||
#endif
|
||||
#ifndef TFT_BTARROWS_COLOR
|
||||
#define TFT_BTARROWS_COLOR COLOR_BLUE
|
||||
#endif
|
||||
#ifndef TFT_BTOKMENU_COLOR
|
||||
#define TFT_BTOKMENU_COLOR COLOR_RED
|
||||
#endif
|
||||
|
||||
static void setWindow(u8g_t *u8g, u8g_dev_t *dev, uint16_t Xmin, uint16_t Ymin, uint16_t Xmax, uint16_t Ymax) {
|
||||
tftio.set_window(Xmin, Ymin, Xmax, Ymax);
|
||||
}
|
||||
|
||||
#if HAS_TOUCH_BUTTONS
|
||||
|
||||
static const uint8_t buttonD[] = {
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00011000,B00110000,B00000001,
|
||||
B10000000,B00001100,B01100000,B00000001,
|
||||
B10000000,B00000110,B11000000,B00000001,
|
||||
B10000000,B00000011,B10000000,B00000001,
|
||||
B10000000,B00000011,B10000000,B00000001,
|
||||
B10000000,B00000110,B11000000,B00000001,
|
||||
B10000000,B00001100,B01100000,B00000001,
|
||||
B10000000,B00011000,B00110000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
};
|
||||
|
||||
#if ENABLED(REVERSE_MENU_DIRECTION)
|
||||
|
||||
static const uint8_t buttonA[] = {
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00111111,B11100001,
|
||||
B10000111,B11111100,B00111111,B11100001,
|
||||
B10000011,B11111000,B00000000,B00000001,
|
||||
B10000001,B11110000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B01000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
};
|
||||
static const uint8_t buttonB[] = {
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B01100000,B00000010,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00001111,B10000001,
|
||||
B10000000,B01100000,B00011111,B11000001,
|
||||
B10000111,B11111110,B00111111,B11100001,
|
||||
B10000111,B11111110,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
static const uint8_t buttonA[] = {
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B01000000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000001,B11110000,B00000000,B00000001,
|
||||
B10000011,B11111000,B00000000,B00000001,
|
||||
B10000111,B11111100,B00111111,B11100001,
|
||||
B10000000,B11100000,B00111111,B11100001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B11100000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
};
|
||||
|
||||
static const uint8_t buttonB[] = {
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000111,B11111110,B00000111,B00000001,
|
||||
B10000111,B11111110,B00111111,B11100001,
|
||||
B10000000,B01100000,B00011111,B11000001,
|
||||
B10000000,B01100000,B00001111,B10000001,
|
||||
B10000000,B01100000,B00000111,B00000001,
|
||||
B10000000,B01100000,B00000010,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
static const uint8_t buttonC[] = {
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00011100,B00000001,
|
||||
B10000000,B00000100,B00011100,B00000001,
|
||||
B10000000,B00001100,B00011100,B00000001,
|
||||
B10000000,B00011111,B11111100,B00000001,
|
||||
B10000000,B00111111,B11111100,B00000001,
|
||||
B10000000,B00011111,B11111100,B00000001,
|
||||
B10000000,B00001100,B00000000,B00000001,
|
||||
B10000000,B00000100,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B10000000,B00000000,B00000000,B00000001,
|
||||
B01111111,B11111111,B11111111,B11111110,
|
||||
};
|
||||
|
||||
void drawImage(const uint8_t *data, u8g_t *u8g, u8g_dev_t *dev, uint16_t length, uint16_t height, uint16_t color) {
|
||||
uint16_t buffer[BUTTON_WIDTH * sq(GRAPHICAL_TFT_UPSCALE)];
|
||||
|
||||
if (length > BUTTON_WIDTH) return;
|
||||
|
||||
for (uint16_t i = 0; i < height; i++) {
|
||||
uint16_t k = 0;
|
||||
for (uint16_t j = 0; j < length; j++) {
|
||||
uint16_t v = TFT_MARLINBG_COLOR;
|
||||
if (*(data + (i * (length >> 3) + (j >> 3))) & (0x80 >> (j & 7)))
|
||||
v = color;
|
||||
else
|
||||
v = TFT_MARLINBG_COLOR;
|
||||
LOOP_L_N(n, GRAPHICAL_TFT_UPSCALE) buffer[k++] = v;
|
||||
}
|
||||
#if HAS_LCD_IO
|
||||
LOOP_S_L_N(n, 1, GRAPHICAL_TFT_UPSCALE)
|
||||
for (uint16_t l = 0; l < UPSCALE0(length); l++)
|
||||
buffer[l + n * UPSCALE0(length)] = buffer[l];
|
||||
|
||||
tftio.WriteSequence(buffer, length * sq(GRAPHICAL_TFT_UPSCALE));
|
||||
#else
|
||||
for (uint8_t i = GRAPHICAL_TFT_UPSCALE; i--;)
|
||||
u8g_WriteSequence(u8g, dev, k << 1, (uint8_t*)buffer);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#endif // HAS_TOUCH_BUTTONS
|
||||
|
||||
// Used to fill RGB565 (16bits) background
|
||||
inline void memset2(const void *ptr, uint16_t fill, size_t cnt) {
|
||||
uint16_t *wptr = (uint16_t*)ptr;
|
||||
for (size_t i = 0; i < cnt; i += 2) { *wptr = fill; wptr++; }
|
||||
}
|
||||
|
||||
static bool preinit = true;
|
||||
static uint8_t page;
|
||||
|
||||
#if HAS_TOUCH_BUTTONS
|
||||
static bool redrawTouchButtons = true;
|
||||
static void drawTouchButtons(u8g_t *u8g, u8g_dev_t *dev) {
|
||||
if (!redrawTouchButtons) return;
|
||||
redrawTouchButtons = false;
|
||||
|
||||
// Bottom buttons
|
||||
setWindow(u8g, dev, BUTTOND_X_LO, BUTTON_Y_LO, BUTTOND_X_HI, BUTTON_Y_HI);
|
||||
drawImage(buttonD, u8g, dev, BUTTON_DRAW_WIDTH, BUTTON_DRAW_HEIGHT, TFT_BTCANCEL_COLOR);
|
||||
|
||||
setWindow(u8g, dev, BUTTONA_X_LO, BUTTON_Y_LO, BUTTONA_X_HI, BUTTON_Y_HI);
|
||||
drawImage(buttonA, u8g, dev, BUTTON_DRAW_WIDTH, BUTTON_DRAW_HEIGHT, TFT_BTARROWS_COLOR);
|
||||
|
||||
setWindow(u8g, dev, BUTTONB_X_LO, BUTTON_Y_LO, BUTTONB_X_HI, BUTTON_Y_HI);
|
||||
drawImage(buttonB, u8g, dev, BUTTON_DRAW_WIDTH, BUTTON_DRAW_HEIGHT, TFT_BTARROWS_COLOR);
|
||||
|
||||
setWindow(u8g, dev, BUTTONC_X_LO, BUTTON_Y_LO, BUTTONC_X_HI, BUTTON_Y_HI);
|
||||
drawImage(buttonC, u8g, dev, BUTTON_DRAW_WIDTH, BUTTON_DRAW_HEIGHT, TFT_BTOKMENU_COLOR);
|
||||
}
|
||||
#endif // HAS_TOUCH_BUTTONS
|
||||
|
||||
static void u8g_upscale_clear_lcd(u8g_t *u8g, u8g_dev_t *dev, uint16_t *buffer) {
|
||||
setWindow(u8g, dev, 0, 0, (TFT_WIDTH) - 1, (TFT_HEIGHT) - 1);
|
||||
#if HAS_LCD_IO
|
||||
UNUSED(buffer);
|
||||
tftio.WriteMultiple(TFT_MARLINBG_COLOR, (TFT_WIDTH) * (TFT_HEIGHT));
|
||||
#else
|
||||
memset2(buffer, TFT_MARLINBG_COLOR, (TFT_WIDTH) / 2);
|
||||
for (uint16_t i = 0; i < (TFT_HEIGHT) * sq(GRAPHICAL_TFT_UPSCALE); i++)
|
||||
u8g_WriteSequence(u8g, dev, (TFT_WIDTH) / 2, (uint8_t *)buffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
static uint8_t msgInitCount = 2; // Ignore all messages until 2nd U8G_COM_MSG_INIT
|
||||
|
||||
uint8_t u8g_dev_tft_320x240_upscale_from_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
|
||||
u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
|
||||
|
||||
#if HAS_LCD_IO
|
||||
static uint16_t bufferA[WIDTH * sq(GRAPHICAL_TFT_UPSCALE)], bufferB[WIDTH * sq(GRAPHICAL_TFT_UPSCALE)];
|
||||
uint16_t *buffer = &bufferA[0];
|
||||
#else
|
||||
uint16_t buffer[WIDTH * GRAPHICAL_TFT_UPSCALE]; // 16-bit RGB 565 pixel line buffer
|
||||
#endif
|
||||
|
||||
switch (msg) {
|
||||
case U8G_DEV_MSG_INIT:
|
||||
dev->com_fn(u8g, U8G_COM_MSG_INIT, U8G_SPI_CLK_CYCLE_NONE, nullptr);
|
||||
|
||||
if (preinit) {
|
||||
preinit = false;
|
||||
return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
|
||||
}
|
||||
|
||||
if (msgInitCount) return -1;
|
||||
tftio.Init();
|
||||
tftio.InitTFT();
|
||||
TERN_(TOUCH_SCREEN_CALIBRATION, touch_calibration.calibration_reset());
|
||||
u8g_upscale_clear_lcd(u8g, dev, buffer);
|
||||
return 0;
|
||||
|
||||
case U8G_DEV_MSG_STOP: preinit = true; break;
|
||||
|
||||
case U8G_DEV_MSG_PAGE_FIRST: {
|
||||
page = 0;
|
||||
#if HAS_TOUCH_BUTTONS_SLEEP
|
||||
static bool sleepCleared;
|
||||
if (touchBt.isSleeping()) {
|
||||
if (!sleepCleared) {
|
||||
sleepCleared = true;
|
||||
u8g_upscale_clear_lcd(u8g, dev, buffer);
|
||||
IF_ENABLED(HAS_TOUCH_BUTTONS, redrawTouchButtons = true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
sleepCleared = false;
|
||||
#endif
|
||||
TERN_(HAS_TOUCH_BUTTONS, drawTouchButtons(u8g, dev));
|
||||
setWindow(u8g, dev, TFT_PIXEL_OFFSET_X, TFT_PIXEL_OFFSET_Y, X_HI, Y_HI);
|
||||
} break;
|
||||
|
||||
case U8G_DEV_MSG_PAGE_NEXT:
|
||||
if (TERN0(HAS_TOUCH_BUTTONS_SLEEP, touchBt.isSleeping())) break;
|
||||
if (++page > (HEIGHT / PAGE_HEIGHT)) return 1;
|
||||
|
||||
LOOP_L_N(y, PAGE_HEIGHT) {
|
||||
uint32_t k = 0;
|
||||
TERN_(HAS_LCD_IO, buffer = (y & 1) ? bufferB : bufferA);
|
||||
for (uint16_t i = 0; i < (uint32_t)pb->width; i++) {
|
||||
const uint8_t b = *(((uint8_t *)pb->buf) + i);
|
||||
const uint16_t c = TEST(b, y) ? TFT_MARLINUI_COLOR : TFT_MARLINBG_COLOR;
|
||||
LOOP_L_N(n, GRAPHICAL_TFT_UPSCALE) buffer[k++] = c;
|
||||
}
|
||||
#if HAS_LCD_IO
|
||||
LOOP_S_L_N(n, 1, GRAPHICAL_TFT_UPSCALE)
|
||||
for (uint16_t l = 0; l < UPSCALE0(WIDTH); l++)
|
||||
buffer[l + n * UPSCALE0(WIDTH)] = buffer[l];
|
||||
|
||||
tftio.WriteSequence(buffer, COUNT(bufferA));
|
||||
#else
|
||||
uint8_t *bufptr = (uint8_t*) buffer;
|
||||
for (uint8_t i = GRAPHICAL_TFT_UPSCALE; i--;) {
|
||||
LOOP_S_L_N(n, 0, GRAPHICAL_TFT_UPSCALE * 2) {
|
||||
u8g_WriteSequence(u8g, dev, WIDTH, &bufptr[WIDTH * n]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
case U8G_DEV_MSG_SLEEP_ON:
|
||||
// Enter Sleep Mode (10h)
|
||||
return 1;
|
||||
case U8G_DEV_MSG_SLEEP_OFF:
|
||||
// Sleep Out (11h)
|
||||
return 1;
|
||||
}
|
||||
return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
|
||||
}
|
||||
|
||||
uint8_t u8g_com_hal_tft_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
|
||||
if (msgInitCount) {
|
||||
if (msg == U8G_COM_MSG_INIT) msgInitCount--;
|
||||
if (msgInitCount) return -1;
|
||||
}
|
||||
|
||||
static uint8_t isCommand;
|
||||
|
||||
switch (msg) {
|
||||
case U8G_COM_MSG_STOP: break;
|
||||
case U8G_COM_MSG_INIT:
|
||||
isCommand = 0;
|
||||
break;
|
||||
|
||||
case U8G_COM_MSG_ADDRESS: // define cmd (arg_val = 0) or data mode (arg_val = 1)
|
||||
isCommand = arg_val == 0 ? 1 : 0;
|
||||
break;
|
||||
|
||||
case U8G_COM_MSG_RESET:
|
||||
break;
|
||||
|
||||
case U8G_COM_MSG_WRITE_BYTE:
|
||||
tftio.DataTransferBegin(DATASIZE_8BIT);
|
||||
if (isCommand)
|
||||
tftio.WriteReg(arg_val);
|
||||
else
|
||||
tftio.WriteData((uint16_t)arg_val);
|
||||
tftio.DataTransferEnd();
|
||||
break;
|
||||
|
||||
case U8G_COM_MSG_WRITE_SEQ:
|
||||
tftio.DataTransferBegin(DATASIZE_16BIT);
|
||||
for (uint8_t i = 0; i < arg_val; i += 2)
|
||||
tftio.WriteData(*(uint16_t *)(((uintptr_t)arg_ptr) + i));
|
||||
tftio.DataTransferEnd();
|
||||
break;
|
||||
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
U8G_PB_DEV(u8g_dev_tft_320x240_upscale_from_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_tft_320x240_upscale_from_128x64_fn, U8G_COM_HAL_TFT_FN);
|
||||
|
||||
#if ENABLED(TOUCH_SCREEN_CALIBRATION)
|
||||
|
||||
static void drawCross(uint16_t x, uint16_t y, uint16_t color) {
|
||||
tftio.set_window(x - 15, y, x + 15, y);
|
||||
tftio.WriteMultiple(color, 31);
|
||||
tftio.set_window(x, y - 15, x, y + 15);
|
||||
tftio.WriteMultiple(color, 31);
|
||||
}
|
||||
|
||||
void MarlinUI::touch_calibration_screen() {
|
||||
uint16_t x, y;
|
||||
calibrationState calibration_stage = touch_calibration.get_calibration_state();
|
||||
|
||||
if (calibration_stage == CALIBRATION_NONE) {
|
||||
// start and clear screen
|
||||
defer_status_screen(true);
|
||||
calibration_stage = touch_calibration.calibration_start();
|
||||
tftio.set_window(0, 0, (TFT_WIDTH) - 1, (TFT_HEIGHT) - 1);
|
||||
tftio.WriteMultiple(TFT_MARLINBG_COLOR, uint32_t(TFT_WIDTH) * (TFT_HEIGHT));
|
||||
}
|
||||
else {
|
||||
// clear last cross
|
||||
x = touch_calibration.calibration_points[_MIN(calibration_stage - 1, CALIBRATION_BOTTOM_RIGHT)].x;
|
||||
y = touch_calibration.calibration_points[_MIN(calibration_stage - 1, CALIBRATION_BOTTOM_RIGHT)].y;
|
||||
drawCross(x, y, TFT_MARLINBG_COLOR);
|
||||
}
|
||||
|
||||
const char *str = nullptr;
|
||||
if (calibration_stage < CALIBRATION_SUCCESS) {
|
||||
// handle current state
|
||||
switch (calibration_stage) {
|
||||
case CALIBRATION_TOP_LEFT: str = GET_TEXT(MSG_TOP_LEFT); break;
|
||||
case CALIBRATION_BOTTOM_LEFT: str = GET_TEXT(MSG_BOTTOM_LEFT); break;
|
||||
case CALIBRATION_TOP_RIGHT: str = GET_TEXT(MSG_TOP_RIGHT); break;
|
||||
case CALIBRATION_BOTTOM_RIGHT: str = GET_TEXT(MSG_BOTTOM_RIGHT); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
x = touch_calibration.calibration_points[calibration_stage].x;
|
||||
y = touch_calibration.calibration_points[calibration_stage].y;
|
||||
drawCross(x, y, TFT_MARLINUI_COLOR);
|
||||
}
|
||||
else {
|
||||
// end calibration
|
||||
str = calibration_stage == CALIBRATION_SUCCESS ? GET_TEXT(MSG_CALIBRATION_COMPLETED) : GET_TEXT(MSG_CALIBRATION_FAILED);
|
||||
defer_status_screen(false);
|
||||
touch_calibration.calibration_end();
|
||||
TERN_(HAS_TOUCH_BUTTONS, redrawTouchButtons = true);
|
||||
}
|
||||
|
||||
// draw current message
|
||||
tftio.set_window(TFT_PIXEL_OFFSET_X, TFT_PIXEL_OFFSET_Y, X_HI, Y_HI);
|
||||
do {
|
||||
set_font(FONT_MENU);
|
||||
lcd_put_u8str(0, LCD_PIXEL_HEIGHT / 2, str);
|
||||
} while (u8g.nextPage());
|
||||
drawing_screen = false;
|
||||
safe_delay(250);
|
||||
if (calibration_stage == CALIBRATION_SUCCESS) {
|
||||
safe_delay(500);
|
||||
ui.goto_previous_screen();
|
||||
}
|
||||
}
|
||||
|
||||
#endif // TOUCH_SCREEN_CALIBRATION
|
||||
|
||||
#endif // HAS_MARLINUI_U8GLIB && (FSMC_CS_PIN || HAS_SPI_GRAPHICAL_TFT)
|
||||
7
Marlin/src/lcd/dogm/u8g_dev_uc1701_mini12864_HAL.cpp
Executable file → Normal file
7
Marlin/src/lcd/dogm/u8g_dev_uc1701_mini12864_HAL.cpp
Executable file → Normal file
@@ -16,7 +16,7 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if HAS_GRAPHICAL_LCD
|
||||
#if HAS_MARLINUI_U8GLIB
|
||||
|
||||
#include "HAL_LCD_com_defines.h"
|
||||
|
||||
@@ -112,6 +112,7 @@ static const uint8_t u8g_dev_uc1701_mini12864_HAL_init_seq[] PROGMEM = {
|
||||
U8G_ESC_CS(1), // enable chip
|
||||
UC1701_ALL_PIX(0), // normal display
|
||||
U8G_ESC_CS(0), // disable chip
|
||||
U8G_ESC_DLY(150), // delay 150 ms before sending any data
|
||||
U8G_ESC_END // end of sequence
|
||||
};
|
||||
|
||||
@@ -209,4 +210,4 @@ u8g_pb_t u8g_dev_uc1701_mini12864_HAL_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u
|
||||
u8g_dev_t u8g_dev_uc1701_mini12864_HAL_2x_sw_spi = { u8g_dev_uc1701_mini12864_HAL_2x_fn, &u8g_dev_uc1701_mini12864_HAL_2x_pb, U8G_COM_HAL_SW_SPI_FN };
|
||||
u8g_dev_t u8g_dev_uc1701_mini12864_HAL_2x_hw_spi = { u8g_dev_uc1701_mini12864_HAL_2x_fn, &u8g_dev_uc1701_mini12864_HAL_2x_pb, U8G_COM_HAL_HW_SPI_FN };
|
||||
|
||||
#endif // HAS_GRAPHICAL_LCD
|
||||
#endif // HAS_MARLINUI_U8GLIB
|
||||
|
||||
6
Marlin/src/lcd/dogm/u8g_fontutf8.cpp
Executable file → Normal file
6
Marlin/src/lcd/dogm/u8g_fontutf8.cpp
Executable file → Normal file
@@ -9,7 +9,7 @@
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if HAS_GRAPHICAL_LCD
|
||||
#if HAS_MARLINUI_U8GLIB
|
||||
|
||||
#include <string.h>
|
||||
#include "../fontutils.h"
|
||||
@@ -140,7 +140,6 @@ static int fontgroup_cb_draw_u8g(void *userdata, const font_t *fnt_current, cons
|
||||
|
||||
if (pdata->fnt_prev != fnt_current) {
|
||||
u8g_SetFont(pdata->pu8g, (const u8g_fntpgm_uint8_t*)fnt_current);
|
||||
//u8g_SetFontPosBottom(pdata->pu8g);
|
||||
pdata->fnt_prev = fnt_current;
|
||||
}
|
||||
if ((pdata->max_width != PIXEL_LEN_NOLIMIT) && (pdata->adv + u8g_GetStrPixelWidth(pdata->pu8g, (char*)msg) > pdata->max_width))
|
||||
@@ -256,7 +255,6 @@ static int fontgroup_cb_draw_u8gstrlen(void *userdata, const font_t *fnt_current
|
||||
|
||||
if (pdata->fnt_prev != fnt_current) {
|
||||
u8g_SetFont(pdata->pu8g, (const u8g_fntpgm_uint8_t*)fnt_current);
|
||||
u8g_SetFontPosBottom(pdata->pu8g);
|
||||
pdata->fnt_prev = fnt_current;
|
||||
}
|
||||
pdata->adv += u8g_GetStrPixelWidth(pdata->pu8g, (char*)msg);
|
||||
@@ -314,4 +312,4 @@ int uxg_GetUtf8StrPixelWidthP(u8g_t *pu8g, PGM_P utf8_msg) {
|
||||
return data.adv;
|
||||
}
|
||||
|
||||
#endif // HAS_GRAPHICAL_LCD
|
||||
#endif // HAS_MARLINUI_U8GLIB
|
||||
|
||||
5
Marlin/src/lcd/dogm/u8g_fontutf8.h
Executable file → Normal file
5
Marlin/src/lcd/dogm/u8g_fontutf8.h
Executable file → Normal file
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <U8glib.h>
|
||||
#include <U8glib-HAL.h>
|
||||
#include "../fontutils.h"
|
||||
|
||||
// the macro to indicate a UTF-8 string
|
||||
@@ -35,3 +35,6 @@ int uxg_GetUtf8StrPixelWidth(u8g_t *pu8g, const char *utf8_msg);
|
||||
int uxg_GetUtf8StrPixelWidthP(u8g_t *pu8g, PGM_P utf8_msg);
|
||||
|
||||
#define uxg_GetFont(puxg) ((puxg)->font)
|
||||
|
||||
#define _LANG_FONT_INFO(L) g_fontinfo_##L
|
||||
#define LANG_FONT_INFO(L) _LANG_FONT_INFO(L)
|
||||
|
||||
65
Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.cpp
Executable file → Normal file
65
Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.cpp
Executable file → Normal file
@@ -16,7 +16,7 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -33,25 +33,64 @@
|
||||
|
||||
#include "ultralcd_st7920_u8glib_rrd_AVR.h"
|
||||
|
||||
#ifndef ST7920_DELAY_1
|
||||
#define ST7920_DELAY_1 CPU_ST7920_DELAY_1
|
||||
#endif
|
||||
#ifndef ST7920_DELAY_2
|
||||
#define ST7920_DELAY_2 CPU_ST7920_DELAY_2
|
||||
#endif
|
||||
#ifndef ST7920_DELAY_3
|
||||
#define ST7920_DELAY_3 CPU_ST7920_DELAY_3
|
||||
#endif
|
||||
|
||||
// Optimize this code with -O3
|
||||
#pragma GCC optimize (3)
|
||||
|
||||
#ifndef ST7920_DELAY_1
|
||||
#ifndef LCD_ST7920_DELAY_1
|
||||
#define LCD_ST7920_DELAY_1 0
|
||||
#endif
|
||||
#ifndef BOARD_ST7920_DELAY_1
|
||||
#define BOARD_ST7920_DELAY_1 0
|
||||
#endif
|
||||
#ifndef CPU_ST7920_DELAY_1
|
||||
#define CPU_ST7920_DELAY_1 0
|
||||
#endif
|
||||
#if LCD_ST7920_DELAY_1 || BOARD_ST7920_DELAY_1 || CPU_ST7920_DELAY_1
|
||||
#define ST7920_DELAY_1 DELAY_NS(_MAX(LCD_ST7920_DELAY_1, BOARD_ST7920_DELAY_1, CPU_ST7920_DELAY_1))
|
||||
#else
|
||||
#define ST7920_DELAY_1
|
||||
#endif
|
||||
#endif
|
||||
#ifndef ST7920_DELAY_2
|
||||
#ifndef LCD_ST7920_DELAY_2
|
||||
#define LCD_ST7920_DELAY_2 0
|
||||
#endif
|
||||
#ifndef BOARD_ST7920_DELAY_2
|
||||
#define BOARD_ST7920_DELAY_2 0
|
||||
#endif
|
||||
#ifndef CPU_ST7920_DELAY_2
|
||||
#define CPU_ST7920_DELAY_2 0
|
||||
#endif
|
||||
#if LCD_ST7920_DELAY_2 || BOARD_ST7920_DELAY_2 || CPU_ST7920_DELAY_2
|
||||
#define ST7920_DELAY_2 DELAY_NS(_MAX(LCD_ST7920_DELAY_2, BOARD_ST7920_DELAY_2, CPU_ST7920_DELAY_2))
|
||||
#else
|
||||
#define ST7920_DELAY_2
|
||||
#endif
|
||||
#endif
|
||||
#ifndef ST7920_DELAY_3
|
||||
#ifndef LCD_ST7920_DELAY_3
|
||||
#define LCD_ST7920_DELAY_3 0
|
||||
#endif
|
||||
#ifndef BOARD_ST7920_DELAY_3
|
||||
#define BOARD_ST7920_DELAY_3 0
|
||||
#endif
|
||||
#ifndef CPU_ST7920_DELAY_3
|
||||
#define CPU_ST7920_DELAY_3 0
|
||||
#endif
|
||||
#if LCD_ST7920_DELAY_3 || BOARD_ST7920_DELAY_3 || CPU_ST7920_DELAY_3
|
||||
#define ST7920_DELAY_3 DELAY_NS(_MAX(LCD_ST7920_DELAY_3, BOARD_ST7920_DELAY_3, CPU_ST7920_DELAY_3))
|
||||
#else
|
||||
#define ST7920_DELAY_3
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef ARDUINO_ARCH_STM32F1
|
||||
#define ST7920_DAT(V) !!((V) & 0x80)
|
||||
#else
|
||||
#define ST7920_DAT(V) ((V) & 0x80)
|
||||
#endif
|
||||
|
||||
#define ST7920_SND_BIT do{ \
|
||||
WRITE(ST7920_CLK_PIN, LOW); ST7920_DELAY_1; \
|
||||
WRITE(ST7920_DAT_PIN, ST7920_DAT(val)); ST7920_DELAY_2; \
|
||||
@@ -105,8 +144,8 @@ uint8_t u8g_dev_rrd_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, vo
|
||||
case U8G_DEV_MSG_STOP: break;
|
||||
|
||||
case U8G_DEV_MSG_PAGE_NEXT: {
|
||||
uint8_t* ptr;
|
||||
u8g_pb_t* pb = (u8g_pb_t*)(dev->dev_mem);
|
||||
uint8_t *ptr;
|
||||
u8g_pb_t *pb = (u8g_pb_t*)(dev->dev_mem);
|
||||
y = pb->p.page_y0;
|
||||
ptr = (uint8_t*)pb->buf;
|
||||
|
||||
|
||||
47
Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.h
Executable file → Normal file
47
Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.h
Executable file → Normal file
@@ -16,7 +16,7 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
@@ -35,44 +35,7 @@
|
||||
#define PAGE_HEIGHT 16 // 256 byte framebuffer
|
||||
//#define PAGE_HEIGHT 32 // 512 byte framebuffer
|
||||
|
||||
#include <U8glib.h>
|
||||
|
||||
// If you want you can define your own set of delays in Configuration.h
|
||||
//#define ST7920_DELAY_1 DELAY_NS(0)
|
||||
//#define ST7920_DELAY_2 DELAY_NS(0)
|
||||
//#define ST7920_DELAY_3 DELAY_NS(0)
|
||||
|
||||
#if F_CPU >= 20000000
|
||||
#define CPU_ST7920_DELAY_1 DELAY_NS(0)
|
||||
#define CPU_ST7920_DELAY_2 DELAY_NS(0)
|
||||
#define CPU_ST7920_DELAY_3 DELAY_NS(50)
|
||||
#elif MB(3DRAG, K8200, K8400, SILVER_GATE)
|
||||
#define CPU_ST7920_DELAY_1 DELAY_NS(0)
|
||||
#define CPU_ST7920_DELAY_2 DELAY_NS(188)
|
||||
#define CPU_ST7920_DELAY_3 DELAY_NS(0)
|
||||
#elif MB(MINIRAMBO, EINSY_RAMBO, EINSY_RETRO)
|
||||
#define CPU_ST7920_DELAY_1 DELAY_NS(0)
|
||||
#define CPU_ST7920_DELAY_2 DELAY_NS(250)
|
||||
#define CPU_ST7920_DELAY_3 DELAY_NS(0)
|
||||
#elif MB(RAMBO)
|
||||
#define CPU_ST7920_DELAY_1 DELAY_NS(0)
|
||||
#define CPU_ST7920_DELAY_2 DELAY_NS(0)
|
||||
#define CPU_ST7920_DELAY_3 DELAY_NS(0)
|
||||
#elif MB(BQ_ZUM_MEGA_3D)
|
||||
#define CPU_ST7920_DELAY_1 DELAY_NS(0)
|
||||
#define CPU_ST7920_DELAY_2 DELAY_NS(0)
|
||||
#define CPU_ST7920_DELAY_3 DELAY_NS(189)
|
||||
#elif defined(ARDUINO_ARCH_STM32)
|
||||
#define CPU_ST7920_DELAY_1 DELAY_NS(300)
|
||||
#define CPU_ST7920_DELAY_2 DELAY_NS(40)
|
||||
#define CPU_ST7920_DELAY_3 DELAY_NS(340)
|
||||
#elif F_CPU == 16000000
|
||||
#define CPU_ST7920_DELAY_1 DELAY_NS(0)
|
||||
#define CPU_ST7920_DELAY_2 DELAY_NS(0)
|
||||
#define CPU_ST7920_DELAY_3 DELAY_NS(63)
|
||||
#else
|
||||
#error "No valid condition for delays in 'ultralcd_st7920_u8glib_rrd_AVR.h'"
|
||||
#endif
|
||||
#include <U8glib-HAL.h>
|
||||
|
||||
void ST7920_SWSPI_SND_8BIT(uint8_t val);
|
||||
|
||||
@@ -82,9 +45,9 @@ void ST7920_SWSPI_SND_8BIT(uint8_t val);
|
||||
#define U8G_DELAY() DELAY_US(10)
|
||||
#endif
|
||||
|
||||
#define ST7920_CS() { WRITE(ST7920_CS_PIN,1); U8G_DELAY(); }
|
||||
#define ST7920_NCS() { WRITE(ST7920_CS_PIN,0); }
|
||||
#define ST7920_CS() { WRITE(ST7920_CS_PIN, HIGH); U8G_DELAY(); }
|
||||
#define ST7920_NCS() { WRITE(ST7920_CS_PIN, LOW); }
|
||||
#define ST7920_SET_CMD() { ST7920_SWSPI_SND_8BIT(0xF8); U8G_DELAY(); }
|
||||
#define ST7920_SET_DAT() { ST7920_SWSPI_SND_8BIT(0xFA); U8G_DELAY(); }
|
||||
#define ST7920_WRITE_BYTE(a) { ST7920_SWSPI_SND_8BIT((uint8_t)((a)&0xF0u)); ST7920_SWSPI_SND_8BIT((uint8_t)((a)<<4u)); U8G_DELAY(); }
|
||||
#define ST7920_WRITE_BYTE(a) { ST7920_SWSPI_SND_8BIT((uint8_t)((a)&0xF0u)); ST7920_SWSPI_SND_8BIT((uint8_t)((a)<<4U)); U8G_DELAY(); }
|
||||
#define ST7920_WRITE_BYTES(p,l) { for (uint8_t i = l + 1; --i;) { ST7920_SWSPI_SND_8BIT(*p&0xF0); ST7920_SWSPI_SND_8BIT(*p<<4); p++; } U8G_DELAY(); }
|
||||
|
||||
7
Marlin/src/lcd/e3v2/README.md
Normal file
7
Marlin/src/lcd/e3v2/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# DWIN for Creality Ender 3 v2
|
||||
|
||||
Marlin's Ender 3 v2 support requires the `DWIN_SET` included with the Ender 3 V2 [example configuration](https://github.com/MarlinFirmware/Configurations/tree/bugfix-2.0.x/config/examples/Creality/Ender-3%20V2).
|
||||
|
||||
## Easy Install
|
||||
|
||||
Copy the `DWIN_SET` folder onto a Micro-SD card and insert the card into the slot on the DWIN screen. Cycle the machine and wait for the screen to go from blue to orange. Turn the machine off and remove the SD card. When you turn on the machine the screen will display a "Creality" loading screen.
|
||||
431
Marlin/src/lcd/e3v2/common/dwin_api.cpp
Normal file
431
Marlin/src/lcd/e3v2/common/dwin_api.cpp
Normal file
@@ -0,0 +1,431 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#include "../../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if EITHER(HAS_DWIN_E3V2, IS_DWIN_MARLINUI)
|
||||
|
||||
#include "dwin_api.h"
|
||||
#include "dwin_set.h"
|
||||
|
||||
#include "../../../inc/MarlinConfig.h"
|
||||
|
||||
#include <string.h> // for memset
|
||||
|
||||
uint8_t DWIN_SendBuf[11 + DWIN_WIDTH / 6 * 2] = { 0xAA };
|
||||
uint8_t DWIN_BufTail[4] = { 0xCC, 0x33, 0xC3, 0x3C };
|
||||
uint8_t databuf[26] = { 0 };
|
||||
|
||||
// Send the data in the buffer plus the packet tail
|
||||
void DWIN_Send(size_t &i) {
|
||||
++i;
|
||||
LOOP_L_N(n, i) { LCD_SERIAL.write(DWIN_SendBuf[n]); delayMicroseconds(1); }
|
||||
LOOP_L_N(n, 4) { LCD_SERIAL.write(DWIN_BufTail[n]); delayMicroseconds(1); }
|
||||
}
|
||||
|
||||
/*-------------------------------------- System variable function --------------------------------------*/
|
||||
|
||||
// Handshake (1: Success, 0: Fail)
|
||||
bool DWIN_Handshake() {
|
||||
static int recnum = 0;
|
||||
#ifndef LCD_BAUDRATE
|
||||
#define LCD_BAUDRATE 115200
|
||||
#endif
|
||||
LCD_SERIAL.begin(LCD_BAUDRATE);
|
||||
const millis_t serial_connect_timeout = millis() + 1000UL;
|
||||
while (!LCD_SERIAL.connected() && PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
|
||||
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x00);
|
||||
DWIN_Send(i);
|
||||
|
||||
while (LCD_SERIAL.available() > 0 && recnum < (signed)sizeof(databuf)) {
|
||||
databuf[recnum] = LCD_SERIAL.read();
|
||||
// ignore the invalid data
|
||||
if (databuf[0] != FHONE) { // prevent the program from running.
|
||||
if (recnum > 0) {
|
||||
recnum = 0;
|
||||
ZERO(databuf);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
delay(10);
|
||||
recnum++;
|
||||
}
|
||||
|
||||
return ( recnum >= 3
|
||||
&& databuf[0] == FHONE
|
||||
&& databuf[1] == '\0'
|
||||
&& databuf[2] == 'O'
|
||||
&& databuf[3] == 'K' );
|
||||
}
|
||||
|
||||
#if HAS_LCD_BRIGHTNESS
|
||||
// Set LCD backlight (from DWIN Enhanced)
|
||||
// brightness: 0x00-0xFF
|
||||
void DWIN_LCD_Brightness(const uint8_t brightness) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x30);
|
||||
DWIN_Byte(i, brightness);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Set screen display direction
|
||||
// dir: 0=0°, 1=90°, 2=180°, 3=270°
|
||||
void DWIN_Frame_SetDir(uint8_t dir) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x34);
|
||||
DWIN_Byte(i, 0x5A);
|
||||
DWIN_Byte(i, 0xA5);
|
||||
DWIN_Byte(i, dir);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Update display
|
||||
void DWIN_UpdateLCD() {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x3D);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
/*---------------------------------------- Drawing functions ----------------------------------------*/
|
||||
|
||||
// Clear screen
|
||||
// color: Clear screen color
|
||||
void DWIN_Frame_Clear(const uint16_t color) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x01);
|
||||
DWIN_Word(i, color);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Draw a point
|
||||
// color: point color
|
||||
// width: point width 0x01-0x0F
|
||||
// height: point height 0x01-0x0F
|
||||
// x,y: upper left point
|
||||
void DWIN_Draw_Point(uint16_t color, uint8_t width, uint8_t height, uint16_t x, uint16_t y) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x02);
|
||||
DWIN_Word(i, color);
|
||||
DWIN_Byte(i, width);
|
||||
DWIN_Byte(i, height);
|
||||
DWIN_Word(i, x);
|
||||
DWIN_Word(i, y);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Draw a line
|
||||
// color: Line segment color
|
||||
// xStart/yStart: Start point
|
||||
// xEnd/yEnd: End point
|
||||
void DWIN_Draw_Line(uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x03);
|
||||
DWIN_Word(i, color);
|
||||
DWIN_Word(i, xStart);
|
||||
DWIN_Word(i, yStart);
|
||||
DWIN_Word(i, xEnd);
|
||||
DWIN_Word(i, yEnd);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Draw a rectangle
|
||||
// mode: 0=frame, 1=fill, 2=XOR fill
|
||||
// color: Rectangle color
|
||||
// xStart/yStart: upper left point
|
||||
// xEnd/yEnd: lower right point
|
||||
void DWIN_Draw_Rectangle(uint8_t mode, uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x05);
|
||||
DWIN_Byte(i, mode);
|
||||
DWIN_Word(i, color);
|
||||
DWIN_Word(i, xStart);
|
||||
DWIN_Word(i, yStart);
|
||||
DWIN_Word(i, xEnd);
|
||||
DWIN_Word(i, yEnd);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Move a screen area
|
||||
// mode: 0, circle shift; 1, translation
|
||||
// dir: 0=left, 1=right, 2=up, 3=down
|
||||
// dis: Distance
|
||||
// color: Fill color
|
||||
// xStart/yStart: upper left point
|
||||
// xEnd/yEnd: bottom right point
|
||||
void DWIN_Frame_AreaMove(uint8_t mode, uint8_t dir, uint16_t dis,
|
||||
uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x09);
|
||||
DWIN_Byte(i, (mode << 7) | dir);
|
||||
DWIN_Word(i, dis);
|
||||
DWIN_Word(i, color);
|
||||
DWIN_Word(i, xStart);
|
||||
DWIN_Word(i, yStart);
|
||||
DWIN_Word(i, xEnd);
|
||||
DWIN_Word(i, yEnd);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
/*---------------------------------------- Text related functions ----------------------------------------*/
|
||||
|
||||
// Draw a string
|
||||
// widthAdjust: true=self-adjust character width; false=no adjustment
|
||||
// bShow: true=display background color; false=don't display background color
|
||||
// size: Font size
|
||||
// color: Character color
|
||||
// bColor: Background color
|
||||
// x/y: Upper-left coordinate of the string
|
||||
// *string: The string
|
||||
// rlimit: To limit the drawn string length
|
||||
void DWIN_Draw_String(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, uint16_t x, uint16_t y, const char * const string, uint16_t rlimit/*=0xFFFF*/) {
|
||||
constexpr uint8_t widthAdjust = 0;
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x11);
|
||||
// Bit 7: widthAdjust
|
||||
// Bit 6: bShow
|
||||
// Bit 5-4: Unused (0)
|
||||
// Bit 3-0: size
|
||||
DWIN_Byte(i, (widthAdjust * 0x80) | (bShow * 0x40) | size);
|
||||
DWIN_Word(i, color);
|
||||
DWIN_Word(i, bColor);
|
||||
DWIN_Word(i, x);
|
||||
DWIN_Word(i, y);
|
||||
DWIN_Text(i, string, rlimit);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Draw a positive integer
|
||||
// bShow: true=display background color; false=don't display background color
|
||||
// zeroFill: true=zero fill; false=no zero fill
|
||||
// zeroMode: 1=leading 0 displayed as 0; 0=leading 0 displayed as a space
|
||||
// size: Font size
|
||||
// color: Character color
|
||||
// bColor: Background color
|
||||
// iNum: Number of digits
|
||||
// x/y: Upper-left coordinate
|
||||
// value: Integer value
|
||||
void DWIN_Draw_IntValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color,
|
||||
uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, uint32_t value) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x14);
|
||||
// Bit 7: bshow
|
||||
// Bit 6: 1 = signed; 0 = unsigned number;
|
||||
// Bit 5: zeroFill
|
||||
// Bit 4: zeroMode
|
||||
// Bit 3-0: size
|
||||
DWIN_Byte(i, (bShow * 0x80) | (zeroFill * 0x20) | (zeroMode * 0x10) | size);
|
||||
DWIN_Word(i, color);
|
||||
DWIN_Word(i, bColor);
|
||||
DWIN_Byte(i, iNum);
|
||||
DWIN_Byte(i, 0); // fNum
|
||||
DWIN_Word(i, x);
|
||||
DWIN_Word(i, y);
|
||||
#if 0
|
||||
for (char count = 0; count < 8; count++) {
|
||||
DWIN_Byte(i, value);
|
||||
value >>= 8;
|
||||
if (!(value & 0xFF)) break;
|
||||
}
|
||||
#else
|
||||
// Write a big-endian 64 bit integer
|
||||
const size_t p = i + 1;
|
||||
for (char count = 8; count--;) { // 7..0
|
||||
++i;
|
||||
DWIN_SendBuf[p + count] = value;
|
||||
value >>= 8;
|
||||
}
|
||||
#endif
|
||||
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Draw a floating point number
|
||||
// bShow: true=display background color; false=don't display background color
|
||||
// zeroFill: true=zero fill; false=no zero fill
|
||||
// zeroMode: 1=leading 0 displayed as 0; 0=leading 0 displayed as a space
|
||||
// size: Font size
|
||||
// color: Character color
|
||||
// bColor: Background color
|
||||
// iNum: Number of whole digits
|
||||
// fNum: Number of decimal digits
|
||||
// x/y: Upper-left point
|
||||
// value: Float value
|
||||
void DWIN_Draw_FloatValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color,
|
||||
uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, int32_t value) {
|
||||
//uint8_t *fvalue = (uint8_t*)&value;
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x14);
|
||||
DWIN_Byte(i, (bShow * 0x80) | (zeroFill * 0x20) | (zeroMode * 0x10) | size);
|
||||
DWIN_Word(i, color);
|
||||
DWIN_Word(i, bColor);
|
||||
DWIN_Byte(i, iNum);
|
||||
DWIN_Byte(i, fNum);
|
||||
DWIN_Word(i, x);
|
||||
DWIN_Word(i, y);
|
||||
DWIN_Long(i, value);
|
||||
/*
|
||||
DWIN_Byte(i, fvalue[3]);
|
||||
DWIN_Byte(i, fvalue[2]);
|
||||
DWIN_Byte(i, fvalue[1]);
|
||||
DWIN_Byte(i, fvalue[0]);
|
||||
*/
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Draw a floating point number
|
||||
// value: positive unscaled float value
|
||||
void DWIN_Draw_FloatValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color,
|
||||
uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) {
|
||||
const int32_t val = round(value * POW(10, fNum));
|
||||
DWIN_Draw_FloatValue(bShow, zeroFill, zeroMode, size, color, bColor, iNum, fNum, x, y, val);
|
||||
}
|
||||
|
||||
/*---------------------------------------- Picture related functions ----------------------------------------*/
|
||||
|
||||
// Draw JPG and cached in #0 virtual display area
|
||||
// id: Picture ID
|
||||
void DWIN_JPG_ShowAndCache(const uint8_t id) {
|
||||
size_t i = 0;
|
||||
DWIN_Word(i, 0x2200);
|
||||
DWIN_Byte(i, id);
|
||||
DWIN_Send(i); // AA 23 00 00 00 00 08 00 01 02 03 CC 33 C3 3C
|
||||
}
|
||||
|
||||
// Draw an Icon
|
||||
// IBD: The icon background display: 0=Background filtering is not displayed, 1=Background display \\When setting the background filtering not to display, the background must be pure black
|
||||
// BIR: Background image restoration: 0=Background image is not restored, 1=Automatically use virtual display area image for background restoration
|
||||
// BFI: Background filtering strength: 0=normal, 1=enhanced, (only valid when the icon background display=0)
|
||||
// libID: Icon library ID
|
||||
// picID: Icon ID
|
||||
// x/y: Upper-left point
|
||||
void DWIN_ICON_Show(bool IBD, bool BIR, bool BFI, uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) {
|
||||
NOMORE(x, DWIN_WIDTH - 1);
|
||||
NOMORE(y, DWIN_HEIGHT - 1); // -- ozy -- srl
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x23);
|
||||
DWIN_Word(i, x);
|
||||
DWIN_Word(i, y);
|
||||
DWIN_Byte(i, (IBD << 7) | (BIR << 6) | (BFI << 5) | libID);
|
||||
DWIN_Byte(i, picID);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Draw an Icon from SRAM
|
||||
// IBD: The icon background display: 0=Background filtering is not displayed, 1=Background display \\When setting the background filtering not to display, the background must be pure black
|
||||
// BIR: Background image restoration: 0=Background image is not restored, 1=Automatically use virtual display area image for background restoration
|
||||
// BFI: Background filtering strength: 0=normal, 1=enhanced, (only valid when the icon background display=0)
|
||||
// x/y: Upper-left point
|
||||
// addr: SRAM address
|
||||
void DWIN_ICON_Show(bool IBD, bool BIR, bool BFI, uint16_t x, uint16_t y, uint16_t addr) {
|
||||
NOMORE(x, DWIN_WIDTH - 1);
|
||||
NOMORE(y, DWIN_HEIGHT - 1); // -- ozy -- srl
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x24);
|
||||
DWIN_Word(i, x);
|
||||
DWIN_Word(i, y);
|
||||
DWIN_Byte(i, (IBD << 7) | (BIR << 6) | (BFI << 5) | 0x00);
|
||||
DWIN_Word(i, addr);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Unzip the JPG picture to a virtual display area
|
||||
// n: Cache index
|
||||
// id: Picture ID
|
||||
void DWIN_JPG_CacheToN(uint8_t n, uint8_t id) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x25);
|
||||
DWIN_Byte(i, n);
|
||||
DWIN_Byte(i, id);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Animate a series of icons
|
||||
// animID: Animation ID; 0x00-0x0F
|
||||
// animate: true on; false off;
|
||||
// libID: Icon library ID
|
||||
// picIDs: Icon starting ID
|
||||
// picIDe: Icon ending ID
|
||||
// x/y: Upper-left point
|
||||
// interval: Display time interval, unit 10mS
|
||||
void DWIN_ICON_Animation(uint8_t animID, bool animate, uint8_t libID, uint8_t picIDs, uint8_t picIDe, uint16_t x, uint16_t y, uint16_t interval) {
|
||||
NOMORE(x, DWIN_WIDTH - 1);
|
||||
NOMORE(y, DWIN_HEIGHT - 1); // -- ozy -- srl
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x28);
|
||||
DWIN_Word(i, x);
|
||||
DWIN_Word(i, y);
|
||||
// Bit 7: animation on or off
|
||||
// Bit 6: start from begin or end
|
||||
// Bit 5-4: unused (0)
|
||||
// Bit 3-0: animID
|
||||
DWIN_Byte(i, (animate * 0x80) | 0x40 | animID);
|
||||
DWIN_Byte(i, libID);
|
||||
DWIN_Byte(i, picIDs);
|
||||
DWIN_Byte(i, picIDe);
|
||||
DWIN_Byte(i, interval);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Animation Control
|
||||
// state: 16 bits, each bit is the state of an animation id
|
||||
void DWIN_ICON_AnimationControl(uint16_t state) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x29);
|
||||
DWIN_Word(i, state);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
/*---------------------------------------- Memory functions ----------------------------------------*/
|
||||
// The LCD has an additional 32KB SRAM and 16KB Flash
|
||||
// Data can be written to the SRAM and saved to one of the jpeg page files
|
||||
|
||||
// Write Data Memory
|
||||
// command 0x31
|
||||
// Type: Write memory selection; 0x5A=SRAM; 0xA5=Flash
|
||||
// Address: Write data memory address; 0x000-0x7FFF for SRAM; 0x000-0x3FFF for Flash
|
||||
// Data: data
|
||||
//
|
||||
// Flash writing returns 0xA5 0x4F 0x4B
|
||||
|
||||
// Read Data Memory
|
||||
// command 0x32
|
||||
// Type: Read memory selection; 0x5A=SRAM; 0xA5=Flash
|
||||
// Address: Read data memory address; 0x000-0x7FFF for SRAM; 0x000-0x3FFF for Flash
|
||||
// Length: leangth of data to read; 0x01-0xF0
|
||||
//
|
||||
// Response:
|
||||
// Type, Address, Length, Data
|
||||
|
||||
// Write Picture Memory
|
||||
// Write the contents of the 32KB SRAM data memory into the designated image memory space
|
||||
// Issued: 0x5A, 0xA5, PIC_ID
|
||||
// Response: 0xA5 0x4F 0x4B
|
||||
//
|
||||
// command 0x33
|
||||
// 0x5A, 0xA5
|
||||
// PicId: Picture Memory location, 0x00-0x0F
|
||||
//
|
||||
// Flash writing returns 0xA5 0x4F 0x4B
|
||||
|
||||
#endif // HAS_DWIN_E3V2 || IS_DWIN_MARLINUI
|
||||
264
Marlin/src/lcd/e3v2/common/dwin_api.h
Normal file
264
Marlin/src/lcd/e3v2/common/dwin_api.h
Normal file
@@ -0,0 +1,264 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "../../../inc/MarlinConfig.h"
|
||||
|
||||
#ifndef DWIN_WIDTH
|
||||
#define DWIN_WIDTH 272
|
||||
#endif
|
||||
#ifndef DWIN_HEIGHT
|
||||
#define DWIN_HEIGHT 480
|
||||
#endif
|
||||
|
||||
#define RECEIVED_NO_DATA 0x00
|
||||
#define RECEIVED_SHAKE_HAND_ACK 0x01
|
||||
|
||||
#define FHONE 0xAA
|
||||
|
||||
#define DWIN_SCROLL_UP 2
|
||||
#define DWIN_SCROLL_DOWN 3
|
||||
|
||||
// Make sure DWIN_SendBuf is large enough to hold the largest string plus draw command and tail.
|
||||
// Assume the narrowest (6 pixel) font and 2-byte gb2312-encoded characters.
|
||||
extern uint8_t DWIN_SendBuf[11 + DWIN_WIDTH / 6 * 2];
|
||||
extern uint8_t DWIN_BufTail[4];
|
||||
extern uint8_t databuf[26];
|
||||
|
||||
inline void DWIN_Byte(size_t &i, const uint16_t bval) {
|
||||
DWIN_SendBuf[++i] = bval;
|
||||
}
|
||||
|
||||
inline void DWIN_Word(size_t &i, const uint16_t wval) {
|
||||
DWIN_SendBuf[++i] = wval >> 8;
|
||||
DWIN_SendBuf[++i] = wval & 0xFF;
|
||||
}
|
||||
|
||||
inline void DWIN_Long(size_t &i, const uint32_t lval) {
|
||||
DWIN_SendBuf[++i] = (lval >> 24) & 0xFF;
|
||||
DWIN_SendBuf[++i] = (lval >> 16) & 0xFF;
|
||||
DWIN_SendBuf[++i] = (lval >> 8) & 0xFF;
|
||||
DWIN_SendBuf[++i] = lval & 0xFF;
|
||||
}
|
||||
|
||||
// Send the data in the buffer plus the packet tail
|
||||
void DWIN_Send(size_t &i);
|
||||
|
||||
inline void DWIN_Text(size_t &i, const char * const string, uint16_t rlimit=0xFFFF) {
|
||||
if (!string) return;
|
||||
const size_t len = _MIN(sizeof(DWIN_SendBuf) - i, _MIN(strlen(string), rlimit));
|
||||
if (len == 0) return;
|
||||
memcpy(&DWIN_SendBuf[i+1], string, len);
|
||||
i += len;
|
||||
}
|
||||
|
||||
inline void DWIN_Text(size_t &i, FSTR_P string, uint16_t rlimit=0xFFFF) {
|
||||
if (!string) return;
|
||||
const size_t len = _MIN(sizeof(DWIN_SendBuf) - i, _MIN(rlimit, strlen_P((PGM_P)string))); // cast to PGM_P (const char*) measure with strlen_P.
|
||||
if (len == 0) return;
|
||||
memcpy_P(&DWIN_SendBuf[i+1], string, len);
|
||||
i += len;
|
||||
}
|
||||
|
||||
/*-------------------------------------- System variable function --------------------------------------*/
|
||||
|
||||
// Handshake (1: Success, 0: Fail)
|
||||
bool DWIN_Handshake();
|
||||
|
||||
// DWIN startup
|
||||
void DWIN_Startup();
|
||||
|
||||
#if HAS_LCD_BRIGHTNESS
|
||||
// Set the backlight brightness
|
||||
// brightness: (0x00-0xFF)
|
||||
void DWIN_LCD_Brightness(const uint8_t brightness);
|
||||
#endif
|
||||
|
||||
// Set screen display direction
|
||||
// dir: 0=0°, 1=90°, 2=180°, 3=270°
|
||||
void DWIN_Frame_SetDir(uint8_t dir);
|
||||
|
||||
// Update display
|
||||
void DWIN_UpdateLCD();
|
||||
|
||||
/*---------------------------------------- Drawing functions ----------------------------------------*/
|
||||
|
||||
// Clear screen
|
||||
// color: Clear screen color
|
||||
void DWIN_Frame_Clear(const uint16_t color);
|
||||
|
||||
// Draw a point
|
||||
// color: point color
|
||||
// width: point width 0x01-0x0F
|
||||
// height: point height 0x01-0x0F
|
||||
// x,y: upper left point
|
||||
void DWIN_Draw_Point(uint16_t color, uint8_t width, uint8_t height, uint16_t x, uint16_t y);
|
||||
|
||||
// Draw a line
|
||||
// color: Line segment color
|
||||
// xStart/yStart: Start point
|
||||
// xEnd/yEnd: End point
|
||||
void DWIN_Draw_Line(uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd);
|
||||
|
||||
// Draw a Horizontal line
|
||||
// color: Line segment color
|
||||
// xStart/yStart: Start point
|
||||
// xLength: Line Length
|
||||
inline void DWIN_Draw_HLine(uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xLength) {
|
||||
DWIN_Draw_Line(color, xStart, yStart, xStart + xLength - 1, yStart);
|
||||
}
|
||||
|
||||
// Draw a Vertical line
|
||||
// color: Line segment color
|
||||
// xStart/yStart: Start point
|
||||
// yLength: Line Length
|
||||
inline void DWIN_Draw_VLine(uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t yLength) {
|
||||
DWIN_Draw_Line(color, xStart, yStart, xStart, yStart + yLength - 1);
|
||||
}
|
||||
|
||||
// Draw a rectangle
|
||||
// mode: 0=frame, 1=fill, 2=XOR fill
|
||||
// color: Rectangle color
|
||||
// xStart/yStart: upper left point
|
||||
// xEnd/yEnd: lower right point
|
||||
void DWIN_Draw_Rectangle(uint8_t mode, uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd);
|
||||
|
||||
// Draw a box
|
||||
// mode: 0=frame, 1=fill, 2=XOR fill
|
||||
// color: Rectangle color
|
||||
// xStart/yStart: upper left point
|
||||
// xSize/ySize: box size
|
||||
inline void DWIN_Draw_Box(uint8_t mode, uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xSize, uint16_t ySize) {
|
||||
DWIN_Draw_Rectangle(mode, color, xStart, yStart, xStart + xSize - 1, yStart + ySize - 1);
|
||||
}
|
||||
|
||||
// Move a screen area
|
||||
// mode: 0, circle shift; 1, translation
|
||||
// dir: 0=left, 1=right, 2=up, 3=down
|
||||
// dis: Distance
|
||||
// color: Fill color
|
||||
// xStart/yStart: upper left point
|
||||
// xEnd/yEnd: bottom right point
|
||||
void DWIN_Frame_AreaMove(uint8_t mode, uint8_t dir, uint16_t dis,
|
||||
uint16_t color, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd);
|
||||
|
||||
|
||||
/*---------------------------------------- Text related functions ----------------------------------------*/
|
||||
|
||||
// Draw a string
|
||||
// bShow: true=display background color; false=don't display background color
|
||||
// size: Font size
|
||||
// color: Character color
|
||||
// bColor: Background color
|
||||
// x/y: Upper-left coordinate of the string
|
||||
// *string: The string
|
||||
// rlimit: For draw less chars than string length use rlimit
|
||||
void DWIN_Draw_String(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, uint16_t x, uint16_t y, const char * const string, uint16_t rlimit=0xFFFF);
|
||||
|
||||
inline void DWIN_Draw_String(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, uint16_t x, uint16_t y, FSTR_P title) {
|
||||
// Note that this won't work on AVR, only 32-bit systems!
|
||||
DWIN_Draw_String(bShow, size, color, bColor, x, y, FTOP(title));
|
||||
}
|
||||
|
||||
// Draw a positive integer
|
||||
// bShow: true=display background color; false=don't display background color
|
||||
// zeroFill: true=zero fill; false=no zero fill
|
||||
// zeroMode: 1=leading 0 displayed as 0; 0=leading 0 displayed as a space
|
||||
// size: Font size
|
||||
// color: Character color
|
||||
// bColor: Background color
|
||||
// iNum: Number of digits
|
||||
// x/y: Upper-left coordinate
|
||||
// value: Integer value
|
||||
void DWIN_Draw_IntValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color,
|
||||
uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, uint32_t value);
|
||||
|
||||
// Draw a floating point number
|
||||
// bShow: true=display background color; false=don't display background color
|
||||
// zeroFill: true=zero fill; false=no zero fill
|
||||
// zeroMode: 1=leading 0 displayed as 0; 0=leading 0 displayed as a space
|
||||
// size: Font size
|
||||
// color: Character color
|
||||
// bColor: Background color
|
||||
// iNum: Number of whole digits
|
||||
// fNum: Number of decimal digits
|
||||
// x/y: Upper-left point
|
||||
// value: Float value
|
||||
void DWIN_Draw_FloatValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color,
|
||||
uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, int32_t value);
|
||||
|
||||
// Draw a floating point number
|
||||
// value: positive unscaled float value
|
||||
void DWIN_Draw_FloatValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color,
|
||||
uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value);
|
||||
|
||||
/*---------------------------------------- Picture related functions ----------------------------------------*/
|
||||
|
||||
// Draw JPG and cached in #0 virtual display area
|
||||
// id: Picture ID
|
||||
void DWIN_JPG_ShowAndCache(const uint8_t id);
|
||||
|
||||
// Draw an Icon
|
||||
// libID: Icon library ID
|
||||
// picID: Icon ID
|
||||
// x/y: Upper-left point
|
||||
void DWIN_ICON_Show(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y);
|
||||
|
||||
// Draw an Icon
|
||||
// IBD: The icon background display: 0=Background filtering is not displayed, 1=Background display \\When setting the background filtering not to display, the background must be pure black
|
||||
// BIR: Background image restoration: 0=Background image is not restored, 1=Automatically use virtual display area image for background restoration
|
||||
// BFI: Background filtering strength: 0=normal, 1=enhanced, (only valid when the icon background display=0)
|
||||
// libID: Icon library ID
|
||||
// picID: Icon ID
|
||||
// x/y: Upper-left point
|
||||
void DWIN_ICON_Show(bool IBD, bool BIR, bool BFI, uint8_t libID, uint8_t picID, uint16_t x, uint16_t y);
|
||||
|
||||
// Draw an Icon from SRAM
|
||||
// IBD: The icon background display: 0=Background filtering is not displayed, 1=Background display \\When setting the background filtering not to display, the background must be pure black
|
||||
// BIR: Background image restoration: 0=Background image is not restored, 1=Automatically use virtual display area image for background restoration
|
||||
// BFI: Background filtering strength: 0=normal, 1=enhanced, (only valid when the icon background display=0)
|
||||
// x/y: Upper-left point
|
||||
// addr: SRAM address
|
||||
void DWIN_ICON_Show(bool IBD, bool BIR, bool BFI, uint16_t x, uint16_t y, uint16_t addr);
|
||||
|
||||
// Unzip the JPG picture to a virtual display area
|
||||
// n: Cache index
|
||||
// id: Picture ID
|
||||
void DWIN_JPG_CacheToN(uint8_t n, uint8_t id);
|
||||
|
||||
// Unzip the JPG picture to virtual display area #1
|
||||
// id: Picture ID
|
||||
inline void DWIN_JPG_CacheTo1(uint8_t id) { DWIN_JPG_CacheToN(1, id); }
|
||||
|
||||
// Animate a series of icons
|
||||
// animID: Animation ID up to 16
|
||||
// animate: animation on or off
|
||||
// libID: Icon library ID
|
||||
// picIDs: Icon starting ID
|
||||
// picIDe: Icon ending ID
|
||||
// x/y: Upper-left point
|
||||
// interval: Display time interval, unit 10mS
|
||||
void DWIN_ICON_Animation(uint8_t animID, bool animate, uint8_t libID, uint8_t picIDs, uint8_t picIDe, uint16_t x, uint16_t y, uint16_t interval);
|
||||
|
||||
// Animation Control
|
||||
// state: 16 bits, each bit is the state of an animation id
|
||||
void DWIN_ICON_AnimationControl(uint16_t state);
|
||||
44
Marlin/src/lcd/e3v2/common/dwin_color.h
Normal file
44
Marlin/src/lcd/e3v2/common/dwin_color.h
Normal file
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
// Extended and default UI Colors
|
||||
#define RGB(R,G,B) (R << 11) | (G << 5) | (B) // R,B: 0..31; G: 0..63
|
||||
#define GetRColor(color) ((color >> 11) & 0x1F)
|
||||
#define GetGColor(color) ((color >> 5) & 0x3F)
|
||||
#define GetBColor(color) ((color >> 0) & 0x1F)
|
||||
|
||||
#define Color_White 0xFFFF
|
||||
#define Color_Yellow RGB(0x1F,0x3F,0x00)
|
||||
#define Color_Red RGB(0x1F,0x00,0x00)
|
||||
#define Color_Error_Red 0xB000 // Error!
|
||||
#define Color_Bg_Red 0xF00F // Red background color
|
||||
#define Color_Bg_Window 0x31E8 // Popup background color
|
||||
#define Color_Bg_Blue 0x1125 // Dark blue background color
|
||||
#define Color_Bg_Black 0x0841 // Black background color
|
||||
#define Color_IconBlue 0x45FA // Lighter blue that matches icons/accents
|
||||
#define Popup_Text_Color 0xD6BA // Popup font background color
|
||||
#define Line_Color 0x3A6A // Split line color
|
||||
#define Rectangle_Color 0xEE2F // Blue square cursor color
|
||||
#define Percent_Color 0xFE29 // Percentage color
|
||||
#define BarFill_Color 0x10E4 // Fill color of progress bar
|
||||
#define Select_Color 0x33BB // Selected color
|
||||
38
Marlin/src/lcd/e3v2/common/dwin_font.h
Normal file
38
Marlin/src/lcd/e3v2/common/dwin_font.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* 3-.0:The font size, 0x00-0x09, corresponds to the font size below:
|
||||
* 0x00=6*12 0x01=8*16 0x02=10*20 0x03=12*24 0x04=14*28
|
||||
* 0x05=16*32 0x06=20*40 0x07=24*48 0x08=28*56 0x09=32*64
|
||||
*/
|
||||
#define font6x12 0x00
|
||||
#define font8x16 0x01
|
||||
#define font10x20 0x02
|
||||
#define font12x24 0x03
|
||||
#define font14x28 0x04
|
||||
#define font16x32 0x05
|
||||
#define font20x40 0x06
|
||||
#define font24x48 0x07
|
||||
#define font28x56 0x08
|
||||
#define font32x64 0x09
|
||||
138
Marlin/src/lcd/e3v2/common/dwin_set.h
Normal file
138
Marlin/src/lcd/e3v2/common/dwin_set.h
Normal file
@@ -0,0 +1,138 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
// Picture ID
|
||||
#define Language_English 1
|
||||
#define Language_Chinese 2
|
||||
|
||||
#define ICON 7 // Icon set file 7.ICO
|
||||
|
||||
#define ICON_LOGO 0
|
||||
#define ICON_Print_0 1
|
||||
#define ICON_Print_1 2
|
||||
#define ICON_Prepare_0 3
|
||||
#define ICON_Prepare_1 4
|
||||
#define ICON_Control_0 5
|
||||
#define ICON_Control_1 6
|
||||
#define ICON_Leveling_0 7
|
||||
#define ICON_Leveling_1 8
|
||||
#define ICON_HotendTemp 9
|
||||
#define ICON_BedTemp 10
|
||||
#define ICON_Speed 11
|
||||
#define ICON_Zoffset 12
|
||||
#define ICON_Back 13
|
||||
#define ICON_File 14
|
||||
#define ICON_PrintTime 15
|
||||
#define ICON_RemainTime 16
|
||||
#define ICON_Setup_0 17
|
||||
#define ICON_Setup_1 18
|
||||
#define ICON_Pause_0 19
|
||||
#define ICON_Pause_1 20
|
||||
#define ICON_Continue_0 21
|
||||
#define ICON_Continue_1 22
|
||||
#define ICON_Stop_0 23
|
||||
#define ICON_Stop_1 24
|
||||
#define ICON_Bar 25
|
||||
#define ICON_More 26
|
||||
|
||||
#define ICON_Axis 27
|
||||
#define ICON_CloseMotor 28
|
||||
#define ICON_Homing 29
|
||||
#define ICON_SetHome 30
|
||||
#define ICON_PLAPreheat 31
|
||||
#define ICON_ABSPreheat 32
|
||||
#define ICON_Cool 33
|
||||
#define ICON_Language 34
|
||||
|
||||
#define ICON_MoveX 35
|
||||
#define ICON_MoveY 36
|
||||
#define ICON_MoveZ 37
|
||||
#define ICON_Extruder 38
|
||||
|
||||
#define ICON_Temperature 40
|
||||
#define ICON_Motion 41
|
||||
#define ICON_WriteEEPROM 42
|
||||
#define ICON_ReadEEPROM 43
|
||||
#define ICON_ResumeEEPROM 44
|
||||
#define ICON_Info 45
|
||||
|
||||
#define ICON_SetEndTemp 46
|
||||
#define ICON_SetBedTemp 47
|
||||
#define ICON_FanSpeed 48
|
||||
#define ICON_SetPLAPreheat 49
|
||||
#define ICON_SetABSPreheat 50
|
||||
|
||||
#define ICON_MaxSpeed 51
|
||||
#define ICON_MaxAccelerated 52
|
||||
#define ICON_MaxJerk 53
|
||||
#define ICON_Step 54
|
||||
#define ICON_PrintSize 55
|
||||
#define ICON_Version 56
|
||||
#define ICON_Contact 57
|
||||
#define ICON_StockConfiguration 58
|
||||
#define ICON_MaxSpeedX 59
|
||||
#define ICON_MaxSpeedY 60
|
||||
#define ICON_MaxSpeedZ 61
|
||||
#define ICON_MaxSpeedE 62
|
||||
#define ICON_MaxAccX 63
|
||||
#define ICON_MaxAccY 64
|
||||
#define ICON_MaxAccZ 65
|
||||
#define ICON_MaxAccE 66
|
||||
#define ICON_MaxSpeedJerkX 67
|
||||
#define ICON_MaxSpeedJerkY 68
|
||||
#define ICON_MaxSpeedJerkZ 69
|
||||
#define ICON_MaxSpeedJerkE 70
|
||||
#define ICON_StepX 71
|
||||
#define ICON_StepY 72
|
||||
#define ICON_StepZ 73
|
||||
#define ICON_StepE 74
|
||||
#define ICON_Setspeed 75
|
||||
#define ICON_SetZOffset 76
|
||||
#define ICON_Rectangle 77
|
||||
#define ICON_BLTouch 78
|
||||
#define ICON_TempTooLow 79
|
||||
#define ICON_AutoLeveling 80
|
||||
#define ICON_TempTooHigh 81
|
||||
#define ICON_NoTips_C 82
|
||||
#define ICON_NoTips_E 83
|
||||
#define ICON_Continue_C 84
|
||||
#define ICON_Continue_E 85
|
||||
#define ICON_Cancel_C 86
|
||||
#define ICON_Cancel_E 87
|
||||
#define ICON_Confirm_C 88
|
||||
#define ICON_Confirm_E 89
|
||||
#define ICON_Info_0 90
|
||||
#define ICON_Info_1 91
|
||||
|
||||
#define ICON_Folder ICON_More
|
||||
#define ICON_AdvSet ICON_Language
|
||||
#define ICON_HomeOffset ICON_AdvSet
|
||||
#define ICON_HomeOffsetX ICON_StepX
|
||||
#define ICON_HomeOffsetY ICON_StepY
|
||||
#define ICON_HomeOffsetZ ICON_StepZ
|
||||
#define ICON_ProbeOffset ICON_AdvSet
|
||||
#define ICON_ProbeOffsetX ICON_StepX
|
||||
#define ICON_ProbeOffsetY ICON_StepY
|
||||
#define ICON_ProbeOffsetZ ICON_StepZ
|
||||
#define ICON_PIDNozzle ICON_SetEndTemp
|
||||
#define ICON_PIDbed ICON_SetBedTemp
|
||||
259
Marlin/src/lcd/e3v2/common/encoder.cpp
Normal file
259
Marlin/src/lcd/e3v2/common/encoder.cpp
Normal file
@@ -0,0 +1,259 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/*****************************************************************************
|
||||
* @file lcd/e3v2/common/encoder.cpp
|
||||
* @brief Rotary encoder functions
|
||||
*****************************************************************************/
|
||||
|
||||
#include "../../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if HAS_DWIN_E3V2
|
||||
|
||||
#include "encoder.h"
|
||||
#include "../../buttons.h"
|
||||
|
||||
#include "../../../MarlinCore.h"
|
||||
#include "../../marlinui.h"
|
||||
#include "../../../HAL/shared/Delay.h"
|
||||
|
||||
#if HAS_BUZZER
|
||||
#include "../../../libs/buzzer.h"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifndef ENCODER_PULSES_PER_STEP
|
||||
#define ENCODER_PULSES_PER_STEP 4
|
||||
#endif
|
||||
|
||||
ENCODER_Rate EncoderRate;
|
||||
|
||||
// TODO: Replace with ui.quick_feedback
|
||||
void Encoder_tick() {
|
||||
#if PIN_EXISTS(BEEPER)
|
||||
if (ui.buzzer_enabled) {
|
||||
WRITE(BEEPER_PIN, HIGH);
|
||||
delay(10);
|
||||
WRITE(BEEPER_PIN, LOW);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Encoder initialization
|
||||
void Encoder_Configuration() {
|
||||
#if BUTTON_EXISTS(EN1)
|
||||
SET_INPUT_PULLUP(BTN_EN1);
|
||||
#endif
|
||||
#if BUTTON_EXISTS(EN2)
|
||||
SET_INPUT_PULLUP(BTN_EN2);
|
||||
#endif
|
||||
#if BUTTON_EXISTS(ENC)
|
||||
SET_INPUT_PULLUP(BTN_ENC);
|
||||
#endif
|
||||
#if PIN_EXISTS(BEEPER)
|
||||
SET_OUTPUT(BEEPER_PIN); // TODO: Use buzzer.h which already inits this
|
||||
#endif
|
||||
}
|
||||
|
||||
// Analyze encoder value and return state
|
||||
EncoderState Encoder_ReceiveAnalyze() {
|
||||
const millis_t now = millis();
|
||||
static uint8_t lastEncoderBits;
|
||||
uint8_t newbutton = 0;
|
||||
static signed char temp_diff = 0;
|
||||
|
||||
EncoderState temp_diffState = ENCODER_DIFF_NO;
|
||||
if (BUTTON_PRESSED(EN1)) newbutton |= EN_A;
|
||||
if (BUTTON_PRESSED(EN2)) newbutton |= EN_B;
|
||||
if (BUTTON_PRESSED(ENC)) {
|
||||
static millis_t next_click_update_ms;
|
||||
if (ELAPSED(now, next_click_update_ms)) {
|
||||
next_click_update_ms = millis() + 300;
|
||||
Encoder_tick();
|
||||
#if PIN_EXISTS(LCD_LED)
|
||||
//LED_Action();
|
||||
#endif
|
||||
if (!ui.backlight) ui.refresh_brightness();
|
||||
const bool was_waiting = wait_for_user;
|
||||
wait_for_user = false;
|
||||
return was_waiting ? ENCODER_DIFF_NO : ENCODER_DIFF_ENTER;
|
||||
}
|
||||
else return ENCODER_DIFF_NO;
|
||||
}
|
||||
if (newbutton != lastEncoderBits) {
|
||||
switch (newbutton) {
|
||||
case ENCODER_PHASE_0:
|
||||
if (lastEncoderBits == ENCODER_PHASE_3) temp_diff++;
|
||||
else if (lastEncoderBits == ENCODER_PHASE_1) temp_diff--;
|
||||
break;
|
||||
case ENCODER_PHASE_1:
|
||||
if (lastEncoderBits == ENCODER_PHASE_0) temp_diff++;
|
||||
else if (lastEncoderBits == ENCODER_PHASE_2) temp_diff--;
|
||||
break;
|
||||
case ENCODER_PHASE_2:
|
||||
if (lastEncoderBits == ENCODER_PHASE_1) temp_diff++;
|
||||
else if (lastEncoderBits == ENCODER_PHASE_3) temp_diff--;
|
||||
break;
|
||||
case ENCODER_PHASE_3:
|
||||
if (lastEncoderBits == ENCODER_PHASE_2) temp_diff++;
|
||||
else if (lastEncoderBits == ENCODER_PHASE_0) temp_diff--;
|
||||
break;
|
||||
}
|
||||
lastEncoderBits = newbutton;
|
||||
}
|
||||
|
||||
if (ABS(temp_diff) >= ENCODER_PULSES_PER_STEP) {
|
||||
if (temp_diff > 0) temp_diffState = TERN(REVERSE_ENCODER_DIRECTION, ENCODER_DIFF_CCW, ENCODER_DIFF_CW);
|
||||
else temp_diffState = TERN(REVERSE_ENCODER_DIRECTION, ENCODER_DIFF_CW, ENCODER_DIFF_CCW);
|
||||
|
||||
#if ENABLED(ENCODER_RATE_MULTIPLIER)
|
||||
|
||||
millis_t ms = millis();
|
||||
int32_t encoderMultiplier = 1;
|
||||
|
||||
// if must encoder rati multiplier
|
||||
if (EncoderRate.enabled) {
|
||||
const float abs_diff = ABS(temp_diff),
|
||||
encoderMovementSteps = abs_diff / (ENCODER_PULSES_PER_STEP);
|
||||
if (EncoderRate.lastEncoderTime) {
|
||||
// Note that the rate is always calculated between two passes through the
|
||||
// loop and that the abs of the temp_diff value is tracked.
|
||||
const float encoderStepRate = encoderMovementSteps / float(ms - EncoderRate.lastEncoderTime) * 1000;
|
||||
if (encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) encoderMultiplier = 100;
|
||||
else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoderMultiplier = 10;
|
||||
#if ENCODER_5X_STEPS_PER_SEC
|
||||
else if (encoderStepRate >= ENCODER_5X_STEPS_PER_SEC) encoderMultiplier = 5;
|
||||
#endif
|
||||
}
|
||||
EncoderRate.lastEncoderTime = ms;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
constexpr int32_t encoderMultiplier = 1;
|
||||
|
||||
#endif
|
||||
|
||||
// EncoderRate.encoderMoveValue += (temp_diff * encoderMultiplier) / (ENCODER_PULSES_PER_STEP);
|
||||
EncoderRate.encoderMoveValue = (temp_diff * encoderMultiplier) / (ENCODER_PULSES_PER_STEP);
|
||||
if (EncoderRate.encoderMoveValue < 0) EncoderRate.encoderMoveValue = -EncoderRate.encoderMoveValue;
|
||||
|
||||
temp_diff = 0;
|
||||
}
|
||||
return temp_diffState;
|
||||
}
|
||||
|
||||
#if PIN_EXISTS(LCD_LED)
|
||||
|
||||
// Take the low 24 valid bits 24Bit: G7 G6 G5 G4 G3 G2 G1 G0 R7 R6 R5 R4 R3 R2 R1 R0 B7 B6 B5 B4 B3 B2 B1 B0
|
||||
uint16_t LED_DataArray[LED_NUM];
|
||||
|
||||
// LED light operation
|
||||
void LED_Action() {
|
||||
LED_Control(RGB_SCALE_WARM_WHITE,0x0F);
|
||||
delay(30);
|
||||
LED_Control(RGB_SCALE_WARM_WHITE,0x00);
|
||||
}
|
||||
|
||||
// LED initialization
|
||||
void LED_Configuration() {
|
||||
SET_OUTPUT(LCD_LED_PIN);
|
||||
}
|
||||
|
||||
// LED write data
|
||||
void LED_WriteData() {
|
||||
uint8_t tempCounter_LED, tempCounter_Bit;
|
||||
for (tempCounter_LED = 0; tempCounter_LED < LED_NUM; tempCounter_LED++) {
|
||||
for (tempCounter_Bit = 0; tempCounter_Bit < 24; tempCounter_Bit++) {
|
||||
if (LED_DataArray[tempCounter_LED] & (0x800000 >> tempCounter_Bit)) {
|
||||
LED_DATA_HIGH;
|
||||
DELAY_NS(300);
|
||||
LED_DATA_LOW;
|
||||
DELAY_NS(200);
|
||||
}
|
||||
else {
|
||||
LED_DATA_HIGH;
|
||||
LED_DATA_LOW;
|
||||
DELAY_NS(200);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// LED control
|
||||
// RGB_Scale: RGB color ratio
|
||||
// luminance: brightness (0~0xFF)
|
||||
void LED_Control(const uint8_t RGB_Scale, const uint8_t luminance) {
|
||||
for (uint8_t i = 0; i < LED_NUM; i++) {
|
||||
LED_DataArray[i] = 0;
|
||||
switch (RGB_Scale) {
|
||||
case RGB_SCALE_R10_G7_B5: LED_DataArray[i] = (luminance * 10/10) << 8 | (luminance * 7/10) << 16 | luminance * 5/10; break;
|
||||
case RGB_SCALE_R10_G7_B4: LED_DataArray[i] = (luminance * 10/10) << 8 | (luminance * 7/10) << 16 | luminance * 4/10; break;
|
||||
case RGB_SCALE_R10_G8_B7: LED_DataArray[i] = (luminance * 10/10) << 8 | (luminance * 8/10) << 16 | luminance * 7/10; break;
|
||||
}
|
||||
}
|
||||
LED_WriteData();
|
||||
}
|
||||
|
||||
// LED gradient control
|
||||
// RGB_Scale: RGB color ratio
|
||||
// luminance: brightness (0~0xFF)
|
||||
// change_Time: gradient time (ms)
|
||||
void LED_GraduallyControl(const uint8_t RGB_Scale, const uint8_t luminance, const uint16_t change_Interval) {
|
||||
struct { uint8_t g, r, b; } led_data[LED_NUM];
|
||||
for (uint8_t i = 0; i < LED_NUM; i++) {
|
||||
switch (RGB_Scale) {
|
||||
case RGB_SCALE_R10_G7_B5:
|
||||
led_data[i] = { luminance * 7/10, luminance * 10/10, luminance * 5/10 };
|
||||
break;
|
||||
case RGB_SCALE_R10_G7_B4:
|
||||
led_data[i] = { luminance * 7/10, luminance * 10/10, luminance * 4/10 };
|
||||
break;
|
||||
case RGB_SCALE_R10_G8_B7:
|
||||
led_data[i] = { luminance * 8/10, luminance * 10/10, luminance * 7/10 };
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
struct { bool g, r, b; } led_flag = { false, false, false };
|
||||
for (uint8_t i = 0; i < LED_NUM; i++) {
|
||||
while (1) {
|
||||
const uint8_t g = uint8_t(LED_DataArray[i] >> 16),
|
||||
r = uint8_t(LED_DataArray[i] >> 8),
|
||||
b = uint8_t(LED_DataArray[i]);
|
||||
if (g == led_data[i].g) led_flag.g = true;
|
||||
else LED_DataArray[i] += (g > led_data[i].g) ? -0x010000 : 0x010000;
|
||||
if (r == led_data[i].r) led_flag.r = true;
|
||||
else LED_DataArray[i] += (r > led_data[i].r) ? -0x000100 : 0x000100;
|
||||
if (b == led_data[i].b) led_flag.b = true;
|
||||
else LED_DataArray[i] += (b > led_data[i].b) ? -0x000001 : 0x000001;
|
||||
LED_WriteData();
|
||||
if (led_flag.r && led_flag.g && led_flag.b) break;
|
||||
delay(change_Interval);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif // LCD_LED
|
||||
|
||||
#endif // HAS_DWIN_E3V2
|
||||
91
Marlin/src/lcd/e3v2/common/encoder.h
Normal file
91
Marlin/src/lcd/e3v2/common/encoder.h
Normal file
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/*****************************************************************************
|
||||
* @file lcd/e3v2/common/encoder.h
|
||||
* @brief Rotary encoder functions
|
||||
****************************************************************************/
|
||||
|
||||
#include "../../../inc/MarlinConfig.h"
|
||||
|
||||
/*********************** Encoder Set ***********************/
|
||||
|
||||
typedef struct {
|
||||
bool enabled = false;
|
||||
int encoderMoveValue = 0;
|
||||
millis_t lastEncoderTime = 0;
|
||||
} ENCODER_Rate;
|
||||
|
||||
extern ENCODER_Rate EncoderRate;
|
||||
|
||||
typedef enum {
|
||||
ENCODER_DIFF_NO = 0, // no state
|
||||
ENCODER_DIFF_CW = 1, // clockwise rotation
|
||||
ENCODER_DIFF_CCW = 2, // counterclockwise rotation
|
||||
ENCODER_DIFF_ENTER = 3 // click
|
||||
} EncoderState;
|
||||
|
||||
// Encoder initialization
|
||||
void Encoder_Configuration();
|
||||
|
||||
// Analyze encoder value and return state
|
||||
EncoderState Encoder_ReceiveAnalyze();
|
||||
|
||||
/*********************** Encoder LED ***********************/
|
||||
|
||||
#if PIN_EXISTS(LCD_LED)
|
||||
|
||||
#define LED_NUM 4
|
||||
#define LED_DATA_HIGH WRITE(LCD_LED_PIN, 1)
|
||||
#define LED_DATA_LOW WRITE(LCD_LED_PIN, 0)
|
||||
|
||||
#define RGB_SCALE_R10_G7_B5 1
|
||||
#define RGB_SCALE_R10_G7_B4 2
|
||||
#define RGB_SCALE_R10_G8_B7 3
|
||||
#define RGB_SCALE_NEUTRAL_WHITE RGB_SCALE_R10_G7_B5
|
||||
#define RGB_SCALE_WARM_WHITE RGB_SCALE_R10_G7_B4
|
||||
#define RGB_SCALE_COOL_WHITE RGB_SCALE_R10_G8_B7
|
||||
|
||||
extern unsigned int LED_DataArray[LED_NUM];
|
||||
|
||||
// LED light operation
|
||||
void LED_Action();
|
||||
|
||||
// LED initialization
|
||||
void LED_Configuration();
|
||||
|
||||
// LED write data
|
||||
void LED_WriteData();
|
||||
|
||||
// LED control
|
||||
// RGB_Scale: RGB color ratio
|
||||
// luminance: brightness (0~0xFF)
|
||||
void LED_Control(const uint8_t RGB_Scale, const uint8_t luminance);
|
||||
|
||||
// LED gradient control
|
||||
// RGB_Scale: RGB color ratio
|
||||
// luminance: brightness (0~0xFF)
|
||||
// change_Time: gradient time (ms)
|
||||
void LED_GraduallyControl(const uint8_t RGB_Scale, const uint8_t luminance, const uint16_t change_Interval);
|
||||
|
||||
#endif // LCD_LED
|
||||
4299
Marlin/src/lcd/e3v2/creality/dwin.cpp
Normal file
4299
Marlin/src/lcd/e3v2/creality/dwin.cpp
Normal file
File diff suppressed because it is too large
Load Diff
253
Marlin/src/lcd/e3v2/creality/dwin.h
Normal file
253
Marlin/src/lcd/e3v2/creality/dwin.h
Normal file
@@ -0,0 +1,253 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* DWIN by Creality3D
|
||||
*/
|
||||
|
||||
#include "dwin_lcd.h"
|
||||
#include "../common/encoder.h"
|
||||
#include "../../../libs/BL24CXX.h"
|
||||
|
||||
#include "../../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if ANY(HAS_HOTEND, HAS_HEATED_BED, HAS_FAN) && PREHEAT_COUNT
|
||||
#define HAS_PREHEAT 1
|
||||
#if PREHEAT_COUNT < 2
|
||||
#error "Creality DWIN requires two material preheat presets."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
enum processID : uint8_t {
|
||||
// Process ID
|
||||
MainMenu,
|
||||
SelectFile,
|
||||
Prepare,
|
||||
Control,
|
||||
Leveling,
|
||||
PrintProcess,
|
||||
AxisMove,
|
||||
TemperatureID,
|
||||
Motion,
|
||||
Info,
|
||||
Tune,
|
||||
#if HAS_PREHEAT
|
||||
PLAPreheat,
|
||||
ABSPreheat,
|
||||
#endif
|
||||
MaxSpeed,
|
||||
MaxSpeed_value,
|
||||
MaxAcceleration,
|
||||
MaxAcceleration_value,
|
||||
MaxJerk,
|
||||
MaxJerk_value,
|
||||
Step,
|
||||
Step_value,
|
||||
HomeOff,
|
||||
HomeOffX,
|
||||
HomeOffY,
|
||||
HomeOffZ,
|
||||
|
||||
// Last Process ID
|
||||
Last_Prepare,
|
||||
|
||||
// Advance Settings
|
||||
AdvSet,
|
||||
ProbeOff,
|
||||
ProbeOffX,
|
||||
ProbeOffY,
|
||||
|
||||
// Back Process ID
|
||||
Back_Main,
|
||||
Back_Print,
|
||||
|
||||
// Date variable ID
|
||||
Move_X,
|
||||
Move_Y,
|
||||
Move_Z,
|
||||
#if HAS_HOTEND
|
||||
Extruder,
|
||||
ETemp,
|
||||
#endif
|
||||
Homeoffset,
|
||||
#if HAS_HEATED_BED
|
||||
BedTemp,
|
||||
#endif
|
||||
#if HAS_FAN
|
||||
FanSpeed,
|
||||
#endif
|
||||
PrintSpeed,
|
||||
|
||||
// Window ID
|
||||
Print_window,
|
||||
Popup_Window
|
||||
};
|
||||
|
||||
extern uint8_t checkkey;
|
||||
extern float zprobe_zoffset;
|
||||
extern char print_filename[16];
|
||||
|
||||
extern millis_t dwin_heat_time;
|
||||
|
||||
typedef struct {
|
||||
#if HAS_HOTEND
|
||||
celsius_t E_Temp = 0;
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
celsius_t Bed_Temp = 0;
|
||||
#endif
|
||||
#if HAS_FAN
|
||||
int16_t Fan_speed = 0;
|
||||
#endif
|
||||
int16_t print_speed = 100;
|
||||
float Max_Feedspeed = 0;
|
||||
float Max_Acceleration = 0;
|
||||
float Max_Jerk_scaled = 0;
|
||||
float Max_Step_scaled = 0;
|
||||
float Move_X_scaled = 0;
|
||||
float Move_Y_scaled = 0;
|
||||
float Move_Z_scaled = 0;
|
||||
#if HAS_HOTEND
|
||||
float Move_E_scaled = 0;
|
||||
#endif
|
||||
float offset_value = 0;
|
||||
int8_t show_mode = 0; // -1: Temperature control 0: Printing temperature
|
||||
float Home_OffX_scaled = 0;
|
||||
float Home_OffY_scaled = 0;
|
||||
float Home_OffZ_scaled = 0;
|
||||
float Probe_OffX_scaled = 0;
|
||||
float Probe_OffY_scaled = 0;
|
||||
} HMI_value_t;
|
||||
|
||||
#define DWIN_CHINESE 123
|
||||
#define DWIN_ENGLISH 0
|
||||
|
||||
typedef struct {
|
||||
uint8_t language;
|
||||
bool pause_flag:1; // printing is paused
|
||||
bool pause_action:1; // flag a pause action
|
||||
bool print_finish:1; // print was finished
|
||||
bool select_flag:1; // Popup button selected
|
||||
bool home_flag:1; // homing in course
|
||||
bool heat_flag:1; // 0: heating done 1: during heating
|
||||
bool done_confirm_flag:1;
|
||||
#if ENABLED(PREVENT_COLD_EXTRUSION)
|
||||
bool cold_flag:1;
|
||||
#endif
|
||||
AxisEnum feedspeed_axis, acc_axis, jerk_axis, step_axis;
|
||||
} HMI_flag_t;
|
||||
|
||||
extern HMI_value_t HMI_ValueStruct;
|
||||
extern HMI_flag_t HMI_flag;
|
||||
|
||||
#if HAS_HOTEND || HAS_HEATED_BED
|
||||
// Popup message window
|
||||
void DWIN_Popup_Temperature(const bool toohigh);
|
||||
#endif
|
||||
|
||||
#if HAS_HOTEND
|
||||
void Popup_Window_ETempTooLow();
|
||||
#endif
|
||||
|
||||
void Popup_Window_Resume();
|
||||
void Popup_Window_Home(const bool parking=false);
|
||||
void Popup_Window_Leveling();
|
||||
|
||||
void Goto_PrintProcess();
|
||||
void Goto_MainMenu();
|
||||
|
||||
// Variable control
|
||||
void HMI_Move_X();
|
||||
void HMI_Move_Y();
|
||||
void HMI_Move_Z();
|
||||
void HMI_Move_E();
|
||||
|
||||
void HMI_Zoffset();
|
||||
|
||||
#if HAS_HOTEND
|
||||
void HMI_ETemp();
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
void HMI_BedTemp();
|
||||
#endif
|
||||
#if HAS_FAN
|
||||
void HMI_FanSpeed();
|
||||
#endif
|
||||
|
||||
void HMI_PrintSpeed();
|
||||
|
||||
void HMI_MaxFeedspeedXYZE();
|
||||
void HMI_MaxAccelerationXYZE();
|
||||
void HMI_MaxJerkXYZE();
|
||||
void HMI_StepXYZE();
|
||||
void HMI_SetLanguageCache();
|
||||
|
||||
void update_variable();
|
||||
void DWIN_Draw_Signed_Float(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, long value);
|
||||
|
||||
// SD Card
|
||||
void HMI_SDCardInit();
|
||||
void HMI_SDCardUpdate();
|
||||
|
||||
// Main Process
|
||||
void Icon_print(bool value);
|
||||
void Icon_control(bool value);
|
||||
void Icon_temperature(bool value);
|
||||
void Icon_leveling(bool value);
|
||||
|
||||
// Other
|
||||
void Draw_Status_Area(const bool with_update); // Status Area
|
||||
void HMI_StartFrame(const bool with_update); // Prepare the menu view
|
||||
void HMI_MainMenu(); // Main process screen
|
||||
void HMI_SelectFile(); // File page
|
||||
void HMI_Printing(); // Print page
|
||||
void HMI_Prepare(); // Prepare page
|
||||
void HMI_Control(); // Control page
|
||||
void HMI_Leveling(); // Level the page
|
||||
void HMI_AxisMove(); // Axis movement menu
|
||||
void HMI_Temperature(); // Temperature menu
|
||||
void HMI_Motion(); // Sports menu
|
||||
void HMI_Info(); // Information menu
|
||||
void HMI_Tune(); // Adjust the menu
|
||||
|
||||
#if HAS_PREHEAT
|
||||
void HMI_PLAPreheatSetting(); // PLA warm-up setting
|
||||
void HMI_ABSPreheatSetting(); // ABS warm-up setting
|
||||
#endif
|
||||
|
||||
void HMI_MaxSpeed(); // Maximum speed submenu
|
||||
void HMI_MaxAcceleration(); // Maximum acceleration submenu
|
||||
void HMI_MaxJerk(); // Maximum jerk speed submenu
|
||||
void HMI_Step(); // Transmission ratio
|
||||
|
||||
void HMI_Init();
|
||||
void DWIN_Update();
|
||||
void EachMomentUpdate();
|
||||
void DWIN_HandleScreen();
|
||||
void DWIN_StatusChanged(const char *text);
|
||||
void DWIN_StatusChanged_P(PGM_P const pstr);
|
||||
|
||||
inline void DWIN_StartHoming() { HMI_flag.home_flag = true; }
|
||||
|
||||
void DWIN_CompletedHoming();
|
||||
void DWIN_CompletedLeveling();
|
||||
83
Marlin/src/lcd/e3v2/creality/dwin_lcd.cpp
Normal file
83
Marlin/src/lcd/e3v2/creality/dwin_lcd.cpp
Normal file
@@ -0,0 +1,83 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/********************************************************************************
|
||||
* @file lcd/e3v2/creality/dwin_lcd.cpp
|
||||
* @author LEO / Creality3D
|
||||
* @date 2019/07/18
|
||||
* @version 2.0.1
|
||||
* @brief DWIN screen control functions
|
||||
********************************************************************************/
|
||||
|
||||
#include "../../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if ENABLED(DWIN_CREALITY_LCD)
|
||||
|
||||
#include "../../../inc/MarlinConfig.h"
|
||||
|
||||
#include "dwin_lcd.h"
|
||||
|
||||
//#define DEBUG_OUT 1
|
||||
#include "../../../core/debug_out.h"
|
||||
|
||||
/*-------------------------------------- System variable function --------------------------------------*/
|
||||
|
||||
void DWIN_Startup() {
|
||||
DEBUG_ECHOPGM("\r\nDWIN handshake ");
|
||||
delay(750); // Delay here or init later in the boot process
|
||||
if (DWIN_Handshake()) DEBUG_ECHOLNPGM("ok."); else DEBUG_ECHOLNPGM("error.");
|
||||
DWIN_Frame_SetDir(1);
|
||||
#if DISABLED(SHOW_BOOTSCREEN)
|
||||
DWIN_Frame_Clear(Color_Bg_Black); // MarlinUI handles the bootscreen so just clear here
|
||||
#endif
|
||||
DWIN_UpdateLCD();
|
||||
}
|
||||
|
||||
/*---------------------------------------- Picture related functions ----------------------------------------*/
|
||||
|
||||
// Draw an Icon
|
||||
// libID: Icon library ID
|
||||
// picID: Icon ID
|
||||
// x/y: Upper-left point
|
||||
void DWIN_ICON_Show(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) {
|
||||
DWIN_ICON_Show(true, false, false, libID, picID, x, y);
|
||||
}
|
||||
|
||||
// Copy area from virtual display area to current screen
|
||||
// cacheID: virtual area number
|
||||
// xStart/yStart: Upper-left of virtual area
|
||||
// xEnd/yEnd: Lower-right of virtual area
|
||||
// x/y: Screen paste point
|
||||
void DWIN_Frame_AreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x27);
|
||||
DWIN_Byte(i, 0x80 | cacheID);
|
||||
DWIN_Word(i, xStart);
|
||||
DWIN_Word(i, yStart);
|
||||
DWIN_Word(i, xEnd);
|
||||
DWIN_Word(i, yEnd);
|
||||
DWIN_Word(i, x);
|
||||
DWIN_Word(i, y);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
#endif // DWIN_CREALITY_LCD
|
||||
50
Marlin/src/lcd/e3v2/creality/dwin_lcd.h
Normal file
50
Marlin/src/lcd/e3v2/creality/dwin_lcd.h
Normal file
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/********************************************************************************
|
||||
* @file dwin_lcd.h
|
||||
* @author LEO / Creality3D
|
||||
* @date 2019/07/18
|
||||
* @version 2.0.1
|
||||
* @brief 迪文屏控制操作函数
|
||||
********************************************************************************/
|
||||
|
||||
#define DWIN_WIDTH 272
|
||||
#define DWIN_HEIGHT 480
|
||||
|
||||
#include "../common/dwin_api.h"
|
||||
#include "../common/dwin_set.h"
|
||||
#include "../common/dwin_font.h"
|
||||
#include "../common/dwin_color.h"
|
||||
|
||||
#define DWIN_FONT_MENU font10x20
|
||||
#define DWIN_FONT_STAT font10x20
|
||||
#define DWIN_FONT_HEAD font10x20
|
||||
#define DWIN_FONT_ALERT font14x28
|
||||
|
||||
// Copy area from virtual display area to current screen
|
||||
// cacheID: virtual area number
|
||||
// xStart/yStart: Upper-left of virtual area
|
||||
// xEnd/yEnd: Lower-right of virtual area
|
||||
// x/y: Screen paste point
|
||||
void DWIN_Frame_AreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y);
|
||||
3645
Marlin/src/lcd/e3v2/enhanced/dwin.cpp
Normal file
3645
Marlin/src/lcd/e3v2/enhanced/dwin.cpp
Normal file
File diff suppressed because it is too large
Load Diff
280
Marlin/src/lcd/e3v2/enhanced/dwin.h
Normal file
280
Marlin/src/lcd/e3v2/enhanced/dwin.h
Normal file
@@ -0,0 +1,280 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* DWIN UI Enhanced implementation
|
||||
* Author: Miguel A. Risco-Castillo
|
||||
* Version: 3.6.3
|
||||
* Date: 2021/09/08
|
||||
*/
|
||||
|
||||
#include "../../../inc/MarlinConfigPre.h"
|
||||
#include "dwinui.h"
|
||||
#include "../common/encoder.h"
|
||||
#include "../../../libs/BL24CXX.h"
|
||||
|
||||
#if ANY(HAS_HOTEND, HAS_HEATED_BED, HAS_FAN) && PREHEAT_COUNT
|
||||
#define HAS_PREHEAT 1
|
||||
#if PREHEAT_COUNT < 2
|
||||
#error "Creality DWIN requires two material preheat presets."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ANY(AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT) && DISABLED(PROBE_MANUALLY)
|
||||
#define HAS_ONESTEP_LEVELING 1
|
||||
#endif
|
||||
|
||||
#if !HAS_BED_PROBE && ENABLED(BABYSTEPPING)
|
||||
#define JUST_BABYSTEP 1
|
||||
#endif
|
||||
|
||||
#if ANY(BABYSTEPPING, HAS_BED_PROBE, HAS_WORKSPACE_OFFSET)
|
||||
#define HAS_ZOFFSET_ITEM 1
|
||||
#endif
|
||||
|
||||
static constexpr size_t eeprom_data_size = 64;
|
||||
|
||||
enum processID : uint8_t {
|
||||
// Process ID
|
||||
MainMenu,
|
||||
Menu,
|
||||
SetInt,
|
||||
SetPInt,
|
||||
SetIntNoDraw,
|
||||
SetFloat,
|
||||
SetPFloat,
|
||||
SelectFile,
|
||||
PrintProcess,
|
||||
PrintDone,
|
||||
Info,
|
||||
|
||||
// Popup Windows
|
||||
Homing,
|
||||
Leveling,
|
||||
PauseOrStop,
|
||||
FilamentPurge,
|
||||
WaitResponse,
|
||||
Locked,
|
||||
NothingToDo,
|
||||
};
|
||||
|
||||
enum pidresult_t : uint8_t {
|
||||
PID_BAD_EXTRUDER_NUM,
|
||||
PID_TEMP_TOO_HIGH,
|
||||
PID_TUNING_TIMEOUT,
|
||||
PID_EXTR_START,
|
||||
PID_BED_START,
|
||||
PID_DONE
|
||||
};
|
||||
|
||||
#define DWIN_CHINESE 123
|
||||
#define DWIN_ENGLISH 0
|
||||
|
||||
typedef struct {
|
||||
int8_t Color[3]; // Color components
|
||||
int8_t Preheat = 0; // Material Select 0: PLA, 1: ABS, 2: Custom
|
||||
AxisEnum axis = X_AXIS; // Axis Select
|
||||
int32_t MaxValue = 0; // Auxiliar max integer/scaled float value
|
||||
int32_t MinValue = 0; // Auxiliar min integer/scaled float value
|
||||
int8_t dp = 0; // Auxiliar decimal places
|
||||
int32_t Value = 0; // Auxiliar integer / scaled float value
|
||||
int16_t *P_Int = nullptr; // Auxiliar pointer to 16 bit integer variable
|
||||
float *P_Float = nullptr; // Auxiliar pointer to float variable
|
||||
void (*Apply)() = nullptr; // Auxiliar apply function
|
||||
void (*LiveUpdate)() = nullptr; // Auxiliar live update function
|
||||
} HMI_value_t;
|
||||
|
||||
typedef struct {
|
||||
uint16_t Background_Color = Def_Background_Color;
|
||||
uint16_t Cursor_color = Def_Cursor_color;
|
||||
uint16_t TitleBg_color = Def_TitleBg_color;
|
||||
uint16_t TitleTxt_color = Def_TitleTxt_color;
|
||||
uint16_t Text_Color = Def_Text_Color;
|
||||
uint16_t Selected_Color = Def_Selected_Color;
|
||||
uint16_t SplitLine_Color = Def_SplitLine_Color;
|
||||
uint16_t Highlight_Color = Def_Highlight_Color;
|
||||
uint16_t StatusBg_Color = Def_StatusBg_Color;
|
||||
uint16_t StatusTxt_Color = Def_StatusTxt_Color;
|
||||
uint16_t PopupBg_color = Def_PopupBg_color;
|
||||
uint16_t PopupTxt_Color = Def_PopupTxt_Color;
|
||||
uint16_t AlertBg_Color = Def_AlertBg_Color;
|
||||
uint16_t AlertTxt_Color = Def_AlertTxt_Color;
|
||||
uint16_t PercentTxt_Color = Def_PercentTxt_Color;
|
||||
uint16_t Barfill_Color = Def_Barfill_Color;
|
||||
uint16_t Indicator_Color = Def_Indicator_Color;
|
||||
uint16_t Coordinate_Color = Def_Coordinate_Color;
|
||||
#if HAS_HOTEND
|
||||
int16_t HotendPidT = PREHEAT_1_TEMP_HOTEND;
|
||||
int16_t PidCycles = 10;
|
||||
#endif
|
||||
#ifdef PREHEAT_1_TEMP_BED
|
||||
int16_t BedPidT = PREHEAT_1_TEMP_BED;
|
||||
#endif
|
||||
#if ENABLED(PREVENT_COLD_EXTRUSION)
|
||||
int16_t ExtMinT = EXTRUDE_MINTEMP;
|
||||
#endif
|
||||
} HMI_data_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t language;
|
||||
bool pause_flag:1; // printing is paused
|
||||
bool pause_action:1; // flag a pause action
|
||||
bool print_finish:1; // print was finished
|
||||
bool select_flag:1; // Popup button selected
|
||||
bool home_flag:1; // homing in course
|
||||
bool heat_flag:1; // 0: heating done 1: during heating
|
||||
bool lock_flag:1; // 0: lock called from AdvSet 1: lock called from Tune
|
||||
} HMI_flag_t;
|
||||
|
||||
extern HMI_value_t HMI_value;
|
||||
extern HMI_flag_t HMI_flag;
|
||||
extern HMI_data_t HMI_data;
|
||||
extern uint8_t checkkey;
|
||||
extern millis_t dwin_heat_time;
|
||||
|
||||
// Popup windows
|
||||
void DWIN_Popup_Confirm(uint8_t icon, const char * const msg1, const char * const msg2);
|
||||
#if HAS_HOTEND || HAS_HEATED_BED
|
||||
void DWIN_Popup_Temperature(const bool toohigh);
|
||||
#endif
|
||||
#if HAS_HOTEND
|
||||
void Popup_Window_ETempTooLow();
|
||||
#endif
|
||||
void Popup_Window_Resume();
|
||||
|
||||
// SD Card
|
||||
void HMI_SDCardInit();
|
||||
void HMI_SDCardUpdate();
|
||||
|
||||
// Other
|
||||
void Goto_PrintProcess();
|
||||
void Goto_Main_Menu();
|
||||
void Draw_Select_Highlight(const bool sel);
|
||||
void Draw_Status_Area(const bool with_update); // Status Area
|
||||
void Draw_Main_Area(); // Redraw main area;
|
||||
void DWIN_Redraw_screen(); // Redraw all screen elements
|
||||
void HMI_StartFrame(const bool with_update); // Prepare the menu view
|
||||
void HMI_MainMenu(); // Main process screen
|
||||
void HMI_SelectFile(); // File page
|
||||
void HMI_Printing(); // Print page
|
||||
void HMI_ReturnScreen(); // Return to previous screen before popups
|
||||
void ApplyExtMinT();
|
||||
void HMI_SetLanguageCache(); // Set the languaje image cache
|
||||
|
||||
void HMI_Init();
|
||||
void HMI_Popup();
|
||||
void HMI_SaveProcessID(const uint8_t id);
|
||||
void HMI_AudioFeedback(const bool success=true);
|
||||
void EachMomentUpdate();
|
||||
void update_variable();
|
||||
void DWIN_HandleScreen();
|
||||
void DWIN_Update();
|
||||
void DWIN_DrawStatusLine(const uint16_t color, const uint16_t bgcolor, const char *text);
|
||||
void DWIN_StatusChanged(const char * const text);
|
||||
void DWIN_StatusChanged_P(PGM_P const text);
|
||||
void DWIN_StartHoming();
|
||||
void DWIN_CompletedHoming();
|
||||
#if HAS_MESH
|
||||
void DWIN_MeshUpdate(const int8_t xpos, const int8_t ypos, const float zval);
|
||||
#endif
|
||||
void DWIN_MeshLevelingStart();
|
||||
void DWIN_CompletedLeveling();
|
||||
void DWIN_PidTuning(pidresult_t result);
|
||||
void DWIN_Print_Started(const bool sd = false);
|
||||
void DWIN_Print_Finished();
|
||||
#if HAS_FILAMENT_SENSOR
|
||||
void DWIN_FilamentRunout(const uint8_t extruder);
|
||||
#endif
|
||||
void DWIN_Progress_Update();
|
||||
void DWIN_Print_Header(const char *text);
|
||||
void DWIN_SetColorDefaults();
|
||||
void DWIN_StoreSettings(char *buff);
|
||||
void DWIN_LoadSettings(const char *buff);
|
||||
void DWIN_SetDataDefaults();
|
||||
void DWIN_RebootScreen();
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
void Draw_Popup_FilamentPurge();
|
||||
void DWIN_Popup_FilamentPurge();
|
||||
void HMI_FilamentPurge();
|
||||
#endif
|
||||
|
||||
// Utility and extensions
|
||||
void HMI_LockScreen();
|
||||
void DWIN_LockScreen(const bool flag = true);
|
||||
#if HAS_MESH
|
||||
void DWIN_MeshViewer();
|
||||
#endif
|
||||
|
||||
// HMI user control functions
|
||||
void HMI_Menu();
|
||||
void HMI_SetInt();
|
||||
void HMI_SetPInt();
|
||||
void HMI_SetIntNoDraw();
|
||||
void HMI_SetFloat();
|
||||
void HMI_SetPFloat();
|
||||
|
||||
// Menu drawing functions
|
||||
void Draw_Control_Menu();
|
||||
void Draw_AdvancedSettings_Menu();
|
||||
void Draw_Prepare_Menu();
|
||||
void Draw_Move_Menu();
|
||||
void Draw_LevBedCorners_Menu();
|
||||
#if HAS_HOME_OFFSET
|
||||
void Draw_HomeOffset_Menu();
|
||||
#endif
|
||||
#if HAS_BED_PROBE
|
||||
void Draw_ProbeSet_Menu();
|
||||
#endif
|
||||
#if HAS_FILAMENT_SENSOR
|
||||
void Draw_FilSet_Menu();
|
||||
#endif
|
||||
void Draw_SelectColors_Menu();
|
||||
void Draw_GetColor_Menu();
|
||||
void Draw_Tune_Menu();
|
||||
void Draw_Motion_Menu();
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
void Draw_FilamentMan_Menu();
|
||||
#endif
|
||||
#if ENABLED(MESH_BED_LEVELING)
|
||||
void Draw_ManualMesh_Menu();
|
||||
#endif
|
||||
#if HAS_HOTEND
|
||||
void Draw_Preheat1_Menu();
|
||||
void Draw_Preheat2_Menu();
|
||||
void Draw_Preheat3_Menu();
|
||||
void Draw_HotendPID_Menu();
|
||||
#endif
|
||||
void Draw_Temperature_Menu();
|
||||
void Draw_MaxSpeed_Menu();
|
||||
void Draw_MaxAccel_Menu();
|
||||
#if HAS_CLASSIC_JERK
|
||||
void Draw_MaxJerk_Menu();
|
||||
#endif
|
||||
void Draw_Steps_Menu();
|
||||
#if HAS_HEATED_BED
|
||||
void Draw_BedPID_Menu();
|
||||
#endif
|
||||
#if EITHER(HAS_BED_PROBE, BABYSTEPPING)
|
||||
void Draw_ZOffsetWiz_Menu();
|
||||
#endif
|
||||
160
Marlin/src/lcd/e3v2/enhanced/dwin_lcd.cpp
Normal file
160
Marlin/src/lcd/e3v2/enhanced/dwin_lcd.cpp
Normal file
@@ -0,0 +1,160 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DWIN UI Enhanced implementation
|
||||
* Author: Miguel A. Risco-Castillo
|
||||
* Version: 3.6.3
|
||||
* Date: 2021/09/08
|
||||
*/
|
||||
|
||||
#include "../../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if ENABLED(DWIN_CREALITY_LCD_ENHANCED)
|
||||
|
||||
#include "../../../inc/MarlinConfig.h"
|
||||
|
||||
#include "dwin_lcd.h"
|
||||
|
||||
/*---------------------------------------- Picture related functions ----------------------------------------*/
|
||||
|
||||
// Display QR code
|
||||
// The size of the QR code is (46*QR_Pixel)*(46*QR_Pixel) dot matrix
|
||||
// QR_Pixel: The pixel size occupied by each point of the QR code: 0x01-0x0F (1-16)
|
||||
// (Nx, Ny): The coordinates of the upper left corner displayed by the QR code
|
||||
// str: multi-bit data
|
||||
void DWIN_Draw_QR(uint8_t QR_Pixel, uint16_t x, uint16_t y, char *string) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x21);
|
||||
DWIN_Word(i, x);
|
||||
DWIN_Word(i, y);
|
||||
DWIN_Byte(i, QR_Pixel);
|
||||
DWIN_Text(i, string);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Draw an Icon with transparent background
|
||||
// libID: Icon library ID
|
||||
// picID: Icon ID
|
||||
// x/y: Upper-left point
|
||||
void DWIN_ICON_Show(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) {
|
||||
DWIN_ICON_Show(false, false, true, libID, picID, x, y);
|
||||
}
|
||||
|
||||
// Copy area from current virtual display area to current screen
|
||||
// xStart/yStart: Upper-left of virtual area
|
||||
// xEnd/yEnd: Lower-right of virtual area
|
||||
// x/y: Screen paste point
|
||||
void DWIN_Frame_AreaCopy(uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x26);
|
||||
DWIN_Word(i, xStart);
|
||||
DWIN_Word(i, yStart);
|
||||
DWIN_Word(i, xEnd);
|
||||
DWIN_Word(i, yEnd);
|
||||
DWIN_Word(i, x);
|
||||
DWIN_Word(i, y);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Copy area from virtual display area to current screen
|
||||
// IBD: background display: 0=Background filtering is not displayed, 1=Background display \\When setting the background filtering not to display, the background must be pure black
|
||||
// BIR: Background image restoration: 0=Background image is not restored, 1=Automatically use virtual display area image for background restoration
|
||||
// BFI: Background filtering strength: 0=normal, 1=enhanced, (only valid when the icon background display=0)
|
||||
// cacheID: virtual area number
|
||||
// xStart/yStart: Upper-left of virtual area
|
||||
// xEnd/yEnd: Lower-right of virtual area
|
||||
// x/y: Screen paste point
|
||||
void DWIN_Frame_AreaCopy(bool IBD, bool BIR, bool BFI, uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x27);
|
||||
DWIN_Byte(i, (IBD & 1) << 7 | (BIR & 1) << 6 | (BFI & 1) << 5 | cacheID);
|
||||
DWIN_Word(i, xStart);
|
||||
DWIN_Word(i, yStart);
|
||||
DWIN_Word(i, xEnd);
|
||||
DWIN_Word(i, yEnd);
|
||||
DWIN_Word(i, x);
|
||||
DWIN_Word(i, y);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
// Copy area from virtual display area to current screen with transparent background
|
||||
// cacheID: virtual area number
|
||||
// xStart/yStart: Upper-left of virtual area
|
||||
// xEnd/yEnd: Lower-right of virtual area
|
||||
// x/y: Screen paste point
|
||||
void DWIN_Frame_AreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y) {
|
||||
DWIN_Frame_AreaCopy(false, false, true, cacheID, xStart, yStart, xEnd, yEnd, x, y);
|
||||
}
|
||||
|
||||
// Write buffer data to the SRAM or Flash
|
||||
// mem: 0x5A=32KB SRAM, 0xA5=16KB Flash
|
||||
// addr: start address
|
||||
// length: Bytes to write
|
||||
// data: address of the buffer with data
|
||||
void DWIN_WriteToMem(uint8_t mem, uint16_t addr, uint16_t length, uint8_t *data) {
|
||||
const uint8_t max_size = 128;
|
||||
uint16_t pending = length;
|
||||
uint16_t to_send;
|
||||
uint16_t indx;
|
||||
uint8_t block = 0;
|
||||
|
||||
while (pending > 0) {
|
||||
indx = block * max_size;
|
||||
to_send = _MIN(pending, max_size);
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x31);
|
||||
DWIN_Byte(i, mem);
|
||||
DWIN_Word(i, addr + indx); // start address of the data block
|
||||
++i;
|
||||
LOOP_L_N(j, i) { LCD_SERIAL.write(DWIN_SendBuf[j]); delayMicroseconds(1); } // Buf header
|
||||
for (uint16_t j = indx; j <= indx + to_send - 1; j++) LCD_SERIAL.write(*(data + j)); delayMicroseconds(1); // write block of data
|
||||
LOOP_L_N(j, 4) { LCD_SERIAL.write(DWIN_BufTail[j]); delayMicroseconds(1); }
|
||||
block++;
|
||||
pending -= to_send;
|
||||
}
|
||||
}
|
||||
|
||||
// Write the contents of the 32KB SRAM data memory into the designated image memory space.
|
||||
// picID: Picture memory space location, 0x00-0x0F, each space is 32Kbytes
|
||||
void DWIN_SRAMToPic(uint8_t picID) {
|
||||
size_t i = 0;
|
||||
DWIN_Byte(i, 0x33);
|
||||
DWIN_Byte(i, 0x5A);
|
||||
DWIN_Byte(i, 0xA5);
|
||||
DWIN_Byte(i, picID);
|
||||
DWIN_Send(i);
|
||||
}
|
||||
|
||||
//--------------------------Test area -------------------------
|
||||
|
||||
//void DWIN_ReadSRAM(uint16_t addr, uint8_t length, const char * const data) {
|
||||
// size_t i = 0;
|
||||
// DWIN_Byte(i, 0x32);
|
||||
// DWIN_Byte(i, 0x5A); // 0x5A Read from SRAM - 0xA5 Read from Flash
|
||||
// DWIN_Word(i, addr); // 0x0000 to 0x7FFF
|
||||
// const size_t len = _MIN(0xF0, length);
|
||||
// DWIN_Byte(i, len);
|
||||
// DWIN_Send(i);
|
||||
//}
|
||||
|
||||
#endif // DWIN_CREALITY_LCD_ENHANCED
|
||||
83
Marlin/src/lcd/e3v2/enhanced/dwin_lcd.h
Normal file
83
Marlin/src/lcd/e3v2/enhanced/dwin_lcd.h
Normal file
@@ -0,0 +1,83 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* DWIN UI Enhanced implementation
|
||||
* Author: Miguel A. Risco-Castillo
|
||||
* Version: 3.6.3
|
||||
* Date: 2021/09/08
|
||||
*/
|
||||
|
||||
#include "../common/dwin_api.h"
|
||||
|
||||
// Display QR code
|
||||
// The size of the QR code is (46*QR_Pixel)*(46*QR_Pixel) dot matrix
|
||||
// QR_Pixel: The pixel size occupied by each point of the QR code: 0x01-0x0F (1-16)
|
||||
// (Nx, Ny): The coordinates of the upper left corner displayed by the QR code
|
||||
// str: multi-bit data
|
||||
void DWIN_Draw_QR(uint8_t QR_Pixel, uint16_t x, uint16_t y, char *string);
|
||||
|
||||
inline void DWIN_Draw_QR(uint8_t QR_Pixel, uint16_t x, uint16_t y, FSTR_P title) {
|
||||
DWIN_Draw_QR(QR_Pixel, x, y, (char *)title);
|
||||
}
|
||||
|
||||
// Copy area from virtual display area to current screen
|
||||
// cacheID: virtual area number
|
||||
// xStart/yStart: Upper-left of virtual area
|
||||
// xEnd/yEnd: Lower-right of virtual area
|
||||
// x/y: Screen paste point
|
||||
void DWIN_Frame_AreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y);
|
||||
|
||||
// Copy area from virtual display area to current screen
|
||||
// cacheID: virtual area number
|
||||
// xStart/yStart: Upper-left of virtual area
|
||||
// xEnd/yEnd: Lower-right of virtual area
|
||||
// x/y: Screen paste point
|
||||
void DWIN_Frame_AreaCopy(uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y);
|
||||
|
||||
// Copy area from current virtual display area to current screen
|
||||
// xStart/yStart: Upper-left of virtual area
|
||||
// xEnd/yEnd: Lower-right of virtual area
|
||||
// x/y: Screen paste point
|
||||
void DWIN_Frame_AreaCopy(uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y);
|
||||
|
||||
// Copy area from virtual display area to current screen
|
||||
// IBD: background display: 0=Background filtering is not displayed, 1=Background display \\When setting the background filtering not to display, the background must be pure black
|
||||
// BIR: Background image restoration: 0=Background image is not restored, 1=Automatically use virtual display area image for background restoration
|
||||
// BFI: Background filtering strength: 0=normal, 1=enhanced, (only valid when the icon background display=0)
|
||||
// cacheID: virtual area number
|
||||
// xStart/yStart: Upper-left of virtual area
|
||||
// xEnd/yEnd: Lower-right of virtual area
|
||||
// x/y: Screen paste point
|
||||
void DWIN_Frame_AreaCopy(bool IBD, bool BIR, bool BFI, uint8_t cacheID, uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd, uint16_t x, uint16_t y);
|
||||
|
||||
// Write buffer data to the SRAM or Flash
|
||||
// mem: 0x5A=32KB SRAM, 0xA5=16KB Flash
|
||||
// addr: start address
|
||||
// length: Bytes to write
|
||||
// data: address of the buffer with data
|
||||
void DWIN_WriteToMem(uint8_t mem, uint16_t addr, uint16_t length, uint8_t *data);
|
||||
|
||||
// Write the contents of the 32KB SRAM data memory into the designated image memory space.
|
||||
// picID: Picture memory space location, 0x00-0x0F, each space is 32Kbytes
|
||||
void DWIN_SRAMToPic(uint8_t picID);
|
||||
453
Marlin/src/lcd/e3v2/enhanced/dwinui.cpp
Normal file
453
Marlin/src/lcd/e3v2/enhanced/dwinui.cpp
Normal file
@@ -0,0 +1,453 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DWIN UI Enhanced implementation
|
||||
* Author: Miguel A. Risco-Castillo
|
||||
* Version: 3.6.3
|
||||
* Date: 2021/09/08
|
||||
*/
|
||||
|
||||
#include "../../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if ENABLED(DWIN_CREALITY_LCD_ENHANCED)
|
||||
|
||||
#include "../../../inc/MarlinConfig.h"
|
||||
#include "dwin_lcd.h"
|
||||
#include "dwinui.h"
|
||||
|
||||
//#define DEBUG_OUT 1
|
||||
#include "../../../core/debug_out.h"
|
||||
|
||||
uint8_t MenuItemTotal = 0;
|
||||
uint8_t MenuItemCount = 0;
|
||||
MenuItemClass** MenuItems = nullptr;
|
||||
MenuClass *CurrentMenu = nullptr;
|
||||
MenuClass *PreviousMenu = nullptr;
|
||||
|
||||
xy_int_t DWINUI::cursor = { 0 };
|
||||
uint16_t DWINUI::pencolor = Color_White;
|
||||
uint16_t DWINUI::textcolor = Def_Text_Color;
|
||||
uint16_t DWINUI::backcolor = Def_Background_Color;
|
||||
uint8_t DWINUI::font = font8x16;
|
||||
|
||||
void (*DWINUI::onCursorErase)(uint8_t line)=nullptr;
|
||||
void (*DWINUI::onCursorDraw)(uint8_t line)=nullptr;
|
||||
void (*DWINUI::onTitleDraw)(TitleClass* title)=nullptr;
|
||||
void (*DWINUI::onMenuDraw)(MenuClass* menu)=nullptr;
|
||||
|
||||
void DWINUI::init() {
|
||||
DEBUG_ECHOPGM("\r\nDWIN handshake ");
|
||||
delay(750); // Delay here or init later in the boot process
|
||||
const bool success = DWIN_Handshake();
|
||||
if (success) DEBUG_ECHOLNPGM("ok."); else DEBUG_ECHOLNPGM("error.");
|
||||
DWIN_Frame_SetDir(1);
|
||||
TERN(SHOW_BOOTSCREEN,,DWIN_Frame_Clear(Color_Bg_Black));
|
||||
DWIN_UpdateLCD();
|
||||
cursor.x = 0;
|
||||
cursor.y = 0;
|
||||
pencolor = Color_White;
|
||||
textcolor = Def_Text_Color;
|
||||
backcolor = Def_Background_Color;
|
||||
font = font8x16;
|
||||
}
|
||||
|
||||
// Set text/number font
|
||||
void DWINUI::setFont(uint8_t cfont) {
|
||||
font = cfont;
|
||||
}
|
||||
|
||||
// Get font character width
|
||||
uint8_t DWINUI::fontWidth(uint8_t cfont) {
|
||||
switch (cfont) {
|
||||
case font6x12 : return 6;
|
||||
case font8x16 : return 8;
|
||||
case font10x20: return 10;
|
||||
case font12x24: return 12;
|
||||
case font14x28: return 14;
|
||||
case font16x32: return 16;
|
||||
case font20x40: return 20;
|
||||
case font24x48: return 24;
|
||||
case font28x56: return 28;
|
||||
case font32x64: return 32;
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Get font character heigh
|
||||
uint8_t DWINUI::fontHeight(uint8_t cfont) {
|
||||
switch (cfont) {
|
||||
case font6x12 : return 12;
|
||||
case font8x16 : return 16;
|
||||
case font10x20: return 20;
|
||||
case font12x24: return 24;
|
||||
case font14x28: return 28;
|
||||
case font16x32: return 32;
|
||||
case font20x40: return 40;
|
||||
case font24x48: return 48;
|
||||
case font28x56: return 56;
|
||||
case font32x64: return 64;
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Get screen x coodinates from text column
|
||||
uint16_t DWINUI::ColToX(uint8_t col) {
|
||||
return col * fontWidth(font);
|
||||
}
|
||||
|
||||
// Get screen y coodinates from text row
|
||||
uint16_t DWINUI::RowToY(uint8_t row) {
|
||||
return row * fontHeight(font);
|
||||
}
|
||||
|
||||
// Set text/number color
|
||||
void DWINUI::SetColors(uint16_t fgcolor, uint16_t bgcolor) {
|
||||
textcolor = fgcolor;
|
||||
backcolor = bgcolor;
|
||||
}
|
||||
void DWINUI::SetTextColor(uint16_t fgcolor) {
|
||||
textcolor = fgcolor;
|
||||
}
|
||||
void DWINUI::SetBackgroundColor(uint16_t bgcolor) {
|
||||
backcolor = bgcolor;
|
||||
}
|
||||
|
||||
// Moves cursor to point
|
||||
// x: abscissa of the display
|
||||
// y: ordinate of the display
|
||||
// point: xy coordinate
|
||||
void DWINUI::MoveTo(int16_t x, int16_t y) {
|
||||
cursor.x = x;
|
||||
cursor.y = y;
|
||||
}
|
||||
void DWINUI::MoveTo(xy_int_t point) {
|
||||
cursor = point;
|
||||
}
|
||||
|
||||
// Moves cursor relative to the actual position
|
||||
// x: abscissa of the display
|
||||
// y: ordinate of the display
|
||||
// point: xy coordinate
|
||||
void DWINUI::MoveBy(int16_t x, int16_t y) {
|
||||
cursor.x += x;
|
||||
cursor.y += y;
|
||||
}
|
||||
void DWINUI::MoveBy(xy_int_t point) {
|
||||
cursor += point;
|
||||
}
|
||||
|
||||
// Draw a Centered string using DWIN_WIDTH
|
||||
void DWINUI::Draw_CenteredString(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, uint16_t y, const char * const string) {
|
||||
const int8_t x = _MAX(0U, DWIN_WIDTH - strlen_P(string) * fontWidth(size)) / 2 - 1;
|
||||
DWIN_Draw_String(bShow, size, color, bColor, x, y, string);
|
||||
}
|
||||
|
||||
// Draw a char at cursor position
|
||||
void DWINUI::Draw_Char(const char c) {
|
||||
const char string[2] = { c, 0};
|
||||
DWIN_Draw_String(false, font, textcolor, backcolor, cursor.x, cursor.y, string, 1);
|
||||
MoveBy(fontWidth(font), 0);
|
||||
}
|
||||
|
||||
// Draw a string at cursor position
|
||||
// color: Character color
|
||||
// *string: The string
|
||||
// rlimit: For draw less chars than string length use rlimit
|
||||
void DWINUI::Draw_String(const char * const string, uint16_t rlimit) {
|
||||
DWIN_Draw_String(false, font, textcolor, backcolor, cursor.x, cursor.y, string, rlimit);
|
||||
MoveBy(strlen(string) * fontWidth(font), 0);
|
||||
}
|
||||
void DWINUI::Draw_String(uint16_t color, const char * const string, uint16_t rlimit) {
|
||||
DWIN_Draw_String(false, font, color, backcolor, cursor.x, cursor.y, string, rlimit);
|
||||
MoveBy(strlen(string) * fontWidth(font), 0);
|
||||
}
|
||||
|
||||
// Draw a signed floating point number
|
||||
// bShow: true=display background color; false=don't display background color
|
||||
// zeroFill: true=zero fill; false=no zero fill
|
||||
// zeroMode: 1=leading 0 displayed as 0; 0=leading 0 displayed as a space
|
||||
// size: Font size
|
||||
// bColor: Background color
|
||||
// iNum: Number of whole digits
|
||||
// fNum: Number of decimal digits
|
||||
// x/y: Upper-left point
|
||||
// value: Float value
|
||||
void DWINUI::Draw_Signed_Float(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) {
|
||||
DWIN_Draw_FloatValue(bShow, zeroFill, zeroMode, size, color, bColor, iNum, fNum, x, y, value < 0 ? -value : value);
|
||||
DWIN_Draw_String(bShow, size, color, bColor, x - 6, y, value < 0 ? F("-") : F(" "));
|
||||
}
|
||||
|
||||
// Draw a circle
|
||||
// color: circle color
|
||||
// x: the abscissa of the center of the circle
|
||||
// y: ordinate of the center of the circle
|
||||
// r: circle radius
|
||||
void DWINUI::Draw_Circle(uint16_t color, uint16_t x, uint16_t y, uint8_t r) {
|
||||
int a = 0, b = 0;
|
||||
while (a <= b) {
|
||||
b = SQRT(sq(r) - sq(a));
|
||||
if (a == 0) b--;
|
||||
DWIN_Draw_Point(color, 1, 1, x + a, y + b); // Draw some sector 1
|
||||
DWIN_Draw_Point(color, 1, 1, x + b, y + a); // Draw some sector 2
|
||||
DWIN_Draw_Point(color, 1, 1, x + b, y - a); // Draw some sector 3
|
||||
DWIN_Draw_Point(color, 1, 1, x + a, y - b); // Draw some sector 4
|
||||
DWIN_Draw_Point(color, 1, 1, x - a, y - b); // Draw some sector 5
|
||||
DWIN_Draw_Point(color, 1, 1, x - b, y - a); // Draw some sector 6
|
||||
DWIN_Draw_Point(color, 1, 1, x - b, y + a); // Draw some sector 7
|
||||
DWIN_Draw_Point(color, 1, 1, x - a, y + b); // Draw some sector 8
|
||||
a++;
|
||||
}
|
||||
}
|
||||
|
||||
// Draw a circle filled with color
|
||||
// bcolor: fill color
|
||||
// x: the abscissa of the center of the circle
|
||||
// y: ordinate of the center of the circle
|
||||
// r: circle radius
|
||||
void DWINUI::Draw_FillCircle(uint16_t bcolor, uint16_t x,uint16_t y,uint8_t r) {
|
||||
int a = 0, b = 0;
|
||||
while (a <= b) {
|
||||
b = SQRT(sq(r) - sq(a)); // b=sqrt(r*r-a*a);
|
||||
if (a == 0) b--;
|
||||
DWIN_Draw_Line(bcolor, x-b,y-a,x+b,y-a);
|
||||
DWIN_Draw_Line(bcolor, x-a,y-b,x+a,y-b);
|
||||
DWIN_Draw_Line(bcolor, x-b,y+a,x+b,y+a);
|
||||
DWIN_Draw_Line(bcolor, x-a,y+b,x+a,y+b);
|
||||
a++;
|
||||
}
|
||||
}
|
||||
|
||||
// Color Interpolator
|
||||
// val : Interpolator minv..maxv
|
||||
// minv : Minimum value
|
||||
// maxv : Maximum value
|
||||
// color1 : Start color
|
||||
// color2 : End color
|
||||
uint16_t DWINUI::ColorInt(int16_t val, int16_t minv, int16_t maxv, uint16_t color1, uint16_t color2) {
|
||||
uint8_t B,G,R;
|
||||
float n;
|
||||
n = (float)(val-minv)/(maxv-minv);
|
||||
R = (1-n)*GetRColor(color1) + n*GetRColor(color2);
|
||||
G = (1-n)*GetGColor(color1) + n*GetGColor(color2);
|
||||
B = (1-n)*GetBColor(color1) + n*GetBColor(color2);
|
||||
return RGB(R,G,B);
|
||||
}
|
||||
|
||||
// Color Interpolator through Red->Yellow->Green->Blue
|
||||
// val : Interpolator minv..maxv
|
||||
// minv : Minimum value
|
||||
// maxv : Maximum value
|
||||
uint16_t DWINUI::RainbowInt(int16_t val, int16_t minv, int16_t maxv) {
|
||||
uint8_t B,G,R;
|
||||
const uint8_t maxB = 28;
|
||||
const uint8_t maxR = 28;
|
||||
const uint8_t maxG = 38;
|
||||
const int16_t limv = _MAX(abs(minv), abs(maxv));
|
||||
float n;
|
||||
if (minv>=0) {
|
||||
n = (float)(val-minv)/(maxv-minv);
|
||||
} else {
|
||||
n = (float)val/limv;
|
||||
}
|
||||
n = _MIN(1, n);
|
||||
n = _MAX(-1, n);
|
||||
if (n < 0) {
|
||||
R = 0;
|
||||
G = (1+n)*maxG;
|
||||
B = (-n)*maxB;
|
||||
} else if (n < 0.5) {
|
||||
R = maxR*n*2;
|
||||
G = maxG;
|
||||
B = 0;
|
||||
} else {
|
||||
R = maxR;
|
||||
G = maxG*(1-n);
|
||||
B = 0;
|
||||
}
|
||||
return RGB(R,G,B);
|
||||
}
|
||||
|
||||
// Draw a checkbox
|
||||
// Color: frame color
|
||||
// bColor: Background color
|
||||
// x/y: Upper-left point
|
||||
// mode : 0 : unchecked, 1 : checked
|
||||
void DWINUI::Draw_Checkbox(uint16_t color, uint16_t bcolor, uint16_t x, uint16_t y, bool checked=false) {
|
||||
DWIN_Draw_String(true, font8x16, color, bcolor, x + 4, y, checked ? F("x") : F(" "));
|
||||
DWIN_Draw_Rectangle(0, color, x + 2, y + 2, x + 17, y + 17);
|
||||
}
|
||||
|
||||
// Clear Menu by filling the menu area with background color
|
||||
void DWINUI::ClearMenuArea() {
|
||||
DWIN_Draw_Rectangle(1, backcolor, 0, TITLE_HEIGHT, DWIN_WIDTH - 1, STATUS_Y - 1);
|
||||
}
|
||||
|
||||
void DWINUI::MenuItemsClear() {
|
||||
if (MenuItems == nullptr) return;
|
||||
for (uint8_t i = 0; i < MenuItemCount; i++) delete MenuItems[i];
|
||||
delete[] MenuItems;
|
||||
MenuItems = nullptr;
|
||||
MenuItemCount = 0;
|
||||
MenuItemTotal = 0;
|
||||
}
|
||||
|
||||
void DWINUI::MenuItemsPrepare(uint8_t totalitems) {
|
||||
MenuItemsClear();
|
||||
MenuItemTotal = totalitems;
|
||||
MenuItems = new MenuItemClass*[totalitems];
|
||||
}
|
||||
|
||||
MenuItemClass* DWINUI::MenuItemsAdd(MenuItemClass* menuitem) {
|
||||
if (MenuItemCount < MenuItemTotal) {
|
||||
MenuItems[MenuItemCount] = menuitem;
|
||||
menuitem->pos = MenuItemCount++;
|
||||
return menuitem;
|
||||
}
|
||||
else {
|
||||
delete menuitem;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
/* Title Class ==============================================================*/
|
||||
|
||||
TitleClass Title;
|
||||
|
||||
void TitleClass::draw() {
|
||||
if (DWINUI::onTitleDraw != nullptr) (*DWINUI::onTitleDraw)(this);
|
||||
}
|
||||
|
||||
void TitleClass::SetCaption(const char * const title) {
|
||||
frameid = 0;
|
||||
if ( caption == title ) return;
|
||||
const uint8_t len = _MIN(sizeof(caption) - 1, strlen(title));
|
||||
memcpy(&caption[0], title, len);
|
||||
caption[len] = '\0';
|
||||
}
|
||||
|
||||
void TitleClass::ShowCaption(const char * const title) {
|
||||
SetCaption(title);
|
||||
draw();
|
||||
}
|
||||
|
||||
void TitleClass::SetFrame(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) {
|
||||
caption[0] = '\0';
|
||||
frameid = id;
|
||||
frame = { x1, y1, x2, y2 };
|
||||
}
|
||||
|
||||
void TitleClass::SetFrame(uint16_t x, uint16_t y, uint16_t w, uint16_t h) {
|
||||
SetFrame(1, x, y, x + w - 1, y + h - 1);
|
||||
}
|
||||
|
||||
void TitleClass::FrameCopy(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) {
|
||||
SetFrame(id, x1, y1, x2, y2);
|
||||
draw();
|
||||
}
|
||||
|
||||
void TitleClass::FrameCopy(uint16_t x, uint16_t y, uint16_t w, uint16_t h) {
|
||||
FrameCopy(1, x, y, x + w - 1, y + h - 1);
|
||||
}
|
||||
|
||||
/* Menu Class ===============================================================*/
|
||||
|
||||
MenuClass::MenuClass() {
|
||||
selected = 0;
|
||||
topline = 0;
|
||||
}
|
||||
|
||||
void MenuClass::draw() {
|
||||
MenuTitle.draw();
|
||||
if (DWINUI::onMenuDraw != nullptr) (*DWINUI::onMenuDraw)(this);
|
||||
for (uint8_t i = 0; i < MenuItemCount; i++)
|
||||
MenuItems[i]->draw(i - topline);
|
||||
if (DWINUI::onCursorDraw != nullptr) DWINUI::onCursorDraw(line());
|
||||
DWIN_UpdateLCD();
|
||||
}
|
||||
|
||||
void MenuClass::onScroll(bool dir) {
|
||||
int8_t sel = selected;
|
||||
if (dir) sel++; else sel--;
|
||||
LIMIT(sel, 0, MenuItemCount - 1);
|
||||
if (sel != selected) {
|
||||
if (DWINUI::onCursorErase != nullptr) DWINUI::onCursorErase(line());
|
||||
if ((sel - topline) == TROWS) {
|
||||
DWIN_Frame_AreaMove(1, DWIN_SCROLL_UP, MLINE, DWINUI::backcolor, 0, TITLE_HEIGHT + 1, DWIN_WIDTH, STATUS_Y - 1);
|
||||
topline++;
|
||||
MenuItems[sel]->draw(TROWS - 1);
|
||||
}
|
||||
if ((sel < topline)) {
|
||||
DWIN_Frame_AreaMove(1, DWIN_SCROLL_DOWN, MLINE, DWINUI::backcolor, 0, TITLE_HEIGHT + 1, DWIN_WIDTH, STATUS_Y - 1);
|
||||
topline--;
|
||||
MenuItems[sel]->draw(0);
|
||||
}
|
||||
selected = sel;
|
||||
if (DWINUI::onCursorDraw != nullptr) DWINUI::onCursorDraw(line());
|
||||
DWIN_UpdateLCD();
|
||||
}
|
||||
}
|
||||
|
||||
void MenuClass::onClick() {
|
||||
if (MenuItems[selected]->onClick != nullptr) (*MenuItems[selected]->onClick)();
|
||||
}
|
||||
|
||||
MenuItemClass *MenuClass::SelectedItem() {
|
||||
return MenuItems[selected];
|
||||
}
|
||||
|
||||
/* MenuItem Class ===========================================================*/
|
||||
|
||||
MenuItemClass::MenuItemClass(uint8_t cicon, const char * const text, void (*ondraw)(MenuItemClass* menuitem, int8_t line), void (*onclick)()) {
|
||||
icon = cicon;
|
||||
onClick = onclick;
|
||||
onDraw = ondraw;
|
||||
const uint8_t len = _MIN(sizeof(caption) - 1, strlen(text));
|
||||
memcpy(&caption[0], text, len);
|
||||
caption[len] = '\0';
|
||||
}
|
||||
|
||||
MenuItemClass::MenuItemClass(uint8_t cicon, uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, void (*ondraw)(MenuItemClass* menuitem, int8_t line), void (*onclick)()) {
|
||||
icon = cicon;
|
||||
onClick = onclick;
|
||||
onDraw = ondraw;
|
||||
caption[0] = '\0';
|
||||
frameid = id;
|
||||
frame = { x1, y1, x2, y2 };
|
||||
}
|
||||
|
||||
void MenuItemClass::SetFrame(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) {
|
||||
caption[0] = '\0';
|
||||
frameid = id;
|
||||
frame = { x1, y1, x2, y2 };
|
||||
}
|
||||
|
||||
void MenuItemClass::draw(int8_t line) {
|
||||
if (line < 0 || line >= TROWS) return;
|
||||
if (onDraw != nullptr) (*onDraw)(this, line);
|
||||
};
|
||||
|
||||
MenuItemPtrClass::MenuItemPtrClass(uint8_t cicon, const char * const text, void (*ondraw)(MenuItemClass* menuitem, int8_t line), void (*onclick)(), void* val) : MenuItemClass(cicon, text, ondraw, onclick) {
|
||||
value = val;
|
||||
};
|
||||
|
||||
#endif // DWIN_CREALITY_LCD_ENHANCED
|
||||
485
Marlin/src/lcd/e3v2/enhanced/dwinui.h
Normal file
485
Marlin/src/lcd/e3v2/enhanced/dwinui.h
Normal file
@@ -0,0 +1,485 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* DWIN UI Enhanced implementation
|
||||
* Author: Miguel A. Risco-Castillo
|
||||
* Version: 3.6.3
|
||||
* Date: 2021/09/08
|
||||
*/
|
||||
|
||||
#include "../../../core/types.h"
|
||||
#include "dwin_lcd.h"
|
||||
#include "../common/dwin_set.h"
|
||||
#include "../common/dwin_font.h"
|
||||
#include "../common/dwin_color.h"
|
||||
|
||||
// Extra Icons
|
||||
#define ICON_Brightness ICON_Motion
|
||||
#define ICON_Cancel ICON_StockConfiguration
|
||||
#define ICON_CustomPreheat ICON_SetEndTemp
|
||||
#define ICON_Error ICON_TempTooHigh
|
||||
#define ICON_ExtrudeMinT ICON_HotendTemp
|
||||
#define ICON_FilLoad ICON_WriteEEPROM
|
||||
#define ICON_FilMan ICON_ResumeEEPROM
|
||||
#define ICON_FilSet ICON_ResumeEEPROM
|
||||
#define ICON_FilUnload ICON_ReadEEPROM
|
||||
#define ICON_Flow ICON_StepE
|
||||
#define ICON_LevBed ICON_SetEndTemp
|
||||
#define ICON_Lock ICON_Cool
|
||||
#define ICON_ManualMesh ICON_HotendTemp
|
||||
#define ICON_MeshNext ICON_Axis
|
||||
#define ICON_MeshSave ICON_WriteEEPROM
|
||||
#define ICON_MeshViewer ICON_HotendTemp
|
||||
#define ICON_MoveZ0 ICON_HotendTemp
|
||||
#define ICON_Park ICON_Motion
|
||||
#define ICON_PIDcycles ICON_ResumeEEPROM
|
||||
#define ICON_PIDValue ICON_Contact
|
||||
#define ICON_ProbeSet ICON_SetEndTemp
|
||||
#define ICON_ProbeTest ICON_SetEndTemp
|
||||
#define ICON_Pwrlossr ICON_Motion
|
||||
#define ICON_Reboot ICON_ResumeEEPROM
|
||||
#define ICON_Runout ICON_MaxAccE
|
||||
#define ICON_Scolor ICON_MaxSpeed
|
||||
#define ICON_SetCustomPreheat ICON_SetEndTemp
|
||||
#define ICON_Sound ICON_Cool
|
||||
|
||||
// Default UI Colors
|
||||
#define Def_Background_Color Color_Bg_Black
|
||||
#define Def_Cursor_color Rectangle_Color
|
||||
#define Def_TitleBg_color Color_Bg_Blue
|
||||
#define Def_TitleTxt_color Color_White
|
||||
#define Def_Text_Color Color_White
|
||||
#define Def_Selected_Color Select_Color
|
||||
#define Def_SplitLine_Color Line_Color
|
||||
#define Def_Highlight_Color Color_White
|
||||
#define Def_StatusBg_Color RGB(0,20,20)
|
||||
#define Def_StatusTxt_Color Color_Yellow
|
||||
#define Def_PopupBg_color Color_Bg_Window
|
||||
#define Def_PopupTxt_Color Popup_Text_Color
|
||||
#define Def_AlertBg_Color Color_Bg_Red
|
||||
#define Def_AlertTxt_Color Color_Yellow
|
||||
#define Def_PercentTxt_Color Percent_Color
|
||||
#define Def_Barfill_Color BarFill_Color
|
||||
#define Def_Indicator_Color Color_White
|
||||
#define Def_Coordinate_Color Color_White
|
||||
|
||||
// UI element defines and constants
|
||||
#define DWIN_FONT_MENU font8x16
|
||||
#define DWIN_FONT_STAT font10x20
|
||||
#define DWIN_FONT_HEAD font10x20
|
||||
#define DWIN_FONT_ALERT font10x20
|
||||
#define STATUS_Y 354
|
||||
#define LCD_WIDTH (DWIN_WIDTH / 8)
|
||||
|
||||
constexpr uint16_t TITLE_HEIGHT = 30, // Title bar height
|
||||
MLINE = 53, // Menu line height
|
||||
TROWS = (STATUS_Y - TITLE_HEIGHT) / MLINE, // Total rows
|
||||
MROWS = TROWS - 1, // Other-than-Back
|
||||
ICOX = 26, // Menu item icon X position
|
||||
LBLX = 60, // Menu item label X position
|
||||
VALX = 210, // Menu item value X position
|
||||
MENU_CHR_W = 8, MENU_CHR_H = 16, // Menu font 8x16
|
||||
STAT_CHR_W = 10;
|
||||
|
||||
// Menuitem Y position
|
||||
#define MYPOS(L) (TITLE_HEIGHT + MLINE * (L))
|
||||
|
||||
// Menuitem caption Offset
|
||||
#define CAPOFF ((MLINE - MENU_CHR_H) / 2)
|
||||
|
||||
// Menuitem caption Y position
|
||||
#define MBASE(L) (MYPOS(L) + CAPOFF)
|
||||
|
||||
// Create and add a MenuItem object to the menu array
|
||||
#define ADDMENUITEM(V...) DWINUI::MenuItemsAdd(new MenuItemClass(V))
|
||||
#define ADDMENUITEM_P(V...) DWINUI::MenuItemsAdd(new MenuItemPtrClass(V))
|
||||
|
||||
typedef struct { uint16_t left, top, right, bottom; } rect_t;
|
||||
typedef struct { uint16_t x, y, w, h; } frame_rect_t;
|
||||
|
||||
class TitleClass {
|
||||
public:
|
||||
char caption[32] = "";
|
||||
uint8_t frameid = 0;
|
||||
rect_t frame = {0};
|
||||
void draw();
|
||||
void SetCaption(const char * const title);
|
||||
inline void SetCaption(FSTR_P title) { SetCaption((char *)title); }
|
||||
void ShowCaption(const char * const title);
|
||||
inline void ShowCaption(FSTR_P title) { ShowCaption((char *)title); }
|
||||
void SetFrame(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
|
||||
void SetFrame(uint16_t x, uint16_t y, uint16_t w, uint16_t h);
|
||||
void FrameCopy(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
|
||||
void FrameCopy(uint16_t x, uint16_t y, uint16_t h, uint16_t v);
|
||||
};
|
||||
extern TitleClass Title;
|
||||
|
||||
class MenuItemClass {
|
||||
protected:
|
||||
public:
|
||||
uint8_t pos = 0;
|
||||
uint8_t icon = 0;
|
||||
char caption[32] = "";
|
||||
uint8_t frameid = 0;
|
||||
rect_t frame = {0};
|
||||
void (*onDraw)(MenuItemClass* menuitem, int8_t line) = nullptr;
|
||||
void (*onClick)() = nullptr;
|
||||
MenuItemClass() {};
|
||||
MenuItemClass(uint8_t cicon, const char * const text=nullptr, void (*ondraw)(MenuItemClass* menuitem, int8_t line)=nullptr, void (*onclick)()=nullptr);
|
||||
MenuItemClass(uint8_t cicon, FSTR_P text = nullptr, void (*ondraw)(MenuItemClass* menuitem, int8_t line)=nullptr, void (*onclick)()=nullptr) : MenuItemClass(cicon, FTOP(text), ondraw, onclick){}
|
||||
MenuItemClass(uint8_t cicon, uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, void (*ondraw)(MenuItemClass* menuitem, int8_t line)=nullptr, void (*onclick)()=nullptr);
|
||||
void SetFrame(uint8_t id, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
|
||||
virtual ~MenuItemClass(){};
|
||||
virtual void draw(int8_t line);
|
||||
};
|
||||
|
||||
class MenuItemPtrClass: public MenuItemClass {
|
||||
public:
|
||||
void *value = nullptr;
|
||||
using MenuItemClass::MenuItemClass;
|
||||
MenuItemPtrClass(uint8_t cicon, const char * const text, void (*ondraw)(MenuItemClass* menuitem, int8_t line), void (*onclick)(), void* val);
|
||||
MenuItemPtrClass(uint8_t cicon, FSTR_P text, void (*ondraw)(MenuItemClass* menuitem, int8_t line), void (*onclick)(), void* val) : MenuItemPtrClass(cicon, FTOP(text), ondraw, onclick, val){}
|
||||
};
|
||||
|
||||
class MenuClass {
|
||||
public:
|
||||
int8_t topline = 0;
|
||||
int8_t selected = 0;
|
||||
TitleClass MenuTitle;
|
||||
MenuClass();
|
||||
virtual ~MenuClass(){};
|
||||
inline int8_t line() { return selected - topline; };
|
||||
inline int8_t line(uint8_t pos) {return pos - topline; };
|
||||
void draw();
|
||||
void onScroll(bool dir);
|
||||
void onClick();
|
||||
MenuItemClass* SelectedItem();
|
||||
};
|
||||
extern MenuClass *CurrentMenu;
|
||||
|
||||
namespace DWINUI {
|
||||
extern xy_int_t cursor;
|
||||
extern uint16_t pencolor;
|
||||
extern uint16_t textcolor;
|
||||
extern uint16_t backcolor;
|
||||
extern uint8_t font;
|
||||
|
||||
extern void (*onCursorErase)(uint8_t line);
|
||||
extern void (*onCursorDraw)(uint8_t line);
|
||||
extern void (*onTitleDraw)(TitleClass* title);
|
||||
extern void (*onMenuDraw)(MenuClass* menu);
|
||||
|
||||
// DWIN LCD Initialization
|
||||
void init();
|
||||
|
||||
// Set text/number font
|
||||
void setFont(uint8_t cfont);
|
||||
|
||||
// Get font character width
|
||||
uint8_t fontWidth(uint8_t cfont);
|
||||
|
||||
// Get font character heigh
|
||||
uint8_t fontHeight(uint8_t cfont);
|
||||
|
||||
// Get screen x coodinates from text column
|
||||
uint16_t ColToX(uint8_t col);
|
||||
|
||||
// Get screen y coodinates from text row
|
||||
uint16_t RowToY(uint8_t row);
|
||||
|
||||
// Set text/number color
|
||||
void SetColors(uint16_t fgcolor, uint16_t bgcolor);
|
||||
void SetTextColor(uint16_t fgcolor);
|
||||
void SetBackgroundColor(uint16_t bgcolor);
|
||||
|
||||
// Moves cursor to point
|
||||
// x: abscissa of the display
|
||||
// y: ordinate of the display
|
||||
// point: xy coordinate
|
||||
void MoveTo(int16_t x, int16_t y);
|
||||
void MoveTo(xy_int_t point);
|
||||
|
||||
// Moves cursor relative to the actual position
|
||||
// x: abscissa of the display
|
||||
// y: ordinate of the display
|
||||
// point: xy coordinate
|
||||
void MoveBy(int16_t x, int16_t y);
|
||||
void MoveBy(xy_int_t point);
|
||||
|
||||
// Draw a line from the cursor to xy position
|
||||
// color: Line segment color
|
||||
// x/y: End point
|
||||
inline void LineTo(uint16_t color, uint16_t x, uint16_t y) {
|
||||
DWIN_Draw_Line(color, cursor.x, cursor.y, x, y);
|
||||
}
|
||||
inline void LineTo(uint16_t x, uint16_t y) {
|
||||
DWIN_Draw_Line(pencolor, cursor.x, cursor.y, x, y);
|
||||
}
|
||||
|
||||
// Draw an Icon with transparent background from the library ICON
|
||||
// icon: Icon ID
|
||||
// x/y: Upper-left point
|
||||
inline void Draw_Icon(uint8_t icon, uint16_t x, uint16_t y) {
|
||||
DWIN_ICON_Show(ICON, icon, x, y);
|
||||
}
|
||||
|
||||
// Draw a positive integer
|
||||
// bShow: true=display background color; false=don't display background color
|
||||
// zeroFill: true=zero fill; false=no zero fill
|
||||
// zeroMode: 1=leading 0 displayed as 0; 0=leading 0 displayed as a space
|
||||
// size: Font size
|
||||
// color: Character color
|
||||
// bColor: Background color
|
||||
// iNum: Number of digits
|
||||
// x/y: Upper-left coordinate
|
||||
// value: Integer value
|
||||
inline void Draw_Int(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) {
|
||||
DWIN_Draw_IntValue(bShow, zeroFill, zeroMode, size, color, bColor, iNum, x, y, value);
|
||||
}
|
||||
inline void Draw_Int(uint8_t iNum, long value) {
|
||||
DWIN_Draw_IntValue(false, true, 0, font, textcolor, backcolor, iNum, cursor.x, cursor.y, value);
|
||||
MoveBy(iNum * fontWidth(font), 0);
|
||||
}
|
||||
inline void Draw_Int(uint8_t iNum, uint16_t x, uint16_t y, long value) {
|
||||
DWIN_Draw_IntValue(false, true, 0, font, textcolor, backcolor, iNum, x, y, value);
|
||||
}
|
||||
inline void Draw_Int(uint16_t color, uint8_t iNum, uint16_t x, uint16_t y, long value) {
|
||||
DWIN_Draw_IntValue(false, true, 0, font, color, backcolor, iNum, x, y, value);
|
||||
}
|
||||
inline void Draw_Int(uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) {
|
||||
DWIN_Draw_IntValue(true, true, 0, font, color, bColor, iNum, x, y, value);
|
||||
}
|
||||
inline void Draw_Int(uint8_t size, uint16_t color, uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, long value) {
|
||||
DWIN_Draw_IntValue(true, true, 0, size, color, bColor, iNum, x, y, value);
|
||||
}
|
||||
|
||||
// Draw a floating point number
|
||||
// bShow: true=display background color; false=don't display background color
|
||||
// zeroFill: true=zero fill; false=no zero fill
|
||||
// zeroMode: 1=leading 0 displayed as 0; 0=leading 0 displayed as a space
|
||||
// size: Font size
|
||||
// color: Character color
|
||||
// bColor: Background color
|
||||
// iNum: Number of whole digits
|
||||
// fNum: Number of decimal digits
|
||||
// x/y: Upper-left point
|
||||
// value: Float value
|
||||
inline void Draw_Float(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) {
|
||||
DWIN_Draw_FloatValue(bShow, zeroFill, zeroMode, size, color, bColor, iNum, fNum, x, y, value);
|
||||
}
|
||||
inline void Draw_Float(uint8_t iNum, uint8_t fNum, float value) {
|
||||
DWIN_Draw_FloatValue(false, true, 0, font, textcolor, backcolor, iNum, fNum, cursor.x, cursor.y, value);
|
||||
MoveBy((iNum + fNum + 1) * fontWidth(font), 0);
|
||||
}
|
||||
inline void Draw_Float(uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) {
|
||||
DWIN_Draw_FloatValue(false, true, 0, font, textcolor, backcolor, iNum, fNum, x, y, value);
|
||||
}
|
||||
inline void Draw_Float(uint16_t color, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) {
|
||||
DWIN_Draw_FloatValue(false, true, 0, font, color, backcolor, iNum, fNum, x, y, value);
|
||||
}
|
||||
inline void Draw_Float(uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) {
|
||||
DWIN_Draw_FloatValue(true, true, 0, font, color, bColor, iNum, fNum, x, y, value);
|
||||
}
|
||||
inline void Draw_Float(uint8_t size, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) {
|
||||
DWIN_Draw_FloatValue(true, true, 0, size, color, bColor, iNum, fNum, x, y, value);
|
||||
}
|
||||
|
||||
// Draw a signed floating point number
|
||||
// bShow: true=display background color; false=don't display background color
|
||||
// zeroFill: true=zero fill; false=no zero fill
|
||||
// zeroMode: 1=leading 0 displayed as 0; 0=leading 0 displayed as a space
|
||||
// size: Font size
|
||||
// bColor: Background color
|
||||
// iNum: Number of whole digits
|
||||
// fNum: Number of decimal digits
|
||||
// x/y: Upper-left point
|
||||
// value: Float value
|
||||
void Draw_Signed_Float(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value);
|
||||
inline void Draw_Signed_Float(uint8_t iNum, uint8_t fNum, float value) {
|
||||
Draw_Signed_Float(false, true, 0, font, textcolor, backcolor, iNum, fNum, cursor.x, cursor.y, value);
|
||||
MoveBy((iNum + fNum + 1) * fontWidth(font), 0);
|
||||
}
|
||||
inline void Draw_Signed_Float(uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) {
|
||||
Draw_Signed_Float(false, true, 0, font, textcolor, backcolor, iNum, fNum, x, y, value);
|
||||
}
|
||||
inline void Draw_Signed_Float(uint8_t size, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) {
|
||||
Draw_Signed_Float(false, true, 0, size, textcolor, backcolor, iNum, fNum, x, y, value);
|
||||
}
|
||||
inline void Draw_Signed_Float(uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) {
|
||||
Draw_Signed_Float(true, true, 0, font, color, bColor, iNum, fNum, x, y, value);
|
||||
}
|
||||
inline void Draw_Signed_Float(uint8_t size, uint16_t color, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, float value) {
|
||||
Draw_Signed_Float(true, true, 0, size, color, bColor, iNum, fNum, x, y, value);
|
||||
}
|
||||
|
||||
// Draw a char at cursor position
|
||||
void Draw_Char(const char c);
|
||||
|
||||
// Draw a string at cursor position
|
||||
// color: Character color
|
||||
// *string: The string
|
||||
// rlimit: For draw less chars than string length use rlimit
|
||||
void Draw_String(const char * const string, uint16_t rlimit = 0xFFFF);
|
||||
void Draw_String(uint16_t color, const char * const string, uint16_t rlimit = 0xFFFF);
|
||||
|
||||
// Draw a string
|
||||
// size: Font size
|
||||
// color: Character color
|
||||
// bColor: Background color
|
||||
// x/y: Upper-left coordinate of the string
|
||||
// *string: The string
|
||||
inline void Draw_String(uint16_t x, uint16_t y, const char * const string) {
|
||||
DWIN_Draw_String(false, font, textcolor, backcolor, x, y, string);
|
||||
}
|
||||
inline void Draw_String(uint16_t x, uint16_t y, FSTR_P title) {
|
||||
DWIN_Draw_String(false, font, textcolor, backcolor, x, y, (char *)title);
|
||||
}
|
||||
inline void Draw_String(uint16_t color, uint16_t x, uint16_t y, const char * const string) {
|
||||
DWIN_Draw_String(false, font, color, backcolor, x, y, string);
|
||||
}
|
||||
inline void Draw_String(uint16_t color, uint16_t x, uint16_t y, FSTR_P title) {
|
||||
DWIN_Draw_String(false, font, color, backcolor, x, y, (char *)title);
|
||||
}
|
||||
inline void Draw_String(uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, const char * const string) {
|
||||
DWIN_Draw_String(true, font, color, bgcolor, x, y, string);
|
||||
}
|
||||
inline void Draw_String(uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, FSTR_P title) {
|
||||
DWIN_Draw_String(true, font, color, bgcolor, x, y, (char *)title);
|
||||
}
|
||||
inline void Draw_String(uint8_t size, uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, const char * const string) {
|
||||
DWIN_Draw_String(true, size, color, bgcolor, x, y, string);
|
||||
}
|
||||
inline void Draw_String(uint8_t size, uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, FSTR_P title) {
|
||||
DWIN_Draw_String(true, size, color, bgcolor, x, y, (char *)title);
|
||||
}
|
||||
|
||||
// Draw a centered string using DWIN_WIDTH
|
||||
// bShow: true=display background color; false=don't display background color
|
||||
// size: Font size
|
||||
// color: Character color
|
||||
// bColor: Background color
|
||||
// y: Upper coordinate of the string
|
||||
// *string: The string
|
||||
void Draw_CenteredString(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, uint16_t y, const char * const string);
|
||||
inline void Draw_CenteredString(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, uint16_t y, FSTR_P title) {
|
||||
Draw_CenteredString(bShow, size, color, bColor, y, (char *)title);
|
||||
}
|
||||
inline void Draw_CenteredString(uint16_t color, uint16_t bcolor, uint16_t y, const char * const string) {
|
||||
Draw_CenteredString(true, font, color, bcolor, y, string);
|
||||
}
|
||||
inline void Draw_CenteredString(uint8_t size, uint16_t color, uint16_t y, const char * const string) {
|
||||
Draw_CenteredString(false, size, color, backcolor, y, string);
|
||||
}
|
||||
inline void Draw_CenteredString(uint8_t size, uint16_t color, uint16_t y, FSTR_P title) {
|
||||
Draw_CenteredString(false, size, color, backcolor, y, (char *)title);
|
||||
}
|
||||
inline void Draw_CenteredString(uint16_t color, uint16_t y, const char * const string) {
|
||||
Draw_CenteredString(false, font, color, backcolor, y, string);
|
||||
}
|
||||
inline void Draw_CenteredString(uint16_t color, uint16_t y, FSTR_P title) {
|
||||
Draw_CenteredString(false, font, color, backcolor, y, (char *)title);
|
||||
}
|
||||
inline void Draw_CenteredString(uint16_t y, const char * const string) {
|
||||
Draw_CenteredString(false, font, textcolor, backcolor, y, string);
|
||||
}
|
||||
inline void Draw_CenteredString(uint16_t y, FSTR_P title) {
|
||||
Draw_CenteredString(false, font, textcolor, backcolor, y, (char *)title);
|
||||
}
|
||||
|
||||
// Draw a circle
|
||||
// Color: circle color
|
||||
// x: abscissa of the center of the circle
|
||||
// y: ordinate of the center of the circle
|
||||
// r: circle radius
|
||||
void Draw_Circle(uint16_t color, uint16_t x,uint16_t y,uint8_t r);
|
||||
inline void Draw_Circle(uint16_t color, uint8_t r) {
|
||||
Draw_Circle(color, cursor.x, cursor.y, r);
|
||||
}
|
||||
|
||||
// Draw a checkbox
|
||||
// Color: frame color
|
||||
// bColor: Background color
|
||||
// x/y: Upper-left point
|
||||
// checked : 0 : unchecked, 1 : checked
|
||||
void Draw_Checkbox(uint16_t color, uint16_t bcolor, uint16_t x, uint16_t y, bool checked);
|
||||
inline void Draw_Checkbox(uint16_t x, uint16_t y, bool checked=false) {
|
||||
Draw_Checkbox(textcolor, backcolor, x, y, checked);
|
||||
}
|
||||
|
||||
// Color Interpolator
|
||||
// val : Interpolator minv..maxv
|
||||
// minv : Minimum value
|
||||
// maxv : Maximum value
|
||||
// color1 : Start color
|
||||
// color2 : End color
|
||||
uint16_t ColorInt(int16_t val, int16_t minv, int16_t maxv, uint16_t color1, uint16_t color2);
|
||||
|
||||
// -------------------------- Extra -------------------------------//
|
||||
|
||||
// Draw a circle filled with color
|
||||
// bcolor: fill color
|
||||
// x: abscissa of the center of the circle
|
||||
// y: ordinate of the center of the circle
|
||||
// r: circle radius
|
||||
void Draw_FillCircle(uint16_t bcolor, uint16_t x,uint16_t y,uint8_t r);
|
||||
inline void Draw_FillCircle(uint16_t bcolor, uint8_t r) {
|
||||
Draw_FillCircle(bcolor, cursor.x, cursor.y, r);
|
||||
}
|
||||
|
||||
// Color Interpolator through Red->Yellow->Green->Blue
|
||||
// val : Interpolator minv..maxv
|
||||
// minv : Minimum value
|
||||
// maxv : Maximum value
|
||||
uint16_t RainbowInt(int16_t val, int16_t minv, int16_t maxv);
|
||||
|
||||
// Write buffer data to the SRAM
|
||||
// addr: SRAM start address 0x0000-0x7FFF
|
||||
// length: Bytes to write
|
||||
// data: address of the buffer with data
|
||||
inline void WriteToSRAM(uint16_t addr, uint16_t length, uint8_t *data) {
|
||||
DWIN_WriteToMem(0x5A, addr, length, data);
|
||||
}
|
||||
|
||||
// Write buffer data to the Flash
|
||||
// addr: Flash start address 0x0000-0x3FFF
|
||||
// length: Bytes to write
|
||||
// data: address of the buffer with data
|
||||
inline void WriteToFlash(uint16_t addr, uint16_t length, uint8_t *data) {
|
||||
DWIN_WriteToMem(0xA5, addr, length, data);
|
||||
}
|
||||
|
||||
// Clear Menu by filling the area with background color
|
||||
// Area (0, TITLE_HEIGHT, DWIN_WIDTH, STATUS_Y - 1)
|
||||
void ClearMenuArea();
|
||||
|
||||
// Clear MenuItems array and free MenuItems elements
|
||||
void MenuItemsClear();
|
||||
|
||||
// Prepare MenuItems array
|
||||
void MenuItemsPrepare(uint8_t totalitems);
|
||||
|
||||
// Add elements to the MenuItems array
|
||||
MenuItemClass* MenuItemsAdd(MenuItemClass* menuitem);
|
||||
|
||||
};
|
||||
75
Marlin/src/lcd/e3v2/enhanced/lockscreen.cpp
Normal file
75
Marlin/src/lcd/e3v2/enhanced/lockscreen.cpp
Normal file
@@ -0,0 +1,75 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DWIN UI Enhanced implementation
|
||||
* Author: Miguel A. Risco-Castillo
|
||||
* Version: 3.6.3
|
||||
* Date: 2021/09/08
|
||||
*/
|
||||
|
||||
#include "../../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if ENABLED(DWIN_CREALITY_LCD_ENHANCED)
|
||||
|
||||
#include "../../../core/types.h"
|
||||
#include "dwin_lcd.h"
|
||||
#include "dwinui.h"
|
||||
#include "dwin.h"
|
||||
#include "lockscreen.h"
|
||||
|
||||
LockScreenClass lockScreen;
|
||||
|
||||
uint8_t LockScreenClass::lock_pos = 0;
|
||||
bool LockScreenClass::unlocked = false;
|
||||
|
||||
void LockScreenClass::init() {
|
||||
lock_pos = 0;
|
||||
unlocked = false;
|
||||
draw();
|
||||
}
|
||||
|
||||
void LockScreenClass::draw() {
|
||||
Title.SetCaption(PSTR("Lock Screen"));
|
||||
DWINUI::ClearMenuArea();
|
||||
DWINUI::Draw_Icon(ICON_LOGO, 71, 120); // CREALITY logo
|
||||
DWINUI::Draw_CenteredString(Color_White, 180, F("Printer is Locked,"));
|
||||
DWINUI::Draw_CenteredString(Color_White, 200, F("Scroll to unlock."));
|
||||
DWINUI::Draw_CenteredString(Color_White, 240, F("-> | <-"));
|
||||
DWIN_Draw_Box(1, HMI_data.Barfill_Color, 0, 260, DWIN_WIDTH, 20);
|
||||
DWIN_Draw_VLine(Color_Yellow, lock_pos * DWIN_WIDTH / 255, 260, 20);
|
||||
DWIN_UpdateLCD();
|
||||
}
|
||||
|
||||
void LockScreenClass::onEncoder(EncoderState encoder_diffState) {
|
||||
switch (encoder_diffState) {
|
||||
case ENCODER_DIFF_CW: lock_pos += 8; break;
|
||||
case ENCODER_DIFF_CCW: lock_pos -= 8; break;
|
||||
case ENCODER_DIFF_ENTER: unlocked = (lock_pos == 128); break;
|
||||
default: break;
|
||||
}
|
||||
DWIN_Draw_Box(1, HMI_data.Barfill_Color, 0, 260, DWIN_WIDTH, 20);
|
||||
DWIN_Draw_VLine(Color_Yellow, lock_pos * DWIN_WIDTH / 255, 260, 20);
|
||||
DWIN_UpdateLCD();
|
||||
}
|
||||
|
||||
#endif // DWIN_CREALITY_LCD_ENHANCED
|
||||
45
Marlin/src/lcd/e3v2/enhanced/lockscreen.h
Normal file
45
Marlin/src/lcd/e3v2/enhanced/lockscreen.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* DWIN UI Enhanced implementation
|
||||
* Author: Miguel A. Risco-Castillo
|
||||
* Version: 3.6.3
|
||||
* Date: 2021/09/08
|
||||
*/
|
||||
|
||||
#include "../common/encoder.h"
|
||||
#include <stdint.h>
|
||||
|
||||
class LockScreenClass {
|
||||
private:
|
||||
static bool unlocked;
|
||||
static uint8_t lock_pos;
|
||||
public:
|
||||
static void init();
|
||||
static void onEncoder(EncoderState encoder_diffState);
|
||||
static void draw();
|
||||
static inline bool isUnlocked() { return unlocked; }
|
||||
};
|
||||
|
||||
extern LockScreenClass lockScreen;
|
||||
75
Marlin/src/lcd/e3v2/enhanced/meshviewer.cpp
Normal file
75
Marlin/src/lcd/e3v2/enhanced/meshviewer.cpp
Normal file
@@ -0,0 +1,75 @@
|
||||
/**
|
||||
* DWIN Mesh Viewer
|
||||
* Author: Miguel A. Risco-Castillo
|
||||
* version: 2.5
|
||||
* Date: 2021/09/27
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser 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.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "../../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if BOTH(DWIN_CREALITY_LCD_ENHANCED, HAS_MESH)
|
||||
|
||||
#include "meshviewer.h"
|
||||
|
||||
#include "../../../core/types.h"
|
||||
#include "../../marlinui.h"
|
||||
#include "dwin_lcd.h"
|
||||
#include "dwinui.h"
|
||||
#include "dwin.h"
|
||||
#include "../../../feature/bedlevel/bedlevel.h"
|
||||
|
||||
MeshViewerClass MeshViewer;
|
||||
|
||||
void MeshViewerClass::Draw() {
|
||||
const int8_t mx = 30, my = 30; // Margins
|
||||
const int16_t stx = (DWIN_WIDTH - 2 * mx) / (GRID_MAX_POINTS_X - 1), // Steps
|
||||
sty = (DWIN_WIDTH - 2 * my) / (GRID_MAX_POINTS_Y - 1);
|
||||
int8_t zmesh[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y], maxz =-127, minz = 127;
|
||||
#define px(xp) (mx + (xp) * stx)
|
||||
#define py(yp) (30 + DWIN_WIDTH - my - (yp) * sty)
|
||||
#define rm(z) ((((z) - minz) * 10 / _MAX(1, (maxz - minz))) + 10)
|
||||
#define DrawMeshValue(xp, yp, zv) DWINUI::Draw_Signed_Float(font6x12, 1, 2, px(xp) - 12, py(yp) - 6, zv)
|
||||
#define DrawMeshHLine(yp) DWIN_Draw_HLine(HMI_data.SplitLine_Color, px(0), py(yp), DWIN_WIDTH - 2 * mx)
|
||||
#define DrawMeshVLine(xp) DWIN_Draw_VLine(HMI_data.SplitLine_Color, px(xp), py(GRID_MAX_POINTS_Y - 1), DWIN_WIDTH - 2 * my)
|
||||
GRID_LOOP(x, y) {
|
||||
const float v = Z_VALUES(x,y) * 100;
|
||||
zmesh[x][y] = v;
|
||||
NOLESS(maxz, v);
|
||||
NOMORE(minz, v);
|
||||
}
|
||||
Title.ShowCaption(F("Mesh viewer"));
|
||||
DWINUI::ClearMenuArea();
|
||||
DWINUI::Draw_Icon(ICON_Continue_E, 86, 305);
|
||||
DWIN_Draw_Rectangle(0, HMI_data.SplitLine_Color, px(0), py(0), px(GRID_MAX_POINTS_X - 1), py(GRID_MAX_POINTS_Y - 1));
|
||||
LOOP_S_L_N(x, 1, GRID_MAX_POINTS_X - 1) DrawMeshVLine(x);
|
||||
LOOP_S_L_N(y, 1, GRID_MAX_POINTS_Y - 1) DrawMeshHLine(y);
|
||||
LOOP_L_N(y, GRID_MAX_POINTS_Y) {
|
||||
watchdog_refresh();
|
||||
LOOP_L_N(x, GRID_MAX_POINTS_X) {
|
||||
uint16_t color = DWINUI::RainbowInt(zmesh[x][y], _MIN(-5, minz), _MAX(5, maxz));
|
||||
DWINUI::Draw_FillCircle(color, px(x), py(y), rm(zmesh[x][y]));
|
||||
DrawMeshValue(x, y, Z_VALUES(x,y));
|
||||
}
|
||||
}
|
||||
char str_1[6], str_2[6] = "";
|
||||
ui.status_printf_P(0, PSTR("Mesh minZ: %s, maxZ: %s"),
|
||||
dtostrf((float)minz / 100, 1, 2, str_1),
|
||||
dtostrf((float)maxz / 100, 1, 2, str_2)
|
||||
);
|
||||
}
|
||||
|
||||
#endif // DWIN_CREALITY_LCD_ENHANCED && HAS_MESH
|
||||
28
Marlin/src/lcd/e3v2/enhanced/meshviewer.h
Normal file
28
Marlin/src/lcd/e3v2/enhanced/meshviewer.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* DWIN Mesh Viewer
|
||||
* Author: Miguel A. Risco-Castillo
|
||||
* version: 2.5
|
||||
* Date: 2021/09/27
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser 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.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
class MeshViewerClass {
|
||||
public:
|
||||
void Draw();
|
||||
};
|
||||
|
||||
extern MeshViewerClass MeshViewer;
|
||||
7
Marlin/src/lcd/e3v2/jyersui/README.md
Normal file
7
Marlin/src/lcd/e3v2/jyersui/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# DWIN for Creality Ender 3 v2
|
||||
|
||||
Marlin's Ender 3 v2 support requires the `DWIN_SET` included with the Ender 3 V2 [example configuration](https://github.com/MarlinFirmware/Configurations/tree/bugfix-2.0.x/config/examples/Creality/Ender-3%20V2).
|
||||
|
||||
## Easy Install
|
||||
|
||||
Copy the `DWIN_SET` folder onto a Micro-SD card and insert the card into the slot on the DWIN screen. Cycle the machine and wait for the screen to go from blue to orange. Turn the machine off and remove the SD card. When you turn on the machine the screen will display a "Creality" loading screen.
|
||||
5049
Marlin/src/lcd/e3v2/jyersui/dwin.cpp
Normal file
5049
Marlin/src/lcd/e3v2/jyersui/dwin.cpp
Normal file
File diff suppressed because it is too large
Load Diff
243
Marlin/src/lcd/e3v2/jyersui/dwin.h
Normal file
243
Marlin/src/lcd/e3v2/jyersui/dwin.h
Normal file
@@ -0,0 +1,243 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* lcd/e3v2/jyersui/dwin.h
|
||||
*/
|
||||
|
||||
#include "dwin_lcd.h"
|
||||
#include "../common/dwin_set.h"
|
||||
#include "../common/dwin_font.h"
|
||||
#include "../common/dwin_color.h"
|
||||
#include "../common/encoder.h"
|
||||
#include "../../../libs/BL24CXX.h"
|
||||
|
||||
#include "../../../inc/MarlinConfigPre.h"
|
||||
|
||||
//#define DWIN_CREALITY_LCD_CUSTOM_ICONS
|
||||
|
||||
enum processID : uint8_t {
|
||||
Main, Print, Menu, Value, Option, File, Popup, Confirm, Wait
|
||||
};
|
||||
|
||||
enum PopupID : uint8_t {
|
||||
Pause, Stop, Resume, SaveLevel, ETemp, ConfFilChange, PurgeMore, MeshSlot,
|
||||
Level, Home, MoveWait, Heating, FilLoad, FilChange, TempWarn, Runout, PIDWait, Resuming, ManualProbing,
|
||||
FilInsert, HeaterTime, UserInput, LevelError, InvalidMesh, UI, Complete
|
||||
};
|
||||
|
||||
enum menuID : uint8_t {
|
||||
MainMenu,
|
||||
Prepare,
|
||||
Move,
|
||||
HomeMenu,
|
||||
ManualLevel,
|
||||
ZOffset,
|
||||
Preheat,
|
||||
ChangeFilament,
|
||||
Control,
|
||||
TempMenu,
|
||||
PID,
|
||||
HotendPID,
|
||||
BedPID,
|
||||
Preheat1,
|
||||
Preheat2,
|
||||
Preheat3,
|
||||
Preheat4,
|
||||
Preheat5,
|
||||
Motion,
|
||||
HomeOffsets,
|
||||
MaxSpeed,
|
||||
MaxAcceleration,
|
||||
MaxJerk,
|
||||
Steps,
|
||||
Visual,
|
||||
ColorSettings,
|
||||
Advanced,
|
||||
ProbeMenu,
|
||||
Info,
|
||||
Leveling,
|
||||
LevelManual,
|
||||
LevelView,
|
||||
MeshViewer,
|
||||
LevelSettings,
|
||||
ManualMesh,
|
||||
UBLMesh,
|
||||
InfoMain,
|
||||
Tune,
|
||||
PreheatHotend
|
||||
};
|
||||
|
||||
// Custom icons
|
||||
#if ENABLED(DWIN_CREALITY_LCD_CUSTOM_ICONS)
|
||||
// index of every custom icon should be >= CUSTOM_ICON_START
|
||||
#define CUSTOM_ICON_START ICON_Checkbox_F
|
||||
#define ICON_Checkbox_F 200
|
||||
#define ICON_Checkbox_T 201
|
||||
#define ICON_Fade 202
|
||||
#define ICON_Mesh 203
|
||||
#define ICON_Tilt 204
|
||||
#define ICON_Brightness 205
|
||||
#define ICON_AxisD 249
|
||||
#define ICON_AxisBR 250
|
||||
#define ICON_AxisTR 251
|
||||
#define ICON_AxisBL 252
|
||||
#define ICON_AxisTL 253
|
||||
#define ICON_AxisC 254
|
||||
#else
|
||||
#define ICON_Fade ICON_Version
|
||||
#define ICON_Mesh ICON_Version
|
||||
#define ICON_Tilt ICON_Version
|
||||
#define ICON_Brightness ICON_Version
|
||||
#define ICON_AxisD ICON_Axis
|
||||
#define ICON_AxisBR ICON_Axis
|
||||
#define ICON_AxisTR ICON_Axis
|
||||
#define ICON_AxisBL ICON_Axis
|
||||
#define ICON_AxisTL ICON_Axis
|
||||
#define ICON_AxisC ICON_Axis
|
||||
#endif
|
||||
|
||||
enum colorID : uint8_t {
|
||||
Default, White, Green, Cyan, Blue, Magenta, Red, Orange, Yellow, Brown, Black
|
||||
};
|
||||
|
||||
#define Custom_Colors 10
|
||||
#define Color_Aqua RGB(0x00,0x3F,0x1F)
|
||||
#define Color_Light_White 0xBDD7
|
||||
#define Color_Green RGB(0x00,0x3F,0x00)
|
||||
#define Color_Light_Green 0x3460
|
||||
#define Color_Cyan 0x07FF
|
||||
#define Color_Light_Cyan 0x04F3
|
||||
#define Color_Blue 0x015F
|
||||
#define Color_Light_Blue 0x3A6A
|
||||
#define Color_Magenta 0xF81F
|
||||
#define Color_Light_Magenta 0x9813
|
||||
#define Color_Light_Red 0x8800
|
||||
#define Color_Orange 0xFA20
|
||||
#define Color_Light_Orange 0xFBC0
|
||||
#define Color_Light_Yellow 0x8BE0
|
||||
#define Color_Brown 0xCC27
|
||||
#define Color_Light_Brown 0x6204
|
||||
#define Color_Black 0x0000
|
||||
#define Color_Grey 0x18E3
|
||||
#define Check_Color 0x4E5C // Check-box check color
|
||||
#define Confirm_Color 0x34B9
|
||||
#define Cancel_Color 0x3186
|
||||
|
||||
class CrealityDWINClass {
|
||||
public:
|
||||
static constexpr size_t eeprom_data_size = 48;
|
||||
static struct EEPROM_Settings { // use bit fields to save space, max 48 bytes
|
||||
bool time_format_textual : 1;
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||
uint8_t tilt_grid_size : 3;
|
||||
#endif
|
||||
uint16_t corner_pos : 10;
|
||||
uint8_t cursor_color : 4;
|
||||
uint8_t menu_split_line : 4;
|
||||
uint8_t menu_top_bg : 4;
|
||||
uint8_t menu_top_txt : 4;
|
||||
uint8_t highlight_box : 4;
|
||||
uint8_t progress_percent : 4;
|
||||
uint8_t progress_time : 4;
|
||||
uint8_t status_bar_text : 4;
|
||||
uint8_t status_area_text : 4;
|
||||
uint8_t coordinates_text : 4;
|
||||
uint8_t coordinates_split_line : 4;
|
||||
} eeprom_settings;
|
||||
|
||||
static constexpr const char * const color_names[11] = { "Default", "White", "Green", "Cyan", "Blue", "Magenta", "Red", "Orange", "Yellow", "Brown", "Black" };
|
||||
static constexpr const char * const preheat_modes[3] = { "Both", "Hotend", "Bed" };
|
||||
|
||||
static void Clear_Screen(uint8_t e=3);
|
||||
static void Draw_Float(float value, uint8_t row, bool selected=false, uint8_t minunit=10);
|
||||
static void Draw_Option(uint8_t value, const char * const * options, uint8_t row, bool selected=false, bool color=false);
|
||||
static uint16_t GetColor(uint8_t color, uint16_t original, bool light=false);
|
||||
static void Draw_Checkbox(uint8_t row, bool value);
|
||||
static void Draw_Title(const char * title);
|
||||
static void Draw_Menu_Item(uint8_t row, uint8_t icon=0, const char * const label1=nullptr, const char * const label2=nullptr, bool more=false, bool centered=false);
|
||||
static void Draw_Menu(uint8_t menu, uint8_t select=0, uint8_t scroll=0);
|
||||
static void Redraw_Menu(bool lastprocess=true, bool lastselection=false, bool lastmenu=false);
|
||||
static void Redraw_Screen();
|
||||
|
||||
static void Main_Menu_Icons();
|
||||
static void Draw_Main_Menu(uint8_t select=0);
|
||||
static void Print_Screen_Icons();
|
||||
static void Draw_Print_Screen();
|
||||
static void Draw_Print_Filename(const bool reset=false);
|
||||
static void Draw_Print_ProgressBar();
|
||||
#if ENABLED(USE_M73_REMAINING_TIME)
|
||||
static void Draw_Print_ProgressRemain();
|
||||
#endif
|
||||
static void Draw_Print_ProgressElapsed();
|
||||
static void Draw_Print_confirm();
|
||||
static void Draw_SD_Item(uint8_t item, uint8_t row);
|
||||
static void Draw_SD_List(bool removed=false);
|
||||
static void Draw_Status_Area(bool icons=false);
|
||||
static void Draw_Popup(PGM_P const line1, PGM_P const line2, PGM_P const line3, uint8_t mode, uint8_t icon=0);
|
||||
static void Popup_Select();
|
||||
static void Update_Status_Bar(bool refresh=false);
|
||||
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||
static void Draw_Bed_Mesh(int16_t selected = -1, uint8_t gridline_width = 1, uint16_t padding_x = 8, uint16_t padding_y_top = 40 + 53 - 7);
|
||||
static void Set_Mesh_Viewer_Status();
|
||||
#endif
|
||||
|
||||
static const char * Get_Menu_Title(uint8_t menu);
|
||||
static uint8_t Get_Menu_Size(uint8_t menu);
|
||||
static void Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw=true);
|
||||
|
||||
static void Popup_Handler(PopupID popupid, bool option = false);
|
||||
static void Confirm_Handler(PopupID popupid);
|
||||
|
||||
static void Main_Menu_Control();
|
||||
static void Menu_Control();
|
||||
static void Value_Control();
|
||||
static void Option_Control();
|
||||
static void File_Control();
|
||||
static void Print_Screen_Control();
|
||||
static void Popup_Control();
|
||||
static void Confirm_Control();
|
||||
|
||||
static void Setup_Value(float value, float min, float max, float unit, uint8_t type);
|
||||
static void Modify_Value(float &value, float min, float max, float unit, void (*f)()=nullptr);
|
||||
static void Modify_Value(uint8_t &value, float min, float max, float unit, void (*f)()=nullptr);
|
||||
static void Modify_Value(uint16_t &value, float min, float max, float unit, void (*f)()=nullptr);
|
||||
static void Modify_Value(int16_t &value, float min, float max, float unit, void (*f)()=nullptr);
|
||||
static void Modify_Value(uint32_t &value, float min, float max, float unit, void (*f)()=nullptr);
|
||||
static void Modify_Value(int8_t &value, float min, float max, float unit, void (*f)()=nullptr);
|
||||
static void Modify_Option(uint8_t value, const char * const * options, uint8_t max);
|
||||
|
||||
static void Update_Status(const char * const text);
|
||||
static void Start_Print(bool sd);
|
||||
static void Stop_Print();
|
||||
static void Update();
|
||||
static void State_Update();
|
||||
static void Screen_Update();
|
||||
static void AudioFeedback(const bool success=true);
|
||||
static void Save_Settings(char *buff);
|
||||
static void Load_Settings(const char *buff);
|
||||
static void Reset_Settings();
|
||||
};
|
||||
|
||||
extern CrealityDWINClass CrealityDWIN;
|
||||
64
Marlin/src/lcd/e3v2/jyersui/dwin_lcd.cpp
Normal file
64
Marlin/src/lcd/e3v2/jyersui/dwin_lcd.cpp
Normal file
@@ -0,0 +1,64 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/********************************************************************************
|
||||
* @file lcd/e3v2/jyersui/dwin_lcd.cpp
|
||||
* @brief DWIN screen control functions
|
||||
********************************************************************************/
|
||||
|
||||
#include "../../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if ENABLED(DWIN_CREALITY_LCD_JYERSUI)
|
||||
|
||||
#include "dwin_lcd.h"
|
||||
|
||||
/*-------------------------------------- System variable function --------------------------------------*/
|
||||
|
||||
void DWIN_Startup() {}
|
||||
|
||||
/*---------------------------------------- Drawing functions ----------------------------------------*/
|
||||
|
||||
// Draw the degree (°) symbol
|
||||
// Color: color
|
||||
// x/y: Upper-left coordinate of the first pixel
|
||||
void DWIN_Draw_DegreeSymbol(uint16_t Color, uint16_t x, uint16_t y) {
|
||||
DWIN_Draw_Point(Color, 1, 1, x + 1, y);
|
||||
DWIN_Draw_Point(Color, 1, 1, x + 2, y);
|
||||
DWIN_Draw_Point(Color, 1, 1, x, y + 1);
|
||||
DWIN_Draw_Point(Color, 1, 1, x + 3, y + 1);
|
||||
DWIN_Draw_Point(Color, 1, 1, x, y + 2);
|
||||
DWIN_Draw_Point(Color, 1, 1, x + 3, y + 2);
|
||||
DWIN_Draw_Point(Color, 1, 1, x + 1, y + 3);
|
||||
DWIN_Draw_Point(Color, 1, 1, x + 2, y + 3);
|
||||
}
|
||||
|
||||
/*---------------------------------------- Picture related functions ----------------------------------------*/
|
||||
|
||||
// Draw an Icon
|
||||
// libID: Icon library ID
|
||||
// picID: Icon ID
|
||||
// x/y: Upper-left point
|
||||
void DWIN_ICON_Show(uint8_t libID, uint8_t picID, uint16_t x, uint16_t y) {
|
||||
DWIN_ICON_Show(true, false, false, libID, picID, x, y);
|
||||
}
|
||||
|
||||
#endif // DWIN_CREALITY_LCD_JYERSUI
|
||||
34
Marlin/src/lcd/e3v2/jyersui/dwin_lcd.h
Normal file
34
Marlin/src/lcd/e3v2/jyersui/dwin_lcd.h
Normal file
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/********************************************************************************
|
||||
* @file lcd/e3v2/jyersui/dwin_lcd.h
|
||||
* @brief DWIN screen control functions
|
||||
********************************************************************************/
|
||||
|
||||
#include "../common/dwin_api.h"
|
||||
|
||||
// Draw the degree (°) symbol
|
||||
// Color: color
|
||||
// x/y: Upper-left coordinate of the first pixel
|
||||
void DWIN_Draw_DegreeSymbol(uint16_t Color, uint16_t x, uint16_t y);
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user