File: RocketDecorators.h

package info (click to toggle)
freespace2 25.0.0%2Brepack-1
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid
  • size: 47,232 kB
  • sloc: cpp: 657,500; ansic: 22,305; sh: 293; python: 200; makefile: 198; xml: 181
file content (81 lines) | stat: -rw-r--r-- 2,401 bytes parent folder | download
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