You.i Engine
YiLayoutConfig.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_LAYOUT_CONFIG_H_
3 #define _YI_LAYOUT_CONFIG_H_
4 
6 
7 #include <glm/vec3.hpp>
8 
10 
25 {
26 public:
31  enum GRAVITY
32  {
45  };
46 
52  class CubeOffset
53  {
54  public:
56  CubeOffset(float fOffset) :
57  vStart(fOffset),
58  vEnd(fOffset) {}
59  CubeOffset(const glm::vec3 &vOffset) : vStart(vOffset), vEnd(vOffset) {}
60  static const CubeOffset zeroInstance;
61  static CubeOffset CreateFromPropertiesOf(const IYIPropertiesSource *pSource, const CYIString &keyPrefix, const CubeOffset &defaultValue = zeroInstance);
62 
63  glm::vec3 vStart;
64  glm::vec3 vEnd;
65 
66  inline glm::vec3 GetTotal() const { return vStart + vEnd; }
67  inline float GetTotalX() const
68  {
69  return vStart.x + vEnd.x;
70  }
71  inline float GetTotalY() const
72  {
73  return vStart.y + vEnd.y;
74  }
75  inline float GetTotalZ() const
76  {
77  return vStart.z + vEnd.z;
78  }
79 
80  inline float GetLeft() const
81  {
82  return vStart.x;
83  }
84  inline float GetRight() const
85  {
86  return vEnd.x;
87  }
88  inline float GetTop() const
89  {
90  return vStart.y;
91  }
92  inline float GetBottom() const
93  {
94  return vEnd.y;
95  }
96  inline float GetFront() const
97  {
98  return vStart.z;
99  }
100  inline float GetBack() const
101  {
102  return vEnd.z;
103  }
104  };
105 
107 
116  {
117  public:
118  SizeConstraint() : fMinimum(-1.0f), fPreferred(-1.0f), fMaximum(-1.0f), bFillParent(false), bFitContent(false) {}
119 
120  float fMinimum;
121  float fPreferred;
122  float fMaximum;
125  };
126 
133  {
134  public:
135  SizeConstraints() : bMaintainAspectRatio(false) {}
137 
141 
143  };
144 
145  CYILayoutConfig();
146  virtual ~CYILayoutConfig();
147 
153  virtual void ConfigureFrom(const IYIPropertiesSource *pSource);
154 
155 
162  void SetSizeConstraints(const SizeConstraints &sizeConstraints);
163 
164  inline const SizeConstraints &GetSizeConstraints() const;
165 
166 
172  void SetMargin(const Margin &margin);
173 
174  inline const Margin &GetMargin() const;
175 
181  void SetLayoutable(bool bLayoutable);
182 
183  inline bool IsLayoutable() const;
184 
185 
199  void SetItemGravity(const glm::vec3 &vItemGravity);
200 
207  void SetItemGravity(GRAVITY eItemGravity);
208 
209  inline const glm::vec3 &GetItemGravity() const;
210 
211 
219  void SetIsBackground(bool bBackground);
220 
221  inline bool IsBackground() const;
222 
234  static void RemoveSuffixFromNumber(CYIString &inOutNumber, CYIString &outSuffix);
235 
243  static bool ParseBooleanValue(const CYIString &value);
244 
250  static float ParseFloatValue(const CYIString &value);
251 
259  static uint32_t ParseTimeValue(const CYIString &value);
260 
268  static float ParseLengthValue(const CYIString &length);
269 
273  static glm::vec3 ReadGravityFrom(const CYIString &key, const IYIPropertiesSource *pSource, const glm::vec3 &vDefault);
274 
278  static glm::vec3 GetGravityVectorFor(GRAVITY eGravity);
279 
280 private:
284  static void ReadSizeConstraintFrom(const IYIPropertiesSource *pSource, const CYIString &key, SizeConstraint *pConstraint);
285 
286  bool m_bLayoutable;
287  bool m_bBackground;
288  SizeConstraints m_sizeConstraints;
289  Margin m_margin;
290  glm::vec3 m_vItemGravity;
291 
292  YI_TYPE_BASES_WITH_SCRIPTABLE_BASE(CYILayoutConfig)
293 };
294 
298 {
299  return m_sizeConstraints;
300 }
301 
303 {
304  return m_margin;
305 }
306 
307 inline bool CYILayoutConfig::IsLayoutable() const
308 {
309  return m_bLayoutable;
310 }
311 
312 inline const glm::vec3 &CYILayoutConfig::GetItemGravity() const
313 {
314  return m_vItemGravity;
315 }
316 
318 {
319  return m_bBackground;
320 }
321 
322 #endif // _YI_LAYOUT_CONFIG_H_
float GetBottom() const
Definition: YiLayoutConfig.h:92
float GetLeft() const
Definition: YiLayoutConfig.h:80
The base class for an C++ object that has RTTI information and is accesible from script source code...
Definition: YiScriptableRTTIObject.h:28
SizeConstraint height
Definition: YiLayoutConfig.h:139
float fMaximum
Definition: YiLayoutConfig.h:122
float GetTotalY() const
Definition: YiLayoutConfig.h:71
void SetMargin(const Margin &margin)
static float ParseLengthValue(const CYIString &length)
SizeConstraints()
Definition: YiLayoutConfig.h:135
const Margin & GetMargin() const
Definition: YiLayoutConfig.h:302
static glm::vec3 GetGravityVectorFor(GRAVITY eGravity)
A class used to hold a 3D &#39;cube offset&#39;.
Definition: YiLayoutConfig.h:52
bool bFitContent
Definition: YiLayoutConfig.h:124
void SetItemGravity(const glm::vec3 &vItemGravity)
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
CubeOffset(float fOffset)
Definition: YiLayoutConfig.h:56
bool IsBackground() const
Definition: YiLayoutConfig.h:317
SizeConstraint width
Definition: YiLayoutConfig.h:138
void SetIsBackground(bool bBackground)
static const SizeConstraints defaultInstance
Definition: YiLayoutConfig.h:136
glm::vec3 vEnd
Definition: YiLayoutConfig.h:64
float GetTop() const
Definition: YiLayoutConfig.h:88
Aligns the bottom edge of the child with the bottom edge of the container.
Definition: YiLayoutConfig.h:38
Indicates that the existing position of the child will be retained.
Definition: YiLayoutConfig.h:33
Aligns the right edge of the child with the right edge of the container.
Definition: YiLayoutConfig.h:36
Aligns the front edge of the child with the front edge of the container.
Definition: YiLayoutConfig.h:39
CubeOffset Margin
Definition: YiLayoutConfig.h:106
Centers the child in the container.
Definition: YiLayoutConfig.h:34
float GetFront() const
Definition: YiLayoutConfig.h:96
A class used to hold a size constraint for a specific dimension.
Definition: YiLayoutConfig.h:115
bool bMaintainAspectRatio
Definition: YiLayoutConfig.h:142
Aligns the top edge of the child with the top edge of the container.
Definition: YiLayoutConfig.h:37
static bool ParseBooleanValue(const CYIString &value)
CubeOffset()
Definition: YiLayoutConfig.h:55
glm::vec3 vStart
Definition: YiLayoutConfig.h:63
static uint32_t ParseTimeValue(const CYIString &value)
float GetTotalZ() const
Definition: YiLayoutConfig.h:75
SizeConstraint()
Definition: YiLayoutConfig.h:118
A class used to hold node-specific layout configuration (such as, for example, Margin).
Definition: YiLayoutConfig.h:24
virtual void ConfigureFrom(const IYIPropertiesSource *pSource)
static float ParseFloatValue(const CYIString &value)
void SetLayoutable(bool bLayoutable)
static glm::vec3 ReadGravityFrom(const CYIString &key, const IYIPropertiesSource *pSource, const glm::vec3 &vDefault)
GRAVITY
Definition: YiLayoutConfig.h:31
static void RemoveSuffixFromNumber(CYIString &inOutNumber, CYIString &outSuffix)
CubeOffset(const glm::vec3 &vOffset)
Definition: YiLayoutConfig.h:59
An interface to a class that provides key-value properties.
Definition: YiPropertiesSource.h:17
float GetTotalX() const
Definition: YiLayoutConfig.h:67
Aligns the bottom-right corner of the child with the bottom-right corner of the container.
Definition: YiLayoutConfig.h:44
float fMinimum
Definition: YiLayoutConfig.h:120
const SizeConstraints & GetSizeConstraints() const
Definition: YiLayoutConfig.h:297
float GetBack() const
Definition: YiLayoutConfig.h:100
A class used to hold the size constraint for each of the 3 dimensions. A flag that indicates if the w...
Definition: YiLayoutConfig.h:132
static CubeOffset CreateFromPropertiesOf(const IYIPropertiesSource *pSource, const CYIString &keyPrefix, const CubeOffset &defaultValue=zeroInstance)
float GetRight() const
Definition: YiLayoutConfig.h:84
static const CubeOffset zeroInstance
Definition: YiLayoutConfig.h:60
SizeConstraint depth
Definition: YiLayoutConfig.h:140
const glm::vec3 & GetItemGravity() const
Definition: YiLayoutConfig.h:312
bool bFillParent
Definition: YiLayoutConfig.h:123
void SetSizeConstraints(const SizeConstraints &sizeConstraints)
Aligns the back edge of the child with the back edge of the container.
Definition: YiLayoutConfig.h:40
virtual ~CYILayoutConfig()
glm::vec3 GetTotal() const
Definition: YiLayoutConfig.h:66
float fPreferred
Definition: YiLayoutConfig.h:121
Aligns the left edge of the child with the left edge of the container.
Definition: YiLayoutConfig.h:35
Aligns the top-right corner of the child with the top-right corner of the container.
Definition: YiLayoutConfig.h:42
Aligns the bottom-left corner of the child with the bottom-left corner of the container.
Definition: YiLayoutConfig.h:43
bool IsLayoutable() const
Definition: YiLayoutConfig.h:307
Aligns the top-left corner of the child with the top-left corner of the container.
Definition: YiLayoutConfig.h:41