10#include <bnb/utils/defs.hpp> 
   14namespace bnb { 
namespace interfaces {
 
   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);
 
   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;