Decorator.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef ROCKETCOREDECORATOR_H
00029 #define ROCKETCOREDECORATOR_H
00030
00031 #include <Rocket/Core/ReferenceCountable.h>
00032 #include <vector>
00033 #include <Rocket/Core/Header.h>
00034 #include <Rocket/Core/Texture.h>
00035 #include <Rocket/Core/Types.h>
00036
00037 namespace Rocket {
00038 namespace Core {
00039
00040 class DecoratorInstancer;
00041 class Element;
00042 class PropertyDictionary;
00043 class Property;
00044 struct Texture;
00045 class TextureResource;
00046
00053 class ROCKETCORE_API Decorator : public ReferenceCountable
00054 {
00055 public:
00056 Decorator();
00057 virtual ~Decorator();
00058
00062 virtual DecoratorDataHandle GenerateElementData(Element* element) = 0;
00065 virtual void ReleaseElementData(DecoratorDataHandle element_data) = 0;
00066
00070 void SetZIndex(float z_index);
00073 float GetZIndex() const;
00074
00077 void SetSpecificity(int specificity);
00081 int GetSpecificity() const;
00082
00086 virtual void RenderElement(Element* element, DecoratorDataHandle element_data) = 0;
00087
00088 protected:
00090 virtual void OnReferenceDeactivate();
00091
00096 int LoadTexture(const String& texture_name, const String& rcss_path);
00100 const Texture* GetTexture(int index = 0) const;
00101
00107 float ResolveProperty(const PropertyDictionary& properties, const String& name, float base_value) const;
00108
00109 private:
00110 DecoratorInstancer* instancer;
00111
00112
00113
00114 float z_index;
00115
00116 int specificity;
00117
00118
00119 std::vector< Texture > textures;
00120
00121 friend class Factory;
00122 };
00123
00124 }
00125 }
00126
00127 #endif