There was a small bug in AlphaPaintContext, which made composited painting appear too transparent. The mistake was that I pre-multiplied the alpha value to itself.
2006-05-10 Roman Kennke <[EMAIL PROTECTED]> * gnu/java/awt/java2d/AlphaCompositeContext.java (compose): Don't premultiply alpha to alpha itself. /Roman -- “Improvement makes straight roads, but the crooked roads, without Improvement, are roads of Genius.” - William Blake
Index: gnu/java/awt/java2d/AlphaCompositeContext.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/java2d/AlphaCompositeContext.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -1 -0 -r1.2 -r1.3 --- gnu/java/awt/java2d/AlphaCompositeContext.java 7 May 2006 01:16:09 -0000 1.2 +++ gnu/java/awt/java2d/AlphaCompositeContext.java 10 May 2006 09:30:03 -0000 1.3 @@ -229,21 +229,21 @@ // Prepare the input. float compositeAlpha = composite.getAlpha(); srcComponents[srcComponentsLength - 1] *= compositeAlpha; if (srcColorModel.isAlphaPremultiplied()) { for (int i = srcComponentsLength - 2; i >= 0; i--) srcComponents[i] *= compositeAlpha; } else { - for (int i = srcComponentsLength - 1; i >= 0; i--) + for (int i = srcComponentsLength - 2; i >= 0; i--) srcComponents[i] *= srcComponents[srcComponentsLength - 1]; } if (! dstColorModel.isAlphaPremultiplied()) { for (int i = dstComponentsLength - 2; i >= 0; i--) dstComponents[i] *= dstComponents[dstComponents.length - 1]; } // Determine the blending factors according to the rule in the // AlphaComposite. For some rules the factors must be determined
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil