ISF15ACP4 Driver 1.0.0
API reference
Loading...
Searching...
No Matches
isf15acp4_canvas.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <cstddef>
9#include <cstdint>
10
11#include "isf15acp4_types.hpp"
12
13namespace isf15acp4 {
14
22class Canvas {
23public:
28 explicit Canvas(ProductVariant variant = ProductVariant::Isf15acp4) noexcept;
29
31 void Clear(Color565 color) noexcept;
32
34 void SetPixel(uint8_t x, uint8_t y, Color565 color) noexcept;
35
37 [[nodiscard]] Color565 GetPixel(uint8_t x, uint8_t y) const noexcept;
38
40 void DrawHLine(uint8_t x0, uint8_t x1, uint8_t y, Color565 color) noexcept;
41
43 void DrawVLine(uint8_t x, uint8_t y0, uint8_t y1, Color565 color) noexcept;
44
46 void DrawRect(const Rect& rect, Color565 color) noexcept;
47
49 void FillRect(const Rect& rect, Color565 color) noexcept;
50
52 void DrawChar(uint8_t x, uint8_t y, char ch, Color565 color, Color565 bg = colors::Black) noexcept;
53
55 void DrawString(uint8_t x, uint8_t y, const char* text, Color565 color,
56 Color565 bg = colors::Black) noexcept;
57
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 geometry_.width; }
70 [[nodiscard]] uint8_t Height() const noexcept { return geometry_.height; }
71 [[nodiscard]] std::size_t ByteSize() const noexcept { return geometry_.framebuffer_bytes; }
72 [[nodiscard]] const Color565* Data() const noexcept { return buffer_; }
73 [[nodiscard]] Color565* Data() noexcept { return buffer_; }
74
75private:
77 Color565 buffer_[96 * 64];
78};
79
80} // namespace isf15acp4
81
82#define ISF15ACP4_CANVAS_HEADER_INCLUDED
83#include "../src/isf15acp4_canvas.ipp"
84#undef ISF15ACP4_CANVAS_HEADER_INCLUDED
CPU-side RGB565 framebuffer with basic drawing operations.
Definition isf15acp4_canvas.hpp:22
void SetPixel(uint8_t x, uint8_t y, Color565 color) noexcept
Set one pixel if in bounds.
Definition isf15acp4_canvas.ipp:19
DisplayGeometry geometry_
Definition isf15acp4_canvas.hpp:76
Color565 GetPixel(uint8_t x, uint8_t y) const noexcept
Get one pixel; returns black when out of bounds.
Definition isf15acp4_canvas.ipp:26
std::size_t ByteSize() const noexcept
Definition isf15acp4_canvas.hpp:71
void FillRect(const Rect &rect, Color565 color) noexcept
Fill a solid rectangle.
Definition isf15acp4_canvas.ipp:62
void Clear(Color565 color) noexcept
Clear the framebuffer to a solid color.
Definition isf15acp4_canvas.ipp:13
void BlitRgb565(uint8_t x, uint8_t y, uint8_t src_width, uint8_t src_height, const Color565 *src) noexcept
Blit a contiguous RGB565 buffer into the canvas.
Definition isf15acp4_canvas.ipp:96
void DrawVLine(uint8_t x, uint8_t y0, uint8_t y1, Color565 color) noexcept
Draw a vertical line inclusive of both endpoints.
Definition isf15acp4_canvas.ipp:44
void DrawString(uint8_t x, uint8_t y, const char *text, Color565 color, Color565 bg=colors::Black) noexcept
Draw a null-terminated string.
Definition isf15acp4_canvas.ipp:82
Color565 * Data() noexcept
Definition isf15acp4_canvas.hpp:73
uint8_t Width() const noexcept
Definition isf15acp4_canvas.hpp:69
void DrawRect(const Rect &rect, Color565 color) noexcept
Draw rectangle outline.
Definition isf15acp4_canvas.ipp:55
const Color565 * Data() const noexcept
Definition isf15acp4_canvas.hpp:72
uint8_t Height() const noexcept
Definition isf15acp4_canvas.hpp:70
void DrawChar(uint8_t x, uint8_t y, char ch, Color565 color, Color565 bg=colors::Black) noexcept
Draw a single character using the built-in 5x7 font.
Definition isf15acp4_canvas.ipp:68
Color565 buffer_[96 *64]
Definition isf15acp4_canvas.hpp:77
void DrawHLine(uint8_t x0, uint8_t x1, uint8_t y, Color565 color) noexcept
Draw a horizontal line inclusive of both endpoints.
Definition isf15acp4_canvas.ipp:33
Shared types, constants, and color utilities for NKK SmartDisplay OLED drivers.
constexpr Color565 Black
Definition isf15acp4_types.hpp:116
Definition isf15acp4.hpp:19
ProductVariant
Supported NKK SmartDisplay OLED product variants.
Definition isf15acp4_types.hpp:19
@ Isf15acp4
Frameless OLED pushbutton, 96x64 (ISF15ACP4)
uint16_t Color565
16-bit RGB565 color value (R5G6B5).
Definition isf15acp4_types.hpp:50
Compile-time display geometry for a product variant.
Definition isf15acp4_types.hpp:53
uint8_t height
Definition isf15acp4_types.hpp:55
std::size_t framebuffer_bytes
Definition isf15acp4_types.hpp:60
uint8_t width
Definition isf15acp4_types.hpp:54
Axis-aligned rectangle in display coordinates (inclusive bounds).
Definition isf15acp4_types.hpp:96