CVSROOT: /cvsroot/classpath Module name: classpath Changes by: Roman Kennke <rabbit78> 06/06/09 20:49:51
Modified files: . : ChangeLog gnu/java/awt/java2d: AbstractGraphics2D.java PolyEdge.java Log message: 2006-06-09 Roman Kennke <[EMAIL PROTECTED]> * gnu/java/awt/java2d/AbstractGraphics2D.java (drawImage): Fixed scaling. (fillShape): Removed offset handling. (fillShapeImpl): Limit scanlining to device bounds. (getSegments): Removed offset handling. * gnu/java/awt/java2d/PolyEdge.java (toString): Include isClip flag in output. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/classpath/ChangeLog?cvsroot=classpath&r1=1.7746&r2=1.7747 http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/java2d/AbstractGraphics2D.java?cvsroot=classpath&r1=1.8&r2=1.9 http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/java2d/PolyEdge.java?cvsroot=classpath&r1=1.2&r2=1.3 Patches: Index: ChangeLog =================================================================== RCS file: /cvsroot/classpath/classpath/ChangeLog,v retrieving revision 1.7746 retrieving revision 1.7747 diff -u -b -r1.7746 -r1.7747 --- ChangeLog 9 Jun 2006 20:48:01 -0000 1.7746 +++ ChangeLog 9 Jun 2006 20:49:50 -0000 1.7747 @@ -1,4 +1,14 @@ -2006-06-08 Sven de Marothy <[EMAIL PROTECTED]> +2006-06-09 Roman Kennke <[EMAIL PROTECTED]> + + * gnu/java/awt/java2d/AbstractGraphics2D.java + (drawImage): Fixed scaling. + (fillShape): Removed offset handling. + (fillShapeImpl): Limit scanlining to device bounds. + (getSegments): Removed offset handling. + * gnu/java/awt/java2d/PolyEdge.java + (toString): Include isClip flag in output. + +2006-06-09 Sven de Marothy <[EMAIL PROTECTED]> * java/awt/font/TextLayout.java (getOutline): Allow null transform. @@ -56,7 +66,7 @@ (struct _Jv_reent): _freelist now a _Jv_Bigint**. Removed _allocation_map, num. Added _max_k. -2006-06-08 Roman Kennke <[EMAIL PROTECTED]> +2006-06-09 Roman Kennke <[EMAIL PROTECTED]> * gnu/java/awt/peer/gtk/CairoGraphics2D.java (drawGlyphVector): Added fallback for non-FreetypeGlyphVector Index: gnu/java/awt/java2d/AbstractGraphics2D.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/java2d/AbstractGraphics2D.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -b -r1.8 -r1.9 --- gnu/java/awt/java2d/AbstractGraphics2D.java 19 May 2006 22:23:01 -0000 1.8 +++ gnu/java/awt/java2d/AbstractGraphics2D.java 9 Jun 2006 20:49:51 -0000 1.9 @@ -1331,8 +1331,8 @@ { AffineTransform t = new AffineTransform(); t.translate(x, y); - double scaleX = (double) image.getWidth(observer) / (double) width; - double scaleY = (double) image.getHeight(observer) / (double) height; + double scaleX = (double) width / (double) image.getWidth(observer); + double scaleY = (double) height / (double) image.getHeight(observer); t.scale(scaleX, scaleY); return drawImage(image, t, observer); } @@ -1473,15 +1473,11 @@ antialias = (v == RenderingHints.VALUE_ANTIALIAS_ON); } - double offs = 0.5; - if (antialias) - offs = offs / AA_SAMPLING; - Rectangle2D userBounds = s.getBounds2D(); Rectangle2D deviceBounds = new Rectangle2D.Double(); - ArrayList segs = getSegments(s, transform, deviceBounds, false, offs); + ArrayList segs = getSegments(s, transform, deviceBounds, false); Rectangle2D clipBounds = new Rectangle2D.Double(); - ArrayList clipSegs = getSegments(clip, transform, clipBounds, true, offs); + ArrayList clipSegs = getSegments(clip, transform, clipBounds, true); segs.addAll(clipSegs); Rectangle2D inclClipBounds = new Rectangle2D.Double(); Rectangle2D.union(clipBounds, deviceBounds, inclClipBounds); @@ -1676,7 +1672,10 @@ // Scan all relevant lines. int minYInt = (int) Math.ceil(icMinY); - for (int y = minYInt; y <= maxY; y++) + + Rectangle devClip = getDeviceBounds(); + int scanlineMax = (int) Math.min(maxY, devClip.getMaxY()); + for (int y = minYInt; y < scanlineMax; y++) { ArrayList bucket = edgeTable[y - minYInt]; // Update all the x intersections in the current activeEdges table @@ -2169,8 +2168,7 @@ * @return a list of PolyEdge that form the shape in device space */ private ArrayList getSegments(Shape s, AffineTransform t, - Rectangle2D deviceBounds, boolean isClip, - double offs) + Rectangle2D deviceBounds, boolean isClip) { // Flatten the path. TODO: Determine the best flattening factor // wrt to speed and quality. @@ -2213,14 +2211,14 @@ else if (segType == PathIterator.SEG_CLOSE) { // Close the polyline. - PolyEdge edge = new PolyEdge(segX, segY - offs, - polyX, polyY - offs, isClip); + PolyEdge edge = new PolyEdge(segX, segY, + polyX, polyY, isClip); segs.add(edge); } else if (segType == PathIterator.SEG_LINETO) { - PolyEdge edge = new PolyEdge(segX, segY - offs, - seg[0], seg[1] - offs, isClip); + PolyEdge edge = new PolyEdge(segX, segY, + seg[0], seg[1], isClip); segs.add(edge); segX = seg[0]; segY = seg[1]; Index: gnu/java/awt/java2d/PolyEdge.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/java2d/PolyEdge.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -b -r1.2 -r1.3 --- gnu/java/awt/java2d/PolyEdge.java 8 May 2006 14:39:17 -0000 1.2 +++ gnu/java/awt/java2d/PolyEdge.java 9 Jun 2006 20:49:51 -0000 1.3 @@ -118,6 +118,7 @@ public String toString() { return "Edge: " + x0 + ", " + y0 + ", " + x1 + ", " + y1 + ", slope: " - + slope + ", xIntersection: " + xIntersection; + + slope + ", xIntersection: " + xIntersection + + ", isClip: " + isClip; } }