deweese 01/11/09 07:32:57 Modified: sources/org/apache/batik/ext/awt/image/rendered TileCache.java TileMap.java sources/org/apache/batik/gvt/renderer StrokingTextPainter.java sources/org/apache/batik/gvt/text GlyphLayout.java Log: 1) Fixed a memory hanger onner in the tile cache. 2) Reindented some of the font code. Revision Changes Path 1.3 +2 -1 xml-batik/sources/org/apache/batik/ext/awt/image/rendered/TileCache.java Index: TileCache.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/ext/awt/image/rendered/TileCache.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TileCache.java 2001/02/07 18:29:59 1.2 +++ TileCache.java 2001/11/09 15:32:57 1.3 @@ -21,7 +21,8 @@ return new TileGrid(minTileX, minTileY, xSz, ySz, src, cache); } - public static TileStore getTileGrid(RenderedImage img, TileGenerator src) { + public static TileStore getTileGrid(RenderedImage img, + TileGenerator src) { return new TileGrid(img.getMinTileX(), img.getMinTileY(), img.getNumXTiles(), img.getNumYTiles(), src, cache); 1.8 +6 -4 xml-batik/sources/org/apache/batik/ext/awt/image/rendered/TileMap.java Index: TileMap.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/ext/awt/image/rendered/TileMap.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- TileMap.java 2001/07/18 22:04:53 1.7 +++ TileMap.java 2001/11/09 15:32:57 1.8 @@ -26,10 +26,10 @@ static class TileMapLRUMember extends TileLRUMember { public Point pt; - public TileMap parent; + public SoftReference parent; TileMapLRUMember(TileMap parent, Point pt, Raster ras) { super(ras); - this.parent = parent; + this.parent = new SoftReference(parent); this.pt = pt; } @@ -48,7 +48,7 @@ private LRUCache cache = null; public TileMap(TileGenerator source, - LRUCache cache) { + LRUCache cache) { this.cache = cache; this.source = source; } @@ -155,7 +155,9 @@ if (o == null) continue; TileMapLRUMember item = (TileMapLRUMember)o; - item.parent.rasters.remove(item.pt); + TileMap parent = (TileMap)item.parent.get(); + if (parent != null) + parent.rasters.remove(item.pt); } } } 1.21 +8 -2 xml-batik/sources/org/apache/batik/gvt/renderer/StrokingTextPainter.java Index: StrokingTextPainter.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/renderer/StrokingTextPainter.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- StrokingTextPainter.java 2001/11/05 20:04:11 1.20 +++ StrokingTextPainter.java 2001/11/09 15:32:57 1.21 @@ -60,7 +60,7 @@ * @see org.apache.batik.gvt.text.GVTAttributedCharacterIterator * * @author <a href="[EMAIL PROTECTED]>Bill Haneman</a> - * @version $Id: StrokingTextPainter.java,v 1.20 2001/11/05 20:04:11 deweese Exp $ + * @version $Id: StrokingTextPainter.java,v 1.21 2001/11/09 15:32:57 deweese Exp $ */ public class StrokingTextPainter extends BasicTextPainter { @@ -477,6 +477,7 @@ for (int j = currentIndex; j < displayUpToIndex; j++) { if (fontAssigned[j - start]) { if (runStart != -1) { + // System.out.println("Font 1: " + font); as.addAttribute(GVT_FONT, font, runStart-begin, j-begin); runStart=-1; @@ -489,6 +490,7 @@ numSet++; } if (runStart != -1) { + // System.out.println("Font 2: " + font); as.addAttribute(GVT_FONT, font, runStart-begin, displayUpToIndex-begin); @@ -511,6 +513,7 @@ for (int i = 0; i < aciLength; i++) { if (fontAssigned[i]) { if (runStart != -1) { + // System.out.println("Font 3: " + prevF); as.addAttribute(GVT_FONT, prevF, runStart+asOff, i+asOff); runStart = -1; @@ -532,6 +535,7 @@ prevF = fontFamily.deriveFont(fontSize, aci); } else if (prevFF != fontFamily) { // Font family changed... + // System.out.println("Font 4: " + prevF); as.addAttribute(GVT_FONT, prevF, runStart+asOff, i+asOff); @@ -544,9 +548,11 @@ } } } - if (runStart != -1) + if (runStart != -1) { + // System.out.println("Font 5: " + prevF); as.addAttribute(GVT_FONT, prevF, runStart+asOff, aciLength+asOff); + } asOff += aciLength; if (aci.setIndex(end) == aci.DONE) { 1.28 +37 -25 xml-batik/sources/org/apache/batik/gvt/text/GlyphLayout.java Index: GlyphLayout.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/text/GlyphLayout.java,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- GlyphLayout.java 2001/11/06 18:48:18 1.27 +++ GlyphLayout.java 2001/11/09 15:32:57 1.28 @@ -42,7 +42,7 @@ * @see org.apache.batik.gvt.text.TextSpanLayout * * @author <a href="[EMAIL PROTECTED]>Bill Haneman</a> - * @version $Id: GlyphLayout.java,v 1.27 2001/11/06 18:48:18 deweese Exp $ + * @version $Id: GlyphLayout.java,v 1.28 2001/11/09 15:32:57 deweese Exp $ */ public class GlyphLayout implements TextSpanLayout { @@ -861,23 +861,22 @@ } /** - * Returns the GVTFont to use when rendering the specified character iterator. - * This should already be set as an attribute on the aci. + * Returns the GVTFont to use when rendering the specified + * character iterator. This should already be set as an attribute + * on the aci. * * @param aci The character iterator to get the font attribute from. * - * @return The GVTFont to use. - */ + * @return The GVTFont to use. */ protected GVTFont getFont(AttributedCharacterIterator aci) { aci.first(); - GVTFont gvtFont = (GVTFont)aci.getAttributes().get( - GVTAttributedCharacterIterator.TextAttribute.GVT_FONT); - if (gvtFont != null) { + GVTFont gvtFont = (GVTFont)aci.getAttributes().get + (GVTAttributedCharacterIterator.TextAttribute.GVT_FONT); + if (gvtFont != null) return gvtFont; - } else { - // shouldn't get here - return new AWTGVTFont(aci.getAttributes()); - } + + // shouldn't get here + return new AWTGVTFont(aci.getAttributes()); } /** @@ -890,8 +889,8 @@ protected void doPathLayout(boolean offsetApplied) { aci.first(); - textPath = (TextPath) aci.getAttribute( - GVTAttributedCharacterIterator.TextAttribute.TEXTPATH); + textPath = (TextPath) aci.getAttribute + (GVTAttributedCharacterIterator.TextAttribute.TEXTPATH); // if doesn't have an attached text path, just return if (textPath == null) { @@ -970,11 +969,15 @@ Point2D nextGlyphPosition = gv.getGlyphPosition(i+1); if (horizontal) { - glyphAdvance = (float)(nextGlyphPosition.getX() - currentGlyphPosition.getX()); - nextGlyphOffset = (float)(nextGlyphPosition.getY() - currentGlyphPosition.getY()); + glyphAdvance = (float)(nextGlyphPosition.getX() - + currentGlyphPosition.getX()); + nextGlyphOffset = (float)(nextGlyphPosition.getY() - + currentGlyphPosition.getY()); } else { - glyphAdvance = (float)(nextGlyphPosition.getY() - currentGlyphPosition.getY()); - nextGlyphOffset = (float)(nextGlyphPosition.getX() - currentGlyphPosition.getX()); + glyphAdvance = (float)(nextGlyphPosition.getY() - + currentGlyphPosition.getY()); + nextGlyphOffset = (float)(nextGlyphPosition.getX() - + currentGlyphPosition.getX()); } } else { // last glyph, use the glyph metrics @@ -989,7 +992,8 @@ glyphAdvance = gm.getVerticalAdvance(); } } else { - if (glyphOrientationAngle == 0 || glyphOrientationAngle == 180) { + if ((glyphOrientationAngle == 0) || + (glyphOrientationAngle == 180)) { glyphAdvance = gm.getVerticalAdvance(); } else { // 90 || 270 glyphAdvance = gm.getHorizontalAdvance(); @@ -1077,7 +1081,8 @@ currentPosition += glyphAdvance; glyphOffset += nextGlyphOffset; currentChar += gv.getCharacterCount(i,i); - ch = aci.setIndex(aci.getBeginIndex() + i + gv.getCharacterCount(i,i)); + ch = aci.setIndex(aci.getBeginIndex() + i + + gv.getCharacterCount(i,i)); } // store the position where a following glyph should be drawn, @@ -1086,9 +1091,13 @@ if (lastGlyphDrawn > -1) { Point2D lastGlyphPos = gv.getGlyphPosition(lastGlyphDrawn); if (horizontal) { - textPathAdvance = new Point2D.Double(lastGlyphPos.getX()+lastGlyphAdvance, lastGlyphPos.getY()); + textPathAdvance = new Point2D.Double + (lastGlyphPos.getX()+lastGlyphAdvance, + lastGlyphPos.getY()); } else { - textPathAdvance = new Point2D.Double(lastGlyphPos.getX(), lastGlyphPos.getY()+lastGlyphAdvance); + textPathAdvance = new Point2D.Double + (lastGlyphPos.getX(), + lastGlyphPos.getY()+lastGlyphAdvance); } } else { textPathAdvance = new Point2D.Double(0,0); @@ -1142,7 +1151,8 @@ // transform the glyph position Point2D glyphPos = gv.getGlyphPosition(i); - AffineTransform t = AffineTransform.getTranslateInstance(startPos.getX(), startPos.getY()); + AffineTransform t = AffineTransform.getTranslateInstance + (startPos.getX(), startPos.getY()); t.scale(xscale,yscale); t.translate(-startPos.getX(), -startPos.getY()); Point2D newGlyphPos = new Point2D.Float(); @@ -1152,10 +1162,12 @@ // stretch the glyph AffineTransform glyphTransform = gv.getGlyphTransform(i); if (glyphTransform != null) { - glyphTransform.preConcatenate(AffineTransform.getScaleInstance(xscale, yscale)); + glyphTransform.preConcatenate + (AffineTransform.getScaleInstance(xscale, yscale)); gv.setGlyphTransform(i, glyphTransform); } else { - gv.setGlyphTransform(i, AffineTransform.getScaleInstance(xscale, yscale)); + gv.setGlyphTransform + (i, AffineTransform.getScaleInstance(xscale, yscale)); } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]