diff options
| author | Ted Gould <ted@gould.cx> | 2008-10-11 15:16:23 +0000 |
|---|---|---|
| committer | Ted Gould <ted@canonical.com> | 2008-10-11 15:16:23 +0000 |
| commit | 2f5eb047d9e05be5e68549ef6b75070d2faa7d2f (patch) | |
| tree | ca2e94164b6d7aaebfc17196ca46bfc825a7665a /src/livarot/PathConversion.cpp | |
| parent | Merge from trunk. (diff) | |
| download | inkscape-2f5eb047d9e05be5e68549ef6b75070d2faa7d2f.tar.gz inkscape-2f5eb047d9e05be5e68549ef6b75070d2faa7d2f.zip | |
Merging from trunk
(bzr r6884)
Diffstat (limited to '')
| -rw-r--r-- | src/livarot/PathConversion.cpp | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/src/livarot/PathConversion.cpp b/src/livarot/PathConversion.cpp index 7c741ac4c..a7f5a8fd1 100644 --- a/src/livarot/PathConversion.cpp +++ b/src/livarot/PathConversion.cpp @@ -11,8 +11,7 @@ #include "livarot/path-description.h" #include <libnr/nr-matrix.h> -#include <libnr/nr-rotate-ops.h> -#include <libnr/nr-scale-ops.h> +#include <2geom/transforms.h> /* * path description -> polyline @@ -1089,23 +1088,24 @@ void Path::DoArc(NR::Point const &iS, NR::Point const &iE, double sang; double eang; - NR::Point dr; - ArcAnglesAndCenter(iS, iE, rx, ry, angle, large, wise, sang, eang, dr); + NR::Point dr_temp; + ArcAnglesAndCenter(iS, iE, rx, ry, angle, large, wise, sang, eang, dr_temp); + Geom::Point dr = dr_temp; /* TODO: This isn't as good numerically as treating iS and iE as primary. E.g. consider the case of low curvature (i.e. very large radius). */ - NR::scale const ar(rx, ry); - NR::rotate cb( angle + sang ); + Geom::Scale const ar(rx, ry); + Geom::Rotate cb( angle + sang ); if (wise) { double const incr = -0.1; if ( sang < eang ) { sang += 2*M_PI; } - NR::rotate const omega(incr); + Geom::Rotate const omega(incr); for (double b = sang + incr ; b > eang ; b += incr) { cb = omega * cb; - AddPoint( cb.vec * ar + dr ); + AddPoint( cb.vector() * ar + dr ); } } else { @@ -1114,10 +1114,10 @@ void Path::DoArc(NR::Point const &iS, NR::Point const &iE, if ( sang > eang ) { sang -= 2*M_PI; } - NR::rotate const omega(incr); + Geom::Rotate const omega(incr); for (double b = sang + incr ; b < eang ; b += incr) { cb = omega * cb; - AddPoint( cb.vec * ar + dr); + AddPoint( cb.vector() * ar + dr); } } } @@ -1231,23 +1231,24 @@ void Path::DoArc(NR::Point const &iS, NR::Point const &iE, double sang; double eang; - NR::Point dr; - ArcAnglesAndCenter(iS, iE, rx, ry, angle, large, wise, sang, eang, dr); + NR::Point dr_temp; + ArcAnglesAndCenter(iS, iE, rx, ry, angle, large, wise, sang, eang, dr_temp); + Geom::Point dr = dr_temp; /* TODO: This isn't as good numerically as treating iS and iE as primary. E.g. consider the case of low curvature (i.e. very large radius). */ - NR::scale const ar(rx, ry); - NR::rotate cb(angle + sang); + Geom::Scale const ar(rx, ry); + Geom::Rotate cb(angle + sang); if (wise) { double const incr = -0.1; if ( sang < eang ) { sang += 2*M_PI; } - NR::rotate const omega(incr); + Geom::Rotate const omega(incr); for (double b = sang + incr; b > eang; b += incr) { cb = omega * cb; - AddPoint(cb.vec * ar + dr, piece, (sang - b) / (sang - eang)); + AddPoint(cb.vector() * ar + dr, piece, (sang - b) / (sang - eang)); } } else { @@ -1256,10 +1257,10 @@ void Path::DoArc(NR::Point const &iS, NR::Point const &iE, if ( sang > eang ) { sang -= 2 * M_PI; } - NR::rotate const omega(incr); + Geom::Rotate const omega(incr); for (double b = sang + incr ; b < eang ; b += incr) { cb = omega * cb; - AddPoint(cb.vec * ar + dr, piece, (b - sang) / (eang - sang)); + AddPoint(cb.vector() * ar + dr, piece, (b - sang) / (eang - sang)); } } } @@ -1348,23 +1349,24 @@ void Path::DoArc(NR::Point const &iS, NR::Point const &iE, double sang; double eang; - NR::Point dr; - ArcAnglesAndCenter(iS, iE, rx, ry, angle, large, wise, sang, eang, dr); + NR::Point dr_temp; + ArcAnglesAndCenter(iS, iE, rx, ry, angle, large, wise, sang, eang, dr_temp); + Geom::Point dr = dr_temp; /* TODO: This isn't as good numerically as treating iS and iE as primary. E.g. consider the case of low curvature (i.e. very large radius). */ - NR::scale const ar(rx, ry); - NR::rotate cb(angle + sang); + Geom::Scale const ar(rx, ry); + Geom::Rotate cb(angle + sang); if (wise) { double const incr = -0.1; if ( sang < eang ) { sang += 2*M_PI; } - NR::rotate const omega(incr); + Geom::Rotate const omega(incr); for (double b = sang + incr; b > eang ;b += incr) { cb = omega * cb; - AddPoint(cb.vec * ar + dr, piece, (sang - b) / (sang - eang)); + AddPoint(cb.vector() * ar + dr, piece, (sang - b) / (sang - eang)); } } else { @@ -1372,10 +1374,10 @@ void Path::DoArc(NR::Point const &iS, NR::Point const &iE, if ( sang > eang ) { sang -= 2*M_PI; } - NR::rotate const omega(incr); + Geom::Rotate const omega(incr); for (double b = sang + incr ; b < eang ; b += incr) { cb = omega * cb; - AddPoint(cb.vec * ar + dr, piece, (b - sang) / (eang - sang)); + AddPoint(cb.vector() * ar + dr, piece, (b - sang) / (eang - sang)); } } } |
