From f264046fb3270a20eab8945d9eeaf0f18a3a0004 Mon Sep 17 00:00:00 2001 From: Jaby Date: Fri, 5 Jan 2024 21:42:15 -0600 Subject: [PATCH] Introduce corner frames --- .../src/Overlay/ScreenCenter/frame.cpp | 5 +++ .../Overlay/ScreenCenter/include/frame.hpp | 36 +++++++++++++++++++ .../Overlay/ScreenCenter/screen_center.cpp | 6 +++- 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 examples/PoolBox/application/src/Overlay/ScreenCenter/frame.cpp create mode 100644 examples/PoolBox/application/src/Overlay/ScreenCenter/include/frame.hpp diff --git a/examples/PoolBox/application/src/Overlay/ScreenCenter/frame.cpp b/examples/PoolBox/application/src/Overlay/ScreenCenter/frame.cpp new file mode 100644 index 00000000..22900b93 --- /dev/null +++ b/examples/PoolBox/application/src/Overlay/ScreenCenter/frame.cpp @@ -0,0 +1,5 @@ +#include "include/frame.hpp" +#include + +namespace ScreenCenter { +} \ No newline at end of file diff --git a/examples/PoolBox/application/src/Overlay/ScreenCenter/include/frame.hpp b/examples/PoolBox/application/src/Overlay/ScreenCenter/include/frame.hpp new file mode 100644 index 00000000..05a6153d --- /dev/null +++ b/examples/PoolBox/application/src/Overlay/ScreenCenter/include/frame.hpp @@ -0,0 +1,36 @@ +#pragma once +#include +#include + +namespace ScreenCenter { + using namespace JabyEngine; + + class Frame : public GPU::internal::LinkedElementCreator { + private: + GPU::TILE top_left[2]; + GPU::TILE top_right[2]; + GPU::TILE bottom_left[2]; + GPU::TILE bottom_right[2]; + + public: + static constexpr Frame::Linked create() { + constexpr auto BaseColor = GPU::Color24::from_rgb(0x1D, 0xA0, 0xA3); + constexpr auto Size = Make::SizeI16(64, 16); + + Frame frame; + + frame.top_left[0] = Make::TILE(Make::AreaI16(0, 0, Size.width, Size.height), BaseColor); + frame.top_left[1] = Make::TILE(Make::AreaI16(0, 0, Size.height, Size.width), BaseColor); + + frame.top_right[0] = Make::TILE(Make::AreaI16(GPU::Display::Width - Size.width, 0, Size.width, Size.height), BaseColor); + frame.top_right[1] = Make::TILE(Make::AreaI16(GPU::Display::Width - Size.height, 0, Size.height, Size.width), BaseColor); + + frame.bottom_left[0] = Make::TILE(Make::AreaI16(0, GPU::Display::Height - Size.width, Size.height, Size.width), BaseColor); + frame.bottom_left[1] = Make::TILE(Make::AreaI16(0, GPU::Display::Height - Size.height, Size.width, Size.height), BaseColor); + + frame.bottom_right[0] = Make::TILE(Make::AreaI16(GPU::Display::Width - Size.height, GPU::Display::Height - Size.width, Size.height, Size.width), BaseColor); + frame.bottom_right[1] = Make::TILE(Make::AreaI16(GPU::Display::Width - Size.width, GPU::Display::Height - Size.height, Size.width, Size.height), BaseColor); + return frame.linked(); + } + }; +} \ No newline at end of file diff --git a/examples/PoolBox/application/src/Overlay/ScreenCenter/screen_center.cpp b/examples/PoolBox/application/src/Overlay/ScreenCenter/screen_center.cpp index 3d2e7044..d30f59fb 100644 --- a/examples/PoolBox/application/src/Overlay/ScreenCenter/screen_center.cpp +++ b/examples/PoolBox/application/src/Overlay/ScreenCenter/screen_center.cpp @@ -1,4 +1,5 @@ #include "../../../include/shared.hpp" +#include "include/frame.hpp" #include #include #include @@ -6,6 +7,8 @@ namespace ScreenCenter { using namespace JabyEngine; + static const auto frame = Frame::create(); + static void setup() { Shared::back_menu.reset(); } @@ -17,11 +20,12 @@ namespace ScreenCenter { } auto cursor = FontWriter::update(Make::PositionI16(8, 8)); - FontWriter::bios_font_writer.write(cursor, "NOTHING HERE TO SEE", GPU::Color24::Red()); + FontWriter::bios_font_writer.write(cursor, "NOTHING TO SEE HERE", GPU::Color24::Red()); return false; } static void render() { + GPU::render(frame); Shared::back_menu.render(); }