deweese     2004/12/04 10:40:45

  Modified:    sources/org/apache/batik/gvt/flow FlowGlyphLayout.java
                        LineInfo.java
               test-resources/org/apache/batik/test samplesRendering.xml
  Added:       samples/tests/spec12/text flowBidi.svg
               test-references/samples/tests/spec12/text flowBidi.png
  Log:
  Fixed a bug in BIDI handling in flowRoot element.
  
  Revision  Changes    Path
  1.1                  xml-batik/samples/tests/spec12/text/flowBidi.svg
  
  Index: flowBidi.svg
  ===================================================================
  <?xml version="1.0" standalone="no"?>
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
  
  <!--
  
     Copyright 2002-2003  The Apache Software Foundation 
  
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
  
         http://www.apache.org/licenses/LICENSE-2.0
  
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
  
  -->
  
  <!-- ====================================================================== 
-->
  <!-- Tests various text on a path                                           
-->
  <!--                                                                        
-->
  <!-- @author [EMAIL PROTECTED]                                   -->
  <!-- @version $Id: flowBidi.svg,v 1.1 2004/12/04 18:40:45 deweese Exp $   -->
  <!-- ====================================================================== 
-->
  
  <svg id="body" width="450" height="500" viewBox="0 0 450 500"
       xmlns="http://www.w3.org/2000/svg"; version="1.2"
       xmlns:xlink="http://www.w3.org/1999/xlink"; >
  <title>Test of Text wrapping stuff.</title>
  
     <g id="content" >
  
        <text class="title" x="50%" y="40">Test of Text wrapping stuff</text>
           <!-- Space after size 40 'that' is aci 45 -->
        <rect x="17"  y="80" width="200" height="200" fill="rgb(220,220,255)"/>
        <rect x="233" y="80" width="200" height="200" fill="rgb(220,220,255)"/>
  
        <rect x="17"  y="290" width="200" height="150" fill="rgb(220,220,255)"/>
        <rect x="220" y="290" width="10"  height="150" fill="rgb(220,220,255)"/>
        <rect x="233" y="290" width="200" height="150" fill="rgb(220,220,255)"/>
  
  <!--
        <line x1="27"  y1="70" x2="27"  y2="490" stroke="grey" fill="none"/>
        <line x1="207" y1="70" x2="207" y2="490" stroke="grey" fill="none"/>
        <line x1="243" y1="70" x2="243" y2="490" stroke="grey" fill="none"/>
        <line x1="423" y1="70" x2="423" y2="490" stroke="grey" fill="none"/>
  -->
  
        <flowRoot font-size="20" xml:space="preserve">
           <flowRegion>
            <rect x="17"  y="80" width="200" height="200"/>
            <rect x="233" y="80" width="200" height="200"/>
           </flowRegion>
  
           <flowDiv>
            <flowPara indent="20" margin-bottom="10" >Some <flowSpan 
fill="darkred" direction="rtl" unicode-bidi="embed">(embedded bidi)</flowSpan> 
of text.</flowPara>
              <flowPara>Some text goes <flowSpan fill="blue" direction="rtl" 
unicode-bidi="bidi-override">(right to left)</flowSpan>, other text goes (left 
to right).</flowPara>
              <flowPara>arabic: 
&#x621;&#x200B;&#x200B;&#x623;&#x200B;&#x624;&#x200B;&#x625;&#x200B;&#x626;&#x200B;&#x627;&#x200B;&#x628;&#x200B;&#x629;&#x200B;&#x62a;&#x200B;&#x62b;&#x200B;&#x62c;&#x200B;&#x62d;&#x200B;&#x62e;&#x200B;&#x62f;&#x200B;&#x630;&#x200B;&#x631;&#x200B;&#x632;&#x200B;&#x633;&#x200B;&#x634;&#x200B;&#x635;&#x200B;&#x636;&#x200B;&#x637;&#x200B;&#x638;&#x200B;&#x639;&#x200B;&#x640;&#x200B;&#x641;&#x200B;&#x642;&#x200B;&#x643;&#x200B;&#x644;&#x200B;&#x645;&#x200B;&#x646;&#x200B;&#x647;&#x200B;&#x648;&#x200B;&#x649;&#x200B;&#x650;&#x200B;&#x676;</flowPara>
           </flowDiv>
        </flowRoot>
  
        <flowRoot font-size="20" xml:space="preserve">
           <flowRegion>
              <path d="M  17,290 v150 h200 v-150 z
                       M 220,290 v150 h10  v-150 z
                       M 233,290 v150 h200 v-150 z"/>
           </flowRegion>
  
           <flowDiv>
            <flowPara indent="20" margin-bottom="10" >Some <flowSpan 
fill="darkred" direction="rtl" unicode-bidi="embed">(embedded bidi)</flowSpan> 
of text.</flowPara>
              <flowPara>Some text goes <flowSpan fill="blue" direction="rtl" 
unicode-bidi="bidi-override">(right to left)</flowSpan>, other text goes (left 
to right).</flowPara>
              <flowPara>arabic: 
