bool only_translation(agg::trans_affine& mat, double epsilon) { double temp[6]; mat.store_to(temp); return (f_eq(temp[0], 1.0) && f_eq(temp[1], 0.0) && f_eq(temp[2], 0.0) && f_eq(temp[3], 1.0)); }
void get_translation(agg::trans_affine& m, double* tx, double* ty) { double temp[6]; m.store_to(temp); *tx = temp[4]; *ty = temp[5]; }
void get_scale(agg::trans_affine& m, double* dx, double* dy) { { double temp[6]; m.store_to(temp); *dx = temp[0]; *dy = temp[3]; } }
bool is_identity(agg::trans_affine& mat, double epsilon) { double temp[6]; mat.store_to(temp); return (f_eq(temp[0], 1.0) && f_eq(temp[1], 0.0) && f_eq(temp[2], 0.0) && f_eq(temp[3], 1.0) && f_eq(temp[4], 0.0) && f_eq(temp[5], 0.0)); // return (temp[0] == 1.0 && temp[1] == 0.0 && // temp[2] == 0.0 && temp[3] == 1.0 && // temp[4] == 0.0 && temp[5] == 0.0); }
void cairo_context::add_image(agg::trans_affine const& tr, image_rgba8 const& data, double opacity) { cairo_pattern pattern(data); if (!tr.is_identity()) { double m[6]; tr.store_to(m); cairo_matrix_t cairo_matrix; cairo_matrix_init(&cairo_matrix,m[0],m[1],m[2],m[3],m[4],m[5]); cairo_matrix_invert(&cairo_matrix); pattern.set_matrix(cairo_matrix); } cairo_save(cairo_.get()); cairo_set_source(cairo_.get(), const_cast<cairo_pattern_t*>(pattern.pattern())); cairo_paint_with_alpha(cairo_.get(), opacity); cairo_restore(cairo_.get()); check_object_status_and_throw_exception(*this); }