summaryrefslogtreecommitdiff
path: root/src/DisplayApp/Screens
diff options
context:
space:
mode:
Diffstat (limited to 'src/DisplayApp/Screens')
-rw-r--r--src/DisplayApp/Screens/ApplicationList.cpp2
-rw-r--r--src/DisplayApp/Screens/InfiniPaint.cpp44
-rw-r--r--src/DisplayApp/Screens/InfiniPaint.h35
-rw-r--r--src/DisplayApp/Screens/Screen.h3
-rw-r--r--src/DisplayApp/Screens/Symbols.h1
5 files changed, 84 insertions, 1 deletions
diff --git a/src/DisplayApp/Screens/ApplicationList.cpp b/src/DisplayApp/Screens/ApplicationList.cpp
index 575426f0..eb85be4f 100644
--- a/src/DisplayApp/Screens/ApplicationList.cpp
+++ b/src/DisplayApp/Screens/ApplicationList.cpp
@@ -57,7 +57,7 @@ std::unique_ptr<Screen> ApplicationList::CreateScreen2() {
std::array<Screens::Tile::Applications, 6> applications {
{{Symbols::tachometer, Apps::Gauge},
{Symbols::asterisk, Apps::Meter},
- {Symbols::none, Apps::None},
+ {Symbols::paintbrush, Apps::Paint},
{Symbols::none, Apps::None},
{Symbols::none, Apps::None},
{Symbols::none, Apps::None}
diff --git a/src/DisplayApp/Screens/InfiniPaint.cpp b/src/DisplayApp/Screens/InfiniPaint.cpp
new file mode 100644
index 00000000..b340f5d8
--- /dev/null
+++ b/src/DisplayApp/Screens/InfiniPaint.cpp
@@ -0,0 +1,44 @@
+#include <libs/lvgl/lvgl.h>
+#include <libraries/log/nrf_log.h>
+#include "InfiniPaint.h"
+#include "../DisplayApp.h"
+
+using namespace Pinetime::Applications::Screens;
+extern lv_font_t jetbrains_mono_extrabold_compressed;
+extern lv_font_t jetbrains_mono_bold_20;
+
+InfiniPaint::InfiniPaint(Pinetime::Applications::DisplayApp *app, Pinetime::Components::LittleVgl& lvgl) : Screen(app), lvgl{lvgl} {
+ app->SetTouchMode(DisplayApp::TouchModes::Polling);
+ std::fill(b, b+bufferSize, LV_COLOR_WHITE);
+}
+
+InfiniPaint::~InfiniPaint() {
+ // Reset the touchmode
+ app->SetTouchMode(DisplayApp::TouchModes::Gestures);
+ lv_obj_clean(lv_scr_act());
+}
+
+bool InfiniPaint::Refresh() {
+ return running;
+}
+
+bool InfiniPaint::OnButtonPushed() {
+ running = false;
+ return true;
+}
+
+bool InfiniPaint::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
+ return true;
+}
+
+bool InfiniPaint::OnTouchEvent(uint16_t x, uint16_t y) {
+ lv_area_t area;
+ area.x1 = x-(width/2);
+ area.y1 = y-(height/2);
+ area.x2 = x+(width/2)-1;
+ area.y2 = y+(height/2)-1;
+ lvgl.SetFullRefresh(Components::LittleVgl::FullRefreshDirections::None);
+ lvgl.FlushDisplay(&area, b);
+ return true;
+}
+
diff --git a/src/DisplayApp/Screens/InfiniPaint.h b/src/DisplayApp/Screens/InfiniPaint.h
new file mode 100644
index 00000000..a1592f97
--- /dev/null
+++ b/src/DisplayApp/Screens/InfiniPaint.h
@@ -0,0 +1,35 @@
+#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 <drivers/St7789.h>
+#include <DisplayApp/LittleVgl.h>
+
+namespace Pinetime {
+ 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;
+ static constexpr uint16_t height = 10;
+ static constexpr uint16_t bufferSize = width*height;
+ lv_color_t b[bufferSize];
+ bool running = true;
+ };
+ }
+ }
+}
diff --git a/src/DisplayApp/Screens/Screen.h b/src/DisplayApp/Screens/Screen.h
index d8902317..dbf81a44 100644
--- a/src/DisplayApp/Screens/Screen.h
+++ b/src/DisplayApp/Screens/Screen.h
@@ -1,4 +1,6 @@
#pragma once
+
+#include <cstdint>
#include "../TouchEvents.h"
namespace Pinetime {
@@ -18,6 +20,7 @@ namespace Pinetime {
// Return false if the event hasn't been handled by the app, true if it has been handled
virtual bool OnTouchEvent(TouchEvents event) { return false; }
+ virtual bool OnTouchEvent(uint16_t x, uint16_t y) { return false; }
protected:
DisplayApp* app;
diff --git a/src/DisplayApp/Screens/Symbols.h b/src/DisplayApp/Screens/Symbols.h
index 69078c8a..aeea3243 100644
--- a/src/DisplayApp/Screens/Symbols.h
+++ b/src/DisplayApp/Screens/Symbols.h
@@ -23,6 +23,7 @@ namespace Pinetime {
static constexpr const char* music = "\xEF\x80\x81";
static constexpr const char* tachometer = "\xEF\x8F\xBD";
static constexpr const char* asterisk = "\xEF\x81\xA9";
+ static constexpr const char* paintbrush = "\xEF\x87\xBC";
}
}
}