Align.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Elem.hpp"
4 #include "Slot.hpp"
5 #include "OneChildElem.hpp"
6 
7 namespace iv
8 {
9 
22 class Align : public OneChildElem< SlotChild >, public SlotChild
23 {
24 public:
26 using Elem::instance;
27  Align( Instance * );
28 
29  void status( iv::TableDebugView * view );
30 
31 // initialization parameters
36 
37 // utility methods
38  // Elem
39  Align * enabled( bool );
40 
41  // Align
42  Align * dontExpand( bool );
43  Align * keepAspect( bool );
44  Align * resizeScales( bool );
46 
47 protected:
48  // Elem
49  virtual void first_pass_impl( ElementRenderer * ) override;
50  virtual void second_pass_impl( ElementRenderer * ) override;
51 
52 private:
53  void inner_layout( float3 & out_size, float3 & out_position, float3 & out_scale ) const;
54 
55 private:
56  // cache
57  float3 insize;
58  float3 inpos;
59  float3 inscale;
60 };
61 
62 }