1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
#pragma once
// Our Assert conflicts with the definitions inside libRocket
#pragma push_macro("Assert")
#undef Assert
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wshadow"
#endif
#include <Rocket/Core.h>
#include <Rocket/Core/Decorator.h>
#include <Rocket/Core/Element.h>
#include <Rocket/Core/Geometry.h>
#include <Rocket/Core/GeometryUtilities.h>
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
#pragma pop_macro("Assert")
namespace scpui {
namespace decorators {
enum class LineStyle {
Solid,
Dashed,
Dotted,
Num_styles
};
class DecoratorUnderline : public Rocket::Core::Decorator {
public:
// Constructor to accept properties
DecoratorUnderline(float line_thickness, LineStyle line_style, float line_length, float line_space, Rocket::Core::Colourb line_color, bool use_element_color);
~DecoratorUnderline() override;
// Called to generate per-element data for newly decorated elements.
Rocket::Core::DecoratorDataHandle GenerateElementData(Rocket::Core::Element* element) override;
// Called to release element-specific data.
void ReleaseElementData(Rocket::Core::DecoratorDataHandle element_data) override;
// Called to render the decorator on an element.
void RenderElement(Rocket::Core::Element* element, Rocket::Core::DecoratorDataHandle element_data) override;
private:
float line_thickness;
LineStyle line_style;
float line_length;
float line_space;
Rocket::Core::Colourb line_color;
bool use_element_color;
};
class DecoratorCornerBorders : public Rocket::Core::Decorator {
public:
// Constructor to accept properties
DecoratorCornerBorders(float border_thickness, float border_length_h, float border_length_v, Rocket::Core::Colourb border_color);
~DecoratorCornerBorders() override;
// Called to generate per-element data for newly decorated elements.
Rocket::Core::DecoratorDataHandle GenerateElementData(Rocket::Core::Element* element) override;
// Called to release element-specific data.
void ReleaseElementData(Rocket::Core::DecoratorDataHandle element_data) override;
// Called to render the decorator on an element.
void RenderElement(Rocket::Core::Element* element, Rocket::Core::DecoratorDataHandle element_data) override;
private:
float border_thickness;
float border_length_h;
float border_length_v;
Rocket::Core::Colourb border_color;
};
} // namespace decorators
} // namespace scpui
|