David Necas (Yeti) wrote:
OK, I could use alpha in a wrong sense, it's a matter of
definition, and let's agree on yours (though I wonder how's
called the object alpha==0 pixels are part of, because
I can draw on them, unlike pixels outside layer boundaries,
so they exist and are part of something).

You can also extend the boundries of your image (resize it) and draw over way over there. The image program restricts the area you can draw as a convience but that doesn't mean you can't draw out there if you want to.

But then I, as a user, don't care about alpha, and what
I really care about is transparency. So everything what was
said can be repeated, only s/alpha/transparency/. My need
for pixels retaining their properties even in invisible
state didn't disappear.

I think that is an excellent point, and a big vote for using un-premultiplied images (in fact, the only vote for using unpremultiplied images)

If this is a need of our users, then it is incorrect for the cache to scrub the color information of transparent pixels.

This still leaves the problem about what to with convolutions. Convolutions have a well defined behaviour for specific alpha's. If alpha is zero, it doesn't contribute to the covolution. Consider this chain of events:

max the alpha of a triangular area.
Blur the image.
un-erase the edge of the triangle

You will now have a new area revealed that didn't have the blur applied. This may or may not be what you want. This is either another way to mask the operation of a blur (what you wanted), or an annoying "bug" where now you have to go back six steps to before your blur, un-erase, and go forward again.

I think this is why people don't like the un-erase (it's ambigious). Please correct me if I am wrong here.

Clearly you (and probably others) have a need to reveal previously transparent areas.

Here is a potential solution.

Unambigufy the tools. Define precisly when it's ok to discard the color information and when it is not.

Instead of erase and un-erase have:

erase: this deletes all color information (truly erases the pixel and removes all information in it).

veil: this just increases alpha, preserving color information.

un-veil: this just decreases alpha, preserving color information (this is the improved un-erase).

When a pixel is totally veiled it is not affected by convolutions.

I use the name veil to suggest a mask that isn't quite the same as the other masks.

What other tools need to be unabigufied, if this were to be implemented.

Is the scrubbing done by the cache the only thing that breaks unerase?

-- Dan

Gimp-developer mailing list

Reply via email to