diff options
| author | Jabiertxo Arraiza Cenoz <jtx@jtx-desktop.markerlab.es> | 2017-10-09 18:33:01 +0000 |
|---|---|---|
| committer | Jabiertxo Arraiza Cenoz <jtx@jtx-desktop.markerlab.es> | 2017-10-09 18:33:01 +0000 |
| commit | f318dbfe434769ab62b4f9d2971de89f1ebffc71 (patch) | |
| tree | b8a71ce927ac97ff2cd320809e7f0978213316f9 /src/sp-star.cpp | |
| parent | Circle3pts LPE: handle overlapping points (diff) | |
| download | inkscape-f318dbfe434769ab62b4f9d2971de89f1ebffc71.tar.gz inkscape-f318dbfe434769ab62b4f9d2971de89f1ebffc71.zip | |
Fixes for transforms in LPE shapes
Diffstat (limited to 'src/sp-star.cpp')
| -rw-r--r-- | src/sp-star.cpp | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src/sp-star.cpp b/src/sp-star.cpp index 5913dde20..ccc8323d4 100644 --- a/src/sp-star.cpp +++ b/src/sp-star.cpp @@ -20,7 +20,7 @@ #include <cstring> #include <string> #include <glib.h> -#include <glibmm/i18n.h> +#include "live_effects/effect.h" #include "svg/svg.h" #include "attributes.h" @@ -29,6 +29,7 @@ #include "document.h" #include "sp-star.h" +#include <glibmm/i18n.h> SPStar::SPStar() : SPPolygon() , sides(5), @@ -511,17 +512,27 @@ void SPStar::snappoints(std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape:: Geom::Affine SPStar::set_transform(Geom::Affine const &xform) { bool opt_trans = (randomized == 0); - // Only set transform with proportional scaling - if (!xform.withoutTranslation().isUniformScale()) { - return xform; - } - - // Allow live effects - if (hasPathEffect() && pathEffectsEnabled()) { + if (hasPathEffect() && pathEffectsEnabled() && + (this->hasPathEffectOfType(Inkscape::LivePathEffect::CLONE_ORIGINAL) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::BEND_PATH) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_MANY) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_STROKES) ) ) + { + // if path has this LPE applied, don't write the transform to the pathdata, but write it 'unoptimized' + // also if the effect is type BEND PATH to fix bug #179842 this->adjust_livepatheffect(xform); this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return xform; } + // Only set transform with proportional scaling + if (!xform.withoutTranslation().isUniformScale()) { + // Adjust livepatheffect + if (hasPathEffect() && pathEffectsEnabled()) { + this->adjust_livepatheffect(xform); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); + } + return xform; + } /* Calculate star start in parent coords. */ Geom::Point pos( this->center * xform ); @@ -560,6 +571,9 @@ Geom::Affine SPStar::set_transform(Geom::Affine const &xform) // Adjust gradient fill this->adjust_gradient(xform * ret.inverse()); + // Adjust livepatheffect + this->adjust_livepatheffect(xform); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return ret; |
