synfig-studio  1.0.3
ducktransform_scale.h
Go to the documentation of this file.
1 /* === S Y N F I G ========================================================= */
21 /* ========================================================================= */
22 
23 /* === S T A R T =========================================================== */
24 
25 #ifndef __SYNFIG_STUDIO_DUCK_TRANSFORM_SCALE_H
26 #define __SYNFIG_STUDIO_DUCK_TRANSFORM_SCALE_H
27 
28 /* === H E A D E R S ======================================================= */
29 
30 #include "duckmatic.h"
31 
32 /* === M A C R O S ========================================================= */
33 
34 /* === T Y P E D E F S ===================================================== */
35 
36 /* === C L A S S E S & S T R U C T S ======================================= */
37 
38 namespace studio {
39 
40 class Transform_Scale : public synfig::Transform
41 {
42 private:
43  synfig::Vector scale;
44  synfig::Vector origin;
45 public:
46  Transform_Scale(const synfig::GUID& guid, const synfig::Vector& scale,const synfig::Vector& origin=synfig::Vector(0,0)):
47  Transform(guid), scale(scale), origin(origin) { }
48  synfig::Vector perform(const synfig::Vector& x)const { return synfig::Vector((x[0]-origin[0])*scale[0]+origin[0],(x[1]-origin[1])*scale[1]+origin[1]); }
49  synfig::Vector unperform(const synfig::Vector& x)const { return synfig::Vector((x[0]-origin[0])/scale[0]+origin[0],(x[1]-origin[1])/scale[1]+origin[1]); }
50 
51  synfig::String get_string()const
52  {
53  return "duck scale";
54  }
55 };
56 
57 };
58 
59 /* === E N D =============================================================== */
60 
61 #endif