On 12/03/2014 03:59 PM, Alexander Brock wrote:

I implemented most of the parts, you can find the code here:


New features:
Path->All Objects to Path
This recursively convertes strokes to paths. If the object has a fill
and a stroke it is duplicated for one copy the stroke is converted to a
path, for the other the stroke ist set to none. Therefore the visual
appearance doesn't (shouldn't) change.

This would be an awesome feature. Maybe a name like "Fill and Stroke to Paths" might work? I assume that the resulting "fill" object doesn't include the 50% of the fill that is under the stroke?

This recursively replaces clipped paths by the path intersected with the
clip path.

IMHO, This might make more sense to make Path > Intersect work on multiple objects. i.e. the top object is duplicated and intersected with each object individually underneath. The reason i suggest this is that clipping also works on bitmaps, so having an option to intersect a clip path might be a bit odd when it doesn't work. Also, this same working on multiples behavior would work for Path > Difference too -- so you can "punch a hole" in multiple objects, and Path > Division, where you can cut multiple paths up with a single action.


Path->Remove Overlap
This doesn't work and I don't understand why.
It's implemented in splivarot.cpp, line 1740

The basic idea is very simple:
1. Get all selected shapes, even indirectly selected ones in groups etc.
2. Sort them so the topmost shape is the first in the list
3. Get a copy of the topmost shape, total_union = copy(topmost_object)
4. Get the next object in the list "current_object", make a copy
5. Make a copy of total_union, name it total_union_duplicate
6. Subtract "total_union_duplicate " from "current_object" using
"sp_selected_path_boolop", with operation "bool_op_diff"
This doesn't work for me, the method never does anything (line 1816)
7. Add "duplicate_object" to "total_union" using
"sp_selected_path_boolop" with operation "bool_op_union"
This also doesn't work, I expect to get exactly 1 object, instead I get
2 (line 1834)
8. If list not empty goto 4

I'm out of ideas why the boolean operation doesn't work for my objects,
it always works perfectly for me when I do it by hand.

Any ideas / comments?


Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE

Inkscape-devel mailing list