&#x621;&#x200B;&#x200B;&#x623;&#x200B;&#x624;&#x200B;&#x625;&#x200B;&#x626;&#x200B;&#x627;&#x200B;&#x628;&#x200B;&#x629;&#x200B;&#x62a;&#x200B;&#x62b;&#x200B;&#x62c;&#x200B;&#x62d;&#x200B;&#x62e;&#x200B;&#x62f;&#x200B;&#x630;&#x200B;&#x631;&#x200B;&#x632;&#x200B;&#x633;&#x200B;&#x634;&#x200B;&#x635;&#x200B;&#x636;&#x200B;&#x637;&#x200B;&#x638;&#x200B;&#x639;&#x200B;&#x640;&#x200B;&#x641;&#x200B;&#x642;&#x200B;&#x643;&#x200B;&#x644;&#x200B;&#x645;&#x200B;&#x646;&#x200B;&#x647;&#x200B;&#x648;&#x200B;&#x649;&#x200B;&#x650;&#x200B;&#x676;</flowPara>
           </flowDiv>
        </flowRoot>
     </g>
  
  </svg>
  
  
  
  1.3       +12 -10    
xml-batik/sources/org/apache/batik/gvt/flow/FlowGlyphLayout.java
  
  Index: FlowGlyphLayout.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/gvt/flow/FlowGlyphLayout.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FlowGlyphLayout.java      2 Dec 2004 01:24:37 -0000       1.2
  +++ FlowGlyphLayout.java      4 Dec 2004 18:40:45 -0000       1.3
  @@ -385,6 +385,7 @@
           int []wordGlyphGroupsCounts = new int [words];
           for (int i=0; i<numGlyphs; i++) {
               int cWord = glyphWords[i];
  +            // System.err.println("CW: " + cWord);
               int [] wgs = wordGlyphs[cWord];
               if (wgs == null) {
                   wgs = wordGlyphs[cWord] 
  @@ -408,6 +409,7 @@
   
           for (int i=0; i<words; i++) {
               int cnt = wordGlyphGroupsCounts[i];
  +            // System.err.println("WGGC: " + cnt);
               GlyphGroupInfo []wordGlyphGroups = new GlyphGroupInfo[cnt];
               if (cnt == 1) {
                   int [] glyphs = wordGlyphs[i];
  @@ -418,21 +420,21 @@
                        glyphPos, advAdj, lastAdvAdj, space);
               } else {
                   int glyphGroup = 0;
  -                int []wordGlyph = wordGlyphs[i]; 
  -                int prev = wordGlyph[0];
  -                int start = 0;
  -                for (int j=1; j<wordGlyph.length; j++) {
  -                    if (prev+1 != wordGlyph[j]) {
  -                        int end = j-1;
  +                int []glyphs = wordGlyphs[i]; 
  +                int prev = glyphs[0];
  +                int start = prev;
  +                for (int j=1; j<glyphs.length; j++) {
  +                    if (prev+1 != glyphs[j]) {
  +                        int end = glyphs[j-1];
                           wordGlyphGroups[glyphGroup] = new GlyphGroupInfo
                               (gv, start, end, hide, hideLast[end], 
                                glyphPos, advAdj, lastAdvAdj, space);
  -                        start = j;
  +                        start = glyphs[j];
                           glyphGroup++;
                       }
  -                    prev = wordGlyph[j];
  +                    prev = glyphs[j];
                   }
  -                int end = wordGlyph.length-1;
  +                int end = glyphs[glyphs.length-1];
                   wordGlyphGroups[glyphGroup] = new GlyphGroupInfo
                       (gv, start, end, hide, hideLast[end], 
                        glyphPos, advAdj, lastAdvAdj, space);
  
  
  
  1.4       +5 -1      xml-batik/sources/org/apache/batik/gvt/flow/LineInfo.java
  
  Index: LineInfo.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/gvt/flow/LineInfo.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- LineInfo.java     2 Dec 2004 01:24:37 -0000       1.3
  +++ LineInfo.java     4 Dec 2004 18:40:45 -0000       1.4
  @@ -310,6 +310,10 @@
                   newGGIS[newSize++] = wi.getGlyphGroup(i++);
               }
           }
  +        // for (int i=0; i<newSize; i++) {
  +        //     System.err.println("GGIS["+i+"]: " + newGGIS[i].start + " -> 
" +
  +        //                        newGGIS[i].end);
  +        // }
       }
   
   
  
  
  
  1.1                  
xml-batik/test-references/samples/tests/spec12/text/flowBidi.png
  
        <<Binary file>>
  
  
  1.123     +4 -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.122
  retrieving revision 1.123
  diff -u -r1.122 -r1.123
  --- samplesRendering.xml      3 Dec 2004 12:20:16 -0000       1.122
  +++ samplesRendering.xml      4 Dec 2004 18:40:45 -0000       1.123
  @@ -54,6 +54,9 @@
       </testGroup>
   
       <testGroup id="svg1.2" name="SVG Version 1.2 functionality tests">
  +        <test id="samples/tests/spec12/text/flowBidi.svg" >
  +            <property name="Validating" class="java.lang.Boolean" 
value="false" />
  +     </test>
           <test id="samples/tests/spec12/text/flowText.svg" >
               <property name="Validating" class="java.lang.Boolean" 
value="false" />
        </test>
  
  
  

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

Reply via email to