Sat, 05 Oct 2019 23:47:03 +0300
added the settings editor
3 | 1 | #pragma once |
2 | #include <QPointF> | |
3 | #include <QString> | |
4 | #include <QStringView> | |
5 | #include "main.h" | |
6 | #include "colors.h" | |
7 | #include "vertex.h" | |
8 | ||
9 | namespace modelobjects | |
10 | { | |
11 | enum class Property; | |
12 | class BaseObject; | |
13 | class ColoredBaseObject; | |
14 | } | |
15 | ||
16 | enum class modelobjects::Property | |
17 | { | |
18 | Color, | |
19 | Text, | |
20 | Point1, | |
21 | Point2, | |
22 | Point3, | |
23 | Point4, | |
24 | ControlPoint1, | |
25 | ControlPoint2, | |
26 | Position, | |
27 | Transformation, | |
28 | ReferenceName, | |
29 | IsInverted, | |
30 | }; | |
31 | ||
32 | class modelobjects::BaseObject | |
33 | { | |
34 | public: | |
35 | enum class SetPropertyResult | |
36 | { | |
37 | Success = 0, | |
38 | PropertyNotHandled, | |
39 | InvalidValue | |
40 | }; | |
41 | BaseObject(); | |
42 | BaseObject(const BaseObject&) = delete; | |
43 | virtual ~BaseObject(); | |
6 | 44 | const unsigned int id; |
3 | 45 | //virtual void toString(QTextStream &out) = 0; |
46 | virtual bool hasColor() const; | |
47 | virtual QVariant getProperty(Property id) const; | |
48 | virtual SetPropertyResult setProperty(Property id, const QVariant& value); | |
6 | 49 | virtual QString textRepresentation() const = 0; |
50 | virtual QBrush textRepresentationForeground() const; | |
51 | virtual QBrush textRepresentationBackground() const; | |
52 | virtual QFont textRepresentationFont() const; | |
3 | 53 | }; |
54 | ||
55 | class modelobjects::ColoredBaseObject : public BaseObject | |
56 | { | |
57 | public: | |
58 | ColoredBaseObject(const Color color_index = colors::main); | |
59 | bool hasColor() const override final; | |
60 | QVariant getProperty(Property id) const override; | |
61 | SetPropertyResult setProperty(Property id, const QVariant& value) override; | |
62 | private: | |
63 | Color color_index = colors::main; | |
64 | }; | |
6 | 65 | |
66 | namespace modelobjects | |
67 | { | |
68 | using Id = std::remove_const_t<decltype(BaseObject::id)>; | |
69 | } |