10 #include <bnb/utils/defs.hpp>
14 namespace bnb {
namespace interfaces {
25 static std::shared_ptr<transformation> make_identity();
28 static std::shared_ptr<transformation> make_data(
const std::vector<float> & mat);
31 static std::shared_ptr<transformation> make_rot(rotation rot);
34 static std::shared_ptr<transformation> make_affine(
float scale_x,
float scale_y,
float t_x,
float t_y, rotation rot,
bool flip_x,
bool flip_y);
40 static std::shared_ptr<transformation> make_rects(
const pixel_rect & source_rect,
const pixel_rect & target_rect, rotation rot,
bool flip_x,
bool flip_y);
46 virtual std::shared_ptr<transformation> chain_right(
const std::shared_ptr<transformation> & t)
const = 0;
53 virtual bool equals(
const std::shared_ptr<transformation> & t)
const = 0;
59 virtual std::shared_ptr<transformation> inverse_j()
const = 0;
62 virtual std::shared_ptr<transformation> clone_j()
const = 0;
65 virtual std::vector<float> get_mat_j()
const = 0;