39template <
typename Derived>
44 static_cast<Derived*
>(
this)->
SetPixel(x, y, color);
47 return static_cast<const Derived*
>(
this)->
GetPixel(x, y);
50 static_cast<Derived*
>(
this)->
DrawHLine(x0, x1, y, color);
53 static_cast<Derived*
>(
this)->
DrawVLine(x, y0, y1, color);
56 static_cast<Derived*
>(
this)->
DrawRect(rect, color);
59 static_cast<Derived*
>(
this)->
FillRect(rect, color);
62 static_cast<Derived*
>(
this)->
DrawChar(x, y, ch, color, bg);
66 static_cast<Derived*
>(
this)->
DrawString(x, y, text, color, bg);
68 void BlitRgb565(uint8_t x, uint8_t y, uint8_t src_width, uint8_t src_height,
70 static_cast<Derived*
>(
this)->
BlitRgb565(x, y, src_width, src_height, src);
73 [[nodiscard]] uint8_t
Width() const noexcept {
return static_cast<const Derived*
>(
this)->
Width(); }
74 [[nodiscard]] uint8_t
Height() const noexcept {
return static_cast<const Derived*
>(
this)->
Height(); }
75 [[nodiscard]] std::size_t
ByteSize() const noexcept {
76 return static_cast<const Derived*
>(
this)->
ByteSize();
79 return static_cast<const Derived*
>(
this)->
Data();
81 [[nodiscard]]
Color565*
Data() noexcept {
return static_cast<Derived*
>(
this)->
Data(); }
83 return static_cast<const Derived*
>(
this)->
Backend();
Drives timed frame updates on top of a GraphicsContext.
Definition isf15acp4_animator.hpp:22
CRTP interface every graphics backend must implement.
Definition isf15acp4_graphics_surface.hpp:40
void DrawHLine(uint8_t x0, uint8_t x1, uint8_t y, Color565 color) noexcept
Definition isf15acp4_graphics_surface.hpp:49
void SetPixel(uint8_t x, uint8_t y, Color565 color) noexcept
Definition isf15acp4_graphics_surface.hpp:43
void BlitRgb565(uint8_t x, uint8_t y, uint8_t src_width, uint8_t src_height, const Color565 *src) noexcept
Definition isf15acp4_graphics_surface.hpp:68
void DrawRect(const Rect &rect, Color565 color) noexcept
Definition isf15acp4_graphics_surface.hpp:55
uint8_t Width() const noexcept
Definition isf15acp4_graphics_surface.hpp:73
void DrawChar(uint8_t x, uint8_t y, char ch, Color565 color, Color565 bg=colors::Black) noexcept
Definition isf15acp4_graphics_surface.hpp:61
~GraphicsSurface()=default
Color565 GetPixel(uint8_t x, uint8_t y) const noexcept
Definition isf15acp4_graphics_surface.hpp:46
void Clear(Color565 color) noexcept
Definition isf15acp4_graphics_surface.hpp:42
const Color565 * Data() const noexcept
Definition isf15acp4_graphics_surface.hpp:78
GraphicsBackend Backend() const noexcept
Definition isf15acp4_graphics_surface.hpp:82
void DrawVLine(uint8_t x, uint8_t y0, uint8_t y1, Color565 color) noexcept
Definition isf15acp4_graphics_surface.hpp:52
GraphicsSurface()=default
void FillRect(const Rect &rect, Color565 color) noexcept
Definition isf15acp4_graphics_surface.hpp:58
Color565 * Data() noexcept
Definition isf15acp4_graphics_surface.hpp:81
std::size_t ByteSize() const noexcept
Definition isf15acp4_graphics_surface.hpp:75
void DrawString(uint8_t x, uint8_t y, const char *text, Color565 color, Color565 bg=colors::Black) noexcept
Definition isf15acp4_graphics_surface.hpp:64
uint8_t Height() const noexcept
Definition isf15acp4_graphics_surface.hpp:74
Shared types, constants, and color utilities for NKK SmartDisplay OLED drivers.
constexpr Color565 Black
Definition isf15acp4_types.hpp:116
Definition isf15acp4.hpp:19
uint16_t Color565
16-bit RGB565 color value (R5G6B5).
Definition isf15acp4_types.hpp:50
GraphicsBackend
Selectable graphics engine used by SmartDisplay and UI helpers.
Definition isf15acp4_graphics_surface.hpp:22
Axis-aligned rectangle in display coordinates (inclusive bounds).
Definition isf15acp4_types.hpp:96