On Fri, 29 Nov 2002 11:29:12 -0500, Patrick McFarland <unknown@xxxxxxxxx> wrote: > Btw, has there been a discussion on how layer grouping will work? > I want to be able to both group layers in just a group (aka doesnt change > how rendering works at all) then also be able to group layers together, and > have the output of that act as a layer (aka, for calculating the "virtual" > layer, only the layers inside of it are done, no outside layers interact with > these except through the final "virtual" layer.) There has been some discussion about layer grouping, but I do not think that any concrete implementation proposals have ever been agreed upon. So anyone who could come up with a GUI mock-up is welcome. Code is even more welcome, of course. ;-) However, here is my point of view (which may be different from what some other developers think, so do not take this for granted). There are two kinds of "grouping": - Simple linking of layers so that some operations such as toggling their visibility or moving the whole group of layers can easily be applied to them (bug #86337, bug #86277). These operations would not modify the pixels in the layers. This could probably also be used for implementing the clipping groups (bug #51112). - Grouping of layers in such a way that a merged image of the layers is stored in a virtual layer and some operations can be applied to this merged layer: color adjustments, transformations or even any PDB operation, including the ones done by a plug-in. Whenever a layer in the group is modified, the merged image is rebuilt and the operation associated with it is applied to in order to re-create the updated "active layer". This can be used to implement the Photoshop styles or adjustment layers (bug #79025, bug #98262). In summary, the "active layer" would have a list of layers, a drawable and one PDB function (with its current parameters) associated with it. Whenever something happens to one of the layers in the list, a new (invisible) drawable is allocated, it gets the merged copy of all layers, and then the PDB function is applied to it. When the results are ready, the new drawable replaces the one that was visible. In some cases, it may be better to keep the two drawables (merged view + results) and to apply the PDB function only to the regions that have been modified, but this is only an optimization. So as you mentioned yourself, there are two ways to define "groups": they have different purposes and need to be implemented differently. The first and second kind of groups would probably have to be defined differently in the user interface. So again, some GUI mock-ups would be welcome. Note that it is important to become familiar with all features and their distinct purposes before trying to think about how they could be used, otherwise it is easy to miss some important things. Here are some direct links to the relevant bug reports: - "clipping groups or masking groups (like in Photoshop files)" http://bugzilla.gnome.org/show_bug.cgi?id=51112 - "Add support for Photoshop Styles and adjustment layers" http://bugzilla.gnome.org/show_bug.cgi?id=79025 - "use the linking of layers for more useful action than moving only" http://bugzilla.gnome.org/show_bug.cgi?id=86277 - "add support for layer trees or layer groups" http://bugzilla.gnome.org/show_bug.cgi?id=86337 - "Adjustment Layers (like in Photoshop)" http://bugzilla.gnome.org/show_bug.cgi?id=98262 (marked as dup. of #79025, but contains some useful descriptions) -Raphaël