summaryrefslogtreecommitdiff
path: root/src/displayapp
diff options
context:
space:
mode:
authorJF <jf@codingfield.com>2021-01-04 18:56:56 (GMT)
committerGitea <gitea@fake.local>2021-01-04 18:56:56 (GMT)
commit1d940af924bac5728a4d494f780e298e5b67b707 (patch)
tree24540888f3d038ca3c88a0789b63faa8ac07d631 /src/displayapp
parent04abc91f157f5925ffa404728291a69893acf8cf (diff)
parent50ae0ae5e073ac48652e6c26549f9b19655e8da3 (diff)
Merge branch 'develop' of JF/PineTime into master
Diffstat (limited to 'src/displayapp')
-rw-r--r--src/displayapp/Apps.h4
-rw-r--r--src/displayapp/DisplayApp.cpp34
-rw-r--r--src/displayapp/DisplayApp.h36
-rw-r--r--src/displayapp/LittleVgl.cpp21
-rw-r--r--src/displayapp/LittleVgl.h11
-rw-r--r--src/displayapp/fonts/Readme.md5
-rw-r--r--src/displayapp/fonts/jetbrains_mono_bold_20.c846
-rw-r--r--src/displayapp/screens/ApplicationList.cpp14
-rw-r--r--src/displayapp/screens/ApplicationList.h7
-rw-r--r--src/displayapp/screens/BatteryIcon.cpp1
-rw-r--r--src/displayapp/screens/BatteryIcon.h2
-rw-r--r--src/displayapp/screens/Brightness.cpp2
-rw-r--r--src/displayapp/screens/Brightness.h5
-rw-r--r--src/displayapp/screens/Clock.cpp15
-rw-r--r--src/displayapp/screens/Clock.h20
-rw-r--r--src/displayapp/screens/DropDownDemo.cpp4
-rw-r--r--src/displayapp/screens/DropDownDemo.h6
-rw-r--r--src/displayapp/screens/FirmwareUpdate.cpp3
-rw-r--r--src/displayapp/screens/FirmwareUpdate.h11
-rw-r--r--src/displayapp/screens/FirmwareValidation.cpp8
-rw-r--r--src/displayapp/screens/FirmwareValidation.h5
-rw-r--r--src/displayapp/screens/Gauge.cpp1
-rw-r--r--src/displayapp/screens/Gauge.h4
-rw-r--r--src/displayapp/screens/InfiniPaint.cpp3
-rw-r--r--src/displayapp/screens/InfiniPaint.h23
-rw-r--r--src/displayapp/screens/Label.cpp1
-rw-r--r--src/displayapp/screens/Label.h1
-rw-r--r--src/displayapp/screens/Meter.cpp2
-rw-r--r--src/displayapp/screens/Meter.h6
-rw-r--r--src/displayapp/screens/Modal.cpp2
-rw-r--r--src/displayapp/screens/Modal.h7
-rw-r--r--src/displayapp/screens/Music.cpp8
-rw-r--r--src/displayapp/screens/Music.h20
-rw-r--r--src/displayapp/screens/Notifications.cpp4
-rw-r--r--src/displayapp/screens/Notifications.h9
-rw-r--r--src/displayapp/screens/Paddle.cpp190
-rw-r--r--src/displayapp/screens/Paddle.h52
-rw-r--r--src/displayapp/screens/ScreenList.h6
-rw-r--r--src/displayapp/screens/Symbols.h4
-rw-r--r--src/displayapp/screens/SystemInfo.cpp30
-rw-r--r--src/displayapp/screens/SystemInfo.h23
-rw-r--r--src/displayapp/screens/Tab.cpp67
-rw-r--r--src/displayapp/screens/Tab.h23
-rw-r--r--src/displayapp/screens/Tile.cpp8
-rw-r--r--src/displayapp/screens/Tile.h8
-rw-r--r--src/displayapp/screens/Twos.cpp271
-rw-r--r--src/displayapp/screens/Twos.h34
47 files changed, 1339 insertions, 528 deletions
diff --git a/src/displayapp/Apps.h b/src/displayapp/Apps.h
index bfa799b..f5fb24d 100644
--- a/src/displayapp/Apps.h
+++ b/src/displayapp/Apps.h
@@ -2,6 +2,6 @@
namespace Pinetime {
namespace Applications {
- enum class Apps {None, Launcher, Clock, SysInfo, Meter, Gauge, Brightness, Music, FirmwareValidation, Paint, Notifications};
+ enum class Apps {None, Launcher, Clock, SysInfo, Meter, Gauge, Brightness, Music, FirmwareValidation, Paint, Paddle, Notifications, Twos};
}
-} \ No newline at end of file
+}
diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp
index d4d4133..162d022 100644
--- a/src/displayapp/DisplayApp.cpp
+++ b/src/displayapp/DisplayApp.cpp
@@ -1,25 +1,26 @@
-#include <string>
-
#include "DisplayApp.h"
-#include <FreeRTOS.h>
-#include <task.h>
#include <libraries/log/nrf_log.h>
-#include <nrf_font.h>
-#include <queue.h>
+#include "components/battery/BatteryController.h"
+#include "components/ble/BleController.h"
#include "components/datetime/DateTimeController.h"
-#include <drivers/Cst816s.h>
-#include "displayapp/screens/Notifications.h"
-#include "displayapp/screens/Tile.h"
-#include "displayapp/screens/Meter.h"
-#include "displayapp/screens/Gauge.h"
-#include "displayapp/screens/Brightness.h"
-#include "displayapp/screens/SystemInfo.h"
-#include "displayapp/screens/Music.h"
#include "components/ble/NotificationManager.h"
-#include "displayapp/screens/FirmwareUpdate.h"
#include "displayapp/screens/ApplicationList.h"
+#include "displayapp/screens/Brightness.h"
+#include "displayapp/screens/Clock.h"
+#include "displayapp/screens/FirmwareUpdate.h"
#include "displayapp/screens/FirmwareValidation.h"
+#include "displayapp/screens/Gauge.h"
#include "displayapp/screens/InfiniPaint.h"
+#include "displayapp/screens/Paddle.h"
+#include "displayapp/screens/Meter.h"
+#include "displayapp/screens/Music.h"
+#include "displayapp/screens/Notifications.h"
+#include "displayapp/screens/SystemInfo.h"
+#include "displayapp/screens/Tile.h"
+#include "displayapp/screens/Twos.h"
+#include "drivers/Cst816s.h"
+#include "drivers/St7789.h"
+#include "drivers/Watchdog.h"
#include "systemtask/SystemTask.h"
using namespace Pinetime::Applications;
@@ -202,8 +203,10 @@ void DisplayApp::RunningState() {
// case Apps::Test: currentScreen.reset(new Screens::Message(this)); break;
case Apps::SysInfo: currentScreen.reset(new Screens::SystemInfo(this, dateTimeController, batteryController, brightnessController, bleController, watchdog)); break;
case Apps::Meter: currentScreen.reset(new Screens::Meter(this)); break;
+ case Apps::Twos: currentScreen.reset(new Screens::Twos(this)); break;
case Apps::Gauge: currentScreen.reset(new Screens::Gauge(this)); break;
case Apps::Paint: currentScreen.reset(new Screens::InfiniPaint(this, lvgl)); break;
+ case Apps::Paddle: currentScreen.reset(new Screens::Paddle(this, lvgl)); break;
case Apps::Brightness : currentScreen.reset(new Screens::Brightness(this, brightnessController)); break;
case Apps::Music : currentScreen.reset(new Screens::Music(this, systemTask.nimble().music())); break;
case Apps::FirmwareValidation: currentScreen.reset(new Screens::FirmwareValidation(this, validator)); break;
@@ -276,3 +279,4 @@ void DisplayApp::SetFullRefresh(DisplayApp::FullRefreshDirections direction) {
void DisplayApp::SetTouchMode(DisplayApp::TouchModes mode) {
touchMode = mode;
}
+
diff --git a/src/displayapp/DisplayApp.h b/src/displayapp/DisplayApp.h
index 2a0efde..25cd281 100644
--- a/src/displayapp/DisplayApp.h
+++ b/src/displayapp/DisplayApp.h
@@ -1,28 +1,30 @@
#pragma once
#include <FreeRTOS.h>
-#include <task.h>
-#include <drivers/St7789.h>
-#include <drivers/SpiMaster.h>
-#include <bits/unique_ptr.h>
+#include <date/date.h>
#include <queue.h>
-#include "components/gfx/Gfx.h"
-#include "components/battery/BatteryController.h"
+#include <task.h>
+#include <memory>
+#include "Apps.h"
+#include "LittleVgl.h"
+#include "TouchEvents.h"
#include "components/brightness/BrightnessController.h"
-#include "components/ble/BleController.h"
-#include "components/datetime/DateTimeController.h"
-#include "components/ble/NotificationManager.h"
#include "components/firmwarevalidator/FirmwareValidator.h"
-#include "drivers/Cst816s.h"
-#include "LittleVgl.h"
-#include <date/date.h>
-#include "displayapp/screens/Clock.h"
#include "displayapp/screens/Modal.h"
-#include <drivers/Watchdog.h>
-#include "TouchEvents.h"
-#include "Apps.h"
-
namespace Pinetime {
+
+ namespace Drivers {
+ class St7789;
+ class Cst816S;
+ class WatchdogView;
+ }
+ namespace Controllers {
+ class Battery;
+ class Ble;
+ class DateTime;
+ class NotificationManager;
+ }
+
namespace System {
class SystemTask;
};
diff --git a/src/displayapp/LittleVgl.cpp b/src/displayapp/LittleVgl.cpp
index 3483f8e..b4e5cac 100644
--- a/src/displayapp/LittleVgl.cpp
+++ b/src/displayapp/LittleVgl.cpp
@@ -1,14 +1,10 @@
+#include "LittleVgl.h"
+
#include <FreeRTOS.h>
-#include <projdefs.h>
#include <task.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include <hal/nrf_rtc.h>
-#include <libraries/log/nrf_log.h>
-
-#include <libs/lvgl/src/lv_themes/lv_theme.h>
-#include <libs/lvgl/src/lv_themes/lv_theme_night.h>
-
-#include "LittleVgl.h"
+//#include <projdefs.h>
+#include "drivers/Cst816s.h"
+#include "drivers/St7789.h"
using namespace Pinetime::Components;
@@ -76,8 +72,8 @@ void LittleVgl::SetFullRefresh(FullRefreshDirections direction) {
void LittleVgl::FlushDisplay(const lv_area_t *area, lv_color_t *color_p) {
ulTaskNotifyTake(pdTRUE, 500);
- // NOtification is still needed (even if there is a mutex on SPI) because of the DataCommand pin
- // which cannot be set/clear during a transfert.
+ // Notification is still needed (even if there is a mutex on SPI) because of the DataCommand pin
+ // which cannot be set/clear during a transfer.
// TODO refactore and remove duplicated code
@@ -831,6 +827,3 @@ void LittleVgl::InitThemeWindow() {
// theme.style.win.btn.rel = &lv_style_transp;
// theme.style.win.btn.pr = &win_btn_pr;
}
-
-
-
diff --git a/src/displayapp/LittleVgl.h b/src/displayapp/LittleVgl.h
index 5c1c443..ea50985 100644
--- a/src/displayapp/LittleVgl.h
+++ b/src/displayapp/LittleVgl.h
@@ -1,12 +1,13 @@
#pragma once
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_themes/lv_theme.h>
-#include <libs/lvgl/src/lv_hal/lv_hal.h>
-#include <drivers/St7789.h>
-#include <drivers/Cst816s.h>
+#include <lvgl/lvgl.h>
namespace Pinetime {
+ namespace Drivers {
+ class Cst816S;
+ class St7789;
+ }
+
namespace Components {
class LittleVgl {
public:
diff --git a/src/displayapp/fonts/Readme.md b/src/displayapp/fonts/Readme.md
index 7ebf2e2..314cb19 100644
--- a/src/displayapp/fonts/Readme.md
+++ b/src/displayapp/fonts/Readme.md
@@ -9,8 +9,8 @@
* Size : 20
* Bpp : 1 bit-per-pixel
* Do not enable font compression and horizontal subpixel hinting
- * Load the file `JetBrainsMono-Bold.woff` and specify the following range : `0x20-0x7f`
- * Add a 2nd font, load the file `FontAwesome5-Solid+Brands+Regular.woff` and specify the following range : `0xf293, 0xf294, 0xf244, 0xf240, 0xf242, 0xf243, 0xf241, 0xf54b, 0xf21e, 0xf1e6, 0xf54b, 0xf017, 0xf129, 0xf03a, 0xf185, 0xf560, 0xf001, 0xf3fd, 0xf069, 0xf1fc`
+ * Load the file `JetBrainsMono-Bold.woff` and specify the following range : `0x20-0x7f, 0x410-0x44f`
+ * Add a 2nd font, load the file `FontAwesome5-Solid+Brands+Regular.woff` and specify the following range : `0xf293, 0xf294, 0xf244, 0xf240, 0xf242, 0xf243, 0xf241, 0xf54b, 0xf21e, 0xf1e6, 0xf54b, 0xf017, 0xf129, 0xf03a, 0xf185, 0xf560, 0xf001, 0xf3fd, 0xf069, 0xf1fc, 0xf45d`
* Click on Convert, and download the file `jetbrains_mono_bold_20.c` and copy it in `src/DisplayApp/Fonts`
Add new symbols:
@@ -21,3 +21,4 @@ Add new symbols:
```
static constex char* newSymbol = "\xEF\x86\x85";
```
+
diff --git a/src/displayapp/fonts/jetbrains_mono_bold_20.c b/src/displayapp/fonts/jetbrains_mono_bold_20.c
index 27ad005..620df7c 100644
--- a/src/displayapp/fonts/jetbrains_mono_bold_20.c
+++ b/src/displayapp/fonts/jetbrains_mono_bold_20.c
@@ -22,36 +22,36 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = {
0x0,
/* U+21 "!" */
- 0xff, 0xff, 0xff, 0xe0, 0xf, 0xc0,
+ 0xff, 0xff, 0xff, 0xfc, 0xf, 0xc0,
/* U+22 "\"" */
0xef, 0xdf, 0xbf, 0x7e, 0xfd, 0xc0,
/* U+23 "#" */
- 0x8, 0xc3, 0x10, 0x62, 0x3f, 0xf7, 0xfe, 0x23,
+ 0x8, 0xc3, 0x10, 0x66, 0x3f, 0xf7, 0xfe, 0x23,
0x4, 0x61, 0x88, 0x31, 0x1f, 0xfb, 0xff, 0x19,
0x82, 0x30, 0xc4, 0x0,
/* U+24 "$" */
- 0x8, 0x2, 0x1, 0xc1, 0xfe, 0xeb, 0xf2, 0x7c,
- 0x83, 0xa0, 0x7c, 0xf, 0xc0, 0xf8, 0x27, 0x9,
- 0xf2, 0x7f, 0xf9, 0xfc, 0x8, 0x2, 0x0, 0x80,
+ 0x8, 0x2, 0x1, 0xe1, 0xfe, 0xfb, 0xfa, 0x7e,
+ 0x83, 0xe0, 0x7e, 0xf, 0xe0, 0xf8, 0x27, 0x9,
+ 0xfa, 0x7f, 0xf9, 0xfc, 0x8, 0x2, 0x0, 0x80,
/* U+25 "%" */
- 0x78, 0x1f, 0x83, 0x30, 0x66, 0x1f, 0xcc, 0xf2,
- 0x1, 0x80, 0xde, 0x67, 0xf8, 0xcc, 0x19, 0x83,
- 0x30, 0x7e, 0x7, 0x80,
+ 0x78, 0x3f, 0xc6, 0xcc, 0xcc, 0xcc, 0xfd, 0x87,
+ 0xb0, 0x6, 0x0, 0x7e, 0xf, 0xf1, 0xb3, 0x33,
+ 0x33, 0x33, 0x63, 0xfc, 0x1e,
/* U+26 "&" */
- 0x1e, 0x7, 0xe1, 0xce, 0x38, 0x7, 0x0, 0x70,
- 0x1e, 0x7, 0x66, 0xed, 0xdc, 0xf3, 0x9c, 0x73,
+ 0x1e, 0xf, 0xe1, 0x8e, 0x30, 0x6, 0x0, 0x60,
+ 0x1e, 0x7, 0xe6, 0xed, 0xdc, 0xf3, 0x9e, 0x73,
0xcf, 0xfc, 0xf9, 0x80,
/* U+27 "'" */
0xff, 0xff, 0xc0,
/* U+28 "(" */
- 0x2, 0x1c, 0xfb, 0xc7, 0x1e, 0x38, 0x70, 0xe1,
+ 0x2, 0x1c, 0xfb, 0xc7, 0x1c, 0x38, 0x70, 0xe1,
0xc3, 0x87, 0xe, 0x1c, 0x3c, 0x38, 0x38, 0x7c,
0x38,
@@ -62,7 +62,7 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = {
/* U+2A "*" */
0xc, 0x3, 0x8, 0xc7, 0xb7, 0x7f, 0x83, 0x1,
- 0xe0, 0xcc, 0x73, 0x80, 0x0,
+ 0xe0, 0xcc, 0x73, 0x88, 0x0,
/* U+2B "+" */
0x1c, 0x7, 0x1, 0xc3, 0xff, 0xff, 0xc7, 0x1,
@@ -72,10 +72,10 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = {
0x7b, 0x9c, 0xce, 0x60,
/* U+2D "-" */
- 0xff, 0xff,
+ 0xff, 0xff, 0xc0,
/* U+2E "." */
- 0x6f, 0xf6,
+ 0xff, 0xf0,
/* U+2F "/" */
0x1, 0xc0, 0x60, 0x38, 0xe, 0x3, 0x1, 0xc0,
@@ -83,58 +83,58 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = {
0xe, 0x3, 0x80, 0xc0, 0x70, 0x18, 0xe, 0x0,
/* U+30 "0" */
- 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xed, 0xfb, 0x7e,
- 0xdf, 0xb7, 0xed, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f,
- 0x8f, 0x80,
+ 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e,
+ 0xdf, 0xb7, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f,
+ 0x8f, 0xc0,
/* U+31 "1" */
- 0x3c, 0x3e, 0x3f, 0x13, 0x81, 0xc0, 0xe0, 0x70,
- 0x38, 0x1c, 0xe, 0x7, 0x3, 0x8f, 0xff, 0xfc,
+ 0x1e, 0x3f, 0x3b, 0x99, 0xc8, 0xe0, 0x70, 0x38,
+ 0x1c, 0xe, 0x7, 0x3, 0x81, 0xcf, 0xff, 0xfc,
/* U+32 "2" */
- 0x1f, 0x1f, 0xef, 0x3f, 0x87, 0x1, 0xc0, 0x70,
- 0x38, 0x1e, 0xf, 0x7, 0x87, 0x83, 0xc0, 0xff,
- 0xff, 0xf0,
+ 0x3e, 0x3f, 0xbc, 0xfc, 0x70, 0x38, 0x1c, 0x1c,
+ 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0xf, 0xff, 0xfc,
/* U+33 "3" */
- 0x7f, 0xdf, 0xf0, 0x3c, 0x1c, 0x1c, 0x7, 0xc1,
- 0xf8, 0xf, 0x1, 0xc0, 0x7e, 0x1d, 0x8f, 0x7f,
- 0x87, 0xc0,
+ 0x7f, 0x9f, 0xe0, 0x38, 0x18, 0xc, 0x7, 0xc1,
+ 0xf8, 0xf, 0x1, 0xc0, 0x7e, 0x1f, 0xcf, 0x7f,
+ 0x8f, 0xc0,
/* U+34 "4" */
0x7, 0x7, 0x3, 0x83, 0x83, 0x81, 0xc1, 0xcf,
0xe7, 0xe3, 0xff, 0xff, 0xe0, 0x70, 0x38, 0x1c,
/* U+35 "5" */
- 0xff, 0x7f, 0xb8, 0x1c, 0xe, 0x7, 0x73, 0xfd,
- 0xcf, 0x3, 0x81, 0xc0, 0xfc, 0xff, 0xf1, 0xf0,
+ 0x7f, 0x9f, 0xe7, 0x1, 0xc0, 0x77, 0x1f, 0xe7,
+ 0x3c, 0x7, 0x1, 0xc0, 0x77, 0x1d, 0xcf, 0x7f,
+ 0x87, 0xc0,
/* U+36 "6" */
- 0x6, 0x3, 0x1, 0xc0, 0x60, 0x30, 0x1b, 0xc7,
+ 0x6, 0x3, 0x1, 0xc0, 0x60, 0x38, 0x1d, 0xc7,
0xfb, 0xcf, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f,
0x87, 0x80,
/* U+37 "7" */
- 0xff, 0xff, 0xfe, 0xb, 0x86, 0x1, 0x80, 0xc0,
- 0x30, 0x18, 0x6, 0x3, 0x80, 0xc0, 0x70, 0x18,
+ 0xff, 0xff, 0xfe, 0x1b, 0x86, 0x3, 0x80, 0xc0,
+ 0x70, 0x18, 0x6, 0x3, 0x80, 0xc0, 0x70, 0x18,
0xe, 0x0,
/* U+38 "8" */
- 0x3e, 0x1f, 0xce, 0x3b, 0x6, 0xe3, 0x9f, 0xc7,
- 0xf1, 0x8e, 0xc1, 0xf0, 0x7c, 0x1f, 0x8f, 0x7f,
- 0x8f, 0x80,
+ 0x3f, 0x1f, 0xee, 0x1f, 0x87, 0xe1, 0xcf, 0xc3,
+ 0xf1, 0xce, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f,
+ 0x8f, 0xc0,
/* U+39 "9" */
0x1e, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7f,
- 0x3d, 0xfe, 0x3d, 0x80, 0xc0, 0x60, 0x38, 0xc,
+ 0x3d, 0xfe, 0x3b, 0x81, 0xc0, 0x60, 0x38, 0xc,
0x6, 0x0,
/* U+3A ":" */
- 0xff, 0x80, 0x0, 0xff, 0x80,
+ 0xff, 0xf0, 0x0, 0x0, 0xff, 0xf0,
/* U+3B ";" */
- 0x7b, 0xde, 0x0, 0x0, 0x0, 0x7b, 0x9c, 0xce,
- 0x60,
+ 0x7b, 0xde, 0x0, 0x0, 0x0, 0x3, 0xdc, 0xe6,
+ 0x73, 0x0,
/* U+3C "<" */
0x0, 0x81, 0xc3, 0xe7, 0xcf, 0x6, 0x3, 0xc0,
@@ -144,22 +144,23 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = {
0xff, 0xff, 0xc0, 0x0, 0x0, 0x7, 0xff, 0xfe,
/* U+3E ">" */
- 0x0, 0x70, 0x3e, 0x7, 0xc0, 0xf8, 0xc, 0x1e,
- 0x7c, 0xf8, 0x70, 0x20, 0x0,
+ 0x80, 0x70, 0x3e, 0x7, 0xc0, 0xf8, 0xc, 0x1e,
+ 0x3c, 0xf8, 0x70, 0x20, 0x0,
/* U+3F "?" */
0xfc, 0xfe, 0xf, 0x7, 0x7, 0xf, 0x3e, 0x3c,
0x30, 0x30, 0x0, 0x0, 0x70, 0x70,
/* U+40 "@" */
- 0x1f, 0x87, 0xf9, 0xc3, 0xf0, 0x3c, 0x77, 0x9f,
- 0xf3, 0x1e, 0x63, 0xcc, 0x79, 0x8f, 0x31, 0xe7,
- 0xfc, 0x77, 0xc0, 0x1c, 0x1, 0xf0, 0x1e, 0x0,
+ 0x1f, 0x7, 0xf9, 0xc3, 0x70, 0x3c, 0x7, 0x8f,
+ 0xf3, 0xfe, 0x63, 0xcc, 0x79, 0x8f, 0x31, 0xe6,
+ 0x3c, 0xff, 0x8e, 0xf8, 0x3, 0x80, 0x3e, 0x3,
+ 0xc0,
/* U+41 "A" */
- 0xf, 0x0, 0xf0, 0xf, 0x1, 0xf8, 0x19, 0x81,
- 0x98, 0x19, 0x83, 0x9c, 0x3f, 0xc3, 0xfc, 0x70,
- 0xe7, 0xe, 0x60, 0x66, 0x6,
+ 0x1e, 0x7, 0x81, 0xe0, 0xfc, 0x3f, 0xc, 0xc3,
+ 0x31, 0xce, 0x73, 0x9f, 0xe7, 0xfb, 0x87, 0xe1,
+ 0xf0, 0x30,
/* U+42 "B" */
0xfe, 0x3f, 0xce, 0x3b, 0x8e, 0xe3, 0xb8, 0xcf,
@@ -172,9 +173,8 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = {
0x8f, 0xc0,
/* U+44 "D" */
- 0xfe, 0x3f, 0xee, 0x3f, 0x87, 0xe1, 0xf8, 0x7e,
- 0x1f, 0x87, 0xe1, 0xf8, 0x7e, 0x1f, 0x8f, 0xff,
- 0xbf, 0x80,
+ 0xfe, 0x7f, 0xb9, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
+ 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0xff, 0xf7, 0xf0,
/* U+45 "E" */
0xff, 0xff, 0xf8, 0x1c, 0xe, 0x7, 0x3, 0xfd,
@@ -187,43 +187,42 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = {
/* U+47 "G" */
0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe0, 0x38, 0xe,
0x7f, 0x9f, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f,
- 0x87, 0x80,
+ 0x8f, 0xc0,
/* U+48 "H" */
0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0xff,
0xff, 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1c,
/* U+49 "I" */
- 0xff, 0xff, 0xc7, 0x3, 0x81, 0xc0, 0xe0, 0x70,
- 0x38, 0x1c, 0xe, 0x7, 0x3, 0x8f, 0xff, 0xfc,
+ 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
+ 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff,
/* U+4A "J" */
- 0x3f, 0xcf, 0xf0, 0x1c, 0x7, 0x1, 0xc0, 0x70,
- 0x1c, 0x7, 0x1, 0xc0, 0x7e, 0x1f, 0x8f, 0x7f,
+ 0xf, 0xc3, 0xf0, 0x1c, 0x7, 0x1, 0xc0, 0x70,
+ 0x1c, 0x7, 0x1, 0xc0, 0x7e, 0x1f, 0xcf, 0x7f,
0x8f, 0xc0,
/* U+4B "K" */
- 0xe1, 0xdc, 0x3b, 0x8e, 0x71, 0xce, 0x31, 0xce,
- 0x3f, 0x87, 0xf0, 0xe7, 0x1c, 0x63, 0x8e, 0x70,
- 0xce, 0x1d, 0xc3, 0x80,
+ 0xe1, 0xf8, 0x7e, 0x3b, 0x8e, 0xe7, 0x39, 0xcf,
+ 0xe3, 0xf8, 0xe7, 0x39, 0xce, 0x3b, 0x8e, 0xe1,
+ 0xf8, 0x70,
/* U+4C "L" */
0xe0, 0x70, 0x38, 0x1c, 0xe, 0x7, 0x3, 0x81,
0xc0, 0xe0, 0x70, 0x38, 0x1c, 0xf, 0xff, 0xfc,
/* U+4D "M" */
- 0xe1, 0xf8, 0x7f, 0x3f, 0xcf, 0xda, 0xf7, 0xbd,
- 0xef, 0x33, 0xc0, 0xf0, 0x3c, 0xf, 0x3, 0xc0,
- 0xf0, 0x30,
+ 0xf3, 0xfc, 0xfd, 0x2f, 0xcf, 0xff, 0xff, 0xfe,
+ 0xdf, 0xb7, 0xe1, 0xf8, 0x7e, 0x1f, 0x87, 0xe1,
+ 0xf8, 0x70,
/* U+4E "N" */
- 0xe1, 0xf0, 0xfc, 0x7e, 0x3d, 0x9e, 0xcf, 0x67,
- 0x9b, 0xcd, 0xe6, 0xf1, 0xf8, 0xfc, 0x3e, 0x1c,
+ 0xf3, 0xf9, 0xfc, 0xfe, 0x7f, 0xbf, 0xdf, 0xaf,
+ 0xd7, 0xef, 0xf7, 0xf9, 0xfc, 0xfe, 0x7f, 0x3c,
/* U+4F "O" */
- 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e,
- 0x1f, 0x87, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f,
- 0x8f, 0x80,
+ 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
+ 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf1, 0xf0,
/* U+50 "P" */
0xff, 0x3f, 0xee, 0x3f, 0x87, 0xe1, 0xf8, 0xff,
@@ -233,7 +232,7 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = {
/* U+51 "Q" */
0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e,
0x1f, 0x87, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f,
- 0x8f, 0x80, 0x70, 0xe, 0x1, 0xc0,
+ 0x8f, 0x80, 0x70, 0xe, 0x3, 0x80, 0x70,
/* U+52 "R" */
0xff, 0x3f, 0xee, 0x3f, 0x87, 0xe1, 0xf8, 0xff,
@@ -241,7 +240,7 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = {
0xb8, 0x70,
/* U+53 "S" */
- 0x3f, 0x1f, 0xee, 0x1f, 0x87, 0xe0, 0x3e, 0x7,
+ 0x3f, 0x1f, 0xee, 0x3f, 0x87, 0xe0, 0x3c, 0x7,
0xf0, 0x7e, 0x3, 0xc0, 0x7e, 0x1f, 0xcf, 0x7f,
0x8f, 0xc0,
@@ -255,14 +254,14 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = {
0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf1, 0xf0,
/* U+56 "V" */
- 0x60, 0x66, 0x6, 0x70, 0xe7, 0xe, 0x30, 0xc3,
- 0xc, 0x39, 0xc1, 0x98, 0x19, 0x81, 0x98, 0x1f,
- 0x80, 0xf0, 0xf, 0x0, 0xf0,
+ 0xc0, 0xf8, 0x7e, 0x1d, 0x86, 0x61, 0x9c, 0xe7,
+ 0x38, 0xcc, 0x33, 0xf, 0xc3, 0xf0, 0x78, 0x1e,
+ 0x7, 0x80,
/* U+57 "W" */
- 0xc6, 0x78, 0xcf, 0x39, 0xe7, 0x3e, 0xa6, 0xd6,
- 0xda, 0xdb, 0x5b, 0x6b, 0x6d, 0x2d, 0xe7, 0x3c,
- 0xe7, 0x9c, 0xe3, 0x80,
+ 0xce, 0x79, 0xcf, 0x29, 0xe5, 0x3c, 0xa7, 0xd5,
+ 0xda, 0xb3, 0x56, 0x7b, 0xcf, 0x79, 0xef, 0x38,
+ 0xe7, 0x1c, 0xe3, 0x80,
/* U+58 "X" */
0xe1, 0xd8, 0x67, 0x38, 0xcc, 0x3f, 0x7, 0x81,
@@ -270,12 +269,12 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = {
0xf8, 0x70,
/* U+59 "Y" */
- 0xe0, 0xfc, 0x1d, 0xc7, 0x38, 0xe3, 0x98, 0x77,
+ 0xe0, 0xfc, 0x1d, 0xc7, 0x38, 0xe3, 0xb8, 0x77,
0x6, 0xc0, 0xf8, 0xe, 0x1, 0xc0, 0x38, 0x7,
0x0, 0xe0, 0x1c, 0x0,
/* U+5A "Z" */
- 0xff, 0xff, 0xc0, 0xe0, 0xe0, 0x60, 0x70, 0x70,
+ 0xff, 0xff, 0xc0, 0xe0, 0xe0, 0x70, 0x70, 0x70,
0x38, 0x38, 0x38, 0x1c, 0x1c, 0xf, 0xff, 0xfc,
/* U+5B "[" */
@@ -302,136 +301,424 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = {
0x63, 0x8e,
/* U+61 "a" */
- 0x3f, 0x1f, 0xee, 0x1c, 0x7, 0x3f, 0xdf, 0xfe,
- 0x1f, 0x87, 0xe3, 0xff, 0xf7, 0xdc,
+ 0x1f, 0x1f, 0xe7, 0x1c, 0x7, 0x3f, 0xdf, 0xfe,
+ 0x1f, 0x87, 0xe3, 0xff, 0xf3, 0xdc,
/* U+62 "b" */
- 0xe0, 0x38, 0xe, 0x3, 0xbc, 0xff, 0xbc, 0xfe,
- 0x1f, 0x87, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0xff,
- 0xbb, 0xc0,
+ 0xe0, 0x70, 0x38, 0x1d, 0xcf, 0xf7, 0x1f, 0x8f,
+ 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x7f, 0xf7, 0x70,
/* U+63 "c" */
- 0x3f, 0x1f, 0xef, 0x1f, 0x83, 0xe0, 0x38, 0xe,
- 0x3, 0x87, 0xf1, 0xdf, 0xe3, 0xe0,
+ 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x7, 0x3, 0x81,
+ 0xc7, 0xe3, 0xbf, 0x8f, 0x80,
/* U+64 "d" */
- 0x1, 0xc0, 0x70, 0x1c, 0xf7, 0x7f, 0xfc, 0xfe,
- 0x1f, 0x87, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f,
- 0xcf, 0x70,
+ 0x3, 0x81, 0xc0, 0xe7, 0x77, 0xff, 0x1f, 0x8f,
+ 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf9, 0xdc,
/* U+65 "e" */
- 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xff, 0xff, 0xfe,
- 0x3, 0x80, 0xf1, 0xdf, 0xe3, 0xf0,
+ 0x3e, 0x3f, 0xb8, 0xfc, 0x7f, 0xff, 0xff, 0x81,
+ 0xc0, 0xe3, 0xbf, 0x8f, 0x80,
/* U+66 "f" */
- 0xf, 0xc7, 0xf1, 0xc0, 0x70, 0xff, 0xff, 0xf1,
+ 0xf, 0xc7, 0xf1, 0xc3, 0xff, 0xff, 0xc7, 0x1,
0xc0, 0x70, 0x1c, 0x7, 0x1, 0xc0, 0x70, 0x1c,
0x7, 0x0,
/* U+67 "g" */
- 0x3d, 0xdf, 0xff, 0x3f, 0x87, 0xe1, 0xf8, 0x7e,
- 0x1f, 0xcf, 0x7f, 0xcf, 0x70, 0x1c, 0xf, 0x3f,
- 0x8f, 0xc0,
+ 0x3b, 0xbf, 0xfd, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
+ 0xc7, 0xf7, 0xbf, 0xce, 0xe0, 0x70, 0x39, 0xf8,
+ 0xf8,
/* U+68 "h" */
- 0xe0, 0x70, 0x38, 0x1d, 0xcf, 0xf7, 0x9f, 0x8f,
+ 0xe0, 0x70, 0x38, 0x1d, 0xcf, 0xf7, 0x1f, 0x8f,
0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1c,
/* U+69 "i" */
- 0x1c, 0x7, 0x0, 0x0, 0x0, 0xfc, 0x3f, 0x1,
- 0xc0, 0x70, 0x1c, 0x7, 0x1, 0xc0, 0x70, 0x1c,
+ 0x8, 0x7, 0x0, 0x80, 0x0, 0xfe, 0x3f, 0x80,
+ 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, 0x38, 0xe,
0x3f, 0xff, 0xfc,
/* U+6A "j" */
- 0x7, 0x7, 0x0, 0x0, 0x7f, 0x7f, 0x7, 0x7,
- 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0xf,
- 0xfe, 0xfc,
+ 0x2, 0x7, 0x2, 0x0, 0x7f, 0x7f, 0x7, 0x7,
+ 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7,
+ 0xf, 0xfe, 0xfc,
/* U+6B "k" */
- 0xe0, 0x38, 0xe, 0x3, 0x87, 0xe1, 0xb8, 0xee,
- 0x33, 0x9c, 0xfe, 0x3f, 0x8e, 0x73, 0x8e, 0xe3,
+ 0xe0, 0x38, 0xe, 0x3, 0x87, 0xe3, 0xb8, 0xce,
+ 0x73, 0xf8, 0xfe, 0x39, 0xce, 0x73, 0x8e, 0xe1,
0xb8, 0x70,
/* U+6C "l" */
0xfe, 0x1f, 0xc0, 0x38, 0x7, 0x0, 0xe0, 0x1c,
0x3, 0x80, 0x70, 0xe, 0x1, 0xc0, 0x38, 0x7,
- 0x0, 0xfe, 0xf, 0xc0,
+ 0x0, 0x7e, 0x7, 0xc0,
/* U+6D "m" */
0xd9, 0xbf, 0xfc, 0xcf, 0x33, 0xcc, 0xf3, 0x3c,
0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcc,
/* U+6E "n" */
- 0xee, 0x7f, 0xbc, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
+ 0xee, 0x7f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
0xc7, 0xe3, 0xf1, 0xf8, 0xe0,
/* U+6F "o" */
- 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e,
- 0x1f, 0x87, 0xf3, 0xdf, 0xe3, 0xf0,
+ 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
+ 0xc7, 0xe3, 0xbf, 0x8f, 0x80,
/* U+70 "p" */
- 0xef, 0x3f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e,
- 0x1f, 0x87, 0xf3, 0xff, 0xee, 0xf3, 0x80, 0xe0,
- 0x38, 0x0,
+ 0xee, 0x7f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
+ 0xc7, 0xe3, 0xff, 0xbb, 0x9c, 0xe, 0x7, 0x3,
+ 0x80,
/* U+71 "q" */
- 0x3d, 0xdf, 0xff, 0x3f, 0x87, 0xe1, 0xf8, 0x7e,
- 0x1f, 0x87, 0xf3, 0xdf, 0xf3, 0xdc, 0x7, 0x1,
- 0xc0, 0x70,
+ 0x3b, 0xbf, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
+ 0xc7, 0xe3, 0xbf, 0xce, 0xe0, 0x70, 0x38, 0x1c,
+ 0xe,
/* U+72 "r" */
- 0xef, 0x3f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0xe,
- 0x3, 0x80, 0xe0, 0x38, 0xe, 0x0,
+ 0xee, 0x7f, 0xbc, 0xfc, 0x7e, 0x3f, 0x3, 0x81,
+ 0xc0, 0xe0, 0x70, 0x38, 0x0,
/* U+73 "s" */
- 0x3f, 0x3f, 0xee, 0x1f, 0x80, 0xfc, 0x1f, 0xe0,
- 0x3c, 0x7, 0xe1, 0xff, 0xe3, 0xf0,
+ 0x1f, 0x1f, 0xe7, 0x1d, 0xc0, 0x7c, 0xf, 0xe0,
+ 0x3c, 0x7, 0x71, 0xdf, 0xe3, 0xf0,
/* U+74 "t" */
0x1c, 0x7, 0x1, 0xc3, 0xff, 0xff, 0xc7, 0x1,
- 0xc0, 0x70, 0x1c, 0x7, 0x1, 0xc0, 0x70, 0xf,
- 0xc1, 0xf0,
+ 0xc0, 0x70, 0x1c, 0x7, 0x1, 0xc0, 0x70, 0x1f,
+ 0xc3, 0xf0,
/* U+75 "u" */
0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
0xc7, 0xe3, 0xbf, 0x8f, 0x80,
/* U+76 "v" */
- 0xc0, 0xf8, 0x76, 0x19, 0x86, 0x73, 0x8c, 0xc3,
+ 0xe1, 0xf8, 0x76, 0x19, 0x86, 0x73, 0x8c, 0xc3,
0x30, 0xfc, 0x1e, 0x7, 0x81, 0xe0,
/* U+77 "w" */
- 0xc6, 0x79, 0xcf, 0x39, 0xb5, 0x36, 0xa6, 0xd6,
- 0xda, 0xdb, 0x4e, 0x79, 0xcf, 0x38, 0xc7, 0x0,
+ 0xe6, 0x36, 0x66, 0x66, 0x66, 0xf6, 0x6f, 0x66,
+ 0x96, 0x69, 0x62, 0x94, 0x39, 0xc3, 0x9c, 0x39,
+ 0xc0,
/* U+78 "x" */
0xe1, 0xdc, 0xe3, 0x30, 0xfc, 0x1e, 0x7, 0x81,
- 0xe0, 0xfc, 0x73, 0x9c, 0x6e, 0x1c,
+ 0xe0, 0xfc, 0x73, 0x9c, 0xee, 0x1c,
/* U+79 "y" */
- 0xe1, 0xf8, 0x76, 0x19, 0xce, 0x33, 0x8e, 0xc3,
- 0xf0, 0x7c, 0x1e, 0x3, 0x80, 0xc0, 0x70, 0x1c,
- 0x6, 0x0,
+ 0xe1, 0xf8, 0x76, 0x19, 0xce, 0x33, 0x8c, 0xc3,
+ 0xf0, 0x7c, 0x1e, 0x7, 0x80, 0xe0, 0x30, 0x1c,
+ 0x7, 0x1, 0x80,
/* U+7A "z" */
- 0xff, 0xff, 0xc1, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+ 0xff, 0xff, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
0xe0, 0xe0, 0x7f, 0xff, 0xe0,
/* U+7B "{" */
- 0x7, 0x87, 0xc3, 0x81, 0xc0, 0xe0, 0x70, 0x38,
+ 0x3, 0x87, 0xc3, 0x81, 0xc0, 0xe0, 0x70, 0x38,
0x1c, 0xfc, 0x7e, 0x3, 0x81, 0xc0, 0xe0, 0x70,
- 0x38, 0x1c, 0xf, 0x83, 0xc0,
+ 0x38, 0x1c, 0x7, 0x81, 0xc0,
/* U+7C "|" */
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
/* U+7D "}" */
- 0xf0, 0x3f, 0x1, 0xc0, 0x70, 0x1c, 0x7, 0x1,
+ 0xf0, 0x3e, 0x1, 0xc0, 0x70, 0x1c, 0x7, 0x1,
0xc0, 0x70, 0xf, 0xc3, 0xf1, 0xc0, 0x70, 0x1c,
0x7, 0x1, 0xc0, 0x70, 0xf8, 0x3c, 0x0,
/* U+7E "~" */
- 0x78, 0xff, 0x3c, 0xff, 0x1e,
+ 0x78, 0xff, 0x3c, 0xcf, 0x3f, 0xc7, 0x80,
+
+ /* U+410 "А" */
+ 0x1e, 0x7, 0x81, 0xe0, 0xfc, 0x3f, 0xc, 0xc3,
+ 0x31, 0xce, 0x73, 0x9f, 0xe7, 0xfb, 0x87, 0xe1,
+ 0xf0, 0x30,
+
+ /* U+411 "Б" */
+ 0xff, 0xbf, 0xee, 0x3, 0x80, 0xe0, 0x3f, 0xcf,
+ 0xfb, 0x8f, 0xe1, 0xf8, 0x7e, 0x1f, 0x8f, 0xff,
+ 0xbf, 0x80,
+
+ /* U+412 "В" */
+ 0xfe, 0x3f, 0xce, 0x3b, 0x8e, 0xe3, 0xb8, 0xcf,
+ 0xe3, 0xfc, 0xe3, 0xb8, 0x7e, 0x1f, 0x8f, 0xff,
+ 0xbf, 0xc0,
+
+ /* U+413 "Г" */
+ 0xff, 0xff, 0xf8, 0x1c, 0xe, 0x7, 0x3, 0x81,
+ 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0xe, 0x7, 0x0,
+
+ /* U+414 "Д" */
+ 0x3f, 0xc7, 0xf8, 0xe7, 0x1c, 0xe3, 0x9c, 0x73,
+ 0x8e, 0x71, 0xce, 0x39, 0xc7, 0x38, 0xe7, 0x38,
+ 0xef, 0xff, 0xff, 0xf8, 0x3f, 0x7, 0xe0, 0xe0,
+
+ /* U+415 "Е" */
+ 0xff, 0xff, 0xf8, 0x1c, 0xe, 0x7, 0x3, 0xfd,
+ 0xfe, 0xe0, 0x70, 0x38, 0x1c, 0xf, 0xff, 0xfc,
+
+ /* U+416 "Ж" */
+ 0xe6, 0x76, 0x66, 0x66, 0x67, 0x66, 0x36, 0xc3,
+ 0x6c, 0x3f, 0xc3, 0x6c, 0x36, 0xc7, 0x6e, 0x66,
+ 0x66, 0x66, 0x66, 0x6c, 0x63,
+
+ /* U+417 "З" */
+ 0x1f, 0x8f, 0xfd, 0xc7, 0x80, 0x70, 0x1c, 0x3e,
+ 0x7, 0xf0, 0xf, 0x0, 0xe0, 0x1d, 0x83, 0xb8,
+ 0xf7, 0xfc, 0x3e, 0x0,
+
+ /* U+418 "И" */
+ 0xe7, 0xf3, 0xf9, 0xfc, 0xfe, 0xff, 0x7f, 0xaf,
+ 0xd7, 0xfb, 0xfd, 0xfc, 0xfe, 0x7f, 0x3f, 0x9c,
+
+ /* U+419 "Й" */
+ 0x63, 0x3b, 0x8f, 0x83, 0x80, 0x7, 0x3f, 0x9f,
+ 0xcf, 0xe7, 0xf7, 0xfb, 0xfd, 0x7e, 0xbf, 0xdf,
+ 0xef, 0xe7, 0xf3, 0xf9, 0xfc, 0xe0,
+
+ /* U+41A "К" */
+ 0xe1, 0xf8, 0x7e, 0x3b, 0x8e, 0xe7, 0x39, 0xcf,
+ 0xe3, 0xf8, 0xe7, 0x39, 0xce, 0x3b, 0x8e, 0xe1,
+ 0xf8, 0x70,
+
+ /* U+41B "Л" */
+ 0x3f, 0xcf, 0xf3, 0x9c, 0xe7, 0x39, 0xce, 0x73,
+ 0x9c, 0xe7, 0x39, 0xce, 0x73, 0x9d, 0xe7, 0xf1,
+ 0xf8, 0x70,
+
+ /* U+41C "М" */
+ 0xf3, 0xfc, 0xfd, 0x2f, 0xcf, 0xff, 0xff, 0xfe,
+ 0xdf, 0xb7, 0xe1, 0xf8, 0x7e, 0x1f, 0x87, 0xe1,
+ 0xf8, 0x70,
+
+ /* U+41D "Н" */
+ 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0xff,
+ 0xff, 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1c,
+
+ /* U+41E "О" */
+ 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
+ 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf1, 0xf0,
+
+ /* U+41F "П" */
+ 0xff, 0xff, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
+ 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1c,
+
+ /* U+420 "Р" */
+ 0xff, 0x3f, 0xee, 0x3f, 0x87, 0xe1, 0xf8, 0xff,
+ 0xfb, 0xfc, 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0,
+ 0x38, 0x0,
+
+ /* U+421 "С" */
+ 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe0, 0x38, 0xe,
+ 0x3, 0x80, 0xe0, 0x38, 0xe, 0x1f, 0xcf, 0x7f,
+ 0x8f, 0xc0,
+
+ /* U+422 "Т" */
+ 0xff, 0xff, 0xf0, 0xe0, 0x38, 0xe, 0x3, 0x80,
+ 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, 0x38, 0xe,
+ 0x3, 0x80,
+
+ /* U+423 "У" */
+ 0xe1, 0xf8, 0x76, 0x19, 0xce, 0x33, 0x8c, 0xc3,
+ 0xb0, 0x7c, 0x1e, 0x3, 0x80, 0xc0, 0x70, 0x1c,
+ 0x6, 0x0,
+
+ /* U+424 "Ф" */
+ 0xc, 0xf, 0xc7, 0xfb, 0xb7, 0xcc, 0xf3, 0x3c,
+ 0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcf, 0xb7, 0x7f,
+ 0x8f, 0xc0, 0xc0, 0x30,
+
+ /* U+425 "Х" */
+ 0xe1, 0xd8, 0x67, 0x38, 0xcc, 0x3f, 0x7, 0x81,
+ 0xe0, 0x78, 0x1e, 0xf, 0xc3, 0x31, 0xce, 0xe1,
+ 0xf8, 0x70,
+
+ /* U+426 "Ц" */
+ 0xe3, 0xb8, 0xee, 0x3b, 0x8e, 0xe3, 0xb8, 0xee,
+ 0x3b, 0x8e, 0xe3, 0xb8, 0xee, 0x3b, 0x8e, 0xff,
+ 0xff, 0xf0, 0x1c, 0x7, 0x1, 0xc0,
+
+ /* U+427 "Ч" */
+ 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0xce,
+ 0xff, 0x3f, 0x81, 0xc0, 0xe0, 0x70, 0x38, 0x1c,
+
+ /* U+428 "Ш" */
+ 0xcc, 0xf3, 0x3c, 0xcf, 0x33, 0xcc, 0xf3, 0x3c,
+ 0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcf, 0x33, 0xff,
+ 0xff, 0xf0,
+
+ /* U+429 "Щ" */
+ 0xcc, 0xd9, 0x9b, 0x33, 0x66, 0x6c, 0xcd, 0x99,
+ 0xb3, 0x36, 0x66, 0xcc, 0xd9, 0x9b, 0x33, 0x66,
+ 0x6f, 0xff, 0xff, 0xc0, 0x18, 0x3,
+
+ /* U+42A "Ъ" */
+ 0xfc, 0xf, 0xc0, 0x1c, 0x1, 0xc0, 0x1c, 0x1,
+ 0xfc, 0x1f, 0xe1, 0xcf, 0x1c, 0x71, 0xc7, 0x1c,
+ 0x71, 0xcf, 0x1f, 0xe1, 0xf8,
+
+ /* U+42B "Ы" */
+ 0xc0, 0xf0, 0x3c, 0xf, 0x3, 0xc0, 0xfe, 0x3f,
+ 0xcf, 0x3b, 0xc6, 0xf1, 0xbc, 0x6f, 0x3b, 0xfc,
+ 0xfe, 0x30,
+
+ /* U+42C "Ь" */
+ 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, 0x3f, 0xcf,
+ 0xfb, 0x8f, 0xe1, 0xf8, 0x7e, 0x1f, 0x8f, 0xff,
+ 0xbf, 0x80,
+
+ /* U+42D "Э" */
+ 0x3e, 0x3f, 0xb8, 0xfc, 0x70, 0x38, 0x1c, 0x7e,
+ 0x3f, 0x3, 0x81, 0xf8, 0xfc, 0x77, 0xf1, 0xf0,
+
+ /* U+42E "Ю" */
+ 0xc7, 0xb3, 0xfc, 0xcf, 0x33, 0xcc, 0xf3, 0x3f,
+ 0xcf, 0xf3, 0xcc, 0xf3, 0x3c, 0xcf, 0x33, 0xcf,
+ 0xf1, 0xe0,
+
+ /* U+42F "Я" */
+ 0x3f, 0xdf, 0xff, 0x1f, 0x87, 0xe1, 0xfc, 0x77,
+ 0xfc, 0xff, 0x39, 0xce, 0x77, 0x1d, 0xc7, 0x71,
+ 0xf8, 0x70,
+
+ /* U+430 "а" */
+ 0x1f, 0x1f, 0xe7, 0x1c, 0x7, 0x3f, 0xdf, 0xfe,
+ 0x1f, 0x87, 0xe3, 0xff, 0xf3, 0xdc,
+
+ /* U+431 "б" */
+ 0x1f, 0x3f, 0x9c, 0x1c, 0xe, 0xe7, 0xfb, 0x8f,
+ 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf1, 0xf0,
+
+ /* U+432 "в" */
+ 0xfe, 0x7f, 0xb8, 0xfc, 0x7e, 0x3f, 0xf3, 0xfd,
+ 0xc7, 0xe3, 0xff, 0xff, 0x80,
+
+ /* U+433 "г" */
+ 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+ 0xe0, 0xe0, 0xe0,
+
+ /* U+434 "д" */
+ 0x3f, 0xc7, 0xf8, 0xe7, 0x1c, 0xe3, 0x9c, 0x73,
+ 0x8e, 0x71, 0xce, 0x71, 0xdf, 0xff, 0xff, 0xf0,
+ 0x7e, 0xf, 0xc1, 0xc0,
+
+ /* U+435 "е" */
+ 0x3e, 0x3f, 0xb8, 0xfc, 0x7f, 0xff, 0xff, 0x81,
+ 0xc0, 0xe3, 0xbf, 0x8f, 0x80,
+
+ /* U+436 "ж" */
+ 0xe6, 0x76, 0x66, 0x66, 0x63, 0x6c, 0x36, 0xc3,
+ 0xfc, 0x36, 0xc3, 0x6c, 0x66, 0x66, 0x66, 0xe6,
+ 0x70,
+
+ /* U+437 "з" */
+ 0x3f, 0x1f, 0xfe, 0x1c, 0x7, 0x1f, 0x7, 0xe0,
+ 0x1c, 0x7, 0xe1, 0xdf, 0xe3, 0xf0,
+
+ /* U+438 "и" */
+ 0xc3, 0xe3, 0xf1, 0xf9, 0xfc, 0xde, 0xef, 0x67,
+ 0xb3, 0xf1, 0xf8, 0xf8, 0x60,
+
+ /* U+439 "й" */
+ 0x63, 0x31, 0x8f, 0x83, 0x80, 0x6, 0x1f, 0x1f,
+ 0x8f, 0xcf, 0xe6, 0xf7, 0x7b, 0x3f, 0x9f, 0x8f,
+ 0xc7, 0xc3,
+
+ /* U+43A "к" */
+ 0xe1, 0xf8, 0xee, 0x33, 0x9c, 0xfe, 0x3f, 0x8e,
+ 0x73, 0x9c, 0xe3, 0xb8, 0x6e, 0x1c,
+
+ /* U+43B "л" */
+ 0x3f, 0xcf, 0xf3, 0x9c, 0xe7, 0x39, 0xce, 0x73,
+ 0x9c, 0xe7, 0x39, 0xfc, 0x7e, 0x1c,
+
+ /* U+43C "м" */
+ 0xe1, 0xf8, 0x7f, 0x3f, 0xcf, 0xda, 0xf7, 0xbd,
+ 0xef, 0x33, 0xc0, 0xf0, 0x3c, 0xc,
+
+ /* U+43D "н" */
+ 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0xff, 0xff,
+ 0xc7, 0xe3, 0xf1, 0xf8, 0xe0,
+
+ /* U+43E "о" */
+ 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
+ 0xc7, 0xe3, 0xbf, 0x8f, 0x80,
+
+ /* U+43F "п" */
+ 0xff, 0xff, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
+ 0xc7, 0xe3, 0xf1, 0xf8, 0xe0,
+
+ /* U+440 "р" */
+ 0xee, 0x7f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f,
+ 0xc7, 0xe3, 0xff, 0xbb, 0x9c, 0xe, 0x7, 0x3,
+ 0x80,
+
+ /* U+441 "с" */
+ 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x7, 0x3, 0x81,
+ 0xc7, 0xe3, 0xbf, 0x8f, 0x80,
+
+ /* U+442 "т" */
+ 0xff, 0xff, 0xf0, 0xe0, 0x38, 0xe, 0x3, 0x80,
+ 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0,
+
+ /* U+443 "у" */
+ 0xe1, 0xf8, 0x76, 0x19, 0xce, 0x33, 0x8c, 0xc3,
+ 0xf0, 0x7c, 0x1e, 0x7, 0x80, 0xe0, 0x30, 0x1c,
+ 0x7, 0x1, 0x80,
+
+ /* U+444 "ф" */
+ 0xc, 0x3, 0x0, 0xc0, 0xfc, 0x7f, 0xbb, 0x7c,
+ 0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcf, 0xb7, 0x7f,
+ 0x8f, 0xc0, 0xc0, 0x30, 0xc, 0x3, 0x0,
+
+ /* U+445 "х" */
+ 0xe1, 0xdc, 0xe3, 0x30, 0xfc, 0x1e, 0x7, 0x81,
+ 0xe0, 0xfc, 0x73, 0x9c, 0xee, 0x1c,
+
+ /* U+446 "ц" */
+ 0xe3, 0xb8, 0xee, 0x3b, 0x8e, 0xe3, 0xb8, 0xee,
+ 0x3b, 0x8e, 0xe3, 0xbf, 0xff, 0xfc, 0x7, 0x1,
+ 0xc0, 0x70,
+
+ /* U+447 "ч" */
+ 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3b, 0xfc, 0xfe,
+ 0x7, 0x3, 0x81, 0xc0, 0xe0,
+
+ /* U+448 "ш" */
+ 0xcc, 0xf3, 0x3c, 0xcf, 0x33, 0xcc, 0xf3, 0x3c,
+ 0xcf, 0x33, 0xcc, 0xff, 0xff, 0xfc,
+
+ /* U+449 "щ" */
+ 0xcc, 0xd9, 0x9b, 0x33, 0x66, 0x6c, 0xcd, 0x99,
+ 0xb3, 0x36, 0x66, 0xcc, 0xdf, 0xff, 0xff, 0x80,
+ 0x30, 0x6,
+
+ /* U+44A "ъ" */
+ 0xfc, 0xf, 0xc0, 0x1c, 0x1, 0xc0, 0x1f, 0xc1,
+ 0xfe, 0x1c, 0x71, 0xc7, 0x1c, 0x71, 0xfe, 0x1f,
+ 0xc0,
+
+ /* U+44B "ы" */
+ 0xc0, 0xf0, 0x3c, 0xf, 0x3, 0xf8, 0xff, 0x3c,
+ 0x6f, 0x1b, 0xc6, 0xff, 0x3f, 0x8c,
+
+ /* U+44C "ь" */
+ 0xe0, 0x38, 0xe, 0x3, 0x80, 0xff, 0x3f, 0xee,
+ 0x1f, 0x87, 0xe1, 0xff, 0xef, 0xf0,
+
+ /* U+44D "э" */
+ 0x3e, 0x3f, 0xb8, 0xe0, 0x70, 0xf8, 0x7c, 0xf,
+ 0xc7, 0xe7, 0xbf, 0x8f, 0x80,
+
+ /* U+44E "ю" */
+ 0xc7, 0xb3, 0xfc, 0xcf, 0x33, 0xcc, 0xff, 0x3f,
+ 0xcf, 0x33, 0xcc, 0xf3, 0xfc, 0x78,
+
+ /* U+44F "я" */
+ 0x3f, 0xbf, 0xf8, 0xfc, 0x7e, 0x3f, 0xfd, 0xfe,
+ 0x77, 0x73, 0xb9, 0xf8, 0xe0,
/* U+F001 "" */
0x0, 0x0, 0x70, 0x0, 0x7f, 0x0, 0x3f, 0xf0,
@@ -560,6 +847,15 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = {
0xdf, 0xe0, 0xff, 0x3f, 0xff, 0xfe, 0x3f, 0xff,
0xf8,
+ /* U+F45D "" */
+ 0x0, 0x10, 0x0, 0xf, 0xe0, 0x3, 0xff, 0x80,
+ 0x7f, 0xfc, 0xf, 0xff, 0xe0, 0xff, 0xfe, 0x7,
+ 0xff, 0xe2, 0x3f, 0xff, 0x31, 0xff, 0xf3, 0x8f,
+ 0xff, 0x3e, 0x7f, 0xf3, 0xf3, 0xc2, 0x1f, 0x90,
+ 0x0, 0xfc, 0x3c, 0x1f, 0xe7, 0xe3, 0xfe, 0xff,
+ 0x7e, 0xef, 0xff, 0xc6, 0xff, 0x78, 0x7, 0xe3,
+ 0x0, 0x3c,
+
/* U+F54B "" */
0x0, 0xf, 0xf8, 0x1, 0xdf, 0xff, 0x1, 0xef,
0xff, 0xc0, 0xf7, 0xff, 0xf0, 0x7b, 0xff, 0xf8,
@@ -592,125 +888,190 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
{.bitmap_index = 7, .adv_w = 192, .box_w = 7, .box_h = 6, .ofs_x = 3, .ofs_y = 8},
{.bitmap_index = 13, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 33, .adv_w = 192, .box_w = 10, .box_h = 19, .ofs_x = 1, .ofs_y = -3},
- {.bitmap_index = 57, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 77, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 97, .adv_w = 192, .box_w = 3, .box_h = 6, .ofs_x = 5, .ofs_y = 8},
- {.bitmap_index = 100, .adv_w = 192, .box_w = 7, .box_h = 19, .ofs_x = 3, .ofs_y = -2},
- {.bitmap_index = 117, .adv_w = 192, .box_w = 7, .box_h = 19, .ofs_x = 2, .ofs_y = -2},
- {.bitmap_index = 134, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1},
- {.bitmap_index = 147, .adv_w = 192, .box_w = 10, .box_h = 9, .ofs_x = 1, .ofs_y = 2},
- {.bitmap_index = 159, .adv_w = 192, .box_w = 5, .box_h = 6, .ofs_x = 3, .ofs_y = -3},
- {.bitmap_index = 163, .adv_w = 192, .box_w = 8, .box_h = 2, .ofs_x = 2, .ofs_y = 5},
- {.bitmap_index = 165, .adv_w = 192, .box_w = 4, .box_h = 4, .ofs_x = 4, .ofs_y = 0},
- {.bitmap_index = 167, .adv_w = 192, .box_w = 10, .box_h = 19, .ofs_x = 1, .ofs_y = -2},
- {.bitmap_index = 191, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 209, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
- {.bitmap_index = 225, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 57, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 78, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 98, .adv_w = 192, .box_w = 3, .box_h = 6, .ofs_x = 5, .ofs_y = 8},
+ {.bitmap_index = 101, .adv_w = 192, .box_w = 7, .box_h = 19, .ofs_x = 3, .ofs_y = -2},
+ {.bitmap_index = 118, .adv_w = 192, .box_w = 7, .box_h = 19, .ofs_x = 2, .ofs_y = -2},
+ {.bitmap_index = 135, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1},
+ {.bitmap_index = 148, .adv_w = 192, .box_w = 10, .box_h = 9, .ofs_x = 1, .ofs_y = 2},
+ {.bitmap_index = 160, .adv_w = 192, .box_w = 5, .box_h = 6, .ofs_x = 3, .ofs_y = -4},
+ {.bitmap_index = 164, .adv_w = 192, .box_w = 9, .box_h = 2, .ofs_x = 2, .ofs_y = 5},
+ {.bitmap_index = 167, .adv_w = 192, .box_w = 4, .box_h = 3, .ofs_x = 4, .ofs_y = 0},
+ {.bitmap_index = 169, .adv_w = 192, .box_w = 10, .box_h = 19, .ofs_x = 1, .ofs_y = -2},
+ {.bitmap_index = 193, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 211, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 227, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 243, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 261, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 277, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
- {.bitmap_index = 293, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 311, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 329, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 347, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 365, .adv_w = 192, .box_w = 3, .box_h = 11, .ofs_x = 4, .ofs_y = 0},
- {.bitmap_index = 370, .adv_w = 192, .box_w = 5, .box_h = 14, .ofs_x = 3, .ofs_y = -3},
- {.bitmap_index = 379, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 1},
- {.bitmap_index = 392, .adv_w = 192, .box_w = 9, .box_h = 7, .ofs_x = 2, .ofs_y = 3},
- {.bitmap_index = 400, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 1},
- {.bitmap_index = 413, .adv_w = 192, .box_w = 8, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
- {.bitmap_index = 427, .adv_w = 192, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = -3},
- {.bitmap_index = 451, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
- {.bitmap_index = 472, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 490, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 508, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 277, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 295, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 313, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 331, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 349, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 367, .adv_w = 192, .box_w = 4, .box_h = 11, .ofs_x = 4, .ofs_y = 0},
+ {.bitmap_index = 373, .adv_w = 192, .box_w = 5, .box_h = 15, .ofs_x = 3, .ofs_y = -4},
+ {.bitmap_index = 383, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 1},
+ {.bitmap_index = 396, .adv_w = 192, .box_w = 9, .box_h = 7, .ofs_x = 2, .ofs_y = 3},
+ {.bitmap_index = 404, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 1},
+ {.bitmap_index = 417, .adv_w = 192, .box_w = 8, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 431, .adv_w = 192, .box_w = 11, .box_h = 18, .ofs_x = 1, .ofs_y = -4},
+ {.bitmap_index = 456, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 474, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 492, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 510, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 526, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 542, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 558, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 576, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 592, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
- {.bitmap_index = 608, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 626, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 646, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
- {.bitmap_index = 662, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 680, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 696, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 714, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 732, .adv_w = 192, .box_w = 10, .box_h = 17, .ofs_x = 1, .ofs_y = -3},
- {.bitmap_index = 754, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 772, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 790, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 808, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 824, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
- {.bitmap_index = 845, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
- {.bitmap_index = 865, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 883, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 903, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
- {.bitmap_index = 919, .adv_w = 192, .box_w = 6, .box_h = 18, .ofs_x = 4, .ofs_y = -2},
- {.bitmap_index = 933, .adv_w = 192, .box_w = 10, .box_h = 19, .ofs_x = 1, .ofs_y = -2},
- {.bitmap_index = 957, .adv_w = 192, .box_w = 6, .box_h = 18, .ofs_x = 3, .ofs_y = -2},
- {.bitmap_index = 971, .adv_w = 192, .box_w = 10, .box_h = 8, .ofs_x = 1, .ofs_y = 6},
- {.bitmap_index = 981, .adv_w = 192, .box_w = 10, .box_h = 2, .ofs_x = 1, .ofs_y = -3},
- {.bitmap_index = 984, .adv_w = 192, .box_w = 5, .box_h = 3, .ofs_x = 3, .ofs_y = 13},
- {.bitmap_index = 986, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1000, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1018, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1032, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1050, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1064, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1082, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = -3},
- {.bitmap_index = 1100, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1116, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 2, .ofs_y = 0},
- {.bitmap_index = 1135, .adv_w = 192, .box_w = 8, .box_h = 18, .ofs_x = 1, .ofs_y = -3},
- {.bitmap_index = 1153, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
- {.bitmap_index = 1171, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
- {.bitmap_index = 1191, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1205, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1218, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1232, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = -3},
- {.bitmap_index = 1250, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = -3},
- {.bitmap_index = 1268, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 2, .ofs_y = 0},
- {.bitmap_index = 1282, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1296, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1314, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1327, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1341, .adv_w = 192, .box_w = 11, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
- {.bitmap_index = 1357, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
- {.bitmap_index = 1371, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = -3},
- {.bitmap_index = 1389, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0},
- {.bitmap_index = 1402, .adv_w = 192, .box_w = 9, .box_h = 18, .ofs_x = 2, .ofs_y = -2},
- {.bitmap_index = 1423, .adv_w = 192, .box_w = 3, .box_h = 18, .ofs_x = 5, .ofs_y = -2},
- {.bitmap_index = 1430, .adv_w = 192, .box_w = 10, .box_h = 18, .ofs_x = 1, .ofs_y = -2},
- {.bitmap_index = 1453, .adv_w = 192, .box_w = 10, .box_h = 4, .ofs_x = 1, .ofs_y = 5},
- {.bitmap_index = 1458, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -3},
- {.bitmap_index = 1508, .adv_w = 320, .box_w = 19, .box_h = 20, .ofs_x = 0, .ofs_y = -3},
- {.bitmap_index = 1556, .adv_w = 320, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = -1},
- {.bitmap_index = 1599, .adv_w = 320, .box_w = 19, .box_h = 20, .ofs_x = 0, .ofs_y = -3},
- {.bitmap_index = 1647, .adv_w = 120, .box_w = 8, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
- {.bitmap_index = 1666, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -3},
- {.bitmap_index = 1716, .adv_w = 240, .box_w = 15, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
- {.bitmap_index = 1752, .adv_w = 320, .box_w = 20, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
- {.bitmap_index = 1800, .adv_w = 320, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = -1},
- {.bitmap_index = 1843, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
- {.bitmap_index = 1881, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
- {.bitmap_index = 1919, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
- {.bitmap_index = 1957, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
- {.bitmap_index = 1995, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
- {.bitmap_index = 2033, .adv_w = 280, .box_w = 15, .box_h = 20, .ofs_x = 1, .ofs_y = -3},
- {.bitmap_index = 2071, .adv_w = 200, .box_w = 11, .box_h = 21, .ofs_x = 0, .ofs_y = -3},
- {.bitmap_index = 2100, .adv_w = 360, .box_w = 23, .box_h = 17, .ofs_x = 0, .ofs_y = -1},
- {.bitmap_index = 2149, .adv_w = 400, .box_w = 25, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
- {.bitmap_index = 2209, .adv_w = 320, .box_w = 20, .box_h = 21, .ofs_x = 0, .ofs_y = -3}
+ {.bitmap_index = 576, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 592, .adv_w = 192, .box_w = 8, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 606, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 624, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 642, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 658, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 676, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 692, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 708, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 726, .adv_w = 192, .box_w = 10, .box_h = 18, .ofs_x = 1, .ofs_y = -4},
+ {.bitmap_index = 749, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 767, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 785, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 803, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 819, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 837, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
+ {.bitmap_index = 857, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 875, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 895, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 911, .adv_w = 192, .box_w = 6, .box_h = 18, .ofs_x = 4, .ofs_y = -2},
+ {.bitmap_index = 925, .adv_w = 192, .box_w = 10, .box_h = 19, .ofs_x = 1, .ofs_y = -2},
+ {.bitmap_index = 949, .adv_w = 192, .box_w = 6, .box_h = 18, .ofs_x = 3, .ofs_y = -2},
+ {.bitmap_index = 963, .adv_w = 192, .box_w = 10, .box_h = 8, .ofs_x = 1, .ofs_y = 7},
+ {.bitmap_index = 973, .adv_w = 192, .box_w = 10, .box_h = 2, .ofs_x = 1, .ofs_y = -3},
+ {.bitmap_index = 976, .adv_w = 192, .box_w = 5, .box_h = 3, .ofs_x = 3, .ofs_y = 13},
+ {.bitmap_index = 978, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 992, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1008, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1021, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1037, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1050, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1068, .adv_w = 192, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = -4},
+ {.bitmap_index = 1085, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1101, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1120, .adv_w = 192, .box_w = 8, .box_h = 19, .ofs_x = 1, .ofs_y = -4},
+ {.bitmap_index = 1139, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1157, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
+ {.bitmap_index = 1177, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1191, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1204, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1217, .adv_w = 192, .box_w = 9, .box_h = 15, .ofs_x = 2, .ofs_y = -4},
+ {.bitmap_index = 1234, .adv_w = 192, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = -4},
+ {.bitmap_index = 1251, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1264, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1278, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1296, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1309, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1323, .adv_w = 192, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
+ {.bitmap_index = 1340, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1354, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = -4},
+ {.bitmap_index = 1373, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1386, .adv_w = 192, .box_w = 9, .box_h = 18, .ofs_x = 2, .ofs_y = -2},
+ {.bitmap_index = 1407, .adv_w = 192, .box_w = 3, .box_h = 18, .ofs_x = 5, .ofs_y = -2},
+ {.bitmap_index = 1414, .adv_w = 192, .box_w = 10, .box_h = 18, .ofs_x = 1, .ofs_y = -2},
+ {.bitmap_index = 1437, .adv_w = 192, .box_w = 10, .box_h = 5, .ofs_x = 1, .ofs_y = 5},
+ {.bitmap_index = 1444, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1462, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1480, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1498, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1514, .adv_w = 192, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = -3},
+ {.bitmap_index = 1538, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1554, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
+ {.bitmap_index = 1575, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
+ {.bitmap_index = 1595, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1611, .adv_w = 192, .box_w = 9, .box_h = 19, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1633, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1651, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1669, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1687, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1703, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1719, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1735, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1753, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1771, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1789, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1807, .adv_w = 192, .box_w = 10, .box_h = 16, .ofs_x = 1, .ofs_y = -1},
+ {.bitmap_index = 1827, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1845, .adv_w = 192, .box_w = 10, .box_h = 17, .ofs_x = 2, .ofs_y = -3},
+ {.bitmap_index = 1867, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1883, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1901, .adv_w = 192, .box_w = 11, .box_h = 16, .ofs_x = 1, .ofs_y = -2},
+ {.bitmap_index = 1923, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
+ {.bitmap_index = 1944, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1962, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 1980, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 1996, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2014, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2032, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2046, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2062, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 2075, .adv_w = 192, .box_w = 8, .box_h = 11, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 2086, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = -3},
+ {.bitmap_index = 2106, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2119, .adv_w = 192, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
+ {.bitmap_index = 2136, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2150, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 2163, .adv_w = 192, .box_w = 9, .box_h = 16, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 2181, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 2195, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2209, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2223, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 2236, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2249, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 2262, .adv_w = 192, .box_w = 9, .box_h = 15, .ofs_x = 2, .ofs_y = -4},
+ {.bitmap_index = 2279, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2292, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2306, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = -4},
+ {.bitmap_index = 2325, .adv_w = 192, .box_w = 10, .box_h = 18, .ofs_x = 1, .ofs_y = -4},
+ {.bitmap_index = 2348, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2362, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = -3},
+ {.bitmap_index = 2380, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2393, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2407, .adv_w = 192, .box_w = 11, .box_h = 13, .ofs_x = 1, .ofs_y = -2},
+ {.bitmap_index = 2425, .adv_w = 192, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
+ {.bitmap_index = 2442, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2456, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 2, .ofs_y = 0},
+ {.bitmap_index = 2470, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2483, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2497, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
+ {.bitmap_index = 2510, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -3},
+ {.bitmap_index = 2560, .adv_w = 320, .box_w = 19, .box_h = 20, .ofs_x = 0, .ofs_y = -3},
+ {.bitmap_index = 2608, .adv_w = 320, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = -1},
+ {.bitmap_index = 2651, .adv_w = 320, .box_w = 19, .box_h = 20, .ofs_x = 0, .ofs_y = -3},
+ {.bitmap_index = 2699, .adv_w = 120, .box_w = 8, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
+ {.bitmap_index = 2718, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -3},
+ {.bitmap_index = 2768, .adv_w = 240, .box_w = 15, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
+ {.bitmap_index = 2804, .adv_w = 320, .box_w = 20, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
+ {.bitmap_index = 2852, .adv_w = 320, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = -1},
+ {.bitmap_index = 2895, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
+ {.bitmap_index = 2933, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
+ {.bitmap_index = 2971, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
+ {.bitmap_index = 3009, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
+ {.bitmap_index = 3047, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1},
+ {.bitmap_index = 3085, .adv_w = 280, .box_w = 15, .box_h = 20, .ofs_x = 1, .ofs_y = -3},
+ {.bitmap_index = 3123, .adv_w = 200, .box_w = 11, .box_h = 21, .ofs_x = 0, .ofs_y = -3},
+ {.bitmap_index = 3152, .adv_w = 360, .box_w = 23, .box_h = 17, .ofs_x = 0, .ofs_y = -1},
+ {.bitmap_index = 3201, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -2},
+ {.bitmap_index = 3251, .adv_w = 400, .box_w = 25, .box_h = 19, .ofs_x = 0, .ofs_y = -2},
+ {.bitmap_index = 3311, .adv_w = 320, .box_w = 20, .box_h = 21, .ofs_x = 0, .ofs_y = -3}
};
/*---------------------
* CHARACTER MAPPING
*--------------------*/
-static const uint16_t unicode_list_1[] = {
+static const uint16_t unicode_list_2[] = {
0x0, 0x16, 0x39, 0x68, 0x128, 0x184, 0x1e5, 0x1fb,
0x21d, 0x23f, 0x240, 0x241, 0x242, 0x243, 0x292, 0x293,
- 0x3fc, 0x54a, 0x55f
+ 0x3fc, 0x45c, 0x54a, 0x55f
};
/*Collect the unicode lists and glyph_id offsets*/
@@ -721,8 +1082,12 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
},
{
- .range_start = 61441, .range_length = 1376, .glyph_id_start = 96,
- .unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 19, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
+ .range_start = 1040, .range_length = 64, .glyph_id_start = 96,
+ .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
+ },
+ {
+ .range_start = 61441, .range_length = 1376, .glyph_id_start = 160,
+ .unicode_list = unicode_list_2, .glyph_id_ofs_list = NULL, .list_length = 20, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
}
};
@@ -739,7 +1104,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
.cmaps = cmaps,
.kern_dsc = NULL,
.kern_scale = 0,
- .cmap_num = 2,
+ .cmap_num = 3,
.bpp = 1,
.kern_classes = 0,
.bitmap_format = 0
@@ -754,13 +1119,18 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
lv_font_t jetbrains_mono_bold_20 = {
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
- .line_height = 21, /*The maximum line height required by the font*/
- .base_line = 3, /*Baseline measured from the bottom of the line*/
+ .line_height = 23, /*The maximum line height required by the font*/
+ .base_line = 4, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
+#if LV_VERSION_CHECK(7, 4, 0)
+ .underline_position = -2,
+ .underline_thickness = 1,
+#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
-#endif /*#if JETBRAINS_MONO_BOLD_20*/
+
+#endif /*#if JETBRAINS_MONO_BOLD_20*/
diff --git a/src/displayapp/screens/ApplicationList.cpp b/src/displayapp/screens/ApplicationList.cpp
index 7eb9718..0b8face 100644
--- a/src/displayapp/screens/ApplicationList.cpp
+++ b/src/displayapp/screens/ApplicationList.cpp
@@ -1,9 +1,10 @@
-#include <libs/lvgl/lvgl.h>
-#include <displayapp/DisplayApp.h>
-#include <functional>
#include "ApplicationList.h"
-#include "Tile.h"
+#include <lvgl/lvgl.h>
+#include <array>
#include "Symbols.h"
+#include "Tile.h"
+#include "displayapp/Apps.h"
+#include "../DisplayApp.h"
using namespace Pinetime::Applications::Screens;
@@ -59,8 +60,8 @@ std::unique_ptr<Screen> ApplicationList::CreateScreen2() {
{Symbols::asterisk, Apps::Meter},
{Symbols::paintbrush, Apps::Paint},
{Symbols::info, Apps::Notifications},
- {Symbols::none, Apps::None},
- {Symbols::none, Apps::None}
+ {Symbols::paddle, Apps::Paddle},
+ {"2", Apps::Twos}
}
};
@@ -80,3 +81,4 @@ std::unique_ptr<Screen> ApplicationList::CreateScreen3() {
return std::unique_ptr<Screen>(new Screens::Tile(app, applications));
}
+
diff --git a/src/displayapp/screens/ApplicationList.h b/src/displayapp/screens/ApplicationList.h
index 9c95acb..aefb238 100644
--- a/src/displayapp/screens/ApplicationList.h
+++ b/src/displayapp/screens/ApplicationList.h
@@ -1,14 +1,9 @@
#pragma once
-#include <functional>
-#include <vector>
+#include <memory>
-#include "components/ble/NimbleController.h"
#include "Screen.h"
-#include "Label.h"
#include "ScreenList.h"
-#include "Gauge.h"
-#include "Meter.h"
namespace Pinetime {
namespace Applications {
diff --git a/src/displayapp/screens/BatteryIcon.cpp b/src/displayapp/screens/BatteryIcon.cpp
index 26939d1..4c10247 100644
--- a/src/displayapp/screens/BatteryIcon.cpp
+++ b/src/displayapp/screens/BatteryIcon.cpp
@@ -1,5 +1,6 @@
#include "BatteryIcon.h"
#include "Symbols.h"
+
using namespace Pinetime::Applications::Screens;
const char* BatteryIcon::GetBatteryIcon(float batteryPercent) {
diff --git a/src/displayapp/screens/BatteryIcon.h b/src/displayapp/screens/BatteryIcon.h
index 58f04a8..f100192 100644
--- a/src/displayapp/screens/BatteryIcon.h
+++ b/src/displayapp/screens/BatteryIcon.h
@@ -1,7 +1,5 @@
#pragma once
-#include <libs/lvgl/src/lv_draw/lv_img_decoder.h>
-
namespace Pinetime {
namespace Applications {
namespace Screens {
diff --git a/src/displayapp/screens/Brightness.cpp b/src/displayapp/screens/Brightness.cpp
index 8ea9a77..c8085be 100644
--- a/src/displayapp/screens/Brightness.cpp
+++ b/src/displayapp/screens/Brightness.cpp
@@ -1,5 +1,5 @@
-#include <libs/lvgl/lvgl.h>
#include "Brightness.h"
+#include <lvgl/lvgl.h>
using namespace Pinetime::Applications::Screens;
diff --git a/src/displayapp/screens/Brightness.h b/src/displayapp/screens/Brightness.h
index 7d599ac..7aee968 100644
--- a/src/displayapp/screens/Brightness.h
+++ b/src/displayapp/screens/Brightness.h
@@ -1,8 +1,9 @@
#pragma once
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include "components/brightness/BrightnessController.h"
+#include <lvgl/src/lv_core/lv_obj.h>
+#include <cstdint>
#include "Screen.h"
+#include "components/brightness/BrightnessController.h"
namespace Pinetime {
namespace Applications {
diff --git a/src/displayapp/screens/Clock.cpp b/src/displayapp/screens/Clock.cpp
index 977321c1..5765914 100644
--- a/src/displayapp/screens/Clock.cpp
+++ b/src/displayapp/screens/Clock.cpp
@@ -1,15 +1,16 @@
-#include <cstdio>
-
-#include <libs/date/includes/date/date.h>
-#include "components/datetime/DateTimeController.h"
-#include <libs/lvgl/lvgl.h>
#include "Clock.h"
-#include "../DisplayApp.h"
+
+#include <date/date.h>
+#include <lvgl/lvgl.h>
+#include <cstdio>
#include "BatteryIcon.h"
#include "BleIcon.h"
+#include "NotificationIcon.h"
#include "Symbols.h"
+#include "components/battery/BatteryController.h"
+#include "components/ble/BleController.h"
#include "components/ble/NotificationManager.h"
-#include "NotificationIcon.h"
+#include "../DisplayApp.h"
using namespace Pinetime::Applications::Screens;
extern lv_font_t jetbrains_mono_extrabold_compressed;
diff --git a/src/displayapp/screens/Clock.h b/src/displayapp/screens/Clock.h
index 58149a7..4c5f60a 100644
--- a/src/displayapp/screens/Clock.h
+++ b/src/displayapp/screens/Clock.h
@@ -1,17 +1,19 @@
#pragma once
-#include <cstdint>
+#include <lvgl/src/lv_core/lv_obj.h>
#include <chrono>
-
+#include <cstdint>
+#include <memory>
#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include "components/ble/NotificationManager.h"
-#include "components/battery/BatteryController.h"
-#include "components/ble/BleController.h"
+#include "components/datetime/DateTimeController.h"
namespace Pinetime {
+ namespace Controllers {
+ class Battery;
+ class Ble;
+ class NotificationManager;
+ }
+
namespace Applications {
namespace Screens {
@@ -34,7 +36,7 @@ namespace Pinetime {
T value;
bool isUpdated = true;
};
- class Clock : public Screen{
+ class Clock : public Screen {
public:
Clock(DisplayApp* app,
Controllers::DateTime& dateTimeController,
diff --git a/src/displayapp/screens/DropDownDemo.cpp b/src/displayapp/screens/DropDownDemo.cpp
index ce3acd5..37728e1 100644
--- a/src/displayapp/screens/DropDownDemo.cpp
+++ b/src/displayapp/screens/DropDownDemo.cpp
@@ -1,6 +1,6 @@
-#include <libs/lvgl/lvgl.h>
-#include <libraries/log/nrf_log.h>
#include "DropDownDemo.h"
+#include <lvgl/lvgl.h>
+#include <libraries/log/nrf_log.h>
#include "../DisplayApp.h"
using namespace Pinetime::Applications::Screens;
diff --git a/src/displayapp/screens/DropDownDemo.h b/src/displayapp/screens/DropDownDemo.h
index 7c75efc..d66aeed 100644
--- a/src/displayapp/screens/DropDownDemo.h
+++ b/src/displayapp/screens/DropDownDemo.h
@@ -2,15 +2,13 @@
#include <cstdint>
#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
+#include <lvgl/src/lv_core/lv_obj.h>
namespace Pinetime {
namespace Applications {
namespace Screens {
- class DropDownDemo : public Screen{
+ class DropDownDemo : public Screen {
public:
DropDownDemo(DisplayApp* app);
~DropDownDemo() override;
diff --git a/src/displayapp/screens/FirmwareUpdate.cpp b/src/displayapp/screens/FirmwareUpdate.cpp
index 778409e..b9f891d 100644
--- a/src/displayapp/screens/FirmwareUpdate.cpp
+++ b/src/displayapp/screens/FirmwareUpdate.cpp
@@ -1,5 +1,6 @@
-#include <libs/lvgl/lvgl.h>
#include "FirmwareUpdate.h"
+#include <lvgl/lvgl.h>
+#include "components/ble/BleController.h"
#include "../DisplayApp.h"
using namespace Pinetime::Applications::Screens;
diff --git a/src/displayapp/screens/FirmwareUpdate.h b/src/displayapp/screens/FirmwareUpdate.h
index 893fe68..262e7af 100644
--- a/src/displayapp/screens/FirmwareUpdate.h
+++ b/src/displayapp/screens/FirmwareUpdate.h
@@ -1,15 +1,12 @@
#pragma once
-#include <cstdint>
-#include <chrono>
-
#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include "components/ble/BleController.h"
+#include <lvgl/src/lv_core/lv_obj.h>
namespace Pinetime {
+ namespace Controllers {
+ class Ble;
+ }
namespace Applications {
namespace Screens {
diff --git a/src/displayapp/screens/FirmwareValidation.cpp b/src/displayapp/screens/FirmwareValidation.cpp
index 4ac399f..d4165dc 100644
--- a/src/displayapp/screens/FirmwareValidation.cpp
+++ b/src/displayapp/screens/FirmwareValidation.cpp
@@ -1,8 +1,8 @@
-#include <libs/lvgl/lvgl.h>
#include "FirmwareValidation.h"
-#include "../DisplayApp.h"
-#include "../../Version.h"
+#include <lvgl/lvgl.h>
+#include "Version.h"
#include "components/firmwarevalidator/FirmwareValidator.h"
+#include "../DisplayApp.h"
using namespace Pinetime::Applications::Screens;
extern lv_font_t jetbrains_mono_extrabold_compressed;
@@ -87,5 +87,3 @@ void FirmwareValidation::OnButtonEvent(lv_obj_t *object, lv_event_t event) {
}
}
-
-
diff --git a/src/displayapp/screens/FirmwareValidation.h b/src/displayapp/screens/FirmwareValidation.h
index 947f557..9eea86b 100644
--- a/src/displayapp/screens/FirmwareValidation.h
+++ b/src/displayapp/screens/FirmwareValidation.h
@@ -1,10 +1,7 @@
#pragma once
-#include <cstdint>
#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
+#include <lvgl/src/lv_core/lv_obj.h>
namespace Pinetime {
namespace Controllers {
diff --git a/src/displayapp/screens/Gauge.cpp b/src/displayapp/screens/Gauge.cpp
index 81c283c..1b9f2c6 100644
--- a/src/displayapp/screens/Gauge.cpp
+++ b/src/displayapp/screens/Gauge.cpp
@@ -1,4 +1,3 @@
-#include <libs/lvgl/lvgl.h>
#include "Gauge.h"
#include "../DisplayApp.h"
diff --git a/src/displayapp/screens/Gauge.h b/src/displayapp/screens/Gauge.h
index 03c06be..2a6b8f8 100644
--- a/src/displayapp/screens/Gauge.h
+++ b/src/displayapp/screens/Gauge.h
@@ -2,9 +2,7 @@
#include <cstdint>
#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
+#include <lvgl/lvgl.h>
namespace Pinetime {
namespace Applications {
diff --git a/src/displayapp/screens/InfiniPaint.cpp b/src/displayapp/screens/InfiniPaint.cpp
index 3ea75e9..65be662 100644
--- a/src/displayapp/screens/InfiniPaint.cpp
+++ b/src/displayapp/screens/InfiniPaint.cpp
@@ -1,7 +1,6 @@
-#include <libs/lvgl/lvgl.h>
-#include <libraries/log/nrf_log.h>
#include "InfiniPaint.h"
#include "../DisplayApp.h"
+#include "../LittleVgl.h"
using namespace Pinetime::Applications::Screens;
extern lv_font_t jetbrains_mono_extrabold_compressed;
diff --git a/src/displayapp/screens/InfiniPaint.h b/src/displayapp/screens/InfiniPaint.h
index f29135d..9a7ac07 100644
--- a/src/displayapp/screens/InfiniPaint.h
+++ b/src/displayapp/screens/InfiniPaint.h
@@ -1,31 +1,30 @@
#pragma once
+#include <lvgl/lvgl.h>
#include <cstdint>
#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include <drivers/St7789.h>
-#include "displayapp/LittleVgl.h"
namespace Pinetime {
+ namespace Components {
+ class LittleVgl;
+ }
namespace Applications {
namespace Screens {
-
+
class InfiniPaint : public Screen {
public:
InfiniPaint(DisplayApp* app, Pinetime::Components::LittleVgl& lvgl);
-
+
~InfiniPaint() override;
-
+
bool Refresh() override;
-
+
bool OnButtonPushed() override;
-
+
bool OnTouchEvent(TouchEvents event) override;
-
+
bool OnTouchEvent(uint16_t x, uint16_t y) override;
-
+
private:
Pinetime::Components::LittleVgl& lvgl;
static constexpr uint16_t width = 10;
diff --git a/src/displayapp/screens/Label.cpp b/src/displayapp/screens/Label.cpp
index 540776c..4be7742 100644
--- a/src/displayapp/screens/Label.cpp
+++ b/src/displayapp/screens/Label.cpp
@@ -1,4 +1,3 @@
-#include <libs/lvgl/lvgl.h>
#include "Label.h"
using namespace Pinetime::Applications::Screens;
diff --git a/src/displayapp/screens/Label.h b/src/displayapp/screens/Label.h
index 3e7b379..dba89bb 100644
--- a/src/displayapp/screens/Label.h
+++ b/src/displayapp/screens/Label.h
@@ -1,6 +1,5 @@
#pragma once
-#include <vector>
#include "Screen.h"
#include <lvgl/lvgl.h>
diff --git a/src/displayapp/screens/Meter.cpp b/src/displayapp/screens/Meter.cpp
index 273e111..3c8e703 100644
--- a/src/displayapp/screens/Meter.cpp
+++ b/src/displayapp/screens/Meter.cpp
@@ -1,5 +1,5 @@
-#include <libs/lvgl/lvgl.h>
#include "Meter.h"
+#include <lvgl/lvgl.h>
#include "../DisplayApp.h"
using namespace Pinetime::Applications::Screens;
diff --git a/src/displayapp/screens/Meter.h b/src/displayapp/screens/Meter.h
index ddf8be8..86888dd 100644
--- a/src/displayapp/screens/Meter.h
+++ b/src/displayapp/screens/Meter.h
@@ -1,11 +1,9 @@
#pragma once
#include <cstdint>
-#include <chrono>
#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
+#include <lvgl/src/lv_core/lv_style.h>
+#include <lvgl/src/lv_core/lv_obj.h>
namespace Pinetime {
namespace Applications {
diff --git a/src/displayapp/screens/Modal.cpp b/src/displayapp/screens/Modal.cpp
index 29f7bfa..d1a110e 100644
--- a/src/displayapp/screens/Modal.cpp
+++ b/src/displayapp/screens/Modal.cpp
@@ -1,5 +1,5 @@
-#include <libs/lvgl/lvgl.h>
#include "Modal.h"
+#include <lvgl/lvgl.h>
#include "../DisplayApp.h"
using namespace Pinetime::Applications::Screens;
diff --git a/src/displayapp/screens/Modal.h b/src/displayapp/screens/Modal.h
index c616c29..9cc177f 100644
--- a/src/displayapp/screens/Modal.h
+++ b/src/displayapp/screens/Modal.h
@@ -1,11 +1,8 @@
#pragma once
-#include <cstdint>
-#include <chrono>
#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
+#include <lvgl/src/lv_core/lv_style.h>
+#include <lvgl/src/lv_core/lv_obj.h>
namespace Pinetime {
namespace Applications {
diff --git a/src/displayapp/screens/Music.cpp b/src/displayapp/screens/Music.cpp
index 225a15a..c4ae3ac 100644
--- a/src/displayapp/screens/Music.cpp
+++ b/src/displayapp/screens/Music.cpp
@@ -15,9 +15,13 @@
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 <libs/lvgl/lvgl.h>
-
#include "Music.h"
+#include <cstdint>
+#include "../DisplayApp.h"
+#include "components/ble/MusicService.h"
+#include "displayapp/icons/music/disc.cpp"
+#include "displayapp/icons/music/disc_f_1.cpp"
+#include "displayapp/icons/music/disc_f_2.cpp"
using namespace Pinetime::Applications::Screens;
diff --git a/src/displayapp/screens/Music.h b/src/displayapp/screens/Music.h
index 81ba793..66bde21 100644
--- a/src/displayapp/screens/Music.h
+++ b/src/displayapp/screens/Music.h
@@ -17,24 +17,16 @@
*/
#pragma once
-#include <cstdint>
-#include <chrono>
+#include <FreeRTOS.h>
+#include <lvgl/src/lv_core/lv_obj.h>
#include <string>
-
-#include "components/gfx/Gfx.h"
-#include "components/battery/BatteryController.h"
-#include "components/ble/BleController.h"
-#include "components/ble/MusicService.h"
#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include "../../Version.h"
-#include "displayapp/icons/music/disc.cpp"
-#include "displayapp/icons/music/disc_f_1.cpp"
-#include "displayapp/icons/music/disc_f_2.cpp"
namespace Pinetime {
+ namespace Controllers {
+ class MusicService;
+ }
+
namespace Applications {
namespace Screens {
class Music : public Screen {
diff --git a/src/displayapp/screens/Notifications.cpp b/src/displayapp/screens/Notifications.cpp
index 85848b2..51a601c 100644
--- a/src/displayapp/screens/Notifications.cpp
+++ b/src/displayapp/screens/Notifications.cpp
@@ -1,7 +1,5 @@
-#include <libs/lvgl/lvgl.h>
-#include <displayapp/DisplayApp.h>
-#include <functional>
#include "Notifications.h"
+#include <displayapp/DisplayApp.h>
using namespace Pinetime::Applications::Screens;
diff --git a/src/displayapp/screens/Notifications.h b/src/displayapp/screens/Notifications.h
index fb4e1ef..f5c6a86 100644
--- a/src/displayapp/screens/Notifications.h
+++ b/src/displayapp/screens/Notifications.h
@@ -1,11 +1,10 @@
#pragma once
-#include <functional>
-#include <vector>
-
+#include <lvgl/lvgl.h>
+#include <cstdint>
+#include <memory>
#include "Screen.h"
-#include "ScreenList.h"
-
+#include "components/ble/NotificationManager.h"
namespace Pinetime {
namespace Applications {
diff --git a/src/displayapp/screens/Paddle.cpp b/src/displayapp/screens/Paddle.cpp
new file mode 100644
index 0000000..9a04b3b
--- /dev/null
+++ b/src/displayapp/screens/Paddle.cpp
@@ -0,0 +1,190 @@
+#include "Paddle.h"
+#include "../DisplayApp.h"
+#include "../LittleVgl.h"
+
+using namespace Pinetime::Applications::Screens;
+extern lv_font_t jetbrains_mono_extrabold_compressed;
+extern lv_font_t jetbrains_mono_bold_20;
+
+namespace{
+const uint8_t paddle_map[] = {
+ 0xfc, 0xfe, 0xfc, 0xff, /*Color of index 0*/
+ 0xff, 0xff, 0xff, 0xff, /*Color of index 1*/
+
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+};
+
+const uint8_t ball_map[] = {
+ 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed,
+ 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed,
+ 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 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, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed,
+ 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 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, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed,
+ 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 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, 0xff, 0xff, 0xff, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed,
+ 0x6f, 0xed, 0x6f, 0xed, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xed, 0x6f, 0xed,
+ 0x6f, 0xed, 0x6f, 0xed, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xed,
+ 0x6f, 0xed, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xed,
+ 0x6f, 0xed, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xed,
+ 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, 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, 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, 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, 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, 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, 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, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x6f, 0xed, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x6f, 0xed, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xed,
+ 0x6f, 0xed, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xed,
+ 0x6f, 0xed, 0x6f, 0xed, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xed, 0x6f, 0xed,
+ 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 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, 0xff, 0xff, 0xff, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed,
+ 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 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, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed,
+ 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 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, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed,
+ 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed,
+ 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed, 0x6f, 0xed,
+};
+}
+
+Paddle::Paddle(Pinetime::Applications::DisplayApp* app, Pinetime::Components::LittleVgl& lvgl) : Screen(app), lvgl{lvgl} {
+ app->SetTouchMode(DisplayApp::TouchModes::Polling);
+
+ points = lv_label_create(lv_scr_act(), nullptr);
+ lv_label_set_text(points, "0");
+ lv_obj_align(points, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 0, 0);
+
+ paddle.header.always_zero = 0;
+ paddle.header.w = 4;
+ paddle.header.h = 60;
+ paddle.data_size = 68;
+ paddle.header.cf = LV_IMG_CF_INDEXED_1BIT;
+ paddle.data = paddle_map;
+ paddle_image = lv_img_create(lv_scr_act(), nullptr);
+ lv_img_set_src(paddle_image, &paddle);
+
+ ball.header.always_zero = 0;
+ ball.header.w = 24;
+ ball.header.h = 24;
+ ball.data_size = 24 * 24 * LV_COLOR_SIZE / 8;
+ ball.header.cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED;
+ ball.data = ball_map;
+ ball_image = lv_img_create(lv_scr_act(), nullptr);
+ lv_img_set_src(ball_image, &ball);
+}
+
+Paddle::~Paddle() {
+ // Reset the touchmode
+ app->SetTouchMode(DisplayApp::TouchModes::Gestures);
+ lv_obj_clean(lv_scr_act());
+}
+
+bool Paddle::Refresh() {
+ if((counter++ % 5) == 0){
+ counter = 0;
+
+ ballX += dx;
+ ballY += dy;
+
+ lv_obj_set_pos(ball_image, ballX, ballY);
+
+ //checks if it has touched the sides (floor and ceiling)
+ if(ballY <= 0 || ballY >= 215){
+ dy *= -1;
+ }
+
+ //checks if it has touched the side (left side)
+ if(ballX >= 215){
+ dx *= -1;
+ }
+
+ //checks if it is in the position of the paddle
+ if(ballY <= (paddleBottomY + 16) && ballY >= (paddleTopY - 8)){
+ if(ballX >= 0 && ballX < 4){
+ lv_obj_set_pos(ball_image, 5, ballY);
+ dx *= -1;
+ score++;
+ }
+ }
+
+ //checks if it has gone behind the paddle
+ else if(ballX <= -40){
+ ballX = 107;
+ ballY = 107;
+ score = 0;
+ }
+ sprintf(scoreStr, "%d", score);
+ lv_label_set_text(points, scoreStr);
+ }
+ return running;
+}
+
+bool Paddle::OnButtonPushed() {
+ running = false;
+ return true;
+}
+
+bool Paddle::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
+ return true;
+}
+
+bool Paddle::OnTouchEvent(uint16_t x, uint16_t y) {
+ lv_obj_set_pos(paddle_image, 0, y - 30); // sets the center paddle pos. (30px offset) with the the y_coordinate of the finger and defaults the x_coordinate to 0
+ paddleTopY = y - 30; // refreshes the upper extreme of the paddle
+ paddleBottomY = y + 30; // refreshes the lower extreme of the paddle
+ return true;
+}
diff --git a/src/displayapp/screens/Paddle.h b/src/displayapp/screens/Paddle.h
new file mode 100644
index 0000000..358bd2f
--- /dev/null
+++ b/src/displayapp/screens/Paddle.h
@@ -0,0 +1,52 @@
+#pragma once
+
+#include <lvgl/lvgl.h>
+#include <cstdint>
+#include "Screen.h"
+
+namespace Pinetime {
+ namespace Components {
+ class LittleVgl;
+ }
+ namespace Applications {
+ namespace Screens {
+
+ class Paddle : public Screen{
+ public:
+ Paddle(DisplayApp* app, Pinetime::Components::LittleVgl& lvgl);
+ ~Paddle() override;
+
+ bool Refresh() override;
+ bool OnButtonPushed() override;
+ bool OnTouchEvent(TouchEvents event) override;
+ bool OnTouchEvent(uint16_t x, uint16_t y) override;
+
+ private:
+ Pinetime::Components::LittleVgl& lvgl;
+
+ int paddleBottomY = 90; // bottom extreme of the paddle
+ int paddleTopY = 150; //top extreme of the paddle
+
+ int ballX = 107; // Initial x_coordinate for the ball (12px offset from the center to counteract the ball's 24px size)
+ int ballY = 107; // Initial y_coordinate for the ball
+
+ int dx = 2; // Velocity of the ball in the x_coordinate
+ int dy = 3; // Velocity of the ball in the y_coordinate
+
+ int counter = 0; // init Frame refresh limit counter
+ int score = 0;
+
+ char scoreStr[10];
+
+ lv_img_dsc_t paddle;
+ lv_img_dsc_t ball;
+
+ lv_obj_t* points;
+ lv_obj_t* paddle_image; // pointer to paddle image
+ lv_obj_t* ball_image; // pointer to ball image
+
+ bool running = true;
+ };
+ }
+ }
+}
diff --git a/src/displayapp/screens/ScreenList.h b/src/displayapp/screens/ScreenList.h
index b198634..736e363 100644
--- a/src/displayapp/screens/ScreenList.h
+++ b/src/displayapp/screens/ScreenList.h
@@ -1,10 +1,10 @@
#pragma once
-#include <vector>
+#include <array>
#include <functional>
-#include "components/ble/NimbleController.h"
+#include <memory>
#include "Screen.h"
-#include "Label.h"
+#include "../DisplayApp.h"
namespace Pinetime {
namespace Applications {
diff --git a/src/displayapp/screens/Symbols.h b/src/displayapp/screens/Symbols.h
index aeea324..b66b5fa 100644
--- a/src/displayapp/screens/Symbols.h
+++ b/src/displayapp/screens/Symbols.h
@@ -24,7 +24,9 @@ namespace Pinetime {
static constexpr const char* tachometer = "\xEF\x8F\xBD";
static constexpr const char* asterisk = "\xEF\x81\xA9";
static constexpr const char* paintbrush = "\xEF\x87\xBC";
+ static constexpr const char* paddle = "\xEF\x91\x9D";
}
}
}
-} \ No newline at end of file
+}
+
diff --git a/src/displayapp/screens/SystemInfo.cpp b/src/displayapp/screens/SystemInfo.cpp
index 867fdae..2de5dad 100644
--- a/src/displayapp/screens/SystemInfo.cpp
+++ b/src/displayapp/screens/SystemInfo.cpp
@@ -1,9 +1,13 @@
-#include <libs/lvgl/lvgl.h>
-#include <displayapp/DisplayApp.h>
-#include <functional>
#include "SystemInfo.h"
-#include "../../Version.h"
-#include "Tile.h"
+#include <lvgl/lvgl.h>
+#include "../DisplayApp.h"
+#include "Label.h"
+#include "Version.h"
+#include "components/battery/BatteryController.h"
+#include "components/ble/BleController.h"
+#include "components/brightness/BrightnessController.h"
+#include "components/datetime/DateTimeController.h"
+#include "drivers/Watchdog.h"
using namespace Pinetime::Applications::Screens;
@@ -43,10 +47,7 @@ bool SystemInfo::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
}
std::unique_ptr<Screen> SystemInfo::CreateScreen1() {
- auto batteryPercentF = batteryController.PercentRemaining();
- uint16_t batteryPercent = 0;
- if(batteryPercentF > 100.0f) batteryPercent = 100;
- else if(batteryPercentF < 0.0f) batteryPercent = 0;
+ auto batteryPercent = static_cast<uint8_t>(batteryController.PercentRemaining());
uint8_t brightness = 0;
switch(brightnessController.Level()) {
@@ -83,7 +84,7 @@ std::unique_ptr<Screen> SystemInfo::CreateScreen1() {
uptimeSeconds = uptimeSeconds % secondsInAMinute;
// TODO handle more than 100 days of uptime
- sprintf(t1, "Pinetime\n"
+ sprintf(t1, "InfiniTime\n"
"Version:%ld.%ld.%ld\n"
"Build: %s\n"
" %s\n"
@@ -111,6 +112,13 @@ std::unique_ptr<Screen> SystemInfo::CreateScreen2() {
}
std::unique_ptr<Screen> SystemInfo::CreateScreen3() {
- strncpy(t3, "Hello from\nthe developer!", 27);
+ sprintf(t3, "Hello from\nthe developer!\n"
+ "Software Licensed\n"
+ "under the terms of\n"
+ "the GNU General\n"
+ "Public License v3\n"
+ "Source code:\n"
+ "https://github.com/\n"
+ " JF002/Pinetime");
return std::unique_ptr<Screen>(new Screens::Label(app, t3));
}
diff --git a/src/displayapp/screens/SystemInfo.h b/src/displayapp/screens/SystemInfo.h
index 987a584..75268c7 100644
--- a/src/displayapp/screens/SystemInfo.h
+++ b/src/displayapp/screens/SystemInfo.h
@@ -1,17 +1,24 @@
#pragma once
-#include <functional>
-#include <vector>
-
-#include "components/ble/NimbleController.h"
+#include <memory>
#include "Screen.h"
-#include "Label.h"
#include "ScreenList.h"
-#include "Gauge.h"
-#include "Meter.h"
namespace Pinetime {
+ namespace Controllers {
+ class DateTime;
+ class Battery;
+ class BrightnessController;
+ class Ble;
+ }
+
+ namespace Drivers {
+ class WatchdogView;
+ }
+
namespace Applications {
+ class DisplayApp;
+
namespace Screens {
class SystemInfo : public Screen {
public:
@@ -36,7 +43,7 @@ namespace Pinetime {
char t1[200];
char t2[200];
- char t3[30];
+ char t3[200];
ScreenList<3> screens;
std::unique_ptr<Screen> CreateScreen1();
diff --git a/src/displayapp/screens/Tab.cpp b/src/displayapp/screens/Tab.cpp
deleted file mode 100644
index 44b806c..0000000
--- a/src/displayapp/screens/Tab.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-#include <cstdio>
-#include <libs/date/includes/date/date.h>
-#include "components/datetime/DateTimeController.h"
-#include <Version.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include <libs/lvgl/src/lv_font/lv_font.h>
-#include <libs/lvgl/lvgl.h>
-#include <libraries/log/nrf_log.h>
-#include "Tab.h"
-#include "displayapp/DisplayApp.h"
-
-
-using namespace Pinetime::Applications::Screens;
-
-extern lv_font_t jetbrains_mono_bold_20;
-
-//static void event_handler(lv_obj_t * obj, lv_event_t event) {
-// Tile* screen = static_cast<Tile *>(obj->user_data);
-// screen->OnObjectEvent(obj, event);
-//}
-
-Tab::Tab(DisplayApp* app, Pinetime::Components::Gfx &gfx) : Screen(app, gfx) {
-/*Create a Tab view object*/
- lv_obj_t *tabview;
- tabview = lv_tabview_create(lv_scr_act(), NULL);
-
- /*Add 3 tabs (the tabs are page (lv_page) and can be scrolled*/
- lv_obj_t *tab1 = lv_tabview_add_tab(tabview, "Tab 1");
- lv_obj_t *tab2 = lv_tabview_add_tab(tabview, "Tab 2");
- lv_obj_t *tab3 = lv_tabview_add_tab(tabview, "Tab 3");
-
-
- /*Add content to the tabs*/
- lv_obj_t * label = lv_label_create(tab1, NULL);
- lv_label_set_text(label, "This the first tab\n\n"
- "If the content\n"
- "of a tab\n"
- "become too long\n"
- "the it \n"
- "automatically\n"
- "become\n"
- "scrollable.");
-
- label = lv_label_create(tab2, NULL);
- lv_label_set_text(label, "Second tab");
-
- label = lv_label_create(tab3, NULL);
- lv_label_set_text(label, "Third tab");
-
-}
-
-Tab::~Tab() {
- lv_obj_clean(lv_scr_act());
-}
-
-void Tab::Refresh(bool fullRefresh) {
-
-}
-
-void Tab::OnObjectEvent(lv_obj_t *obj, lv_event_t event) {
- if(event == LV_EVENT_CLICKED) {
- NRF_LOG_INFO("Clicked");
- }
- else if(event == LV_EVENT_VALUE_CHANGED) {
- NRF_LOG_INFO("Toggled");
- }
-}
diff --git a/src/displayapp/screens/Tab.h b/src/displayapp/screens/Tab.h
deleted file mode 100644
index e16dbb9..0000000
--- a/src/displayapp/screens/Tab.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <lvgl/src/lv_core/lv_style.h>
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
- class Tab : public Screen {
- public:
- explicit Tab(DisplayApp* app, Components::Gfx& gfx);
- ~Tab() override;
- void Refresh(bool fullRefresh) override;
- void OnObjectEvent(lv_obj_t* obj, lv_event_t event);
-
- private:
-
- };
- }
- }
-}
diff --git a/src/displayapp/screens/Tile.cpp b/src/displayapp/screens/Tile.cpp
index 75fa6ef..c1a5e94 100644
--- a/src/displayapp/screens/Tile.cpp
+++ b/src/displayapp/screens/Tile.cpp
@@ -1,11 +1,5 @@
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include <libs/lvgl/src/lv_font/lv_font.h>
-#include <libs/lvgl/lvgl.h>
-
#include "Tile.h"
-#include "displayapp/DisplayApp.h"
-#include "Symbols.h"
-#include "../../Version.h"
+#include "../DisplayApp.h"
using namespace Pinetime::Applications::Screens;
diff --git a/src/displayapp/screens/Tile.h b/src/displayapp/screens/Tile.h
index cf5fcf1..7edf67b 100644
--- a/src/displayapp/screens/Tile.h
+++ b/src/displayapp/screens/Tile.h
@@ -1,11 +1,11 @@
#pragma once
+#include <lvgl/lvgl.h>
#include <cstdint>
-#include "Screen.h"
-#include <bits/unique_ptr.h>
+#include <memory>
#include "Modal.h"
-#include <lvgl/src/lv_core/lv_style.h>
-#include <displayapp/Apps.h>
+#include "Screen.h"
+#include "../Apps.h"
namespace Pinetime {
namespace Applications {
diff --git a/src/displayapp/screens/Twos.cpp b/src/displayapp/screens/Twos.cpp
new file mode 100644
index 0000000..f36e35d
--- /dev/null
+++ b/src/displayapp/screens/Twos.cpp
@@ -0,0 +1,271 @@
+#include "Twos.h"
+#include <lvgl/lvgl.h>
+#include <string>
+#include <charconv>
+#include <array>
+#include <vector>
+#include <utility>
+
+using namespace Pinetime::Applications::Screens;
+
+extern lv_font_t jetbrains_mono_bold_20;
+
+Twos::Twos(Pinetime::Applications::DisplayApp *app) : Screen(app) {
+
+ // create styles to apply to different valued tiles
+ static lv_style_t style_cell1;
+ lv_style_copy(&style_cell1, &lv_style_plain);
+ style_cell1.body.border.width = 1;
+ style_cell1.text.font = &jetbrains_mono_bold_20;
+ style_cell1.body.padding.top = 16;
+ style_cell1.body.padding.bottom = 16;
+ style_cell1.body.main_color = LV_COLOR_MAKE(214, 197, 165);
+ style_cell1.body.grad_color = LV_COLOR_MAKE(214, 197, 165);
+ style_cell1.text.color = LV_COLOR_BLACK;
+
+ static lv_style_t style_cell2;
+ lv_style_copy(&style_cell2, &style_cell1);
+ style_cell2.body.main_color = LV_COLOR_MAKE(209, 146, 92);
+ style_cell2.body.grad_color = LV_COLOR_MAKE(209, 146, 92);
+ style_cell2.text.color = LV_COLOR_WHITE;
+
+ static lv_style_t style_cell3;
+ lv_style_copy(&style_cell3, &style_cell2);
+ style_cell3.body.main_color = LV_COLOR_MAKE(246, 94, 59);
+ style_cell3.body.grad_color = LV_COLOR_MAKE(246, 94, 59);
+
+ static lv_style_t style_cell4;
+ lv_style_copy(&style_cell4, &style_cell3);
+ style_cell4.body.main_color = LV_COLOR_MAKE(212, 170, 28);
+ style_cell4.body.grad_color = LV_COLOR_MAKE(212, 170, 28);
+
+ // format grid display
+ gridDisplay = lv_table_create(lv_scr_act(), nullptr);
+ lv_table_set_style(gridDisplay, LV_TABLE_STYLE_CELL1, &style_cell1);
+ lv_table_set_style(gridDisplay, LV_TABLE_STYLE_CELL2, &style_cell2);
+ lv_table_set_style(gridDisplay, LV_TABLE_STYLE_CELL3, &style_cell3);
+ lv_table_set_style(gridDisplay, LV_TABLE_STYLE_CELL4, &style_cell4);
+ lv_table_set_col_cnt(gridDisplay, 4);
+ lv_table_set_row_cnt(gridDisplay, 4);
+ lv_table_set_col_width(gridDisplay, 0, LV_HOR_RES/4);
+ lv_table_set_col_width(gridDisplay, 1, LV_HOR_RES/4);
+ lv_table_set_col_width(gridDisplay, 2, LV_HOR_RES/4);
+ lv_table_set_col_width(gridDisplay, 3, LV_HOR_RES/4);
+ lv_obj_align(gridDisplay, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
+
+ // initialize grid
+ for(int row = 0; row < 4; row++) {
+ for(int col = 0; col < 4; col++) {
+ grid[row][col].value = 0;
+ lv_table_set_cell_type(gridDisplay, row, col, 2);
+ lv_table_set_cell_align(gridDisplay, row, col, LV_LABEL_ALIGN_CENTER);
+ }
+ }
+ placeNewTile();
+ placeNewTile();
+
+ // format score text
+ scoreText = lv_label_create(lv_scr_act(), nullptr);
+ lv_obj_set_width(scoreText, LV_HOR_RES);
+ lv_label_set_align(scoreText, LV_ALIGN_IN_LEFT_MID);
+ lv_obj_align(scoreText, nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 0);
+ lv_label_set_text(scoreText, ("Score: " + std::to_string(score)).c_str());
+}
+
+Twos::~Twos() {
+ lv_obj_clean(lv_scr_act());
+}
+
+bool Twos::Refresh() {
+ return running;
+}
+
+bool Twos::OnButtonPushed() {
+ running = false;
+ return true;
+}
+
+bool Twos::placeNewTile() {
+ std::vector< std::pair <int,int> > availableCells;
+ for(int row = 0; row < 4; row++) {
+ for(int col = 0; col < 4; col++) {
+ if(!grid[row][col].value) {
+ availableCells.push_back(std::make_pair(row, col));
+ }
+ }
+ }
+
+ if (availableCells.size() == 0) {
+ return false; // game lost
+ }
+
+ auto it = availableCells.cbegin();
+ int random = rand() % availableCells.size();
+ std::advance(it, random);
+ std::pair <int,int> newCell = *it;
+
+ if ((rand() % 100) < 90) grid[newCell.first][newCell.second].value = 2;
+ else grid[newCell.first][newCell.second].value = 4;
+ updateGridDisplay(grid);
+ return true;
+}
+
+bool Twos::tryMerge(Tile grid[][4], int &newRow, int &newCol, int oldRow, int oldCol) {
+ if((grid[newRow][newCol].value == grid[oldRow][oldCol].value)) {
+ if((newCol != oldCol) || (newRow != oldRow)) {
+ if(!grid[newRow][newCol].merged) {
+ unsigned int newVal = grid[oldRow][oldCol].value *= 2;
+ grid[newRow][newCol].value = newVal;
+ score += newVal;
+ lv_label_set_text(scoreText, ("Score: " + std::to_string(score)).c_str());
+ grid[oldRow][oldCol].value = 0;
+ grid[newRow][newCol].merged = true;
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+bool Twos::tryMove(Tile grid[][4], int newRow, int newCol, int oldRow, int oldCol) {
+ if(((newCol >= 0) && (newCol != oldCol)) || ((newRow >= 0) && (newRow != oldRow))) {
+ grid[newRow][newCol].value = grid[oldRow][oldCol].value;
+ grid[oldRow][oldCol].value = 0;
+ return true;
+ }
+ return false;
+}
+
+bool Twos::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
+ bool validMove;
+ validMove = false;
+ for(int row = 0; row < 4; row++) {
+ for(int col = 0; col < 4; col++) {
+ grid[row][col].merged = false; // reinitialize merge state
+ }
+ }
+ switch(event) {
+ case TouchEvents::SwipeLeft:
+ for(int col = 1; col < 4; col++) { // ignore tiles already on far left
+ for(int row = 0; row < 4; row++) {
+ if(grid[row][col].value) {
+ int newCol = -1;
+ for(int potentialNewCol = col - 1; potentialNewCol >= 0; potentialNewCol--) {
+ if(!grid[row][potentialNewCol].value) {
+ newCol = potentialNewCol;
+ }
+ else { // blocked by another tile
+ if(tryMerge(grid, row, potentialNewCol, row, col)) validMove = true;
+ break;
+ }
+ }
+ if(tryMove(grid, row, newCol, row, col)) validMove = true;
+ }
+ }
+ }
+ if (validMove) {
+ placeNewTile();
+ }
+ return true;
+ case TouchEvents::SwipeRight:
+ for(int col = 2; col >= 0; col--) { // ignore tiles already on far right
+ for(int row = 0; row < 4; row++) {
+ if(grid[row][col].value) {
+ int newCol = -1;
+ for(int potentialNewCol = col + 1; potentialNewCol < 4; potentialNewCol++) {
+ if(!grid[row][potentialNewCol].value) {
+ newCol = potentialNewCol;
+ }
+ else { // blocked by another tile
+ if(tryMerge(grid, row, potentialNewCol, row, col)) validMove = true;
+ break;
+ }
+ }
+ if(tryMove(grid, row, newCol, row, col)) validMove = true;
+ }
+ }
+ }
+ if (validMove) {
+ placeNewTile();
+ }
+ return true;
+ case TouchEvents::SwipeUp:
+ for(int row = 1; row < 4; row++) { // ignore tiles already on top
+ for(int col = 0; col < 4; col++) {
+ if(grid[row][col].value) {
+ int newRow = -1;
+ for(int potentialNewRow = row - 1; potentialNewRow >= 0; potentialNewRow--) {
+ if(!grid[potentialNewRow][col].value) {
+ newRow = potentialNewRow;
+ }
+ else { // blocked by another tile
+ if(tryMerge(grid, potentialNewRow, col, row, col)) validMove = true;
+ break;
+ }
+ }
+ if(tryMove(grid, newRow, col, row, col)) validMove = true;
+ }
+ }
+ }
+ if (validMove) {
+ placeNewTile();
+ }
+ return true;
+ case TouchEvents::SwipeDown:
+ for(int row = 2; row >=0; row--) { // ignore tiles already on bottom
+ for(int col = 0; col < 4; col++) {
+ if(grid[row][col].value) {
+ int newRow = -1;
+ for(int potentialNewRow = row + 1; potentialNewRow < 4; potentialNewRow++) {
+ if(!grid[potentialNewRow][col].value) {
+ newRow = potentialNewRow;
+ }
+ else { // blocked by another tile
+ if(tryMerge(grid, potentialNewRow, col, row, col)) validMove = true;
+ break;
+ }
+ }
+ if(tryMove(grid, newRow, col, row, col)) validMove = true;
+ }
+ }
+ }
+ if (validMove) {
+ placeNewTile();
+ }
+ return true;
+ default:
+ return false;
+ }
+ return false;
+}
+
+void Twos::updateGridDisplay(Tile grid[][4]) {
+ for(int row = 0; row < 4; row++) {
+ for(int col = 0; col < 4; col++) {
+ if (grid[row][col].value) {
+ lv_table_set_cell_value(gridDisplay, row, col, (std::to_string(grid[row][col].value)).c_str());
+ }
+ else {
+ lv_table_set_cell_value(gridDisplay, row, col, "");
+ }
+ switch (grid[row][col].value) {
+ case 0:
+ case 2:
+ case 4:
+ lv_table_set_cell_type(gridDisplay, row, col, 1);
+ break;
+ case 8:
+ case 16:
+ lv_table_set_cell_type(gridDisplay, row, col, 2);
+ break;
+ case 32:
+ case 64:
+ lv_table_set_cell_type(gridDisplay, row, col, 3);
+ break;
+ default:
+ lv_table_set_cell_type(gridDisplay, row, col, 4);
+ break;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/src/displayapp/screens/Twos.h b/src/displayapp/screens/Twos.h
new file mode 100644
index 0000000..ad80ca1
--- /dev/null
+++ b/src/displayapp/screens/Twos.h
@@ -0,0 +1,34 @@
+#pragma once
+
+#include <lvgl/src/lv_core/lv_obj.h>
+#include "Screen.h"
+
+namespace Pinetime {
+ namespace Applications {
+ struct Tile {
+ bool merged = false;
+ unsigned int value = 0;
+ };
+ namespace Screens {
+ class Twos : public Screen {
+ public:
+ Twos(DisplayApp* app);
+ ~Twos() override;
+ bool Refresh() override;
+ bool OnButtonPushed() override;
+ bool OnTouchEvent(TouchEvents event) override;
+
+ private:
+ bool running = true;
+ lv_obj_t *scoreText;
+ lv_obj_t *gridDisplay;
+ Tile grid[4][4];
+ unsigned int score = 0;
+ void updateGridDisplay(Tile grid[][4]);
+ bool tryMerge(Tile grid[][4], int &newRow, int &newCol, int oldRow, int oldCol);
+ bool tryMove(Tile grid[][4], int newRow, int newCol, int oldRow, int oldCol);
+ bool placeNewTile();
+ };
+ }
+ }
+} \ No newline at end of file