< prev index next >
src/java.desktop/share/classes/sun/java2d/opengl/OGLSurfaceData.java
Print this page
*** 23,36 ****
* questions.
*/
package sun.java2d.opengl;
! import java.awt.AlphaComposite;
! import java.awt.GraphicsEnvironment;
! import java.awt.Rectangle;
! import java.awt.Transparency;
import java.awt.image.ColorModel;
import java.awt.image.Raster;
import sun.awt.SunHints;
import sun.awt.image.PixelConverter;
import sun.java2d.pipe.hw.AccelSurface;
--- 23,33 ----
* questions.
*/
package sun.java2d.opengl;
! import java.awt.*;
import java.awt.image.ColorModel;
import java.awt.image.Raster;
import sun.awt.SunHints;
import sun.awt.image.PixelConverter;
import sun.java2d.pipe.hw.AccelSurface;
*** 398,421 ****
}
/**
* For now, we can only render LCD text if:
* - the fragment shader extension is available, and
! * - blending is disabled, and
! * - the source color is opaque
! * - and the destination is opaque
*
* Eventually, we could enhance the native OGL text rendering code
* and remove the above restrictions, but that would require significantly
* more code just to support a few uncommon cases.
*/
public boolean canRenderLCDText(SunGraphics2D sg2d) {
return
graphicsConfig.isCapPresent(CAPS_EXT_LCD_SHADER) &&
! sg2d.compositeState <= SunGraphics2D.COMP_ISCOPY &&
sg2d.paintState <= SunGraphics2D.PAINT_OPAQUECOLOR &&
! sg2d.surfaceData.getTransparency() == Transparency.OPAQUE;
}
public void validatePipe(SunGraphics2D sg2d) {
TextPipe textpipe;
boolean validated = false;
--- 395,427 ----
}
/**
* For now, we can only render LCD text if:
* - the fragment shader extension is available, and
! * - the source color is opaque, and
! * - blending is SrcOverNoEa or disabled
*
* Eventually, we could enhance the native OGL text rendering code
* and remove the above restrictions, but that would require significantly
* more code just to support a few uncommon cases.
*/
public boolean canRenderLCDText(SunGraphics2D sg2d) {
return
graphicsConfig.isCapPresent(CAPS_EXT_LCD_SHADER) &&
! sg2d.surfaceData.getTransparency() == Transparency.OPAQUE &&
sg2d.paintState <= SunGraphics2D.PAINT_OPAQUECOLOR &&
! (sg2d.compositeState <= SunGraphics2D.COMP_ISCOPY ||
! (sg2d.compositeState <= SunGraphics2D.COMP_ALPHA && canHandleComposite(sg2d.composite)));
! }
!
! private boolean canHandleComposite(Composite c) {
! if (c instanceof AlphaComposite) {
! AlphaComposite ac = (AlphaComposite)c;
!
! return ac.getRule() == AlphaComposite.SRC_OVER && ac.getAlpha() >= 1f;
! }
! return false;
}
public void validatePipe(SunGraphics2D sg2d) {
TextPipe textpipe;
boolean validated = false;
< prev index next >