TurtleBrains  0.3.5
High quality, portable, C++ framework for rapid 2D game development.
tb_graphic_list.hpp
1 
9 #ifndef TurtleBrains_GraphicList_hpp
10 #define TurtleBrains_GraphicList_hpp
11 
12 #include <turtle_brains/graphics/tb_graphic.hpp>
13 #include <turtle_brains/core/tb_hybrid_owned_pointer.hpp>
14 
15 #include <list>
16 
17 namespace TurtleBrains::Graphics
18 {
19 
26  class GraphicList : public Graphic, public tbCore::Noncopyable
27  {
28  public:
33  GraphicList(void);
34 
39  virtual ~GraphicList(void);
40 
45  void ClearGraphics(void);
46 
55  void AddGraphic(Graphic* graphic);
56 
62  void AddGraphic(std::unique_ptr<Graphic>&& graphic);
63 
69  void AddGraphic(Graphic& graphic);
70 
76  void RemoveGraphic(Graphic* graphic);
77 
86  void SetOrigin(const AnchorLocation& anchor, const float offsetX, const float offsetY) { Graphic::SetOrigin(anchor, offsetX, offsetY); }
87 
96  void SetOrigin(const AnchorLocation& anchor, const tbMath::Vector2& offset = tbMath::Vector2::Zero()) { Graphic::SetOrigin(anchor, offset); }
97 
106  void SetOrigin(const float originX, const float originY) { Graphic::SetOrigin(originX, originY); }
107 
116  void SetOrigin(const tbMath::Vector2& origin) { Graphic::SetOrigin(origin); }
117 
121  virtual void SetColor(const tbGraphics::Color& newColor) override;
122 
123  virtual PixelSpace GetPixelWidth(void) const override { return mPixelWidth; }
124  virtual PixelSpace GetPixelHeight(void) const override { return mPixelHeight; }
125 
135 
136  protected:
141  virtual void OnUpdate(const float deltaTime) override;
142 
151  virtual void OnRender(void) const override;
152 
153  private:
155  using GraphicContainer = std::list<HybridGraphicPtr>;
156 
157  // reference-reference is also known as r-value.
158  void ReallyAddGraphic(HybridGraphicPtr&& graphic);
159 
160  void SetScroll(const float scroll) { SetScroll(scroll, scroll); }
161  void SetScroll(const float scrollX, const float scrollY)
162  {
163  for (HybridGraphicPtr& graphic : mGraphics)
164  {
165  graphic->SetScroll(scrollX, scrollY);
166  }
167  Graphic::SetScroll(0.0f, 0.0f);
168  }
169 
170  GraphicContainer mGraphics;
171 
172  PixelSpace mPixelWidth;
173  PixelSpace mPixelHeight;
174  };
175 
176 }; /* namespace TurtleBrains::Graphics */
177 
179 
180 #endif /* TurtleBrains_Graphic_hpp */
Definition: tb_hybrid_owned_pointer.hpp:21
Definition: tb_noncopyable.hpp:21
Definition: tb_color.hpp:24
Definition: tb_graphic.hpp:50
void SetOrigin(const AnchorLocation &anchor, const float offsetX, const float offsetY)
void SetScroll(const float scroll)
Definition: tb_graphic.hpp:252
Definition: tb_graphic_list.hpp:27
void AddGraphic(Graphic &graphic)
void SetOrigin(const tbMath::Vector2 &origin)
Definition: tb_graphic_list.hpp:116
void SetOrigin(const AnchorLocation &anchor, const tbMath::Vector2 &offset=tbMath::Vector2::Zero())
Definition: tb_graphic_list.hpp:96
virtual PixelSpace GetPixelWidth(void) const override
Definition: tb_graphic_list.hpp:123
void SetOrigin(const AnchorLocation &anchor, const float offsetX, const float offsetY)
Definition: tb_graphic_list.hpp:86
void AddGraphic(std::unique_ptr< Graphic > &&graphic)
virtual void SetColor(const tbGraphics::Color &newColor) override
virtual PixelSpace GetPixelHeight(void) const override
Definition: tb_graphic_list.hpp:124
void SetOrigin(const float originX, const float originY)
Definition: tb_graphic_list.hpp:106
void AddGraphic(Graphic *graphic)
void RemoveGraphic(Graphic *graphic)
virtual void OnUpdate(const float deltaTime) override
virtual void OnRender(void) const override
Definition: tb_vector.hpp:99
static TypedVector2 Zero(void)
Definition: tb_vector.hpp:104
Give the GameScene and Entities something to display, Text, Sprites and AnimatedSprites help bring th...
Anchor
Definition: tb_anchor_location.hpp:22
tbCore::uint16 PixelSpace
Definition: tb_texture_manager.hpp:34