You.i Engine
YiViewTemplate.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_VIEW_TEMPLATE_H_
3 #define _YI_VIEW_TEMPLATE_H_
4 
6 #include "animation/YiTimeline.h"
9 #include "framework/YiPredef.h"
11 #include "utility/YiString.h"
13 
15 class CYIColor;
16 class CYISceneView;
17 
22 
23 
32 {
33  friend class CYISceneView;
34 
35 public:
36  static const uint32_t DEFAULT_TIMELINE_INDEX;
37 
41  class Source
42  {
43  public:
47  enum TYPE
48  {
59  };
60 
61  Source();
62 
63  const CYIString &GetName() const;
64  void SetName(const CYIString &name);
65  TYPE GetSourceType() const;
66  void SetSourceType(TYPE eSourceType);
67 
68  private:
69  CYIString m_name;
70  TYPE m_sourceType;
71  };
72 
73  virtual ~CYIViewTemplate() {}
74 
82  static std::shared_ptr<CYIAssetViewTemplate> GetViewTemplate(const CYIString &viewTemplateName);
83 
93  static glm::vec2 GetViewTemplateSize(const CYIString &viewTemplateName);
94 
110  std::unique_ptr<CYISceneView> BuildView(CYISceneManager *pSceneManager, const std::shared_ptr<CYIAssetViewTemplate> &pAssetViewTemplate);
111 
117  virtual void SetTimelineSource(uint32_t uTimelineHandle, std::shared_ptr<CYIAssetTimelineSource> pTimelineSource) = 0;
118 
124  virtual std::shared_ptr<CYIAssetTimelineSource> GetTimelineSource(uint32_t uTimelineHandle) = 0;
125 
129  virtual std::unique_ptr<CYITimeline> BuildTimeline(CYISceneNode *pRootNode) = 0;
130 
138  virtual std::unique_ptr<CYITimeline> BuildTimeline(CYISceneNode *pRootNode, const CYIString &markerName) = 0;
139 
147  virtual std::unique_ptr<CYITimeline> BuildTimeline(CYISceneNode *pRootNode, CYIMarkerData::MARKER_ID eID) = 0;
148 
154  virtual std::unique_ptr<CYITimeline> BuildTimeline(CYISceneNode *pRootNode, int32_t nStartOffset, int32_t nDuration) = 0;
155 
159  virtual std::unique_ptr<CYITimeline> BuildTimeline(CYISceneNode *pRootNode, uint32_t uTimelineHandle) = 0;
160 
168  virtual std::unique_ptr<CYITimeline> BuildTimeline(CYISceneNode *pRootNode, uint32_t uTimelineHandle, const CYIString &markerName) = 0;
169 
177  virtual std::unique_ptr<CYITimeline> BuildTimeline(CYISceneNode *pRootNode, uint32_t uTimelineHandle, CYIMarkerData::MARKER_ID eID) = 0;
178 
184  virtual std::unique_ptr<CYITimeline> BuildTimeline(CYISceneNode *pRootNode, uint32_t uTimelineHandle, int32_t nStartOffset, int32_t nDuration) = 0;
185 
191  virtual void GetSize(float &fWidth, float &fHeight) = 0;
192 
198  virtual float GetHeight() = 0;
199 
205  virtual float GetWidth() = 0;
206 
210  virtual float GetDefaultCameraDistance();
211 
215  virtual CYIString GetName() const = 0;
216 
220  virtual const CYIString &GetViewClassName() const = 0;
221 
225  virtual bool GetBackgroundColor(CYIColor *pColor) = 0;
226 
227  virtual bool GetProperty(const CYIString &propertyName, CYIString *pValue) const override = 0;
228 
229  virtual const std::map<CYIString, CYIString> &GetProperties() const override = 0;
230 
236  virtual const std::vector<CYIString> &GetChildTemplateNames() = 0;
237 
241  virtual int32_t GetApproximateSize() const = 0;
242 
246  virtual std::vector<Source> GetSources() const = 0;
247 
248 protected:
250 
251 private:
252  virtual bool BuildTree(CYISceneNode *pRootNode, const CYIString &path, CYISceneManager::MISSING_CLASS_HANDLING_MODE eMissingHandlingMode = CYISceneManager::ABORT) = 0;
253 
254  YI_TYPE_BASES_WITH_SCRIPTABLE_BASE(CYIViewTemplate)
255 };
256 
259 #endif // _YI_VIEW_TEMPLATE_H_
virtual void SetTimelineSource(uint32_t uTimelineHandle, std::shared_ptr< CYIAssetTimelineSource > pTimelineSource)=0
Represents a font source.
Definition: YiViewTemplate.h:58
The base class for an C++ object that has RTTI information and is accesible from script source code...
Definition: YiScriptableRTTIObject.h:28
Represents a sprite source.
Definition: YiViewTemplate.h:56
virtual const std::vector< CYIString > & GetChildTemplateNames()=0
static std::shared_ptr< CYIAssetViewTemplate > GetViewTemplate(const CYIString &viewTemplateName)
virtual const std::map< CYIString, CYIString > & GetProperties() const override=0
Scene trees composed of CYISceneNode objects are registered with the scene manager in order for them ...
Definition: YiSceneManager.h:73
The base class for all view types. Views are containers of renderable elements that often define inte...
Definition: YiSceneView.h:47
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
virtual std::unique_ptr< CYITimeline > BuildTimeline(CYISceneNode *pRootNode)=0
Defines information about the sources a view template may have.
Definition: YiViewTemplate.h:41
virtual ~CYIViewTemplate()
Definition: YiViewTemplate.h:73
Represents an adjustment layer source.
Definition: YiViewTemplate.h:57
Represents a composition source.
Definition: YiViewTemplate.h:49
virtual std::shared_ptr< CYIAssetTimelineSource > GetTimelineSource(uint32_t uTimelineHandle)=0
static glm::vec2 GetViewTemplateSize(const CYIString &viewTemplateName)
virtual void GetSize(float &fWidth, float &fHeight)=0
virtual float GetWidth()=0
const CYIString & GetName() const
MARKER_ID
Definition: YiMarkerData.h:36
virtual int32_t GetApproximateSize() const =0
virtual float GetHeight()=0
A view template defines information about a view, so it can be built automatically.
Definition: YiViewTemplate.h:31
A scene node is the base type for all nodes which are used by the scene manager; it is an integral pa...
Definition: YiSceneNode.h:114
Represents a mask source.
Definition: YiViewTemplate.h:54
ViewTemplate asset. Wrapper around a CYIViewTemplate.
Definition: YiAssetViewTemplate.h:21
Represents a null source.
Definition: YiViewTemplate.h:52
CYIViewTemplate()
Definition: YiViewTemplate.h:249
virtual std::vector< Source > GetSources() const =0
virtual const CYIString & GetViewClassName() const =0
Definition: YiSceneManager.h:144
void SetSourceType(TYPE eSourceType)
Represents a source that has no type.
Definition: YiViewTemplate.h:55
virtual bool GetProperty(const CYIString &propertyName, CYIString *pValue) const override=0
An interface to a class that provides key-value properties.
Definition: YiPropertiesSource.h:17
Represents an image 9-patch source.
Definition: YiViewTemplate.h:53
std::unique_ptr< CYISceneView > BuildView(CYISceneManager *pSceneManager, const std::shared_ptr< CYIAssetViewTemplate > &pAssetViewTemplate)
TYPE
Definition: YiViewTemplate.h:47
Represents a solid source.
Definition: YiViewTemplate.h:51
static const uint32_t DEFAULT_TIMELINE_INDEX
Definition: YiViewTemplate.h:36
A class used to represent a color value.
Definition: YiColor.h:31
virtual float GetDefaultCameraDistance()
virtual bool GetBackgroundColor(CYIColor *pColor)=0
void SetName(const CYIString &name)
MISSING_CLASS_HANDLING_MODE
Optional fallback rules for missing view types during scene loading.
Definition: YiSceneManager.h:142
TYPE GetSourceType() const
Represents an image source.
Definition: YiViewTemplate.h:50