趣味で作ってるロボット用ソフトウェア
 All Classes Files Functions Enumerations Enumerator Friends Pages
Component.h
Go to the documentation of this file.
1 #ifndef HRK_COMPONENT_H
2 #define HRK_COMPONENT_H
3 
9 #include "RectF.h"
10 #include "Align.h"
11 
12 
13 namespace hrk
14 {
15  class Component
16  {
17  public:
18  Component(void) : input_enabled_(true)
19  {
20  }
21 
22  virtual ~Component(void)
23  {
24  }
25 
26  virtual void set_position(const PointF& position)
27  {
28  position_ = position;
29  }
30 
31  virtual PointF position(void) const
32  {
33  return position_;
34  }
35 
36  virtual void set_input_enabled(bool enable)
37  {
38  input_enabled_ = enable;
39  }
40 
41  virtual bool input_enabled(void) const
42  {
43  return input_enabled_;
44  }
45 
46  virtual void set_alpha(double alpha) = 0;
47  virtual void set_color_strength(double ratio) = 0;
48 
49  virtual void update(void)
50  {
51  }
52 
53  virtual void draw(void) = 0;
54 
55  virtual SizeF size(void) const = 0;
56 
57  virtual double width(void) const
58  {
59  return size().width();
60  }
61 
62  virtual double height(void) const
63  {
64  return size().height();
65  }
66 
67  virtual RectF rect(void) const
68  {
69  return RectF(position(), size());
70  }
71 
72  virtual double set_align(double value, const unsigned char align)
73  {
74  double next_value = value;
75 
76  if (align & (Align::Left | Align::Center | Align::Right)) {
77  // Horizontal
78  if (align & Align::Center) {
79  next_value = value - size().width() / 2;
80 
81  } else if (align & Align::Right) {
82  next_value = value - size().width();
83  }
84  set_position(PointF(next_value, position().y()));
85 
86  } else {
87  // Vertical
88  if (align & Align::Middle) {
89  next_value = value - size().height() / 2;
90 
91  } else if (align & Align::Bottom) {
92  next_value = value - size().height();
93  }
94  set_position(PointF(position().x(), next_value));
95  }
96 
97  return next_value;
98  }
99 
100  private:
101  PointF position_;
102  bool input_enabled_;
103  };
104 }
105 
106 #endif
矩形
アライン定義
位置
Definition: PointF.h:12
Definition: Component.h:15
幅と高さ
Definition: SizeF.h:12
矩形
Definition: RectF.h:16