ISF15ACP4 Driver 1.0.0
API reference
Loading...
Searching...
No Matches
isf15acp4_graphics_context.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <cstddef>
9#include <cstdint>
10
11#include "isf15acp4_canvas.hpp"
13
14namespace isf15acp4 {
15
23 bool (*draw_pixel)(void* ctx, uint8_t x, uint8_t y, Color565 color) noexcept{nullptr};
24 bool (*draw_line)(void* ctx, Point a, Point b, Color565 color) noexcept{nullptr};
25 bool (*draw_rect)(void* ctx, Rect r, Color565 color, bool filled) noexcept{nullptr};
26 bool (*fill_screen)(void* ctx, Color565 color) noexcept{nullptr};
27 bool (*flush_canvas)(void* ctx, const Color565* data, std::size_t bytes) noexcept{nullptr};
28 void* context{nullptr};
29};
30
42class GraphicsContext : public GraphicsSurface<GraphicsContext> {
43public:
44 GraphicsContext(ProductVariant variant, GraphicsBackend backend) noexcept;
45
46 [[nodiscard]] GraphicsBackend Backend() const noexcept { return backend_; }
47 [[nodiscard]] ProductVariant Variant() const noexcept { return variant_; }
48
50 [[nodiscard]] Canvas& CanvasBuffer() noexcept { return canvas_; }
51 [[nodiscard]] const Canvas& CanvasBuffer() const noexcept { return canvas_; }
52
54 void BindPresenter(const DisplayPresenter& presenter) noexcept { presenter_ = presenter; }
55
56 void Clear(Color565 color) noexcept;
57 void SetPixel(uint8_t x, uint8_t y, Color565 color) noexcept;
58 [[nodiscard]] Color565 GetPixel(uint8_t x, uint8_t y) const noexcept;
59 void DrawHLine(uint8_t x0, uint8_t x1, uint8_t y, Color565 color) noexcept;
60 void DrawVLine(uint8_t x, uint8_t y0, uint8_t y1, Color565 color) noexcept;
61 void DrawRect(const Rect& rect, Color565 color) noexcept;
62 void FillRect(const Rect& rect, Color565 color) noexcept;
63 void DrawChar(uint8_t x, uint8_t y, char ch, Color565 color, Color565 bg = colors::Black) noexcept;
64 void DrawString(uint8_t x, uint8_t y, const char* text, Color565 color,
65 Color565 bg = colors::Black) noexcept;
66 void BlitRgb565(uint8_t x, uint8_t y, uint8_t src_width, uint8_t src_height,
67 const Color565* src) noexcept;
68
69 [[nodiscard]] uint8_t Width() const noexcept { return canvas_.Width(); }
70 [[nodiscard]] uint8_t Height() const noexcept { return canvas_.Height(); }
71 [[nodiscard]] std::size_t ByteSize() const noexcept { return canvas_.ByteSize(); }
72 [[nodiscard]] const Color565* Data() const noexcept { return canvas_.Data(); }
73 [[nodiscard]] Color565* Data() noexcept { return canvas_.Data(); }
74
75private:
80};
81
82} // namespace isf15acp4
83
84#define ISF15ACP4_GRAPHICS_CONTEXT_HEADER_INCLUDED
85#include "../src/isf15acp4_graphics_context.ipp"
86#undef ISF15ACP4_GRAPHICS_CONTEXT_HEADER_INCLUDED
CPU-side RGB565 framebuffer with basic drawing operations.
Definition isf15acp4_canvas.hpp:22
std::size_t ByteSize() const noexcept
Definition isf15acp4_canvas.hpp:71
uint8_t Width() const noexcept
Definition isf15acp4_canvas.hpp:69
const Color565 * Data() const noexcept
Definition isf15acp4_canvas.hpp:72
uint8_t Height() const noexcept
Definition isf15acp4_canvas.hpp:70
Owns the active graphics backend selected at construction time.
Definition isf15acp4_graphics_context.hpp:42
uint8_t Width() const noexcept
Definition isf15acp4_graphics_context.hpp:69
void FillRect(const Rect &rect, Color565 color) noexcept
Definition isf15acp4_graphics_context.ipp:54
uint8_t Height() const noexcept
Definition isf15acp4_graphics_context.hpp:70
void DrawHLine(uint8_t x0, uint8_t x1, uint8_t y, Color565 color) noexcept
Definition isf15acp4_graphics_context.ipp:30
void DrawRect(const Rect &rect, Color565 color) noexcept
Definition isf15acp4_graphics_context.ipp:46
DisplayPresenter presenter_
Definition isf15acp4_graphics_context.hpp:79
void Clear(Color565 color) noexcept
Definition isf15acp4_graphics_context.ipp:10
GraphicsBackend backend_
Definition isf15acp4_graphics_context.hpp:77
Color565 GetPixel(uint8_t x, uint8_t y) const noexcept
Definition isf15acp4_graphics_context.ipp:26
void BindPresenter(const DisplayPresenter &presenter) noexcept
Bind SmartDisplay for HardwareDirect immediate-mode drawing.
Definition isf15acp4_graphics_context.hpp:54
ProductVariant Variant() const noexcept
Definition isf15acp4_graphics_context.hpp:47
Canvas & CanvasBuffer() noexcept
Access underlying canvas (BuiltinCanvas / Animator backends).
Definition isf15acp4_graphics_context.hpp:50
void DrawVLine(uint8_t x, uint8_t y0, uint8_t y1, Color565 color) noexcept
Definition isf15acp4_graphics_context.ipp:38
void DrawChar(uint8_t x, uint8_t y, char ch, Color565 color, Color565 bg=colors::Black) noexcept
Definition isf15acp4_graphics_context.ipp:62
Canvas canvas_
Definition isf15acp4_graphics_context.hpp:78
ProductVariant variant_
Definition isf15acp4_graphics_context.hpp:76
const Canvas & CanvasBuffer() const noexcept
Definition isf15acp4_graphics_context.hpp:51
void SetPixel(uint8_t x, uint8_t y, Color565 color) noexcept
Definition isf15acp4_graphics_context.ipp:18
GraphicsBackend Backend() const noexcept
Definition isf15acp4_graphics_context.hpp:46
void DrawString(uint8_t x, uint8_t y, const char *text, Color565 color, Color565 bg=colors::Black) noexcept
Definition isf15acp4_graphics_context.ipp:67
Color565 * Data() noexcept
Definition isf15acp4_graphics_context.hpp:73
const Color565 * Data() const noexcept
Definition isf15acp4_graphics_context.hpp:72
std::size_t ByteSize() const noexcept
Definition isf15acp4_graphics_context.hpp:71
void BlitRgb565(uint8_t x, uint8_t y, uint8_t src_width, uint8_t src_height, const Color565 *src) noexcept
Definition isf15acp4_graphics_context.ipp:72
CRTP interface every graphics backend must implement.
Definition isf15acp4_graphics_surface.hpp:40
Software framebuffer and 2D drawing primitives for SmartDisplay OLEDs.
Pluggable graphics surface interface for interchangeable render backends.
constexpr Color565 Black
Definition isf15acp4_types.hpp:116
Definition isf15acp4.hpp:19
ProductVariant
Supported NKK SmartDisplay OLED product variants.
Definition isf15acp4_types.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
Type-erased presenter used by HardwareDirect backend.
Definition isf15acp4_graphics_context.hpp:22
bool(* flush_canvas)(void *ctx, const Color565 *data, std::size_t bytes) noexcept
Definition isf15acp4_graphics_context.hpp:27
bool(* draw_rect)(void *ctx, Rect r, Color565 color, bool filled) noexcept
Definition isf15acp4_graphics_context.hpp:25
void * context
Definition isf15acp4_graphics_context.hpp:28
bool(* fill_screen)(void *ctx, Color565 color) noexcept
Definition isf15acp4_graphics_context.hpp:26
bool(* draw_line)(void *ctx, Point a, Point b, Color565 color) noexcept
Definition isf15acp4_graphics_context.hpp:24
bool(* draw_pixel)(void *ctx, uint8_t x, uint8_t y, Color565 color) noexcept
Definition isf15acp4_graphics_context.hpp:23
2D point in display coordinates.
Definition isf15acp4_types.hpp:90
Axis-aligned rectangle in display coordinates (inclusive bounds).
Definition isf15acp4_types.hpp:96