36 #define GRAPHICS_ASSET_TYPE_LIST(XX) \ 94 nextId = std::max(nextId,
ID(
id + 1));
97 using LinkedObjectTemplate::operator==;
101 return this->mId == id;
109 virtual Type type()
const = 0;
113 virtual String getTypeStr()
const;
121 static_assert(
sizeof(
Asset) == 12,
"Bad Asset size");
153 return meta.
write(
"color", color);
195 :
TextureBrush(id, style), color1(color1), color2(color2)
202 meta.
write(
"color1", color1);
203 meta.
write(
"color2", color2);
210 return F(
"GradientBrush");
240 return F(
"ImageBrush");
255 #define GRAPHICS_BRUSH_KIND_MAP(XX) \ 262 #define XX(name) name, 275 Brush(
const Brush& other) : brush(other.brush), kind(other.kind)
281 setPixelFormat(format);
301 packedColor =
pack(color, format);
302 kind = Kind::PackedColor;
304 pixelFormat = format;
319 return kind ==
Kind::Color || kind == Kind::PackedColor;
327 if(kind == Kind::PackedColor) {
328 return packedColor.alpha < 255;
335 return kind ==
Kind::Color && this->color == color;
340 return !operator==(color);
345 return kind == other.kind && brush == other.
brush;
350 return !operator==(other);
358 if(kind == Kind::PackedColor) {
359 return unpack(packedColor, pixelFormat);
367 assert(kind == Kind::PackedColor);
376 assert(kind == Kind::Texture);
387 String getTypeStr()
const;
400 static_assert(
sizeof(
Brush) == 8,
"Brush Size");
430 meta.
write(
F(
"width"), width);
436 static_assert(
sizeof(
Pen) == 8,
"Pen Size");
465 : fore(fore), back(back), scale(scale), style(style)
471 fore.setPixelFormat(format);
472 back.setPixelFormat(format);
477 return !back || fore == back;
484 return F(
"TextOptions");
489 meta.
write(
"fore", fore);
490 meta.
write(
"back", back);
492 meta.
write(
"scale", scale);
495 meta.
write(
"style", style);
516 virtual uint8_t height()
const = 0;
521 virtual uint8_t descent()
const = 0;
543 return height() - descent();
556 meta.
write(
"style", getStyle());
557 meta.
write(
"height", height());
558 meta.
write(
"descent", descent());
574 using AssetTemplate::AssetTemplate;
576 virtual String name()
const = 0;
578 virtual uint16_t height()
const = 0;
587 meta.
write(
"font", name());
595 : font(font), typeface(typeface)
654 for(
auto& face : font.faces) {
655 if(face !=
nullptr) {
706 size_t read(uint32_t offset,
char* buffer,
size_t length)
const 712 return stream->readBytes(buffer, length);
715 char read(uint32_t offset)
const 718 read(offset, &ch, 1);
724 return stream ? stream->readString(maxlen) :
nullptr;
732 meta.
write(
"length", getLength());
734 meta.
write(
"content", *stream);
739 std::unique_ptr<IDataSourceStream> stream;
757 return std::find(
begin(), end(),
id);
762 return std::find(
begin(), end(),
id);
769 return const_cast<AssetList*
>(
this)->find(type,
id);
774 return reinterpret_cast<T*
>(find(T::assetType,
id));
779 return reinterpret_cast<const T*
>(find(T::assetType,
id));
782 void store(
Asset* asset);
#define GRAPHICS_BRUSH_KIND_MAP(XX)
Definition: Asset.h:255
TextureBrush(BrushStyle style)
Definition: Asset.h:162
const TextureBrush & getObject() const
Definition: Asset.h:374
Scale scale
Definition: Asset.h:457
Brush(const Brush &other)
Definition: Asset.h:275
TextOptions()
Definition: Asset.h:460
An asset is used to render an Object, but is not itself drawable.
Definition: Asset.h:75
virtual Type type() const override
Definition: Asset.h:132
ResourceFont(const Resource::FontResource &font)
Definition: Asset.h:629
Pen(const TextureBrush &brush, uint16_t width=1)
Definition: Asset.h:423
String getTypeStr() const override
Definition: Asset.h:238
bool isTransparent() const
Definition: Asset.h:475
String name() const override
Definition: Asset.h:639
IDataSourceStream * createSubStream(uint32_t offset, size_t size)
Graphics objects call this method to obtain access to resource data.
void setColor(Color color)
Definition: Asset.h:292
void write(MetaWriter &meta) const override
Definition: Asset.h:177
std::unique_ptr< const Object > object
Definition: Asset.h:749
const TextureBrush * brush
Definition: Asset.h:394
Base class for read-only stream.
Definition: DataSourceStream.h:45
ImageBrush(BrushStyle style, ImageObject &image)
Definition: Asset.h:224
uint8_t descent() const override
Definition: Asset.h:609
Definition: Libraries/Graphics/src/include/Graphics/Types.h:732
Kind
Definition: Asset.h:261
TextAsset(AssetID id, IDataSourceStream *stream)
Definition: Asset.h:680
const T * find(AssetID id) const
Definition: Asset.h:777
Colour in device pixel format.
Definition: Colors.h:339
void write(MetaWriter &meta) const override
Definition: Asset.h:553
Asset()
Definition: Asset.h:88
void write(MetaWriter &meta) const override
Definition: Asset.h:150
PenAsset(AssetID id, ParamTypes... params)
Definition: Asset.h:441
Pen(const Pen &other)
Definition: Asset.h:407
Definition: resource.h:83
virtual String getTypeStr() const
Definition: Asset.h:482
uint16_t height() const override
Definition: Asset.h:644
void write(MetaWriter &meta) const override
Definition: Asset.h:445
bool operator==(const Brush &other) const
Definition: Asset.h:343
virtual void write(MetaWriter &meta) const
Pen(const Pen &other, PixelFormat format)
Definition: Asset.h:419
#define GRAPHICS_ASSET_TYPE_LIST(XX)
Definition: Asset.h:36
FontStyles getStyle() const override
Style of this typeface (bold, italic, etc.)
Definition: Asset.h:599
The String class.
Definition: WString.h:136
TextOptions(Brush fore, Brush back, Scale scale, FontStyles style)
Definition: Asset.h:464
void setPixelFormat(PixelFormat format)
Definition: Asset.h:469
ResourceTypeface(const Resource::FontResource &font, const Resource::TypefaceResource &typeface)
Definition: Asset.h:594
PackedColor packedColor
Definition: Asset.h:393
A character glyph image.
Definition: Libraries/Graphics/src/include/Graphics/Object.h:850
bool isTransparent() const
Definition: Asset.h:322
uint8_t height() const override
Get height of typeface, same for all characters.
Definition: Asset.h:604
Brush(const TextureBrush *brush)
Definition: Asset.h:288
Brush(Color color)
Definition: Asset.h:271
#define F(string_literal)
Wrap a string literal stored in flash and access it using a String object.
Definition: WString.h:113
ImageBrush(AssetID id, BrushStyle style, ImageObject &image)
Definition: Asset.h:228
BrushStyle
Definition: Asset.h:138
String readString(size_t maxlen) const
Definition: Asset.h:722
Base class for a loaded typeface, e.g. Sans 16pt bold.
Definition: Asset.h:505
TextAsset(AssetID id)
Definition: Asset.h:672
std::enable_if< sizeof(T)==1, T >::type readValue(const T *ptr)
Read a typed value from flash memory ensuring correct alignment of access.
Definition: Utility.hpp:126
TextAsset(String &&content)
Definition: Asset.h:668
bool operator!=(const Brush &other) const
Definition: Asset.h:348
Identifies position within bounding rectangle.
Definition: Libraries/Graphics/src/include/Graphics/Types.h:683
Brush using pixels from image.
Definition: Asset.h:221
bool operator==(Color color) const
Definition: Asset.h:333
Type
Definition: Asset.h:82
A drawable object inherits from this virtual base class.
Definition: Libraries/Graphics/src/include/Graphics/Object.h:96
Color
Standard colour definitions.
Definition: Colors.h:227
bool isSolid() const
Definition: Asset.h:317
Asset * find(AssetID id)
Definition: Asset.h:755
Base class for a loaded font.
Definition: Asset.h:571
PixelBuffer pack(PixelBuffer src, PixelFormat format)
Convert RGB colour into packed format.
size_t read(uint32_t offset, char *buffer, size_t length) const
Definition: Asset.h:706
Virtual base class for an image.
Definition: Libraries/Graphics/src/include/Graphics/Object.h:561
Color getColor() const
Definition: Asset.h:353
void write(MetaWriter &meta) const
Definition: Asset.h:427
BrushStyle style
Definition: Asset.h:184
TextAsset(const FSTR::String &fstr)
Definition: Asset.h:684
Base class template for linked items with type casting.
Definition: LinkedObject.h:61
void write(MetaWriter &meta) const override
Definition: Asset.h:199
Glyph metrics.
Definition: Libraries/Graphics/src/include/Graphics/Types.h:838
uint16_t AssetID
Numeric identifiers for re-useable objects.
Definition: Libraries/Graphics/src/include/Graphics/Types.h:42
PackedColor getPackedColor() const
Definition: Asset.h:365
Pen(const Brush &brush, uint16_t width=1)
Definition: Asset.h:411
ID id() const
Definition: Asset.h:104
TextureBrush(AssetID id, BrushStyle style)
Definition: Asset.h:166
FontStyles style
Definition: Asset.h:458
String getTypeStr() const override
Definition: Asset.h:208
bool operator!=(Color color) const
Definition: Asset.h:338
describes a counted string stored in flash memory
Definition: String.hpp:173
Brush()
Definition: Asset.h:267
bool operator==(ID id) const
Definition: Asset.h:99
The source of colour for drawing.
Definition: Asset.h:252
Timer2Clock::Ticks< uint32_t > read()
Get elapsed watchdog time since last reset.
const Asset * find(AssetID id) const
Definition: Asset.h:760
void write(MetaWriter &meta) const
Definition: Asset.h:487
size_t getLength() const
Definition: Asset.h:701
Definition: resource.h:93
OwnedLinkedObjectListTemplate< Asset > OwnedList
Definition: Asset.h:79
TextAsset(AssetID id, const String &s)
Definition: Asset.h:693
uint8_t baseline() const
Get baseline relative to top of mbox.
Definition: Asset.h:541
Describes glyph bitmap and position.
Definition: resource.h:34
ResourceFont(AssetID id, const Resource::FontResource &font)
Definition: Asset.h:634
Asset(ID id)
Definition: Asset.h:92
void init(IDataSourceStream *stream)
Application calls this method to set source for graphics resourcess.
Pen(Color color, uint16_t width=1)
Definition: Asset.h:415
char read(uint32_t offset) const
Definition: Asset.h:715
PixelFormat
Definition: Colors.h:295
Color color
Definition: Asset.h:392
GradientBrush(AssetID id, BrushStyle style, Color color1, Color color2)
Definition: Asset.h:194
TextAsset(IDataSourceStream *stream)
Definition: Asset.h:676
PixelBuffer unpack(PixelBuffer src, PixelFormat format)
Convert packed colour into RGB.
Interface for a drawing surface.
Definition: Surface.h:41
TextAsset(AssetID id, String &&s)
Definition: Asset.h:697
void write(MetaWriter &meta) const override
Definition: Asset.h:584
virtual PixelFormat getPixelFormat() const
Definition: Asset.h:170
SolidBrush(AssetID id, Color color)
Definition: Asset.h:146
String toString(Graphics::AssetType type)
void write(MetaWriter &meta) const
T * find(AssetID id)
Definition: Asset.h:772
Brush(const Brush &other, PixelFormat format)
Definition: Asset.h:279
Definition: Array.hpp:107
GradientBrush(BrushStyle style, Color color1, Color color2)
Definition: Asset.h:190
Kind getKind() const
Definition: Asset.h:307
Color color
Definition: Asset.h:156
void write(MetaWriter &meta) const override
Definition: Asset.h:729
Brush(PackedColor color)
Definition: Asset.h:284
void setPixelFormat(PixelFormat format)
Definition: Asset.h:298
const Asset * find(AssetType type, AssetID id) const
Definition: Asset.h:767
#define XX(name, comment)
Definition: DirectoryTemplate.h:47
TextAsset(AssetID id, const char *text, size_t length)
Definition: Asset.h:688
constexpr uint8_t getAlpha(Color color)
Definition: Colors.h:257
void store(AssetID id, Pen pen)
Definition: Asset.h:784
Read/write stream using expandable memory buffer.
Definition: MemoryDataStream.h:26
Base Stream class.
Definition: Wiring/Stream.h:32