MT Showcase SDK
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
NormalizeSizeOperator.hpp
1 #ifndef NORMALIZESIZEOPERATOR_HPP
2 #define NORMALIZESIZEOPERATOR_HPP
3 
4 #include "Export.hpp"
5 
6 #include <MultiWidgets/Operator.hpp>
7 #include <MultiWidgets/Widget.hpp>
8 
9 #include <Valuable/AttributeEnum.hpp>
10 
11 namespace Showcase {
12 
20  class SHOWCASE_API NormalizeSizeOperator : public MultiWidgets::Operator
21  {
22  public:
23  enum class NormalizeMode {
24  DEFAULT,
25  KEEP_HEIGHT, // offset scaling's effect on height
26  KEEP_WIDTH, // offset scaling's effect on width
27  KEEP_BOTH // offset scaling's effect on height and width
28  };
29 
31  virtual ~NormalizeSizeOperator();
32 
33  virtual void update(MultiWidgets::Widget & w, const MultiWidgets::FrameInfo &) OVERRIDE;
34 
35  float estimateScale(MultiWidgets::WidgetPtr w);
36 
37  NormalizeMode normalizeMode() const { return m_normalizeMode; }
38  void setNormalizeMode(NormalizeMode normalizeMode) { m_normalizeMode = normalizeMode; }
39 
40  private:
41  Valuable::AttributeFloat m_minScale;
42  Valuable::AttributeFloat m_maxScale;
43  Valuable::AttributeT<NormalizeMode> m_normalizeMode;
44  };
45 
46 } // namespace Showcase
47 
48 #endif // NORMALIZESIZEOPERATOR_HPP