summaryrefslogtreecommitdiffstats
path: root/src/pencil-context.cpp
diff options
context:
space:
mode:
authorsu_v <suv-sf@users.sourceforge.net>2012-12-16 05:41:25 +0000
committer~suv <suv-sf@users.sourceforge.net>2012-12-16 05:41:25 +0000
commit7ec903c9898f872dbd9426ed7a62e1969fdb7be7 (patch)
treea306139e829118a83516af02279c9eafd3440eaa /src/pencil-context.cpp
parentHershey Text: whitespace; py: docstring, modeline; inx: fix attribute value (diff)
parentTranslations.Spanish translation update by Lucas Vieites. (diff)
downloadinkscape-7ec903c9898f872dbd9426ed7a62e1969fdb7be7.tar.gz
inkscape-7ec903c9898f872dbd9426ed7a62e1969fdb7be7.zip
merge from trunk (r11955)
(bzr r11687.1.3)
Diffstat (limited to 'src/pencil-context.cpp')
-rw-r--r--src/pencil-context.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/pencil-context.cpp b/src/pencil-context.cpp
index d5b61e1f0..19a040b24 100644
--- a/src/pencil-context.cpp
+++ b/src/pencil-context.cpp
@@ -789,11 +789,13 @@ interpolate(SPPencilContext *pc)
/* Set up direction of next curve. */
{
- Geom::CubicBezier const * last_seg = dynamic_cast<Geom::CubicBezier const *>(pc->green_curve->last_segment());
- g_assert( last_seg ); // Relevance: validity of (*last_seg)[2]
+ Geom::Curve const * last_seg = pc->green_curve->last_segment();
+ g_assert( last_seg ); // Relevance: validity of (*last_seg)
pc->p[0] = last_seg->finalPoint();
pc->npoints = 1;
- Geom::Point const req_vec( pc->p[0] - (*last_seg)[2] );
+ Geom::Curve *last_seg_reverse = last_seg->reverse();
+ Geom::Point const req_vec( -last_seg_reverse->unitTangentAt(0) );
+ delete last_seg_reverse;
pc->req_tangent = ( ( Geom::is_zero(req_vec) || !in_svg_plane(req_vec) )
? Geom::Point(0, 0)
: Geom::unit_vector(req_vec) );
@@ -881,11 +883,13 @@ sketch_interpolate(SPPencilContext *pc)
/* Set up direction of next curve. */
{
- Geom::CubicBezier const * last_seg = dynamic_cast<Geom::CubicBezier const *>(pc->green_curve->last_segment());
- g_assert( last_seg ); // Relevance: validity of (*last_seg)[2]
+ Geom::Curve const * last_seg = pc->green_curve->last_segment();
+ g_assert( last_seg ); // Relevance: validity of (*last_seg)
pc->p[0] = last_seg->finalPoint();
pc->npoints = 1;
- Geom::Point const req_vec( pc->p[0] - (*last_seg)[2] );
+ Geom::Curve *last_seg_reverse = last_seg->reverse();
+ Geom::Point const req_vec( -last_seg_reverse->unitTangentAt(0) );
+ delete last_seg_reverse;
pc->req_tangent = ( ( Geom::is_zero(req_vec) || !in_svg_plane(req_vec) )
? Geom::Point(0, 0)
: Geom::unit_vector(req_vec) );
@@ -926,16 +930,19 @@ fit_and_split(SPPencilContext *pc)
/* Set up direction of next curve. */
{
- Geom::CubicBezier const * last_seg = dynamic_cast<Geom::CubicBezier const *>(pc->red_curve->last_segment());
- g_assert( last_seg ); // Relevance: validity of (*last_seg)[2]
+ Geom::Curve const * last_seg = pc->red_curve->last_segment();
+ g_assert( last_seg ); // Relevance: validity of (*last_seg)
pc->p[0] = last_seg->finalPoint();
pc->npoints = 1;
- Geom::Point const req_vec( pc->p[0] - (*last_seg)[2] );
+ Geom::Curve *last_seg_reverse = last_seg->reverse();
+ Geom::Point const req_vec( -last_seg_reverse->unitTangentAt(0) );
+ delete last_seg_reverse;
pc->req_tangent = ( ( Geom::is_zero(req_vec) || !in_svg_plane(req_vec) )
? Geom::Point(0, 0)
: Geom::unit_vector(req_vec) );
}
+
pc->green_curve->append_continuous(pc->red_curve, 0.0625);
SPCurve *curve = pc->red_curve->copy();