Clone original LPE can no longer be used to fill a powerstroke path

Bug #1715433 reported by Hachmann on 2017-09-06
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Inkscape
Undecided
Jabiertxof

Bug Description

In Inkscape 0.92.1, the 'Clone original' LPE does not clone the resulting path, but the original path data from a path with an LPE, allowing you to have a fill in a path with a powerstroke LPE applied to it.

Inkscape 0.92.2 works differently, it clones the *result* from the LPE.

This makes it impossible to fill a powerstroke shape.

I thought that was the purpose of the Clone Original LPE functionality.

Is this a bug, or the result of a fix?

See also:
https://bugs.launchpad.net/inkscape/+bug/1670644
for someone who understood it the other way around.

Jabiertxof (jabiertxof) wrote :

Hi, can you confirm the bug is on devel not in 0.92.2? I do this changes and go to fix but need to know, I dont have instaled here 0.92.2.

Changed in inkscape:
assignee: nobody → Jabiertxof (jabiertxof)
Hachmann (marenhachmann) wrote :

@Jabier:

I've been using 0.92.2, where the 'ear' is not filled, instead there's only a pink copy of the ear's powerstroke contour below the black one. I compiled it from Bryce's source package.

(I'm preparing a workshop, and hitting lots of bugs at the moment :-/, most with texts misbehaving, though.)

Jabiertxof (jabiertxof) wrote :

Here are a patch for the bug applyable to 0.92.x branch. Im compiling the master one now, post here soon.
Notice it works only well on bezier paths, not in bspline or spiro ones. Like in 0.91 or 0.92.1 I think.
Please confirm to backport.

Jabiertxof (jabiertxof) wrote :

Finaly not time to compile master here, but hope the patch work the same way.
Here are for current trunk.

Jabiertxof (jabiertxof) wrote :

Improved patch for 0.92.x

Jabiertxof (jabiertxof) wrote :

Hi, Here is a attached patch for 0.92.x backport.
I finaly include the posibility to use BSPline and Spiro, as the usual ones requested with Powerstroke. There is now know for me enought fast to fix only for "PowerStroke"
I think tonigh i do a push of the code to master.

Jabiertxof (jabiertxof) wrote :

Pushed on trunk on r.1f0a20e9f4
Consider backport with the patch provided

Changed in inkscape:
status: New → Fix Committed
Hachmann (marenhachmann) wrote :

Thank you, Jabier, and sorry for not testing - I'd have liked to, but didn't have the time for compiling yet.

Jabiertxof (jabiertxof) wrote :

You are welcome!!! dont worry!

Jabiertxof (jabiertxof) wrote :

More fixes, now handle correctly the clone->LPE and the Clone fill with powerstroke, bspline, spiro and pattern along path.
I need to add one parameter more necesary in the LPE because we need 2 diferents behabiours with the same LPE. One needs translation of the clone and the other need be atached to the original.

Hachmann (marenhachmann) wrote :

@Jabier:
I've just tried it out in the master branch, but I can't find that it's fixed - or perhaps I don't understand how to use it.

I tried with cloning shape-d set and unset, as I thought that would be the relevant parameter. It still doesn't work as it did previously.

What I expected was that it uses the original path data of the path that has a powerstroke applied, and provides a fill for the powerstroked shape.
What I get is a clone of the powerstroke, in a color of my choice (clone shape-d set), or no change at all (clone shape-d unset).

And something weird happens:
When I paste something from the clipboard into the document (a screenshot, in this case), the fill and stroke of the path with the clone original LPE applied to it are set to the fill+stroke of the powerstroke path that it's supposed to clone.

Hachmann (marenhachmann) wrote :

(or perhaps it's not in trunk yet?)

Jabiertxof (jabiertxof) wrote :

Hi @Maren. The patch is applyed to trunk but in Fill Between Many LPE, the one used by the clone LPE menu link and the clone add LPE + button. This work as espected now.

Anyway I try to do another fix for Clone LPE if you consider is necesary because the wanted behabiour is substituted by Fill Between Many.

All the best, Jabier.

Hachmann (marenhachmann) wrote :

It's breaking existing drawings, I think (at least it broke a workshop file for me, don't know if others used the LPE for their comics).

However, for me it's okay to just *know*, I can easily switch, if that's how it's supposed to work now. I only teach people how to use it, I don't draw a lot myself.

Jabiertxof (jabiertxof) wrote :

Working on fixing it also in the same way of fill between many, Also i try to substitute fill between many from the clone menu and in the clomne LPE add by the clone LPE, Seems more logic.

Jabiertxof (jabiertxof) wrote :

Hi Maren in r.a474159bf7 both LPE are fixed. Also works on legacy files. Thanks for report.

Hachmann (marenhachmann) wrote :

Thank you very much, Jabier! :-D

Hachmann (marenhachmann) wrote :

Jabier, does this work now for the 0.92.x branch? I've installed from stable-daily ppa, but couldn't make it work with neither:

- Clone original
- Fill between many
- Fill between strokes

Maybe I need some instructions. This is what I expect to get:
http://vektorrascheln.de/photos/inkscape_entdecker_pfade3/fuellung_fuer_powerstroke-o.jpg
http://wiki.inkscape.org/wiki/index.php/File:LPEFillBetweenMany.png
http://wiki.inkscape.org/wiki/index.php/File:LPEFillBetweenStrokes.png

Still compiling master.

Hachmann (marenhachmann) wrote :

Crashes when I try on master ... :-/

(using clone original, like this:

1. create open path, shaped like a u
2. add power stroke to it, made it look nice a bit
3. copy to clipboard
4. add 2 point path in its middle
5. click on 'Clone original' LPE in the list
-> CRASH

** (inkscape:16332): CRITICAL **: bool Inkscape::ObjectSet::includes(SPObject*): assertion 'object != NULL' failed

(inkscape:16332): glibmm-ERROR **:
unhandled exception (type std::exception) in signal handler:
what: basic_string::_M_construct null not valid

Jabiertxof (jabiertxof) wrote :

Hi Maren. Fixed #20 in the commit "3e9296b964" from today.
About 0.92.x I need to test the patch I put previously, not sure if is posible a refactor like the one done in trunk can be done for 0.92.x. ¿Anyone could give me green card to backport it?

Jabiertxof (jabiertxof) wrote :

aclaration: can be done, but maybe is too big change to land in 0.92.x

Hachmann (marenhachmann) wrote :

Very cool (in devel)! So many new use cases! Tested backwards compatibility with my old file - works :)

There is one usability issue I stumbled over:

In contrast to normal number fields, in the text fields, it is not sufficient to just type the value, then leave the field by clicking somewhere else. In that case your entry will be lost.

It is currently necessary to hit 'Enter' after adding one or more attributes into one of the attribute fields.
Could there either be a 'set' button that makes that clear, or an automatical accepting of the entry when the field is left with mouse?

Jabiertxof (jabiertxof) wrote :

Fixed in 0.92.x in r.23899f58bf

Jabiertxof (jabiertxof) wrote :

Thanks Maren for the feedback, currerently adding "Set" button to text LPE parameters

Jabiertxof (jabiertxof) wrote :

Maren Added button to apply in text parameters in r.6d91668aef

Jabiertxof (jabiertxof) wrote :

Also in next revision fc21cbb9a2 handle well transforms in this LPE

Hachmann (marenhachmann) wrote :

Didn't notice there was an issue with transforms yet ;-) - thanks for all that polishing, Jabier!

Jabiertxof (jabiertxof) wrote :

You are welcome!

Qantas94Heavy (qantas94heavy) wrote :
Changed in inkscape:
milestone: none → 0.92.3
status: Fix Committed → Fix Released
tbnorth (terry-n-brown) on 2019-11-29
tags: added: bug-migration
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers