|
libepaper 2.0.0
A C++23 library for controlling Waveshare e-paper displays on Raspberry Pi, featuring transparent sleep/wake management and a fluent builder API.
|
Centralized pixel encoding/decoding utilities for framebuffers. More...
#include "epaper/color/color.hpp"#include "epaper/core/types.hpp"#include "epaper/drivers/driver.hpp"#include <array>#include <cstddef>#include <cstdint>#include <span>Go to the source code of this file.
Namespaces | |
| namespace | epaper |
| namespace | epaper::pixel_constants |
Functions | |
| constexpr auto | epaper::spectra6_color_to_value (Color color) noexcept -> std::uint8_t |
| Convert a Color to its 3-bit Spectra6 value. | |
| constexpr auto | epaper::spectra6_value_to_color (std::uint8_t value) noexcept -> Color |
| Convert a 3-bit Spectra6 value to Color. | |
| constexpr auto | epaper::color_to_rgb (Color color) noexcept -> RGB |
| Convert a Color enum to RGB values. | |
| constexpr auto | epaper::rgb_to_grayscale (std::uint8_t r, std::uint8_t g, std::uint8_t b) noexcept -> std::uint8_t |
| Convert RGB values to grayscale using standard luminance formula. | |
| constexpr auto | epaper::rgb_to_color_bw (std::uint8_t r, std::uint8_t g, std::uint8_t b) noexcept -> Color |
| Convert RGB to Color for black/white mode. | |
| constexpr auto | epaper::rgb_to_color_grayscale4 (std::uint8_t r, std::uint8_t g, std::uint8_t b) noexcept -> Color |
| Convert RGB to Color for 4-level grayscale mode. | |
| constexpr auto | epaper::rgb_to_color (DisplayMode mode, std::uint8_t r, std::uint8_t g, std::uint8_t b) noexcept -> Color |
| Convert RGB to Color based on display mode. | |
| constexpr auto | epaper::calculate_bw_position (std::size_t width, std::size_t x, std::size_t y) noexcept -> std::pair< std::size_t, std::uint8_t > |
| Calculate byte index and bit mask for B/W mode pixel. | |
| constexpr auto | epaper::calculate_gray_position (std::size_t width, std::size_t x, std::size_t y) noexcept -> std::pair< std::size_t, std::uint8_t > |
| Calculate byte index and pixel shift for Grayscale4 mode pixel. | |
| constexpr auto | epaper::calculate_spectra6_position (std::size_t width, std::size_t x, std::size_t y) noexcept -> std::pair< std::size_t, std::size_t > |
| Calculate byte index and bit offset for Spectra6 (3-bit) mode pixel. | |
| auto | epaper::get_pixel_bw (std::span< const std::byte > buffer, std::size_t width, std::size_t x, std::size_t y) noexcept -> Color |
| Read a pixel from a B/W mode buffer. | |
| auto | epaper::get_pixel_grayscale4 (std::span< const std::byte > buffer, std::size_t width, std::size_t x, std::size_t y) noexcept -> Color |
| Read a pixel from a Grayscale4 mode buffer. | |
| auto | epaper::get_pixel_bwr_bwy (std::span< const std::byte > buffer, std::size_t width, std::size_t height, std::size_t x, std::size_t y, bool is_bwr) noexcept -> Color |
| Read a pixel from a BWR or BWY mode buffer. | |
| auto | epaper::get_pixel_spectra6 (std::span< const std::byte > buffer, std::size_t width, std::size_t x, std::size_t y) noexcept -> Color |
| Read a pixel from a Spectra6 mode buffer. | |
| auto | epaper::get_pixel_from_buffer (DisplayMode mode, std::span< const std::byte > buffer, std::size_t width, std::size_t height, std::size_t x, std::size_t y) noexcept -> Color |
| Read a pixel from a buffer based on display mode. | |
| auto | epaper::set_pixel_bw (std::span< std::byte > buffer, std::size_t width, std::size_t x, std::size_t y, Color color) noexcept -> void |
| Write a pixel to a B/W mode buffer. | |
| auto | epaper::set_pixel_grayscale4 (std::span< std::byte > buffer, std::size_t width, std::size_t x, std::size_t y, Color color) noexcept -> void |
| Write a pixel to a Grayscale4 mode buffer. | |
| auto | epaper::set_pixel_bwr_bwy (std::span< std::byte > buffer, std::size_t width, std::size_t height, std::size_t x, std::size_t y, Color color, bool is_bwr) noexcept -> void |
| Write a pixel to a BWR or BWY mode buffer. | |
| auto | epaper::set_pixel_spectra6 (std::span< std::byte > buffer, std::size_t width, std::size_t x, std::size_t y, Color color) noexcept -> void |
| Write a pixel to a Spectra6 mode buffer. | |
| auto | epaper::set_pixel_in_buffer (DisplayMode mode, std::span< std::byte > buffer, std::size_t width, std::size_t height, std::size_t x, std::size_t y, Color color) noexcept -> void |
| Write a pixel to a buffer based on display mode. | |
Variables | |
| constexpr std::array< Color, 8 > | epaper::SPECTRA6_VALUE_TO_COLOR |
| Mapping from 3-bit Spectra6 value to Color enum. | |
Black/White Mode Constants | |
| constexpr std::uint8_t | epaper::pixel_constants::BW_PIXELS_PER_BYTE = 8 |
| constexpr std::uint8_t | epaper::pixel_constants::BW_MSB_MASK = 0x80 |
Grayscale4 Mode Constants | |
| constexpr std::uint8_t | epaper::pixel_constants::GRAY_PIXELS_PER_BYTE = 4 |
| constexpr std::uint8_t | epaper::pixel_constants::GRAY_BITS_PER_PIXEL = 2 |
| constexpr std::uint8_t | epaper::pixel_constants::GRAY_PIXEL_MASK = 0xC0 |
Spectra6 Mode Constants | |
| constexpr std::uint8_t | epaper::pixel_constants::SPECTRA6_BITS_PER_PIXEL = 3 |
| constexpr std::uint8_t | epaper::pixel_constants::SPECTRA6_COLOR_MASK = 0x07 |
Grayscale Thresholds (for RGB conversion) | |
| constexpr std::uint8_t | epaper::pixel_constants::GRAY_THRESHOLD_WHITE = 192 |
| constexpr std::uint8_t | epaper::pixel_constants::GRAY_THRESHOLD_LIGHT = 128 |
| constexpr std::uint8_t | epaper::pixel_constants::GRAY_THRESHOLD_DARK = 64 |
Centralized pixel encoding/decoding utilities for framebuffers.
Provides all the bit manipulation logic for reading and writing pixels in various display modes. This eliminates duplication between Display and MockDriver while documenting the exact framebuffer format for each mode.
Supported Display Modes:
Design Principles:
Bit Layout Examples: