Simulant  21.12-574
A portable game engine for Windows, OSX, Linux, Dreamcast, and PSP
progress_bar.h
1 #pragma once
2 
3 #include "widget.h"
4 
5 namespace smlt {
6 namespace ui {
7 
8 enum ProgressBarMode {
9  PROGRESS_BAR_MODE_PULSE,
10  PROGRESS_BAR_MODE_FRACTION
11 };
12 
14  public Widget {
15 
16 public:
17  using Widget::init; // Pull in init to satisfy Managed<Button>
18  using Widget::clean_up;
19 
20  ProgressBar(UIManager* owner, UIConfig* config, Stage *stage);
21  virtual ~ProgressBar();
22 
23  void pulse();
24  void set_pulse_step(Px value);
25  void set_pulse_fraction(float value);
26 
27  void set_fraction(float fraction);
28  void set_value(float value);
29  void set_range(float min, float max);
30 
31  float value() const;
32  float min() const;
33  float max() const;
34 
35  ProgressBarMode current_mode() const { return mode_; }
36 
37  void update(float dt) override;
38 private:
39  ProgressBarMode mode_ = PROGRESS_BAR_MODE_FRACTION;
40 
41  float value_ = 0.0f;
42  float min_ = 0.0f;
43  float max_ = 100.0f;
44 
45  float pulse_position_ = 0.0f;
46  float pulse_step_ = 300.0f;
47  float pulse_fraction_ = 0.33f;
48  bool pulse_right_ = true;
49  float pulse_width_ = 1.0f;
50  float fraction_ = 0.0f;
51 
52  bool needs_refresh_ = true;
53 
54  void refresh_pulse(float dt);
55  void refresh_fraction();
56  void refresh_bar(float dt);
57 
58  WidgetBounds calculate_foreground_size(const UIDim& content_dimensions) const override;
59 };
60 
61 }
62 }
smlt::ui::UIManager
Definition: ui_manager.h:55
smlt::Stage
Definition: stage.h:80
smlt
Definition: animation.cpp:25
smlt::ui::Widget
Definition: widget.h:85
smlt::ui::UIConfig
Definition: ui_config.h:244
smlt::ui::Px
Definition: ui_config.h:42
smlt::ui::Widget::WidgetBounds
Definition: widget.h:293
smlt::ui::ProgressBar
Definition: progress_bar.h:14
smlt::ui::UIDim
Definition: ui_config.h:192