TurtleBrains  0.3.1
High quality, portable, C++ framework for rapid 2D game development.
tb_graphic.h
1 
9 #ifndef _TurtleBrains_Graphic_h_
10 #define _TurtleBrains_Graphic_h_
11 
12 #include "tb_color.h"
13 #include "tb_texture_manager.h"
14 
15 #include "../math/tb_vector.h"
16 
17 namespace TurtleBrains
18 {
19  namespace Graphics
20  {
24  PixelSpace ScreenWidth(void);
25 
30 
34  float ScreenAspectRatio(void);
35 
40 
45  {
55  };
56 
61  class Graphic
62  {
63  public:
68  Graphic(void);
69 
75  Graphic(const Graphic& other);
76 
80  virtual ~Graphic(void);
81 
86  bool IsActive(void) const;
87 
93  void SetActive(const bool isActive);
94 
99  void Update(const float deltaTime);
100 
105  bool IsVisible(void) const;
106 
112  void SetVisible(const bool isVisible);
113 
118  void Render(void) const;
119 
123  const tbMath::Vector2& GetPosition(void) const;
124 
133  void SetPosition(const float x, const float y);
134 
143  void SetPosition(const tbMath::Vector2& position);
144 
150  void SetOrigin(const AnchorLocation& anchor, const tbMath::Vector2& offset = tbMath::Vector2::Zero());
151 
158  inline void SetOrigin(const float originX, const float originY) { mOrigin.x = originX; mOrigin.y = originY; }
159 
166  inline void SetOrigin(const tbMath::Vector2& origin) { mOrigin = origin; }
167 
171  float GetDepth(void) const;
172 
180  void SetDepth(const float newDepth);
181 
185  inline const tbMath::Vector2& GetScale(void) const { return mScale; }
186 
195  inline void SetScale(const float scale)
196  {
197  tb_error_if(scale < 0.0, "tbExternalError: Cannot set negative scales, perhaps use SetFlipped on the Sprite?");
198  mScale.x = mScale.y = scale;
199  }
200 
210  inline void SetScale(const float scaleX, const float scaleY)
211  {
212  tb_error_if(scaleX < 0.0 || scaleY < 0.0, "tbExternalError: Cannot set negative scales, perhaps use SetFlipped on the Sprite?");
213  mScale.x = scaleX; mScale.y = scaleY;
214  }
215 
219  inline float GetRotation(void) const { return mOrientation; }
220 
227  inline void SetRotation(const float rotation) { mOrientation = rotation; }
228 
234  inline void SetScroll(const float scroll) { mScroll.x = scroll; mScroll.y = scroll; }
235 
244  inline void SetScroll(const float scrollX, const float scrollY) { mScroll.x = scrollX; mScroll.y = scrollY; }
245 
251  bool IsRelative(void) const;
252 
253  //
254  // @details TODO: TurtleBrains: Implementation: Currently this is unimplemented and undocumented, all Graphics
255  // are currently relative.
256  //
257  //void SetRelative(const bool isRelative);
258 
263  const Color& GetColor(void) const;
264 
269  virtual void SetColor(const tbGraphics::Color& newColor);
270 
275  virtual PixelSpace GetPixelWidth(void) const { return 0; }
276 
281  virtual PixelSpace GetPixelHeight(void) const { return 0; }
282 
287  float GetWidth(void) const { return static_cast<float>(GetPixelWidth()); }
288 
293  float GetHeight(void) const { return static_cast<float>(GetPixelHeight()); }
294 
295  protected:
304  virtual void OnUpdate(const float deltaTime);
305 
313  virtual void OnRender(void) const = 0;
314 
319  virtual void ApplyTransform(void) const;
320 
325  virtual void PopTransform(void) const;
326 
327  private:
328  tbMath::Vector2 mPosition;
329  tbMath::Vector2 mScroll;
330  tbMath::Vector2 mOrigin; //0,0 = top-left, 1/2w, 1/2h = center.
331  tbMath::Vector2 mScale;
332  float mOrientation;
333  float mDepthZ;
334  bool mIsActive;
335  bool mIsVisible;
336  bool mIsRelative;
337  Color mColor;
338  };
339 
340  }; /* namespace Graphics */
341 }; /* namespace TurtleBrains */
342 
344 
345 #endif /* _TurtleBrains_Graphic_h_ */
Definition: tb_vector.h:47
void SetPosition(const float x, const float y)
Definition: tb_graphic.h:61
virtual void PopTransform(void) const
float GetHeight(void) const
Definition: tb_graphic.h:293
void SetScroll(const float scrollX, const float scrollY)
Definition: tb_graphic.h:244
This anchor will set the origin to the top and horizontal center of the Sprite.
Definition: tb_graphic.h:48
AnchorLocation
Definition: tb_graphic.h:44
virtual void OnRender(void) const =0
virtual PixelSpace GetPixelWidth(void) const
Definition: tb_graphic.h:275
const tbMath::Vector2 & GetPosition(void) const
Give the GameScene and Entities something to display, Text, Sprites and AnimatedSprites help bring th...
This anchor will set the origin to the center vertically and left most edge of the Sprite...
Definition: tb_graphic.h:50
void SetVisible(const bool isVisible)
void SetActive(const bool isActive)
This anchor will set the origin to the center of the Sprite horizontally and vertically.
Definition: tb_graphic.h:46
PixelSpace ScreenWidth(void)
PixelSpace ScreenHeight(void)
virtual void ApplyTransform(void) const
This anchor will set the origin to the top and right most corner of the Sprite.
Definition: tb_graphic.h:49
void SetOrigin(const tbMath::Vector2 &origin)
Definition: tb_graphic.h:166
This anchor will set the origin to the bottom and left most corner of the Sprite. ...
Definition: tb_graphic.h:52
Here is some information about the primary namespace.
Definition: tb_application_dialog.h:21
void SetScale(const float scaleX, const float scaleY)
Definition: tb_graphic.h:210
static Vector2 Zero(void)
Definition: tb_vector.h:53
This anchor will set the origin to the bottom edge and horizontal center of the Sprite.
Definition: tb_graphic.h:53
Definition: tb_color.h:23
void SetScroll(const float scroll)
Definition: tb_graphic.h:234
This anchor will set the origin to the bottom and right most corner of the Sprite.
Definition: tb_graphic.h:54
void SetOrigin(const float originX, const float originY)
Definition: tb_graphic.h:158
tbCore::uint16 PixelSpace
Definition: tb_texture_manager.h:35
float ScreenAspectRatio(void)
void SetDepth(const float newDepth)
void SetScale(const float scale)
Definition: tb_graphic.h:195
const Color & GetColor(void) const
void Update(const float deltaTime)
float GetRotation(void) const
Definition: tb_graphic.h:219
virtual PixelSpace GetPixelHeight(void) const
Definition: tb_graphic.h:281
This anchor will set the origin to the top-left corner, effectively: SetOrigin(0.0f, 0.0f).
Definition: tb_graphic.h:47
void SetRotation(const float rotation)
Definition: tb_graphic.h:227
virtual void SetColor(const tbGraphics::Color &newColor)
This anchor will set the origin to the center vertically and right most edge of the Sprite...
Definition: tb_graphic.h:51
void SetOrigin(const AnchorLocation &anchor, const tbMath::Vector2 &offset=tbMath::Vector2::Zero())
#define tb_error_if(errorTest, message,...)
Definition: tb_error.h:37
tbMath::Vector2 ScreenCenter(void)
float GetWidth(void) const
Definition: tb_graphic.h:287
virtual void OnUpdate(const float deltaTime)