guit  0.1
 All Classes Functions Variables Typedefs Enumerations Friends
gfloat.hpp
1 //
2 // Float Prop
3 // Guit GUI Toolkit
4 // Copyright © 2019/2020 Eric Lecolinet. All rights reserved.
5 // http://www.telecom-paris.fr/~elc
6 //
7 
8 #ifndef GuitFloat_hpp
9 #define GuitFloat_hpp
10 #include <gnumber.hpp>
11 namespace guit {
12 
14 class GFloat : public GNumber_<float> {
15 public:
16  using Super = GNumber_<float> ;
17 
18  GFloat();
19  GFloat(float value);
20  GFloat(float value, float min, float max = highest());
21  GFloat(GFloat const& value);
22  GFloat(GString const& value);
23  GFloat* clone(bool copy_value) const override;
24 
25  GFloat* toFloat() override {return this;}
26 
28  auto operator~() {return GNumPropRef_<GFloat>(*this);}
29 
32 
33  GFloat& setRange(float min, float max) {Super::setRange(min,max); return *this;}
34  GFloat& setRangeF(float min, float max) override {Super::setRange(min,max); return *this;}
35 
36  GFloat& operator=(float value) {set(value,false); return *this;}
37  GFloat& operator=(GFloat const& value) {set(value,false); return *this;}
38  GFloat& operator=(GString const& value) {set(value); return *this;}
39 
40  GFloat& operator++() {increase(); return *this;}
41  GFloat& operator++(int) {increase(); return *this;}
42  GFloat& operator--() {increase(); return *this;}
43  GFloat& operator--(int) {increase(); return *this;}
44  GFloat& operator+=(float delta) {increase(delta); return *this;}
45  GFloat& operator-=(float delta) {increase(-delta); return *this;}
46 
47  using Super::increase;
48  void increase() override {increase(+1.f);}
49  void decrease() override {increase(-1.f);}
50 
51  using GType = GPropType_<GFloat,GProp>;
52  static GType& Type();
53  GType& type() const override {return Type();}
54 };
55 
58 GFloat& Float();
59 inline GFloat& Float(float value) {return *new GFloat(value);}
60 GFloat& Float(float value, float min, float max = GFloat::highest());
61 GFloat& Float(GString const& value);
63 
64 }
65 #endif