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]

Reply via email to