summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2012-04-10 17:56:29 +0000
committerJohan B. C. Engelen <j.b.c.engelen@alumnus.utwente.nl>2012-04-10 17:56:29 +0000
commit20604a9037ad7c995977b20f9e5f16b4fe10125a (patch)
treef516a7cc1cd0f37a83d7993cc06571e7aabaae8d /src
parentpowerstroke: remove the need to reload the node tool when adding/deleting con... (diff)
downloadinkscape-20604a9037ad7c995977b20f9e5f16b4fe10125a.tar.gz
inkscape-20604a9037ad7c995977b20f9e5f16b4fe10125a.zip
fix potential issue with tangent calculation
(bzr r11211)
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/lpe-powerstroke.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/live_effects/lpe-powerstroke.cpp b/src/live_effects/lpe-powerstroke.cpp
index 878811275..79997ff94 100644
--- a/src/live_effects/lpe-powerstroke.cpp
+++ b/src/live_effects/lpe-powerstroke.cpp
@@ -239,7 +239,7 @@ std::vector<discontinuity_data> find_discontinuities( Geom::Piecewise<Geom::D2<G
data.der0 = der[i-1].at1();
data.der1 = der[i].at0();
if ( Geom::are_near(data.der0.length(), 0) ) {
- data.der0 = unitTangentAt(der[i-1], 1, 2);
+ data.der0 = -unitTangentAt(reverse(der[i-1]),0.,2); // == unitTangentAt(der[i-1], 1, 2);
}
if ( Geom::are_near(data.der1.length(), 0) ) {
data.der1 = unitTangentAt(der[i], 0, 2);
@@ -304,7 +304,7 @@ Geom::Path path_from_piecewise_fix_cusps( Geom::Piecewise<Geom::D2<Geom::SBasis>
A 2Geom method was created to do exactly this :)
*/
- Geom::Point tang1 = unitTangentAt(B[prev_i],1);
+ Geom::Point tang1 = -unitTangentAt(reverse(B[prev_i]),0.); // = unitTangentAt(B[prev_i],1);
Geom::Point tang2 = unitTangentAt(B[i],0);
boost::optional<Geom::Point> O = intersection_point( B[prev_i].at1(), tang1,
B[i].at0(), tang2 );
@@ -326,7 +326,7 @@ Geom::Path path_from_piecewise_fix_cusps( Geom::Piecewise<Geom::D2<Geom::SBasis>
/* case LINEJOIN_NONE: {
if ( on_outside ) {
// we are on the outside
- Geom::Point der1 = unitTangentAt(B[prev_i],1);
+ Geom::Point der1 = -unitTangentAt(reverse(B[prev_i]),0.); // = unitTangentAt(B[prev_i],1);
Geom::Point point_on_path = B[prev_i].at1() - rot90(der1) * cusp.width;
pb.lineTo(point_on_path);
pb.lineTo(B[i].at0());
@@ -339,7 +339,7 @@ Geom::Path path_from_piecewise_fix_cusps( Geom::Piecewise<Geom::D2<Geom::SBasis>
if (on_outside) {
// we are on the outside, do something complicated to make it look good ;)
- Geom::Point der1 = unitTangentAt(B[prev_i],1);
+ Geom::Point der1 = -unitTangentAt(reverse(B[prev_i]),0.); // = unitTangentAt(B[prev_i],1);
Geom::Point der2 = unitTangentAt(B[i],0);
Geom::D2<Geom::SBasis> newcurve1 = B[prev_i] * Geom::reflection(rot90(der1), B[prev_i].at1());
@@ -377,7 +377,7 @@ Geom::Path path_from_piecewise_fix_cusps( Geom::Piecewise<Geom::D2<Geom::SBasis>
if (on_outside) {
// we are on the outside, do something complicated to make it look good ;)
- Geom::Point der1 = unitTangentAt(B[prev_i],1);
+ Geom::Point der1 = -unitTangentAt(reverse(B[prev_i]),0.); // = unitTangentAt(B[prev_i],1);
Geom::Point der2 = unitTangentAt(B[i],0);
boost::optional<Geom::Point> p = intersection_point( B[prev_i].at1(), der1,
B[i].at0(), der2 );
@@ -399,7 +399,7 @@ Geom::Path path_from_piecewise_fix_cusps( Geom::Piecewise<Geom::D2<Geom::SBasis>
}
case LINEJOIN_SPIRO: {
if (on_outside) {
- Geom::Point tang1 = unitTangentAt(B[prev_i],1);
+ Geom::Point tang1 = -unitTangentAt(reverse(B[prev_i]),0.); // = unitTangentAt(B[prev_i],1);
Geom::Point tang2 = unitTangentAt(B[i],0);
Geom::Point direction = B[i].at0() - B[prev_i].at1();