On 11/7/2016 6:09 PM, Sergey Bylokhov wrote:
On 27.10.16 21:43, Semyon Sadetsky wrote:
As you mention above background of the window will be always cleared
by the window itself, and we can get double alpha in the background
when we blit the backbuffer to the window. What composite is used when
we draw backbuffer to the window?
It is src-over.
If it is src-over mean that in the window you will get a composite of
colors, which was drawn to the backbuffer and the colors which was
drawn in the window(which was drawn by the window itself). And in this
case you will get a different results when you paint via backbuffer or
when you skip it.
I did not get this. You've state if JRootPane has own different
transparent color than it may be painted twice.
At first, I'm not sure that JRootPane may have such color. Because we
only support window translucency if window is non-opaque and having
non-opaque window with opaque JRootPane seems incorrect usage.
But anyway I don't see the way how the JRootPane transparent color may
be pained twice. For non-opaque JRootPane it's background color is not
painted, regardless of transparency. With opaque JRootPane the parent
window paint() method will not be called and window background will not
be painted.
Should the previous composite be restored after the rect filling?
SRC should be the default composite type.
default composite type should be srcOver, and it should be restored
before call paintToOffscreen().