More control over gradients
First of all thanks for such a great product.
I know that full control can be achieved by directly editing the file, but I don't know how much Inkscape might still change. After looking though the files produced by Inkscape, I know that for each item that uses a gradient, a special 'dummy' gradient is created that uses the 'real' gradient. This makes it where each item can have it's own transforms for the gradient. But, what if I want two items to use the same transforms, the same 'dummy' gradient. I could use a clone, but what if I have an ellipse and a rectangle, but both I want to use the same gradient.
Here is how it currently works:
linearGradient1234 (real gradient with real stops) | |- linearGradient2345 (dummy gradient uses 1234) | | | |- rectangle (using dummy gradient 2345) | |- linearGradient7890 (dummy gradient uses 1234) | |- ellipse (using dummy gradient 7890)
What I want to be able to do is this:
linearGradient1234 (real gradient with real stops) | |- linearGradient2345 (dummy gradient uses 1234) | |- rectangle (using dummy gradient 2345) |- ellipse (using dummy gradient 2345)
So that any transforms I apply to the gradient used by the rectangle will also affect the ellipse.
Perhaps something that would be nice would be a 'graph' editor for gradients (and for other things maybe as well) that would show the 'real' gradient, and any 'dummy' child gradients connected, grandchild gradients,etc, or something where you can define the actual relationship however you want. Then, when assigning a gradient you can select from not a gradient list only showing the 'real' but a tree, where the items in the root of the tree are the top gradients and sub-items are child gradients that use the top gradients or their parent gradients (support for any level of nested gradients, grandchild gradients, etc)
When editing a gradient for an item, the ability to 'pick' which gradient is being edited would be nice as well. For example. If my document is like this:
linearGradient1234 (real gradient with real stops) | |- linearGradient2345 (dummy gradient uses 1234) | |- rectangle (using dummy gradient 2345) | |- linearGradient7890 (dummy gradient uses 2345 which uses 1234) |- ellipse (using dummy gradient 7890)
When editing the gradient of the ellipse, I can choose to edit gradient 7890 which would only affect the ellipse, or I can edit 2345, which would affect both the ellipse and the rectangle, or I can edit the stops of 1234, which would affect both. This would also make it easy to have a master transformation in 2345 that affects both and a fine-tuned transformation in 7890 just for the ellipse.
Perhaps even the same idea could be applied to anything, such as patterns as well.
Brian Vanderburg II
On Dec 18, 2007 1:36 PM, Brian Vanderburg II <BrianVanderburg2@...2404...> wrote:
So that any transforms I apply to the gradient used by the rectangle will also affect the ellipse.
Just snap together the ends of the rectangle and ellipse gradients in Gradient tool (with both objects selected), then in this tool you will be able to transform both gradients as if they were one. Or, copy the rect after transforming and paste its style onto the ellipse, this will paste the gradient position too.
Perhaps something that would be nice would be a 'graph' editor for gradients (and for other things maybe as well) that would show the 'real' gradient, and any 'dummy' child gradients connected, grandchild gradients,etc, or something where you can define the actual relationship however you want.
You have XML editor for that. It can be made more convenient of course, but I don't think we need some kind of tool specifically for gradient hierarchy. It's already confusing for many users as it is.
When editing the gradient of the ellipse, I can choose to edit gradient 7890 which would only affect the ellipse, or I can edit 2345, which would affect both the ellipse and the rectangle, or I can edit the stops of 1234, which would affect both. This would also make it easy to have a master transformation in 2345 that affects both and a fine-tuned transformation in 7890 just for the ellipse.
Again, I don't think this will be viable as user-level UI. If you need this kind of control, use the XML editor. Outside of XML editor, Inkscape is a visual, all-on-canvas application: grab that thing, drag it there, copy that over there, etc. Having to manipulate trees and numeric IDs does not fit this paradigm. Moreover, if you implement this nonstrandard tree, it will affect the behavior of things on canvas in ways that some users will find confusing, which is also bad.
In 0.46, I made one change for power users:
http://wiki.inkscape.org/wiki/index.php/ReleaseNotes046#Automatic_duplicatio...
so now it's possible to share the gradient definition with stops. However this switch is off by default, and only those who know what they're doing should enable it. Enabling similar sharing at the other levels of the gradient system will make it even more dangerous, and I don't really see the need for that.
bulia byak wrote:
On Dec 18, 2007 1:36 PM, Brian Vanderburg II <BrianVanderburg2@...2404...> wrote:
So that any transforms I apply to the gradient used by the rectangle will also affect the ellipse.
Just snap together the ends of the rectangle and ellipse gradients in Gradient tool (with both objects selected), then in this tool you will be able to transform both gradients as if they were one. Or, copy the rect after transforming and paste its style onto the ellipse, this will paste the gradient position too.
Okay that works good and the 'copy style' works best, as it actually causes both the box and the ellipse to use the 'same' gradient, and not just identical copies of that gradient. I just have to go back and change the stroke width or other minor changes. Perhaps 'paste style' could have a dialog open up where the user can specify what 'parts' of the style are to be pasted (fill, stroke, stroke style)
Perhaps something that would be nice would be a 'graph' editor for gradients (and for other things maybe as well) that would show the 'real' gradient, and any 'dummy' child gradients connected, grandchild gradients,etc, or something where you can define the actual relationship however you want.
You have XML editor for that. It can be made more convenient of course, but I don't think we need some kind of tool specifically for gradient hierarchy. It's already confusing for many users as it is.
One think that could make it a little less 'confusing' is if the 'top level' gradient could be given names. Some things the properties dialogs allows the editing of a name, but it would be nicer if I could select 'BlueEye' as a gradient than 'linearGradient7301'. The same could go for patterns as well. Or perhaps the 'XML editor' or could have 'mass rename' function to change one name to another and automatically update any references to that name.
Brian Vanderburg II
participants (2)
-
Brian Vanderburg II
-
bulia byak