#ifndef LLMR_STYLE_STYLE #define LLMR_STYLE_STYLE #include #include #include #include #include #include #include #include #include #include namespace llmr { class Sprite; class Style { public: struct exception : std::runtime_error { exception(const char *msg) : std::runtime_error(msg) {} }; public: Style(); void reset(); void loadJSON(const uint8_t *const data, size_t bytes); size_t layerCount() const; void cascade(float z); public: std::shared_ptr sprite; // This is static information parsed from the stylesheet. std::map buckets; std::vector layers; std::map classes; // This are applied settings. std::set appliedClasses; struct { BackgroundProperties background; std::map fills; std::map lines; std::map icons; std::map texts; std::map rasters; } computed; }; } #endif