00001
00021
00022
00023
00024
00025 #ifndef __SYNFIG_STUDIO_DUCK_TRANSFORM_SCALE_H
00026 #define __SYNFIG_STUDIO_DUCK_TRANSFORM_SCALE_H
00027
00028
00029
00030 #include "duckmatic.h"
00031
00032
00033
00034
00035
00036
00037
00038 namespace studio {
00039
00040 class Transform_Scale : public synfig::Transform
00041 {
00042 private:
00043 synfig::Vector scale;
00044 synfig::Vector origin;
00045 public:
00046 Transform_Scale(const synfig::GUID& guid, const synfig::Vector& scale,const synfig::Vector& origin=synfig::Vector(0,0)):
00047 Transform(guid), scale(scale), origin(origin) { }
00048 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]); }
00049 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]); }
00050 };
00051
00052 };
00053
00054
00055
00056 #endif