vhardy      2002/08/28 01:06:48

  Modified:    sources/org/apache/batik/bridge
                        SVGAltGlyphElementBridge.java
               sources/org/apache/batik/gvt/renderer
                        StrokingTextPainter.java
               test-resources/org/apache/batik/test samplesRendering.xml
  Added:       test-references/samples/tests/spec/fonts fontAltGlyph2.png
  Log:
  Implemented RFE #4834 (making last visited files persistent.
  
  The most recent visited files are now persistent and kept in the preferences.xml
  file. There are two entries:
  
  - preference.key.visited.uri.list.length which defines the maximum number of uris 
which
    will be stored in the preference file.
  
  - preference.key.visited.uri.list which is the list of uris, separated by spaces
    after encoding with URLEncoder (note that the methods used are deprecated in 1.4,
    but their replacement is not available in 1.3).
  
  The history in each of the viewer frame ('Go' menu) is initialized with the current 
  list of last visited uris which is kept current (i.e., it is updated each time a
  new uri is visited) throughout the life of the Squiggle browser. Then new URIs
  are appended as before in the local history.
  
  
  Revision  Changes    Path
  1.10      +34 -11    
xml-batik/sources/org/apache/batik/bridge/SVGAltGlyphElementBridge.java
  
  Index: SVGAltGlyphElementBridge.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGAltGlyphElementBridge.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SVGAltGlyphElementBridge.java     13 Jun 2002 11:19:37 -0000      1.9
  +++ SVGAltGlyphElementBridge.java     28 Aug 2002 08:06:47 -0000      1.10
  @@ -165,15 +165,27 @@
                    (SVG_NAMESPACE_URI, SVG_ALT_GLYPH_ITEM_TAG);
                   int numAltGlyphItemNodes = altGlyphItemNodes.getLength();
                   if (numAltGlyphItemNodes > 0) {
  -                    Glyph[] glyphArray = new Glyph[numAltGlyphItemNodes];
  -                    for (int i = 0; i < numAltGlyphItemNodes; i++) {
  +                    boolean foundMatchingGlyph = false;
  +                    Glyph[] glyphArray = null;
  +
  +                    //look through all altGlyphItem to find the one
  +                    //that have all its glyphs available
  +
  +                    for (int i = 0; i < numAltGlyphItemNodes && !foundMatchingGlyph 
; i++) {
  +
                           // try to find a resolvable glyphRef
                           Element altGlyphItemElement = 
(Element)altGlyphItemNodes.item(i);
                           NodeList altGlyphRefNodes
                               = altGlyphItemElement.getElementsByTagNameNS
                            (SVG_NAMESPACE_URI, SVG_GLYPH_REF_TAG);
                           int numAltGlyphRefNodes = altGlyphRefNodes.getLength();
  -                        boolean foundMatchingGlyph = false;
  +
  +                        glyphArray = new Glyph[numAltGlyphRefNodes];
  +
  +                        // consider that all glyphs are available
  +                        // and check if they can be found
  +                        foundMatchingGlyph = true;
  +
                           for (int j = 0; j < numAltGlyphRefNodes; j++) {
                               // get the referenced glyph element
                               Element glyphRefElement = 
(Element)altGlyphRefNodes.item(j);
  @@ -182,25 +194,36 @@
                               Glyph glyph = getGlyph(ctx, glyphUri, glyphRefElement, 
fontSize, aci);
                               if (glyph != null) {
                                   // found a matching glyph for this altGlyphItem
  -                                glyphArray[i] = glyph;
  -                                foundMatchingGlyph = true;
  +                                glyphArray[j] = glyph;
  +                            }
  +                            else{
  +                                //this altGlyphItem is not good
  +                                //seek for the next one
  +                                foundMatchingGlyph = false;
                                   break;
                               }
                           }
  -                        if (!foundMatchingGlyph) {
  -                            // couldn't find a matching glyph for this alGlyphItem
  -                            // so stop and return null
  -                            return null;
  -                        }
                       }
  +                    if (!foundMatchingGlyph) {
  +                        // couldn't find a  alGlyphItem
  +                        // with all its glyphs available
  +                        // so stop and return null
  +                        return null;
  +                    }
  +                    
                       return glyphArray;
                   }
               }
           }
   
  +
  +        /*
           // reference is not to a valid element type, throw an exception
           throw new BridgeException(altGlyphElement, ERR_URI_BAD_TARGET,
                                     new Object[] {uri});
  +        */
  +        //reference not valid, no altGlyph created
  +        return null;
       }
   
   
  
  
  
  1.39      +12 -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.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- StrokingTextPainter.java  13 Aug 2002 21:33:16 -0000      1.38
  +++ StrokingTextPainter.java  28 Aug 2002 08:06:47 -0000      1.39
  @@ -119,6 +119,8 @@
           GVTAttributedCharacterIterator.TextAttribute.ADJUST_SPACING;
       public static final Integer ADJUST_ALL =
           GVTAttributedCharacterIterator.TextAttribute.ADJUST_ALL;
  +    public static final GVTAttributedCharacterIterator.TextAttribute 
ALT_GLYPH_HANDLER =
  +        GVTAttributedCharacterIterator.TextAttribute.ALT_GLYPH_HANDLER;
   
       static Set extendedAtts = new HashSet();
   
  @@ -418,7 +420,8 @@
   
               Vector fontFamilies;
               fontFamilies = (Vector)aci.getAttributes().get(GVT_FONT_FAMILIES);
  -            if (fontFamilies == null) {
  +
  +            if (fontFamilies == null ) {
                   // no font families set this chunk so just increment...
                   asOff += aciLength;
                   moreChunks = (aci.setIndex(end) != aci.DONE);
  @@ -477,6 +480,13 @@
                   while (currentIndex < end) {
                       int displayUpToIndex = font.canDisplayUpTo
                           (aci, currentIndex, end);
  +
  +                    Object altGlyphElement = 
aci.getAttributes().get(ALT_GLYPH_HANDLER);
  +                    if ( altGlyphElement != null ){
  +                        //found all the glyph to be displayed
  +                        //consider the font matching done
  +                        displayUpToIndex = -1;
  +                    }
   
                       if (displayUpToIndex == -1) {
                           // Can handle the whole thing...
  
  
  
  1.82      +2 -1      
xml-batik/test-resources/org/apache/batik/test/samplesRendering.xml
  
  Index: samplesRendering.xml
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/test-resources/org/apache/batik/test/samplesRendering.xml,v
  retrieving revision 1.81
  retrieving revision 1.82
  diff -u -r1.81 -r1.82
  --- samplesRendering.xml      14 Aug 2002 12:59:47 -0000      1.81
  +++ samplesRendering.xml      28 Aug 2002 08:06:47 -0000      1.82
  @@ -112,6 +112,7 @@
       <testGroup id="tests.spec.fonts">    
           <test id="samples/tests/spec/fonts/batikFont.svg" />
           <test id="samples/tests/spec/fonts/fontAltGlyph.svg" />
  +        <test id="samples/tests/spec/fonts/fontAltGlyph2.svg" />
           <test id="samples/tests/spec/fonts/fontArabic.svg" />
           <test id="samples/tests/spec/fonts/fontBounds.svg" />
           <test id="samples/tests/spec/fonts/fontChoice.svg" />
  
  
  
  1.1                  
xml-batik/test-references/samples/tests/spec/fonts/fontAltGlyph2.png
  
        <<Binary file>>
  
  

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

Reply via email to