CUGL
Cornell University Game Library
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends
CUProgressBar.h
1 //
2 // CUProgressBar.h
3 // Cornell University Game Library (CUGL)
4 //
5 // This module provides support for a simple progress bar, which is useful
6 // for displaying things such as asset loading.
7 //
8 // This class uses our standard shared-pointer architecture.
9 //
10 // 1. The constructor does not perform any initialization; it just sets all
11 // attributes to their defaults.
12 //
13 // 2. All initialization takes place via init methods, which can fail if an
14 // object is initialized more than once.
15 //
16 // 3. All allocation takes place via static constructors which return a shared
17 // pointer.
18 //
19 // CUGL zlib License:
20 // This software is provided 'as-is', without any express or implied
21 // warranty. In no event will the authors be held liable for any damages
22 // arising from the use of this software.
23 //
24 // Permission is granted to anyone to use this software for any purpose,
25 // including commercial applications, and to alter it and redistribute it
26 // freely, subject to the following restrictions:
27 //
28 // 1. The origin of this software must not be misrepresented; you must not
29 // claim that you wrote the original software. If you use this software
30 // in a product, an acknowledgment in the product documentation would be
31 // appreciated but is not required.
32 //
33 // 2. Altered source versions must be plainly marked as such, and must not
34 // be misrepresented as being the original software.
35 //
36 // 3. This notice may not be removed or altered from any source distribution.
37 //
38 // Author: Walker White
39 // Version: 1/8/17
40 //
41 #ifndef __CU_PROGRESS_BAR_H__
42 #define __CU_PROGRESS_BAR_H__
43 #include <cugl/2d/CUNode.h>
44 #include <cugl/2d/CUPolygonNode.h>
45 
46 namespace cugl {
47 
60 class ProgressBar: public Node {
61 protected:
63  float _progress;
66 
68  std::shared_ptr<PolygonNode> _background;
70  std::shared_ptr<PolygonNode> _foreground;
72  std::shared_ptr<PolygonNode> _begincap;
74  std::shared_ptr<PolygonNode> _finalcap;
75 
76 public:
77 #pragma mark -
78 #pragma mark Constructors
79 
87  ProgressBar() : _progress(1.0f) {}
88 
93 
104  virtual void dispose() override;
105 
114  virtual bool init() override {
115  CUAssertLog(false,"This node does not support the empty initializer");
116  return false;
117  }
118 
130  bool init(const Size& size) {
131  return initWithCaps(nullptr,nullptr,nullptr,nullptr,size);
132  }
133 
146  bool init(const std::shared_ptr<Texture>& background) {
147  return initWithCaps(background,nullptr,nullptr,nullptr);
148  }
149 
163  bool init(const std::shared_ptr<Texture>& background, const Size& size) {
164  return initWithCaps(background,nullptr,nullptr,nullptr,size);
165  }
166 
179  bool init(const std::shared_ptr<Texture>& background,
180  const std::shared_ptr<Texture>& foreground) {
181  return initWithCaps(background,foreground,nullptr,nullptr);
182  }
183 
197  bool init(const std::shared_ptr<Texture>& background,
198  const std::shared_ptr<Texture>& foreground,
199  const Size& size) {
200  return initWithCaps(background,foreground,nullptr,nullptr,size);
201  }
202 
217  bool initWithCaps(const std::shared_ptr<Texture>& background,
218  const std::shared_ptr<Texture>& foreground,
219  const std::shared_ptr<Texture>& beginCap,
220  const std::shared_ptr<Texture>& finalCap);
221 
237  bool initWithCaps(const std::shared_ptr<Texture>& background,
238  const std::shared_ptr<Texture>& foreground,
239  const std::shared_ptr<Texture>& beginCap,
240  const std::shared_ptr<Texture>& finalCap,
241  const Size& size);
242 
243 #pragma mark -
244 #pragma mark Static Constructors
245 
256  static std::shared_ptr<ProgressBar> alloc(const Size& size) {
257  std::shared_ptr<ProgressBar> node = std::make_shared<ProgressBar>();
258  return (node->init(size) ? node : nullptr);
259  }
260 
273  static std::shared_ptr<ProgressBar> alloc(const std::shared_ptr<Texture>& background) {
274  std::shared_ptr<ProgressBar> node = std::make_shared<ProgressBar>();
275  return (node->init(background) ? node : nullptr);
276  }
277 
291  static std::shared_ptr<ProgressBar> alloc(const std::shared_ptr<Texture>& background, const Size& size) {
292  std::shared_ptr<ProgressBar> node = std::make_shared<ProgressBar>();
293  return (node->init(background,size) ? node : nullptr);
294  }
295 
308  static std::shared_ptr<ProgressBar> alloc(const std::shared_ptr<Texture>& background,
309  const std::shared_ptr<Texture>& foreground) {
310  std::shared_ptr<ProgressBar> node = std::make_shared<ProgressBar>();
311  return (node->init(background,foreground) ? node : nullptr);
312  }
313 
327  static std::shared_ptr<ProgressBar> alloc(const std::shared_ptr<Texture>& background,
328  const std::shared_ptr<Texture>& foreground,
329  const Size& size) {
330  std::shared_ptr<ProgressBar> node = std::make_shared<ProgressBar>();
331  return (node->init(background,foreground,size) ? node : nullptr);
332  }
333 
348  static std::shared_ptr<ProgressBar> allocWithCaps(const std::shared_ptr<Texture>& background,
349  const std::shared_ptr<Texture>& foreground,
350  const std::shared_ptr<Texture>& beginCap,
351  const std::shared_ptr<Texture>& finalCap) {
352  std::shared_ptr<ProgressBar> node = std::make_shared<ProgressBar>();
353  return (node->initWithCaps(background,foreground,beginCap,finalCap) ? node : nullptr);
354  }
355 
371  static std::shared_ptr<ProgressBar> allocWithCaps(const std::shared_ptr<Texture>& background,
372  const std::shared_ptr<Texture>& foreground,
373  const std::shared_ptr<Texture>& beginCap,
374  const std::shared_ptr<Texture>& finalCap,
375  const Size& size) {
376  std::shared_ptr<ProgressBar> node = std::make_shared<ProgressBar>();
377  return (node->initWithCaps(background,foreground,beginCap,finalCap,size) ? node : nullptr);
378  }
379 
380 #pragma mark -
381 #pragma mark Properties
382 
390  float getProgress() const { return _progress; }
391 
400  void setProgress(float progress);
401 
410  Color4 getBackgroundColor() const { return _background->getColor(); }
411 
420  void setBackgroundColor(Color4 color) { _background->setColor(color); }
421 
431  Color4 getForegroundColor() const { return _foreground->getColor(); }
432 
442  void setForegroundColor(Color4 color);
443 };
444 
445 }
446 
447 #endif /* __CU_PROGRESS_BAR_H__ */
Definition: CUSize.h:57
static std::shared_ptr< ProgressBar > alloc(const std::shared_ptr< Texture > &background, const std::shared_ptr< Texture > &foreground)
Definition: CUProgressBar.h:308
bool init(const std::shared_ptr< Texture > &background, const std::shared_ptr< Texture > &foreground)
Definition: CUProgressBar.h:179
bool init(const Size &size)
Definition: CUProgressBar.h:130
static std::shared_ptr< ProgressBar > allocWithCaps(const std::shared_ptr< Texture > &background, const std::shared_ptr< Texture > &foreground, const std::shared_ptr< Texture > &beginCap, const std::shared_ptr< Texture > &finalCap, const Size &size)
Definition: CUProgressBar.h:371
void setForegroundColor(Color4 color)
std::shared_ptr< PolygonNode > _finalcap
Definition: CUProgressBar.h:74
virtual void dispose() override
Size _foresize
Definition: CUProgressBar.h:65
float getProgress() const
Definition: CUProgressBar.h:390
bool init(const std::shared_ptr< Texture > &background)
Definition: CUProgressBar.h:146
bool initWithCaps(const std::shared_ptr< Texture > &background, const std::shared_ptr< Texture > &foreground, const std::shared_ptr< Texture > &beginCap, const std::shared_ptr< Texture > &finalCap)
Definition: CUNode.h:92
Color4 getForegroundColor() const
Definition: CUProgressBar.h:431
bool init(const std::shared_ptr< Texture > &background, const std::shared_ptr< Texture > &foreground, const Size &size)
Definition: CUProgressBar.h:197
static std::shared_ptr< ProgressBar > alloc(const std::shared_ptr< Texture > &background, const Size &size)
Definition: CUProgressBar.h:291
std::shared_ptr< PolygonNode > _foreground
Definition: CUProgressBar.h:70
static std::shared_ptr< ProgressBar > alloc(const std::shared_ptr< Texture > &background, const std::shared_ptr< Texture > &foreground, const Size &size)
Definition: CUProgressBar.h:327
Color4 getBackgroundColor() const
Definition: CUProgressBar.h:410
float _progress
Definition: CUProgressBar.h:63
Definition: CUProgressBar.h:60
virtual bool init() override
Definition: CUProgressBar.h:114
static std::shared_ptr< ProgressBar > allocWithCaps(const std::shared_ptr< Texture > &background, const std::shared_ptr< Texture > &foreground, const std::shared_ptr< Texture > &beginCap, const std::shared_ptr< Texture > &finalCap)
Definition: CUProgressBar.h:348
std::shared_ptr< PolygonNode > _begincap
Definition: CUProgressBar.h:72
std::shared_ptr< PolygonNode > _background
Definition: CUProgressBar.h:68
ProgressBar()
Definition: CUProgressBar.h:87
Definition: CUColor4.h:1104
static std::shared_ptr< ProgressBar > alloc(const std::shared_ptr< Texture > &background)
Definition: CUProgressBar.h:273
Definition: CUAnimationNode.h:52
void setBackgroundColor(Color4 color)
Definition: CUProgressBar.h:420
static std::shared_ptr< ProgressBar > alloc(const Size &size)
Definition: CUProgressBar.h:256
~ProgressBar()
Definition: CUProgressBar.h:92
void setProgress(float progress)
bool init(const std::shared_ptr< Texture > &background, const Size &size)
Definition: CUProgressBar.h:163