11#ifndef TCMENU_DRAWING_PRIMITIVES_H
12#define TCMENU_DRAWING_PRIMITIVES_H
14#include <PlatformDetermination.h>
21#define DRAW_NO_MASK 0xff
24#ifdef NEED_32BIT_COLOR_T_ALPHA
31#define RGB(r, g, b) (uint32_t)( 0xff000000UL | ((r)<<16UL) | ((g)<<8UL) | (b) )
39#define RGB(r, g, b) (uint16_t)( (((r)>>3)<<11) | (((g)>>2)<<5) | ((b)>>3) )
47 const uint8_t fontMag;
49 MenuFontDef(
const void* data, uint8_t mag) : fontData(data), fontMag(mag) { }
62 MenuPadding(
int top_,
int right_,
int bottom_,
int left_) {
69 explicit MenuPadding(
int equalAll = 0) {
70 top = bottom = right = left = equalAll;
84 padding.right = right;
85 padding.bottom = bottom;
112 uint16_t borderType:3;
114 MenuBorder() =
default;
117 top = left = bottom = right = equalSides;
129 [[nodiscard]]
BorderType getBorderType()
const {
133 [[nodiscard]]
bool areAllBordersEqual()
const {
134 return (top == left) && (left == right) && (right == bottom);
137 [[nodiscard]]
bool isBorderOff()
const {
138 return areAllBordersEqual() && top == 0;
141 [[nodiscard]] uint16_t getBoxDim(uint16_t size)
const {
146#ifndef TC_COORD_DEFINED
147#define TC_COORD_DEFINED
166 Coord& operator = (
const Coord& other) =
default;
207 const uint8_t *normalIcon;
208 const uint8_t *selectedIcon;
215 normalIcon(nullptr), selectedIcon(nullptr), palette(nullptr) {}
232 const uint8_t *selected =
nullptr)
233 : menuId(id), dimensions(size), iconType(ty), location(
STORED_IN_ROM), normalIcon(normal),
234 selectedIcon(selected), palette(nullptr) {}
245 const uint8_t *selected =
nullptr)
246 : menuId(id), dimensions(size), iconType(ty), location(
STORED_IN_ROM), normalIcon(normal),
247 selectedIcon(selected), palette(paletteEntries) {}
255 return (selected && selectedIcon !=
nullptr) ? selectedIcon : normalIcon;
280 uint16_t getKey()
const {
284 void setFromValues(
const Coord &size,
IconType ty,
const uint8_t *normal,
const uint8_t *selected =
nullptr) {
285 this->dimensions = size;
287 this->normalIcon = normal;
288 this->selectedIcon = selected;
294#define RGB_COL_BLACK RGB(0, 0, 0)
295#define RGB_COL_WHITE RGB(255, 255, 255)
296#define RGB_COL_RED RGB(255, 0, 0)
297#define RGB_COL_GREEN RGB(0, 255, 0)
298#define RGB_COL_BLUE RGB(0, 0, 255)
299#define RGB_COL_YELLOW RGB(255, 255, 0)
300#define RGB_COL_MAGENTA RGB(255, 0, 255)
301#define RGB_COL_CYAN RGB(0, 255, 255)
302#define RGB_COL_ORANGE RGB(255, 128, 0)
303#define RGB_COL_PURPLE RGB(128, 0, 128)
304#define RGB_COL_BROWN RGB(128, 64, 0)
305#define RGB_COL_LIGHT_GRAY RGB(192, 192, 192)
306#define RGB_COL_DARK_GRAY RGB(64, 64, 64)
307#define RGB_COL_LIGHT_RED RGB(255, 128, 128)
308#define RGB_COL_LIGHT_GREEN RGB(128, 255, 128)
309#define RGB_COL_LIGHT_BLUE RGB(128, 128, 255)
310#define RGB_COL_SEL_BLUE RGB(123, 196, 206)
311#define RGB_COL_LIGHT_YELLOW RGB(255, 255, 128)
uint32_t color_t
Definition DrawingPrimitives.h:29
void makePadding(MenuPadding &padding, int top, int right, int bottom, int left)
Definition DrawingPrimitives.h:82
BorderType
Definition DrawingPrimitives.h:93
@ BORD_OUTLINE_SQUARE
Definition DrawingPrimitives.h:95
@ BORD_FILL_ROUNDED
Definition DrawingPrimitives.h:97
@ BORD_OUTLINE_ROUNDED
Definition DrawingPrimitives.h:100
const color_t * getPalette() const
Definition DrawingPrimitives.h:262
DrawableIcon(uint16_t id, const Coord &size, IconType ty, const uint8_t *normal, const uint8_t *selected=nullptr)
Definition DrawingPrimitives.h:231
MemoryLocation
Definition DrawingPrimitives.h:194
@ STORED_IN_RAM
Definition DrawingPrimitives.h:198
@ STORED_IN_ROM
Definition DrawingPrimitives.h:196
@ LOAD_FROM_STORAGE
Definition DrawingPrimitives.h:200
Coord getDimensions() const
Definition DrawingPrimitives.h:269
DrawableIcon(const DrawableIcon &other)=default
DrawableIcon(uint16_t id, const Coord &size, IconType ty, const color_t *paletteEntries, const uint8_t *normal, const uint8_t *selected=nullptr)
Definition DrawingPrimitives.h:244
const uint8_t * getIcon(bool selected) const
Definition DrawingPrimitives.h:254
DrawableIcon()
Definition DrawingPrimitives.h:214
IconType getIconType() const
Definition DrawingPrimitives.h:276
IconType
Definition DrawingPrimitives.h:180
@ ICON_NATIVE
Definition DrawingPrimitives.h:192
@ ICON_XBITMAP
Definition DrawingPrimitives.h:182
@ ICON_MONO
Definition DrawingPrimitives.h:184
@ ICON_PALLETE_2BPP
Definition DrawingPrimitives.h:187
@ ICON_PALLETE_4BPP
Definition DrawingPrimitives.h:190
Definition DrawingPrimitives.h:149
Coord()
Definition DrawingPrimitives.h:151
Coord(int x, int y)
Definition DrawingPrimitives.h:160