Today I took some time studying the J2D code [1] and came across a bunch
of warnings that I thought I'd remove (only in sun/java2d/x11 for now):
- Remove unused imports, makes code slightly cleaner.
- Access static fields like SunGraphics2D.XYZ rather than sg2d.XYZ.
Better style generally and avoids potential programming error (rarely
though).
- Add @Override to overriding methods. In case the superclass method
changes name and/or signature, this triggers a compiler error, thus
preventing accidental problems when refactoring.
- Remove some unnecessary casts to String. Makes code slightly cleaner.
Find the patch attached. Feel free to include it in OpenJDK if you like.
Cheers, Roman
--
Dipl.-Inform. (FH) Roman Kennke, Software Engineer, http://kennke.org
aicas Allerton Interworks Computer Automated Systems GmbH
Haid-und-Neu-Straße 18 * D-76131 Karlsruhe * Germany
http://www.aicas.com * Tel: +49-721-663 968-0
USt-Id: DE216375633, Handelsregister HRB 109481, AG Karlsruhe
Geschäftsführer: Dr. James J. Hunt
Index: j2se/src/solaris/classes/sun/java2d/x11/X11Renderer.java
===================================================================
--- j2se/src/solaris/classes/sun/java2d/x11/X11Renderer.java (Revision 252)
+++ j2se/src/solaris/classes/sun/java2d/x11/X11Renderer.java (Arbeitskopie)
@@ -28,12 +28,9 @@
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
-import java.awt.geom.PathIterator;
import java.awt.geom.Path2D;
-import java.awt.geom.IllegalPathStateException;
import sun.awt.SunToolkit;
import sun.java2d.SunGraphics2D;
-import sun.java2d.SurfaceData;
import sun.java2d.loops.GraphicsPrimitive;
import sun.java2d.pipe.Region;
import sun.java2d.pipe.PixelDrawPipe;
@@ -299,7 +296,7 @@
private void doPath(SunGraphics2D sg2d, Shape s, boolean isFill) {
Path2D.Float p2df;
int transx, transy;
- if (sg2d.transformState <= sg2d.TRANSFORM_INT_TRANSLATE) {
+ if (sg2d.transformState <= SunGraphics2D.TRANSFORM_INT_TRANSLATE) {
if (s instanceof Path2D.Float) {
p2df = (Path2D.Float)s;
} else {
@@ -323,10 +320,10 @@
}
public void draw(SunGraphics2D sg2d, Shape s) {
- if (sg2d.strokeState == sg2d.STROKE_THIN) {
+ if (sg2d.strokeState == SunGraphics2D.STROKE_THIN) {
// Delegate to drawPolygon() if possible...
if (s instanceof Polygon &&
- sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE)
+ sg2d.transformState < SunGraphics2D.TRANSFORM_TRANSLATESCALE)
{
Polygon p = (Polygon) s;
drawPolygon(sg2d, p.xpoints, p.ypoints, p.npoints);
@@ -336,7 +333,7 @@
// Otherwise we will use drawPath() for
// high-quality thin paths.
doPath(sg2d, s, false);
- } else if (sg2d.strokeState < sg2d.STROKE_CUSTOM) {
+ } else if (sg2d.strokeState < SunGraphics2D.STROKE_CUSTOM) {
// REMIND: X11 can handle uniform scaled wide lines
// and dashed lines itself if we set the appropriate
// XGC attributes (TBD).
@@ -360,10 +357,10 @@
}
public void fill(SunGraphics2D sg2d, Shape s) {
- if (sg2d.strokeState == sg2d.STROKE_THIN) {
+ if (sg2d.strokeState == SunGraphics2D.STROKE_THIN) {
// Delegate to fillPolygon() if possible...
if (s instanceof Polygon &&
- sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE)
+ sg2d.transformState < SunGraphics2D.TRANSFORM_TRANSLATESCALE)
{
Polygon p = (Polygon) s;
fillPolygon(sg2d, p.xpoints, p.ypoints, p.npoints);
@@ -378,7 +375,7 @@
AffineTransform at;
int transx, transy;
- if (sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE) {
+ if (sg2d.transformState < SunGraphics2D.TRANSFORM_TRANSLATESCALE) {
// Transform (translation) will be done by XFillSpans
at = null;
transx = sg2d.transX;
@@ -419,18 +416,21 @@
int w, int h);
public static class X11TracingRenderer extends X11Renderer {
+ @Override
void XDrawLine(long pXSData, long xgc,
int x1, int y1, int x2, int y2)
{
GraphicsPrimitive.tracePrimitive("X11DrawLine");
super.XDrawLine(pXSData, xgc, x1, y1, x2, y2);
}
+ @Override
void XDrawRect(long pXSData, long xgc,
int x, int y, int w, int h)
{
GraphicsPrimitive.tracePrimitive("X11DrawRect");
super.XDrawRect(pXSData, xgc, x, y, w, h);
}
+ @Override
void XDrawRoundRect(long pXSData, long xgc,
int x, int y, int w, int h,
int arcW, int arcH)
@@ -438,12 +438,14 @@
GraphicsPrimitive.tracePrimitive("X11DrawRoundRect");
super.XDrawRoundRect(pXSData, xgc, x, y, w, h, arcW, arcH);
}
+ @Override
void XDrawOval(long pXSData, long xgc,
int x, int y, int w, int h)
{
GraphicsPrimitive.tracePrimitive("X11DrawOval");
super.XDrawOval(pXSData, xgc, x, y, w, h);
}
+ @Override
void XDrawArc(long pXSData, long xgc,
int x, int y, int w, int h,
int angleStart, int angleExtent)
@@ -452,6 +454,7 @@
super.XDrawArc(pXSData, xgc,
x, y, w, h, angleStart, angleExtent);
}
+ @Override
void XDrawPoly(long pXSData, long xgc,
int transx, int transy,
int[] xpoints, int[] ypoints,
@@ -461,6 +464,7 @@
super.XDrawPoly(pXSData, xgc, transx, transy,
xpoints, ypoints, npoints, isclosed);
}
+ @Override
void XDoPath(SunGraphics2D sg2d, long pXSData, long xgc,
int transX, int transY, Path2D.Float p2df,
boolean isFill)
@@ -470,12 +474,14 @@
"X11DrawPath");
super.XDoPath(sg2d, pXSData, xgc, transX, transY, p2df, isFill);
}
+ @Override
void XFillRect(long pXSData, long xgc,
int x, int y, int w, int h)
{
GraphicsPrimitive.tracePrimitive("X11FillRect");
super.XFillRect(pXSData, xgc, x, y, w, h);
}
+ @Override
void XFillRoundRect(long pXSData, long xgc,
int x, int y, int w, int h,
int arcW, int arcH)
@@ -483,12 +489,14 @@
GraphicsPrimitive.tracePrimitive("X11FillRoundRect");
super.XFillRoundRect(pXSData, xgc, x, y, w, h, arcW, arcH);
}
+ @Override
void XFillOval(long pXSData, long xgc,
int x, int y, int w, int h)
{
GraphicsPrimitive.tracePrimitive("X11FillOval");
super.XFillOval(pXSData, xgc, x, y, w, h);
}
+ @Override
void XFillArc(long pXSData, long xgc,
int x, int y, int w, int h,
int angleStart, int angleExtent)
@@ -497,6 +505,7 @@
super.XFillArc(pXSData, xgc,
x, y, w, h, angleStart, angleExtent);
}
+ @Override
void XFillPoly(long pXSData, long xgc,
int transx, int transy,
int[] xpoints, int[] ypoints,
@@ -506,6 +515,7 @@
super.XFillPoly(pXSData, xgc,
transx, transy, xpoints, ypoints, npoints);
}
+ @Override
void XFillSpans(long pXSData, long xgc,
SpanIterator si, long iterator, int transx, int transy)
{
@@ -513,6 +523,7 @@
super.XFillSpans(pXSData, xgc,
si, iterator, transx, transy);
}
+ @Override
void devCopyArea(long sdOps, long xgc,
int srcx, int srcy,
int dstx, int dsty,
Index: j2se/src/solaris/classes/sun/java2d/x11/X11PMBlitBgLoops.java
===================================================================
--- j2se/src/solaris/classes/sun/java2d/x11/X11PMBlitBgLoops.java (Revision 252)
+++ j2se/src/solaris/classes/sun/java2d/x11/X11PMBlitBgLoops.java (Arbeitskopie)
@@ -79,6 +79,7 @@
super(srcType, CompositeType.SrcNoEa, dstType);
}
+ @Override
public void BlitBg(SurfaceData src, SurfaceData dst,
Composite comp, Region clip, Color bgColor,
int sx, int sy,
Index: j2se/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java
===================================================================
--- j2se/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java (Revision 252)
+++ j2se/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java (Arbeitskopie)
@@ -27,20 +27,17 @@
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
-import java.awt.Color;
import java.awt.Composite;
import java.awt.Rectangle;
import java.awt.GraphicsConfiguration;
import java.awt.Image;
import java.awt.color.ColorSpace;
import java.awt.Transparency;
-import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.ComponentColorModel;
import java.awt.image.DirectColorModel;
import java.awt.image.IndexColorModel;
import java.awt.image.Raster;
-import java.awt.peer.ComponentPeer;
import sun.awt.SunHints;
import sun.awt.SunToolkit;
@@ -57,7 +54,6 @@
import sun.java2d.loops.RenderLoops;
import sun.java2d.loops.GraphicsPrimitive;
import sun.java2d.loops.XORComposite;
-import sun.java2d.loops.Blit;
import sun.java2d.pipe.ValidatePipe;
import sun.java2d.pipe.PixelToShapeConverter;
import sun.java2d.pipe.TextPipe;
@@ -201,13 +197,13 @@
static {
if (!GraphicsEnvironment.isHeadless()) {
// If a screen magnifier is present, don't attempt to use DGA
- String magPresent = (String) java.security.AccessController.doPrivileged
+ String magPresent = java.security.AccessController.doPrivileged
(new sun.security.action.GetPropertyAction("javax.accessibility.screen_magnifier_present"));
boolean tryDGA = magPresent == null || !"true".equals(magPresent);
initIDs(XORComposite.class, tryDGA);
- String xtextpipe = (String) java.security.AccessController.doPrivileged
+ String xtextpipe = java.security.AccessController.doPrivileged
(new sun.security.action.GetPropertyAction("sun.java2d.xtextpipe"));
if (xtextpipe == null || "true".startsWith(xtextpipe)) {
if ("true".equals(xtextpipe)) {
@@ -246,8 +242,7 @@
if (GraphicsEnvironment.isHeadless()) {
accelerationEnabled = Boolean.FALSE;
} else {
- String prop =
- (String) java.security.AccessController.doPrivileged(
+ String prop = java.security.AccessController.doPrivileged(
new sun.security.action.GetPropertyAction("sun.java2d.pmoffscreen"));
if (prop != null) {
// true iff prop==true, false otherwise
@@ -266,11 +261,12 @@
return X11SurfaceDataProxy.createProxy(srcData, graphicsConfig);
}
+ @Override
public void validatePipe(SunGraphics2D sg2d) {
if (sg2d.antialiasHint != SunHints.INTVAL_ANTIALIAS_ON &&
- sg2d.paintState <= sg2d.PAINT_ALPHACOLOR &&
- (sg2d.compositeState <= sg2d.COMP_ISCOPY ||
- sg2d.compositeState == sg2d.COMP_XOR))
+ sg2d.paintState <= SunGraphics2D.PAINT_ALPHACOLOR &&
+ (sg2d.compositeState <= SunGraphics2D.COMP_ISCOPY ||
+ sg2d.compositeState == SunGraphics2D.COMP_XOR))
{
if (x11txpipe == null) {
/*
@@ -288,7 +284,7 @@
return;
}
- if (sg2d.clipState == sg2d.CLIP_SHAPE) {
+ if (sg2d.clipState == SunGraphics2D.CLIP_SHAPE) {
// Do this to init textpipe correctly; we will override the
// other non-text pipes below
// REMIND: we should clean this up eventually instead of
@@ -302,7 +298,7 @@
case SunHints.INTVAL_TEXT_ANTIALIAS_OFF:
// Use X11 pipe even if DGA is available since DGA
// text slows everything down when mixed with X11 calls
- if (sg2d.compositeState == sg2d.COMP_ISCOPY) {
+ if (sg2d.compositeState == SunGraphics2D.COMP_ISCOPY) {
sg2d.textpipe = x11textpipe;
} else {
sg2d.textpipe = solidTextRenderer;
@@ -326,7 +322,7 @@
case SunHints.INTVAL_TEXT_ANTIALIAS_OFF:
// Use X11 pipe even if DGA is available since DGA
// text slows everything down when mixed with X11 calls
- if (sg2d.compositeState == sg2d.COMP_ISCOPY) {
+ if (sg2d.compositeState == SunGraphics2D.COMP_ISCOPY) {
sg2d.textpipe = x11textpipe;
} else {
sg2d.textpipe = solidTextRenderer;
@@ -343,10 +339,10 @@
}
}
- if (sg2d.transformState >= sg2d.TRANSFORM_TRANSLATESCALE) {
+ if (sg2d.transformState >= SunGraphics2D.TRANSFORM_TRANSLATESCALE) {
sg2d.drawpipe = x11txpipe;
sg2d.fillpipe = x11txpipe;
- } else if (sg2d.strokeState != sg2d.STROKE_THIN){
+ } else if (sg2d.strokeState != SunGraphics2D.STROKE_THIN){
sg2d.drawpipe = x11txpipe;
sg2d.fillpipe = x11pipe;
} else {
@@ -367,9 +363,10 @@
}
}
+ @Override
public RenderLoops getRenderLoops(SunGraphics2D sg2d) {
- if (sg2d.paintState <= sg2d.PAINT_ALPHACOLOR &&
- sg2d.compositeState <= sg2d.COMP_ISCOPY)
+ if (sg2d.paintState <= SunGraphics2D.PAINT_ALPHACOLOR &&
+ sg2d.compositeState <= SunGraphics2D.COMP_ISCOPY)
{
return solidloops;
}
@@ -448,6 +445,7 @@
*/
public abstract boolean canSourceSendExposures(int x, int y, int w, int h);
+ @Override
public boolean copyArea(SunGraphics2D sg2d,
int x, int y, int w, int h, int dx, int dy)
{
@@ -458,7 +456,7 @@
makePipes();
}
CompositeType comptype = sg2d.imageComp;
- if (sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE &&
+ if (sg2d.transformState < SunGraphics2D.TRANSFORM_TRANSLATESCALE &&
(CompositeType.SrcOverNoEa.equals(comptype) ||
CompositeType.SrcNoEa.equals(comptype)))
{
@@ -467,8 +465,8 @@
SunToolkit.awtLock();
try {
boolean needExposures = canSourceSendExposures(x, y, w, h);
- long xgc = getBlitGC(sg2d.getCompClip(), needExposures);
- x11pipe.devCopyArea(getNativeOps(), xgc,
+ long _xgc = getBlitGC(sg2d.getCompClip(), needExposures);
+ x11pipe.devCopyArea(getNativeOps(), _xgc,
x, y,
x + dx, y + dy,
w, h);
@@ -567,6 +565,7 @@
public native void setInvalid();
+ @Override
public void invalidate() {
if (isValid()) {
setInvalid();
@@ -743,6 +742,7 @@
* it could choose wrong loop (blit instead of blitbg,
* for example).
*/
+ @Override
public int getTransparency() {
return transparency;
}
@@ -756,6 +756,7 @@
return (x < 0 || y < 0 || (x+w) > width || (y+h) > height);
}
+ @Override
public void flush() {
/*
* We need to invalidate the surface before disposing the
@@ -780,6 +781,7 @@
private static LazyPipe lazypipe = new LazyPipe();
public static class LazyPipe extends ValidatePipe {
+ @Override
public boolean validate(SunGraphics2D sg2d) {
X11SurfaceData xsd = (X11SurfaceData) sg2d.surfaceData;
if (!xsd.isDrawableValid()) {
Index: j2se/src/solaris/classes/sun/java2d/x11/X11VolatileSurfaceManager.java
===================================================================
--- j2se/src/solaris/classes/sun/java2d/x11/X11VolatileSurfaceManager.java (Revision 252)
+++ j2se/src/solaris/classes/sun/java2d/x11/X11VolatileSurfaceManager.java (Arbeitskopie)
@@ -103,6 +103,7 @@
return sData;
}
+ @Override
protected boolean isConfigValid(GraphicsConfiguration gc) {
// REMIND: we might be too paranoid here, requiring that
// the GC be exactly the same as the original one. The
Index: j2se/src/solaris/classes/sun/java2d/x11/X11SurfaceDataProxy.java
===================================================================
--- j2se/src/solaris/classes/sun/java2d/x11/X11SurfaceDataProxy.java (Revision 252)
+++ j2se/src/solaris/classes/sun/java2d/x11/X11SurfaceDataProxy.java (Arbeitskopie)
@@ -26,8 +26,6 @@
package sun.java2d.x11;
import java.awt.Color;
-import java.awt.AlphaComposite;
-import java.awt.GraphicsConfiguration;
import java.awt.Transparency;
import java.awt.image.ColorModel;
import java.awt.image.IndexColorModel;
Index: j2se/src/solaris/classes/sun/java2d/x11/X11PMBlitLoops.java
===================================================================
--- j2se/src/solaris/classes/sun/java2d/x11/X11PMBlitLoops.java (Revision 252)
+++ j2se/src/solaris/classes/sun/java2d/x11/X11PMBlitLoops.java (Arbeitskopie)
@@ -28,11 +28,9 @@
import sun.awt.SunToolkit;
import sun.java2d.loops.GraphicsPrimitive;
import sun.java2d.loops.GraphicsPrimitiveMgr;
-import sun.java2d.loops.GraphicsPrimitiveProxy;
import sun.java2d.loops.CompositeType;
import sun.java2d.loops.SurfaceType;
import sun.java2d.loops.Blit;
-import sun.java2d.loops.MaskBlit;
import sun.java2d.pipe.Region;
import sun.java2d.SurfaceData;
import java.awt.Composite;
@@ -128,6 +126,7 @@
dstType);
}
+ @Override
public void Blit(SurfaceData src, SurfaceData dst,
Composite comp, Region clip,
int sx, int sy,
@@ -178,6 +177,7 @@
this.dstType = delegateDstType;
}
+ @Override
public void Blit(SurfaceData src, SurfaceData dst,
Composite comp, Region clip,
int sx, int sy, int dx, int dy, int w, int h)