Merge in certain Ponyscape features
Many of the developers are probably aware of a popular fork of Inkscape called Ponyscape.
If you don't know of it, here are the extra features it offers: • Inverse clipping (clearly I'm not going to merge this in) • Objects dialog (http://sta.sh/0zb66ec8hyk ) • Tags dialog (selection sets http://sta.sh/01n137vphezw ) • Power stroke point control dialog (activated by shift+clicking width points http://sta.sh/01s1vyyazw8k ) • CubicBezierSmooth Power Strokes (http://sta.sh/0232eheuvzn0 ) • UI enhancements (for example https://bugs.launchpad.net/inkscape/+bug/1310688 ) • 5 new path effects ◦ Attach Path (there is a great tutorial on this by R4inbowR4ge here http://youtu.be/5o5P0897vb8 ) ◦ Bounding Box (...clearly you know what this one does, right?) ◦ Ellipse by 5 Points ◦ Fill Between Strokes (obsoleted) ◦ Fill Between Many (http://sta.sh/0mze2vk449o )
Path effects gallery: http://sta.sh/2257tq53v5kb
My plan is to get (most) of these features merged into trunk to keep them from bit-rotting away. I have created a branch here at Launchpad: https://launchpad.net/~inkscapebrony/inkscape/inkscape which addresses the majority of these features.
I've also fixed this: https://bugs.launchpad.net/inkscape/+bug/1290573 and this: https://bugs.launchpad.net/inkscape/+bug/1290573 (AFAIU neither have been fixed in trunk)
I'm asking for a little review—and possibly some feedback?—on the new features in the branch.
Also, I am not familiar enough with the Inkscape codebase to know what to do with the very old looking SPTag stuff, which is why it isn't in my branch yet. If anyone wants to take a look and advise me on how to refactor this to make it work, the tag stuff is here: http://sta.sh/01etufm3jqvt (seriously, what the heck is an SPObjectClass? is that some sort of impls thing?)
-- View this message in context: http://inkscape.13.x6.nabble.com/Merge-in-certain-Ponyscape-features-tp49702... Sent from the Inkscape - Dev mailing list archive at Nabble.com.
Hi, ====== Also, I am not familiar enough with the Inkscape codebase to know what to do with the very old looking SPTag stuff, which is why it isn't in my branch yet. If anyone wants to take a look and advise me on how to refactor this to make it work, the tag stuff is here: http://sta.sh/01etufm3jqvt (seriously, what the heck is an SPObjectClass? is that some sort of impls thing?) ======
sp_object_class->build = sp_tag_build; sp_object_class->release = sp_tag_release; sp_object_class->write = sp_tag_write; sp_object_class->set = sp_tag_set; sp_object_class->update = sp_tag_update;
Create virtual methods out of them.
class SPTag : public SPObject { virtual void build(...); ... };
Have a look at their declarations in SPObject.
sp_tag_init(SPTag *tag)
That's the constructor.
if (((SPObjectClass *) tag_parent_class)->write) { ((SPObjectClass *) tag_parent_class)->write(object, doc, repr, flags); }
That's a call to SPObject::write(object, doc, repr, flags);
sp_tag_class_init(SPTagClass *klass) sp_tag_get_type()
Throw them out.
If the process is still unclear, don't hesitate to ask!
Regards, Markus
-----Ursprüngliche Nachricht----- Von: liamw [mailto:inkscapebrony@...400...] Gesendet: Montag, 21. April 2014 21:25 An: inkscape-devel@lists.sourceforge.net Betreff: [Inkscape-devel] Merge in certain Ponyscape features
Many of the developers are probably aware of a popular fork of Inkscape called Ponyscape.
If you don't know of it, here are the extra features it offers: • Inverse clipping (clearly I'm not going to merge this in) • Objects dialog (http://sta.sh/0zb66ec8hyk ) • Tags dialog (selection sets http://sta.sh/01n137vphezw ) • Power stroke point control dialog (activated by shift+clicking width points http://sta.sh/01s1vyyazw8k ) • CubicBezierSmooth Power Strokes (http://sta.sh/0232eheuvzn0 ) • UI enhancements (for example https://bugs.launchpad.net/inkscape/+bug/1310688 ) • 5 new path effects ◦ Attach Path (there is a great tutorial on this by R4inbowR4ge here http://youtu.be/5o5P0897vb8 ) ◦ Bounding Box (...clearly you know what this one does, right?) ◦ Ellipse by 5 Points ◦ Fill Between Strokes (obsoleted) ◦ Fill Between Many (http://sta.sh/0mze2vk449o )
Path effects gallery: http://sta.sh/2257tq53v5kb
My plan is to get (most) of these features merged into trunk to keep them from bit-rotting away. I have created a branch here at Launchpad: https://launchpad.net/~inkscapebrony/inkscape/inkscape which addresses the majority of these features.
I've also fixed this: https://bugs.launchpad.net/inkscape/+bug/1290573 and this: https://bugs.launchpad.net/inkscape/+bug/1290573 (AFAIU neither have been fixed in trunk)
I'm asking for a little review—and possibly some feedback?—on the new features in the branch.
Also, I am not familiar enough with the Inkscape codebase to know what to do with the very old looking SPTag stuff, which is why it isn't in my branch yet. If anyone wants to take a look and advise me on how to refactor this to make it work, the tag stuff is here: http://sta.sh/01etufm3jqvt (seriously, what the heck is an SPObjectClass? is that some sort of impls thing?)
-- View this message in context: http://inkscape.13.x6.nabble.com/Merge-in-certain-Ponyscape-features-tp49702... Sent from the Inkscape - Dev mailing list archive at Nabble.com.
------------------------------------------------------------------------------ Start Your Social Network Today - Download eXo Platform Build your Enterprise Intranet with eXo Platform Software Java Based Open Source Intranet - Social, Extensible, Cloud Ready Get Started Now And Turn Your Intranet Into A Collaboration Platform http://p.sf.net/sfu/ExoPlatform _______________________________________________ Inkscape-devel mailing list Inkscape-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/inkscape-devel
I got most of it. A few things were still off and would be better resolved in the hands of a more experienced developer on this project.
I ran into two problems:
sp-tag-use.cpp:42 How do I bind a connection to a class member? sp-tag-use.cpp:175 How do I allocate an object of whatever type that happens to be? Is there a function that will do it for me?
Also, it would be a good idea if you scan through and check for any issues at a glance ;)
Thanks, Liam
-- View this message in context: http://inkscape.13.x6.nabble.com/Merge-in-certain-Ponyscape-features-tp49702... Sent from the Inkscape - Dev mailing list archive at Nabble.com.
On Mon, Apr 21, 2014 at 12:24:53PM -0700, liamw wrote:
Many of the developers are probably aware of a popular fork of Inkscape called Ponyscape.
If you don't know of it, here are the extra features it offers: • Inverse clipping (clearly I'm not going to merge this in) • Objects dialog (http://sta.sh/0zb66ec8hyk ) • Tags dialog (selection sets http://sta.sh/01n137vphezw ) • Power stroke point control dialog (activated by shift+clicking width points http://sta.sh/01s1vyyazw8k ) • CubicBezierSmooth Power Strokes (http://sta.sh/0232eheuvzn0 ) • UI enhancements (for example https://bugs.launchpad.net/inkscape/+bug/1310688 ) • 5 new path effects ◦ Attach Path (there is a great tutorial on this by R4inbowR4ge here http://youtu.be/5o5P0897vb8 ) ◦ Bounding Box (...clearly you know what this one does, right?) ◦ Ellipse by 5 Points ◦ Fill Between Strokes (obsoleted) ◦ Fill Between Many (http://sta.sh/0mze2vk449o )
Path effects gallery: http://sta.sh/2257tq53v5kb
My plan is to get (most) of these features merged into trunk to keep them from bit-rotting away. I have created a branch here at Launchpad: https://launchpad.net/~inkscapebrony/inkscape/inkscape which addresses the majority of these features.
I've also fixed this: https://bugs.launchpad.net/inkscape/+bug/1290573 and this: https://bugs.launchpad.net/inkscape/+bug/1290573 (AFAIU neither have been fixed in trunk)
This is great, and thanks for undertaking this work!
In about a week I'm going to be opening the Experimental Branch for doing feature work on while we stabilize 0.91 for release. I would encourage you to consider merging this into the Experimental Branch rather than directly into trunk. That way people can easily review and test it, and give feedback, without risking adding bugs to the release branch. That way it won't bit rot, and as individual features from this are ready to go they can be merged on over to trunk.
I'm asking for a little review—and possibly some feedback?—on the new features in the branch.
Also, I am not familiar enough with the Inkscape codebase to know what to do with the very old looking SPTag stuff, which is why it isn't in my branch yet. If anyone wants to take a look and advise me on how to refactor this to make it work, the tag stuff is here: http://sta.sh/01etufm3jqvt (seriously, what the heck is an SPObjectClass? is that some sort of impls thing?)
I'm not even sure that functionality is really needed. Couldn't this be done better using groups or layers?
-- View this message in context: http://inkscape.13.x6.nabble.com/Merge-in-certain-Ponyscape-features-tp49702... Sent from the Inkscape - Dev mailing list archive at Nabble.com.
Start Your Social Network Today - Download eXo Platform Build your Enterprise Intranet with eXo Platform Software Java Based Open Source Intranet - Social, Extensible, Cloud Ready Get Started Now And Turn Your Intranet Into A Collaboration Platform http://p.sf.net/sfu/ExoPlatform _______________________________________________ Inkscape-devel mailing list Inkscape-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/inkscape-devel
Bryce Harrington-3 wrote
I'm asking for a little review—and possibly some feedback?—on the new features in the branch.
Also, I am not familiar enough with the Inkscape codebase to know what to do with the very old looking SPTag stuff, which is why it isn't in my branch yet. If anyone wants to take a look and advise me on how to refactor this to make it work, the tag stuff is here: http://sta.sh/01etufm3jqvt (seriously, what the heck is an SPObjectClass? is that some sort of impls thing?)
I'm not even sure that functionality is really needed. Couldn't this be done better using groups or layers?
We've had some wishlist reports about tags—sometimes "not layers," or "selection sets"—and Ponyscape has this feature, which allows several objects to be on completely different layers, and still retain membership of the tag. So why not?
https://blueprints.launchpad.net/inkscape/+spec/element-tagging
-- View this message in context: http://inkscape.13.x6.nabble.com/Merge-in-certain-Ponyscape-features-tp49702... Sent from the Inkscape - Dev mailing list archive at Nabble.com.
2014-04-21 23:44 GMT+02:00 Bryce Harrington <bryce@...961...>:
Also, I am not familiar enough with the Inkscape codebase to know what to do with the very old looking SPTag stuff, which is why it isn't in my branch yet. If anyone wants to take a look and advise me on how to refactor this to make it work, the tag stuff is here: http://sta.sh/01etufm3jqvt (seriously, what the heck is an SPObjectClass? is that some sort of impls thing?)
I'm not even sure that functionality is really needed. Couldn't this be done better using groups or layers?
A few times I have run into a problem where I wanted to group objects which were not consecutive in the Z order. Imagine for example drawing the planetary ring on the planet in this picture:
http://2.bp.blogspot.com/-6SdVF12kots/UBSikNLslvI/AAAAAAAACEo/4wvTAmWt2eo/s1...
Clearly you will need two objects - one for the part that goes behind the planet and one for the part that goes above it. Right now there is no way to logically associate these objects so that they are always selected together. So I think this feature has some merit, but it needs to be implemented carefully so that it doesn't create confusion with groups and layers. Perhaps we could create a group if the selected objects are consecutive in the Z-order and create a "tag" (or "selection set", or whatever) when they are not.
Digression: this ties into a very important refactoring item. Many of the functions implementing well-known UI commands take Inkscape::Selection or SPDesktop as a parameter, even though what they actually need is just a list of selected objects with an enforced invariant that no object in the list is an ancestor of another. Therefore we need a base class for Inkscape::Selection, called e.g. Inkscape::ObjectSet (though ideally this base should be called Inkscape::Selection and the UI-related derived class should be called Inkscape::UI::DesktopSelection). Inkscape::ObjectSet would become the parameter type for functions currently in selection-chemistry.cpp, or those functions could become methods of ObjectSet. This would massively simplify internal coding, since there would be no need to work around UI code when you want to do reuse an operation you already know from the UI.
Regards, Krzysztof
On Mon, Apr 21, 2014 at 11:24 PM, liamw wrote:
• Inverse clipping (clearly I'm not going to merge this in)
Clearly? Why? :)
• Objects dialog (http://sta.sh/0zb66ec8hyk ) • Tags dialog (selection sets http://sta.sh/01n137vphezw )
Just an armchair critic comment: these two dialogs belong together. When you have time, please have a look at how tagging of resources is done in GIMP for an idea how this could be implemented. It's a rather solid design.
Alexandre
On Tue, Apr 22, 2014, at 06:31 AM, Alexandre Prokoudine wrote:
On Mon, Apr 21, 2014 at 11:24 PM, liamw wrote:
• Objects dialog (http://sta.sh/0zb66ec8hyk ) • Tags dialog (selection sets http://sta.sh/01n137vphezw )
Just an armchair critic comment: these two dialogs belong together. When you have time, please have a look at how tagging of resources is done in GIMP for an idea how this could be implemented. It's a rather solid design.
Alexandre
Yes. I've discussed this a bit already on IRC, but the phrase "tag" was really abused in the Ponyscape feature, and needs some major overhaul.
The simple approach would be to just call things other than "tag", as that have a very well known usage in the media realm ("tags" as in keywords "tagging" photos, flikr, etc.) IIRC, the Ponyscape feature is more of "object hierarchy tree" than "tags".
However, we might want to look into implementing "selection groups" different than the Ponyscape's "tags" implementation, and possibly include use of real tagging. For example, we might want to allow for selecting all with the string "hand" attached, all with the string "alice" and all with the string "left". Entering those three strings in a tags entry would allow us to get "Alice's left hand" selected quickly and simply.
For the object dialog (and/or layers, and/or XML tree), allowing a tags search entry field would allow us to highlight all matching objects by hiding non-matching ones or preferably by dimming them out.
participants (6)
-
Alexandre Prokoudine
-
Bryce Harrington
-
Jon A. Cruz
-
Krzysztof Kosiński
-
liamw
-
Markus Engel