25 #include "../Stream.h"
44 write(Command::reset);
49 setRegister(active.penColor, color);
54 setRegister(active.penWidth, width);
65 setRegister(active.brushColor, color);
75 setRegister(active.x2, pt.
x);
76 setRegister(active.y2, pt.
y);
88 write(Command::setPixel);
100 write(Command::lineto);
101 active.x1 = active.x2;
102 active.y1 = active.y2;
105 void drawArc(
Point pt, uint16_t startAngle, uint16_t endAngle,
bool filled =
false)
108 setRegister(active.startAngle, startAngle);
109 setRegister(active.angle, endAngle - startAngle);
110 write(filled ? Command::fillArc : Command::drawArc);
115 drawArc(pt, startAngle, endAngle,
true);
121 setRegister(active.radius, radius);
122 write(Command::drawRect);
128 setRegister(active.radius, radius);
129 write(Command::fillRect);
135 setRegister(active.radius, radius);
136 write(Command::drawCircle);
142 setRegister(active.radius, radius);
143 write(Command::fillCircle);
149 write(Command::drawEllipse);
155 write(Command::fillEllipse);
160 setRegister(active.id,
id);
161 write(Command::beginSub);
167 assert(subIndex != 0);
168 write(Command::endSub);
178 template <
typename T> uint8_t getRegisterOffset(T& reg)
180 return reinterpret_cast<uint8_t*
>(®) -
reinterpret_cast<uint8_t*
>(&active);
184 void setRegister(uint16_t& reg, uint16_t value);
186 void setRegister(int16_t& reg, int16_t value)
188 setRegister(
reinterpret_cast<uint16_t&
>(reg), value);
191 void setpos(
Point pt);
192 void write(
OpCode op, uint8_t off, uint32_t value);
195 void write(
const void* data,
size_t length)
197 buffer.
write(data, length);
204 uint16_t subIndex{0};
The source of colour for drawing.
Definition: Asset.h:253
Color getColor() const
Definition: Asset.h:353
void setPenColor(Color color)
Definition: Writer.h:47
void lineto(Point pt)
Definition: Writer.h:97
void drawCircle(Point pt, uint16_t radius)
Definition: Writer.h:132
void fillArc(Point pt, uint16_t startAngle, uint16_t endAngle)
Definition: Writer.h:113
void beginSub(uint16_t id)
Definition: Writer.h:158
void setPixel(Point pt)
Definition: Writer.h:85
void drawArc(Point pt, uint16_t startAngle, uint16_t endAngle, bool filled=false)
Definition: Writer.h:105
void setPen(const Pen &pen)
Definition: Writer.h:57
void fillEllipse(Point pt)
Definition: Writer.h:152
void endSub()
Definition: Writer.h:165
Writer(Print &stream)
Definition: Writer.h:36
void drawRect(Point pt, uint16_t radius=0)
Definition: Writer.h:118
void reset()
Definition: Writer.h:41
void line(Point pt)
Definition: Writer.h:91
void moveto(int16_t x, int16_t y)
Definition: Writer.h:80
void setBrush(const Brush &brush)
Definition: Writer.h:68
void fillCircle(Point pt, uint16_t radius)
Definition: Writer.h:139
void setPenWidth(uint16_t width)
Definition: Writer.h:52
void setBrushColor(Color color)
Definition: Writer.h:63
void flush()
Definition: Writer.h:172
void drawEllipse(Point pt)
Definition: Writer.h:146
void fillRect(Point pt, uint16_t radius=0)
Definition: Writer.h:125
void moveto(Point pt)
Definition: Writer.h:73
uint16_t width
Definition: Asset.h:433
void write(const void *buffer, size_t count)
Provides formatted output to stream.
Definition: Print.h:37
Command
Definition: Graphics/src/include/Graphics/Drawing/Command.h:84
OpCode
Definition: Registers.h:51
TPoint< int16_t > Point
Definition: Libraries/Graphics/src/include/Graphics/Types.h:280
Color
Standard colour definitions.
Definition: Colors.h:227
Definition: Registers.h:60
T x
Definition: Libraries/Graphics/src/include/Graphics/Types.h:134
T y
Definition: Libraries/Graphics/src/include/Graphics/Types.h:135