Symphony Of Empires
candle.hpp
Go to the documentation of this file.
1 // Symphony of Empires
2 // Copyright (C) 2021, Symphony of Empires contributors
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <https://www.gnu.org/licenses/>.
16 //
17 // ----------------------------------------------------------------------------
18 // Name:
19 // eng3d/ui/candle.hpp
20 //
21 // Abstract:
22 // Does some important stuff.
23 // ----------------------------------------------------------------------------
24 
25 #pragma once
26 
27 #include <cstddef>
28 #include <deque>
29 #include <functional>
30 #include <vector>
31 #include <string>
32 
33 #include "eng3d/ui/widget.hpp"
34 #include "eng3d/rectangle.hpp"
35 
36 namespace UI {
37  class Context;
38 
39  struct CandleData {
40  CandleData() = default;
41  CandleData(float _open, float _close, float _min, float _max)
42  : open{ _open },
43  close{ _close },
44  min{ _min },
45  max{ _max }
46  {
47  assert(open >= min && open <= max);
48  assert(close >= min && close <= max);
49  this->max = glm::max(this->max, glm::max(this->open, this->close));
50  this->min = glm::min(this->min, glm::min(this->open, this->close));
51  }
52  ~CandleData() = default;
53 
54  float open = 0.f;
55  float close = 0.f;
56  float min = 0.f;
57  float max = 0.f;
58  };
59 
62  class CandleChart: public Widget {
63  public:
64  CandleChart(int x, int y, unsigned w, unsigned h, Widget* _parent = nullptr);
65  virtual ~CandleChart() override {}
66  virtual void on_render(Context& ctx, Eng3D::Rect viewport) override;
67  void set_data(std::vector<UI::CandleData> data);
68  private:
69  std::vector<UI::CandleData> data;
70  float max = 1.f, min = 1.f;
71  };
72 }
A graph chart.
Definition: candle.hpp:62
void set_data(std::vector< UI::CandleData > data)
Definition: candle.cpp:47
virtual ~CandleChart() override
Definition: candle.hpp:65
CandleChart(int x, int y, unsigned w, unsigned h, Widget *_parent=nullptr)
Definition: candle.cpp:40
virtual void on_render(Context &ctx, Eng3D::Rect viewport) override
Definition: candle.cpp:60
The UI context that handles all the ui widgets.
Definition: ui.hpp:63
The master widget all the other widgets inherit from, do not use directly instead use one of the many...
Definition: widget.hpp:176
CandleData(float _open, float _close, float _min, float _max)
Definition: candle.hpp:41
CandleData()=default
float open
Definition: candle.hpp:54
float close
Definition: candle.hpp:55
~CandleData()=default