tkormann    01/11/09 07:33:27

  Modified:    sources/org/apache/batik/gvt/font AWTGVTGlyphVector.java
  Log:
  Apply Bella's workaround for text under jdk1.4
  
  Revision  Changes    Path
  1.13      +32 -1     
xml-batik/sources/org/apache/batik/gvt/font/AWTGVTGlyphVector.java
  
  Index: AWTGVTGlyphVector.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/gvt/font/AWTGVTGlyphVector.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- AWTGVTGlyphVector.java    2001/11/06 18:48:17     1.12
  +++ AWTGVTGlyphVector.java    2001/11/09 15:33:27     1.13
  @@ -34,7 +34,7 @@
    * This is a wrapper class for a java.awt.font.GlyphVector instance.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Bella Robinson</a>
  - * @version $Id: AWTGVTGlyphVector.java,v 1.12 2001/11/06 18:48:17 deweese Exp $
  + * @version $Id: AWTGVTGlyphVector.java,v 1.13 2001/11/09 15:33:27 tkormann Exp $
    */
   public class AWTGVTGlyphVector implements GVTGlyphVector {
   
  @@ -369,12 +369,43 @@
               if (glyphTransform != null) {
                   tr.concatenate(glyphTransform);
               }
  +         //
  +         // <!> HACK
  +         //
  +         // GlyphVector.getGlyphOutline behavior changes between 1.3 and 1.4
  +         //
  +         // I've looked at this problem a bit more and the incorrect glyph
  +         // positioning in Batik is definitely due to the change in
  +         // behavior of GlyphVector.getGlyphOutline(glyphIndex). It used to
  +         // return the outline of the glyph at position 0,0 which meant
  +         // that we had to translate it to the actual glyph position before
  +         // drawing it. Now, it returns the outline which has already been
  +         // positioned.
  +         //
  +         // -- Bella
  +         //
  +
  +         if (isJDK1_4OrGreater()) {
  +             Point2D glyphPos = awtGlyphVector.getGlyphPosition(glyphIndex);
  +             tr.translate(-glyphPos.getX(), -glyphPos.getY());
  +         }
   
               tr.scale(scaleFactor, scaleFactor);
               glyphOutlines[glyphIndex] = tr.createTransformedShape(glyphOutline);
           }
   
           return glyphOutlines[glyphIndex];
  +    }
  +
  +    private static final boolean is1_4OrGreater;
  +
  +    static {
  +     String s = System.getProperty("java.version");
  +     is1_4OrGreater = ("1.4".compareTo(s) < 0);
  +    }
  +
  +    private static boolean isJDK1_4OrGreater() {
  +     return is1_4OrGreater;
       }
   
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to