I just saw an article in comp.graphics.apps.gimp (in the thread with
the subject "White balance tool?") that starts describing a method
with these words: "use the color picker on the 'white' color,
duplicate the background layer, delete the original, add a layer..."
I had to read that twice to understand what he was trying to to. Why
does he duplicate the background layer and then delete the original
immediately afterwards? Well, the reason is simple: this is the
easiest and fastest way to add an alpha channel to the background
layer. If you haven't assigned a shortcut key to "Layers -> Add Alpha
Channel", then it is faster to click on the buttons to duplicate the
layer, re-select it, and click on the trash can.
So although the "right" way to add an alpha channel to the background
layer is to use "Layers -> Add Alpha Channel", it looks like many
users prefer to rely on a side-effect of some other features that are
easier to use and understand. Even if this is ridiculous from a
developer's point of view (think about the waste of CPU cycles and
memory to duplicate and then delete the tiles), it makes sense for the
users. And this probably shows that there is a problem with this
concept (as Marc mentioned in a recent message).
Why do we need "Add alpha channel" anyway? I understand that if you
are working only with single-layer RGB images (not RGBA), it is better
to have only the R,G,B components in order to save memory and
processing time. But as soon as there is more than one layer in the
image, is there any reason to keep the background layer as RGB instead
of promoting it automatically to RGBA? Why do we need to have a Tip
of the Day that tells the user to add an alpha channel, instead of
doing this automatically?
It should be easy add an alpha channel to the background layer as soon
as a second layer is added to the image. Is there a reason why this
should not be done automatically?
I think that it would make things easier to understand for the user.
Making the background layer "special" is not very intuitive. For
example: create a new image, draw something in the background layer.
Then add a new layer and draw something there. Now make a selection
and use Edit->Clear. If you do that in the new layer, this makes the
selected area transparent. If you do that in the background layer, it
fills that area with the background color... until you select "Add
Alpha Channel", of course. But you have to read the tips in order to
know that. It would be better to make all layers behave in the same
way. Promoting the background layer automatically would ensure that
an RGBA image has only RGBA layers, while an RGB image has only one
RGB layer (this could also make some code simpler, by removing some
tests on the layers' type).
What do you think?
I would even go as far as removing the "Add Alpha Channel" option from
the menus, and suggest that the prefered method to add transparency to
an image that has only one layer is to add a new layer, even if it is
deleted immediately. This is not worse than the method used now by
some users (duplicate and delete the original) and I think that it
would be more intuitive to some users.
-Raphael