summaryrefslogtreecommitdiffstats
path: root/src/object/sp-path.cpp
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2018-10-01 01:10:05 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2018-10-01 01:10:05 +0000
commit89b763d897e805a577f81dc0dccab4b75eb253cf (patch)
tree88cf5fee43de1ac9647134cea9528a271410bb9f /src/object/sp-path.cpp
parentImprove calls to document_units (diff)
downloadinkscape-89b763d897e805a577f81dc0dccab4b75eb253cf.tar.gz
inkscape-89b763d897e805a577f81dc0dccab4b75eb253cf.zip
Improvements to transforms in LPE
Diffstat (limited to 'src/object/sp-path.cpp')
-rw-r--r--src/object/sp-path.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/object/sp-path.cpp b/src/object/sp-path.cpp
index cf8c0ad10..d951d1738 100644
--- a/src/object/sp-path.cpp
+++ b/src/object/sp-path.cpp
@@ -326,17 +326,21 @@ Geom::Affine SPPath::set_transform(Geom::Affine const &transform) {
if (!_curve) { // 0 nodes, nothing to transform
return Geom::identity();
}
+ // Only set transform with proportional scaling
+ if (!transform.withoutTranslation().isUniformScale()) {
+ // Adjust livepatheffect
+ if (hasPathEffect() && pathEffectsEnabled()) {
+ this->adjust_livepatheffect(transform.inverse());
+ return transform;
+ }
+ }
+ // TODO: try to remove CLONE_ORIGINAL from here
// Transform the original-d path if this is a valid LPE this, other else the (ordinary) path
if (_curve_before_lpe && hasPathEffectRecursive()) {
- if (this->hasPathEffectOfType(Inkscape::LivePathEffect::CLONE_ORIGINAL) ||
- this->hasPathEffectOfType(Inkscape::LivePathEffect::BEND_PATH) ||
- this->hasPathEffectOfType(Inkscape::LivePathEffect::POWERCLIP) ||
- this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_MANY) ||
- this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_STROKES) )
+ if (this->hasPathEffectOfType(Inkscape::LivePathEffect::CLONE_ORIGINAL))
{
// 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(transform);
return transform;
} else {
_curve_before_lpe->transform(transform);