diff options
| author | su_v <suv-sf@users.sourceforge.net> | 2012-10-04 08:06:18 +0000 |
|---|---|---|
| committer | ~suv <suv-sf@users.sourceforge.net> | 2012-10-04 08:06:18 +0000 |
| commit | fec1be463b3950772422da45fe4655de40c864e7 (patch) | |
| tree | 2eeef78cb15a7fba9453cfc9c12067c0331818d5 /src/pencil-context.cpp | |
| parent | update based on patch 'changes_2012_09_27b.patch' (diff) | |
| parent | extensions. Extrude. allow selection of multiple objects (Bug 1055155) (diff) | |
| download | inkscape-fec1be463b3950772422da45fe4655de40c864e7.tar.gz inkscape-fec1be463b3950772422da45fe4655de40c864e7.zip | |
merge from trunk (r11734)
(bzr r11668.1.22)
Diffstat (limited to 'src/pencil-context.cpp')
| -rw-r--r-- | src/pencil-context.cpp | 25 |
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(); |
