Better polymorphism for ExPolygon::XS->rotate

This commit is contained in:
Alessandro Ranellucci 2013-07-14 16:03:06 +02:00
parent 28a4f1a61e
commit 06de21b154
6 changed files with 32 additions and 21 deletions

View file

@ -13,7 +13,6 @@
%code{% RETVAL = expolygon2perl(*THIS); %};
void scale(double factor);
void translate(double x, double y);
void _rotate(double angle, Point* center);
%{
ExPolygon*
@ -29,6 +28,22 @@ ExPolygon::new(...)
OUTPUT:
RETVAL
void
ExPolygon::rotate(angle, center_sv)
double angle;
SV* center_sv;
CODE:
Point* center;
if (sv_isobject(center_sv) && (SvTYPE(SvRV(center_sv)) == SVt_PVMG)) {
center = (Point*)SvIV((SV*)SvRV( center_sv ));
THIS->rotate(angle, center);
} else {
center = new Point;
perl2point(center_sv, *center);
THIS->rotate(angle, center);
delete center;
}
%}
};