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)