29 #ifndef _NANO_CANVAS_H_ 30 #define _NANO_CANVAS_H_ 38 CANVAS_MODE_TRANSPARENT = 2,
108 static_cast<lcdint_t>(y - p.
y) };
118 static_cast<lcdint_t>(y + p.
y) };
127 return {
static_cast<lcdint_t>(x >> bits),
128 static_cast<lcdint_t>(y >> bits) };
137 return {
static_cast<lcdint_t>(x << bits),
138 static_cast<lcdint_t>(y << bits) };
161 p1.
x += dx; p2.
x += dx;
162 p1.
y += dy; p2.
y += dy;
171 p1.
x += dx; p2.
x += dx;
233 return { {
static_cast<lcdint_t>(p1.
x - p.
x), static_cast<lcdint_t>(p1.
y - p.
y) },
234 {
static_cast<lcdint_t>(p2.
x - p.
x), static_cast<lcdint_t>(p2.
y - p.
y) } };
243 return { {
static_cast<lcdint_t>(p1.
x + p.
x), static_cast<lcdint_t>(p1.
y + p.
y) },
244 {
static_cast<lcdint_t>(p2.
x + p.
x), static_cast<lcdint_t>(p2.
y + p.
y) } };
266 template <u
int8_t BPP>
271 static const uint8_t BITS_PER_PIXEL = BPP;
367 void drawRect(
const NanoRect &rect);
384 void fillRect(
const NanoRect &rect);
422 void write(uint8_t c);
428 void printChar(uint8_t c);
457 void setMode(uint8_t modeFlags) { m_textMode = modeFlags; };
463 void setColor(uint16_t color) { m_color = color; };
479 template <u
int8_t BPP>
495 virtual void blt() = 0;
512 using NanoCanvasBase::NanoCanvasBase;
547 using NanoCanvasBase::NanoCanvasBase;
576 using NanoCanvasBase::NanoCanvasBase;
bool below(const NanoPoint &p) const
bool collisionX(lcdint_t x) const
_NanoPoint operator-(const _NanoPoint &p)
struct _NanoPoint NanoPoint
_NanoRect operator-(const _NanoPoint &p)
_NanoRect operator+(const _NanoPoint &p)
void setPoint(lcdint_t px, lcdint_t py)
_NanoPoint operator+(const _NanoPoint &p)
_NanoPoint operator>>(const uint8_t bits)
lcdint_t m_cursorX
current X cursor position for text output
_NanoPoint & operator<<=(const uint8_t bits)
lcduint_t m_p
number of bits, used by width value: 3 equals to 8 pixels width
_NanoPoint & operator>>=(const uint8_t bits)
NanoCanvasOps(lcdint_t w, lcdint_t h, uint8_t *bytes)
bool collisionY(lcdint_t y) const
void setColor(uint16_t color)
_NanoPoint & operator+=(const _NanoPoint &p)
uint8_t * m_buf
Canvas data.
lcdint_t m_cursorY
current Y cursor position for text output
struct _NanoRect NanoRect
void setRect(lcdint_t l, lcdint_t t, lcdint_t r, lcdint_t b)
_NanoRect & operator+=(const _NanoPoint &p)
_NanoPoint & operator-=(const _NanoPoint &p)
void setOffset(lcdint_t ox, lcdint_t oy)
void move(lcdint_t dx, lcdint_t dy)
bool collision(const NanoPoint &p) const
void setMode(uint8_t modeFlags)
Sets canvas drawing mode Sets canvas drawing mode. The set flags define transparency of output images...
bool above(const NanoPoint &p) const
uint16_t m_color
current color for monochrome operations
_NanoPoint operator<<(const uint8_t bits)
lcduint_t m_h
height of NanoCanvas area in pixels
uint8_t m_textMode
Flags for current NanoCanvas mode.