OpenLexocad  27.1
PropertyTexture2.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Draw/Texture2.h>
4 #include <Draw/Texture2Transform.h>
5 #include <Draw/TextureCoordinateFunction.h>
6 #include <Draw/TextureCoordinateMapping.h>
7 
8 #include "Core/Property.h"
9 #include "Core/Variant.h"
10 
11 #pragma warning(push)
12 #pragma warning(disable : 4100)
13 #include <string>
14 #pragma warning(pop)
15 
16 namespace Core
17 {
18 class LX_CORE_EXPORT PropertyTexture2 : public Core::Property
19 {
21 
22 public:
23  PropertyTexture2(void);
24  virtual ~PropertyTexture2(void);
25 
26  void setValue(const Draw::Texture2& mat);
27  bool setValueFromVariant(const Core::Variant& value);
28  void copyValue(Core::Property* p);
29 
30  const Draw::Texture2 getValue() const;
31  Core::Variant getVariant(void) const;
32 
33  virtual void save(Base::AbstractWriter& writer, Base::PersistenceVersion& save_version);
34  virtual void restore(Base::AbstractXMLReader& reader, Base::PersistenceVersion& version);
35  virtual bool isEqual(const Property*) const;
36  virtual Core::Property* copy(void) const override;
37  virtual void paste(const Core::Property& from) override;
38 
39 protected:
41 };
42 
43 class LX_CORE_EXPORT PropertyTexture2Transform : public Core::Property
44 {
46 
47 public:
50 
51  void setValue(const Draw::Texture2Transform& ttf, bool calculateTextureScaleFactor = false);
52  bool setValueFromVariant(const Core::Variant& value);
53  void copyValue(Core::Property* p);
54 
55  const Draw::Texture2Transform& getValue() const;
56  Core::Variant getVariant(void) const;
57 
58  void setCalculateTextureScaleFactor(bool onoff);
59  bool isCalculateTextureScaleFactor() const;
60 
61  void save(Base::AbstractWriter& writer, Base::PersistenceVersion& save_version);
63  virtual bool isEqual(const Property*) const;
64  std::shared_ptr<Core::DbgInfo> getDbgInfo() const override;
65  virtual Core::Property* copy(void) const override;
66  virtual void paste(const Core::Property& from) override;
67 
68 protected:
69  Draw::Texture2Transform _texture2Transform;
71 };
72 
73 class LX_CORE_EXPORT PropertyTextureCoordinateMapping : public Core::Property
74 {
76 
77 public:
80 
81  void setValue(const Draw::TextureCoordinateMapping& tcm);
82  bool setValueFromVariant(const Core::Variant& value);
83  void copyValue(Core::Property* p);
84 
85  const Draw::TextureCoordinateMapping& getValue() const;
86  Core::Variant getVariant(void) const;
87 
88  void save(Base::AbstractWriter& writer, Base::PersistenceVersion& save_version);
90  virtual bool isEqual(const Property*) const;
91  virtual Core::Property* copy(void) const override;
92  virtual void paste(const Core::Property& from) override;
93 
94 protected:
95  Draw::TextureCoordinateMapping _textureCoordinateMapping;
96 };
97 
99 {
101 
102 public:
105 
106  void setValue(const Draw::TextureCoordinateFunction& tcf);
107  bool setValueFromVariant(const Core::Variant& value);
108  void copyValue(Core::Property* p);
109 
110  const Draw::TextureCoordinateFunction& getValue() const;
111  Core::Variant getVariant(void) const;
112 
113  void save(Base::AbstractWriter& writer, Base::PersistenceVersion& save_version);
115  virtual bool isEqual(const Property*) const;
116  virtual Core::Property* copy(void) const override;
117  virtual void paste(const Core::Property& from) override;
118 
119 protected:
120  Draw::TextureCoordinateFunction _textureCoordinateFunction;
121 };
122 
123 class LX_CORE_EXPORT PropertyTexture2List : public Core::Property
124 {
126 
127 public:
130 
131  void setValue(const std::map<int, Draw::Texture2>& texList);
132  bool setValueFromVariant(const Core::Variant&) { return false; }
133  void copyValue(Core::Property* p);
134 
135  int addTexture(const Draw::Texture2& tex);
136  bool hasTexture(const Draw::Texture2& tex);
137  void setEmpty();
138 
139  const Draw::Texture2& getTextureById(int id);
140 
141  const std::map<int, Draw::Texture2>& getValue(void) const;
142  Core::Variant getVariant(void) const;
143 
144  virtual void save(Base::AbstractWriter& writer, Base::PersistenceVersion& save_version);
145  virtual void restore(Base::AbstractXMLReader& reader, Base::PersistenceVersion& version);
146 
147  virtual void saveDocFile(Base::AbstractWriter& writer, const Base::String& filename, const Base::String& tmpdir);
148  virtual void restoreDocFile(Base::Reader& reader, const Base::String& tmpdir);
149  virtual bool isEqual(const Property*) const;
150  virtual Core::Property* copy(void) const override;
151  virtual void paste(const Core::Property& from) override;
152 
153 private:
154  std::map<int, Draw::Texture2> _textureMap;
155  Draw::Texture2 _defaultTexture;
156  int _nextAvailableId;
157 };
158 
159 
160 DECLARE_PROPERTY_FACTORY(PropertyTexture2_Factory, Core::PropertyTexture2);
161 DECLARE_PROPERTY_FACTORY(PropertyTexture2Transform_Factory, Core::PropertyTexture2Transform);
162 DECLARE_PROPERTY_FACTORY(PropertyTextureCoordinateMapping_Factory, Core::PropertyTextureCoordinateMapping);
163 DECLARE_PROPERTY_FACTORY(PropertyTextureCoordinateFunction_Factory, Core::PropertyTextureCoordinateFunction);
164 DECLARE_PROPERTY_FACTORY(PropertyTexture2List_Factory, Core::PropertyTexture2List);
165 
166 
167 } // namespace Core
Definition: Persistence.h:14
Definition: PropertyTexture2.h:73
A Utf-16 (windows) or ucs4 (unix) encoded string class.
Definition: String.h:23
LX_CORE_EXPORT Version & version
Draw::TextureCoordinateFunction _textureCoordinateFunction
Definition: PropertyTexture2.h:120
Definition: Variant.h:87
Definition: Writer.h:198
Draw::Texture2Transform _texture2Transform
Definition: PropertyTexture2.h:69
Definition: AbstractXMLReader.h:7
Core::PropertyText filename
Definition: CoreDocument.h:176
Definition: Base.h:12
Definition: PropertyTexture2.h:98
Draw::TextureCoordinateMapping _textureCoordinateMapping
Definition: PropertyTexture2.h:95
Definition: Writer.h:16
Definition: PropertyTexture2.h:123
bool setValueFromVariant(const Core::Variant &)
Definition: PropertyTexture2.h:132
Definition: Property.h:77
Definition: PropertyTexture2.h:18
Definition: PropertyTexture2.h:43
int _textureId
Definition: PropertyTexture2.h:40
TYPESYSTEM_HEADER()
DECLARE_PROPERTY_FACTORY(PropertyAxis1_Factory, Core::PropertyAxis1)
bool _calculateTextureScaleFactor
Definition: PropertyTexture2.h:70