SCV  4.2.1
Simple Components for Visual
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Spring.h
Go to the documentation of this file.
1 #ifndef __SCV_SPRING_H__
2 #define __SCV_SPRING_H__
3 
4 #include <climits>
5 
6 namespace scv {
7 
8 class Spring {
9 public:
10  enum Alignment {
12  };
13 
14  enum Size {
15  UNSET = INT_MIN,
18  };
19 
20  enum Axis {
22  };
23 
24  Spring(void);
25  virtual ~Spring(void) {}
26 
27  virtual int calculateMinimumSize(Axis axis) = 0;
28  virtual int calculatePreferredSize(Axis axis) = 0;
29  virtual int calculateMaximumSize(Axis axis) = 0;
30 
31  int getMinimumSize(Axis axis);
32  int getPreferredSize(Axis axis);
33  int getMaximumSize(Axis axis);
34 
35  virtual inline void setAlignment(Alignment alignment);
36  virtual inline Alignment getAlignment(void) const;
37 
38  virtual inline void setSize(Axis axis, int origin, int size);
39  virtual inline void unset(void);
40  virtual inline int getSize(void) const;
41 
42 protected:
43  inline int constrain(int value);
44  bool isResizable(Axis axis);
45 
47  int _size, _min, _max, _pref;
48 private:
49 };
50 
52 
54  _alignment = alignment;
55 }
56 
58  return _alignment;
59 }
60 
61 void Spring::setSize(Axis axis, int origin, int size) {
62  _size = size;
63  if (size == UNSET) {
64  unset();
65  }
66 }
67 
68 void Spring::unset(void) {
69  _size = _min = _pref = _max = UNSET;
70 }
71 
72 int Spring::getSize(void) const {
73  return _size;
74 }
75 
76 int Spring::constrain(int value) {
77  return std::min(value, INT_MAX);
78 }
79 
80 } //namespace scv
81 
82 #endif //__SCV_SPRING_H__