%include "agg_typemaps.i"
// ** affine transformation **
namespace agg{
%rename(as_vec6) trans_affine::store_to(double* array6) const;
%rename(get_rotation) trans_affine::rotation() const;
%rename(get_translation) trans_affine::translation(double* OUTPUT, double* OUTPUT) const;
%rename(get_scaling) trans_affine::scaling(double* OUTPUT, double* OUTPUT) const;
class trans_affine
{
public:
trans_affine();
trans_affine(double v0, double v1, double v2, double v3, double v4, double v5);
trans_affine(const double *parl, const double *parl);
trans_affine(double x1, double y1, double x2, double y2,
const double *parl);
trans_affine(const double *parl,
double x1, double y1, double x2, double y2);
const trans_affine& parl_to_parl(const double *parl,
const double *parl);
const trans_affine& rect_to_parl(double x1, double y1,
double x2, double y2,
const double *parl);
const trans_affine& parl_to_rect(const double *parl,
double x1, double y1,
double x2, double y2);
const trans_affine& reset();
const trans_affine& multiply(const trans_affine& m);
const trans_affine& premultiply(const trans_affine& m);
const trans_affine& invert();
const trans_affine& flip_x();
const trans_affine& flip_y();
void store_to(double* array6) const;
const trans_affine& load_from(const double *parl);
const trans_affine& operator *= (const trans_affine& m);
trans_affine operator * (const trans_affine& m);
trans_affine operator ~ () const;
bool operator == (const trans_affine& m) const;
bool operator != (const trans_affine& m) const;
void transform(double* INOUT, double* INOUT) const;
void inverse_transform(double* INOUT, double* INOUT) const;
double determinant() const;
double scale() const;
bool is_identity(double epsilon = agg::affine_epsilon) const;
bool is_equal(const trans_affine& m, double epsilon = agg::affine_epsilon) const;
//avoid swig name clashes with classes trans_affine_rotation, etc
double rotation() const;
void translation(double* OUTPUT, double* OUTPUT) const;
void scaling(double* OUTPUT, double* OUTPUT) const;
};
class trans_affine_rotation : public trans_affine
{
public:
trans_affine_rotation(double a);
};
class trans_affine_scaling : public trans_affine
{
public:
trans_affine_scaling(double sx, double sy);
trans_affine_scaling(double s);
};
class trans_affine_translation : public trans_affine
{
public:
trans_affine_translation(double tx, double ty);
};
class trans_affine_skewing : public trans_affine
{
public:
trans_affine_skewing(double sx, double sy);
};
}
syntax highlighted by Code2HTML, v. 0.9.1