xmlgraphics-batik-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dewe...@apache.org
Subject cvs commit: xml-batik/test-resources/org/apache/batik/test samplesRendering.xml
Date Tue, 30 Nov 2004 03:23:58 GMT
deweese     2004/11/29 19:23:58

  Modified:    samples/solitaire/script util.js
               samples/tests/spec/scripting rectResizeOnClick.svg
                        zeroSize.svg
               samples/tests/spec12/text flowText.svg
               sources/org/apache/batik/bridge
                        AbstractGraphicsNodeBridge.java
                        SVGUseElementBridge.java
               sources/org/apache/batik/dom/svg SVGLocatableSupport.java
               sources/org/apache/batik/ext/awt/geom SegmentList.java
               sources/org/apache/batik/gvt CompositeGraphicsNode.java
                        ShapeNode.java
               sources/org/apache/batik/gvt/flow LineInfo.java
               sources/org/apache/batik/swing/gvt JGVTComponent.java
               test-references/samples/tests/spec/scripting
                        text_content.png zeroSize.png
               test-resources/org/apache/batik/test samplesRendering.xml
  Added:       samples/tests/spec/scripting bbox.svg
               test-references/samples/tests/spec/scripting bbox.png
  Log:
  1) getBBox should now work per the specification.
     a) fill="none" will still give bbox
     b) It is now the tight bounds of the geometry
     c) It does not include the stroke anymore.
     d) When called on 'undisplayed' elements returns null (not sure
        what the spec really says about this).
  2) Modification of use element's width/height now works.
  3) Some fixes for flowText with soft-hyphens and the like.
  
  Revision  Changes    Path
  1.3       +3 -1      xml-batik/samples/solitaire/script/util.js
  
  Index: util.js
  ===================================================================
  RCS file: /home/cvs/xml-batik/samples/solitaire/script/util.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- util.js	23 Oct 2004 17:11:03 -0000	1.2
  +++ util.js	30 Nov 2004 03:23:57 -0000	1.3
  @@ -52,7 +52,9 @@
       if (elem.getScreenCTM)
         return elem.getScreenCTM();
   
  -    if (elem == root) {
  +    // This is to handle ASV 3.0, this depends on
  +    // a number of bugs in the ASV implementation.
  +    if (elem.currentScale) {
         var scale = root.currentScale;
         var trans = root.currentTranslate;
         var ret = root.createSVGMatrix();
  
  
  
  1.5       +2 -2      xml-batik/samples/tests/spec/scripting/rectResizeOnClick.svg
  
  Index: rectResizeOnClick.svg
  ===================================================================
  RCS file: /home/cvs/xml-batik/samples/tests/spec/scripting/rectResizeOnClick.svg,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- rectResizeOnClick.svg	18 Aug 2004 07:12:05 -0000	1.4
  +++ rectResizeOnClick.svg	30 Nov 2004 03:23:58 -0000	1.5
  @@ -44,7 +44,7 @@
       // This function is only called if test is run from regard.
       function regardStart() {
          setRect('targetRect', '5', '5', '440', '490');
  -       regardTestInstance.scriptDone();
  +       setTimeout('regardTestInstance.scriptDone()', 100);
       }
      </script>
   
  
  
  
  1.5       +3 -1      xml-batik/samples/tests/spec/scripting/zeroSize.svg
  
  Index: zeroSize.svg
  ===================================================================
  RCS file: /home/cvs/xml-batik/samples/tests/spec/scripting/zeroSize.svg,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- zeroSize.svg	8 Oct 2004 16:12:01 -0000	1.4
  +++ zeroSize.svg	30 Nov 2004 03:23:58 -0000	1.5
  @@ -74,6 +74,8 @@
         if (!doShowBounds) return;
         var bbox = shape.getBBox();
         var elem;
  +//      System.err.println("XXX: [" + bbox.x + ", " +bbox.y + ", " + 
  +//                         bbox.width + ", " + bbox.height + "]");
         if (bbox.width == 0) {
            if (bbox.height == 0) {
              elem = document.createElementNS(svgns, "circle");
  
  
  
  1.1                  xml-batik/samples/tests/spec/scripting/bbox.svg
  
  Index: bbox.svg
  ===================================================================
  <?xml version="1.0" standalone="no"?>
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
  "http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd">
  
  <!--
  
     Copyright 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.
  
  -->
  
  <!-- ====================================================================== -->
  <!-- Test of getBBox interface for various elements with various property   -->
  <!-- values (fill, stroke, visibility, display).                            -->
  <!--                                                                        -->
  <!-- @author deweese@apache.org                                             -->
  <!-- @version $Id: bbox.svg,v 1.1 2004/11/30 03:23:58 deweese Exp $ -->
  <!-- ====================================================================== -->
  
  <?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
  
  <svg id="body" width="450" height="500" viewBox="0 0 450 500"
       onload="start()">
    <title>Test getBBox interface</title>
    <text x="50%" y="45" class="title">Test getBBox interface</text>
  
    <script type="text/ecmascript"><![CDATA[
       var svgns = "http://www.w3.org/2000/svg";
       var root;
       var pref       = new Array("n", "v", "d" );
       var fillStroke = new Array("-", "f", "s", "fs" );
       var elemT      = new Array("p", "t", "u", "i" );
       var xLoc       = new Array(35, 115, 195, 275);
       var yLoc       = 10;
  
       function start() { 
         root = document.getRootElement();
         for (i=0; i<pref.length; i++) {
           for (j=0; j<fillStroke.length; j++) {
             for (k=0; k<elemT.length; k++) {
                doBBox(pref[i]+fillStroke[j]+elemT[k], xLoc[k], yLoc);
             }
           }
         }
  
        updatePath("u-p");
        updatePath("ufsp");
  
        updateText("u-t");
        updateText("ufst");
  
        updateG("u-u");
        updateG("ufsu");
  
        updateImg("u-i");
        updateImg("ufsi");
  
  
       }
  
       function updatePath(id) {
         doBBox(id, xLoc[0], yLoc);
         var elem = root.getElementById(id);
         elem.setAttribute("d", "M 10,25 c 0,-40 60,20 60,-20z");
         doBBox(id, xLoc[0], yLoc);
       }
  
       function updateText(id) {
         doBBox(id, xLoc[1], yLoc);
         var elem = root.getElementById(id);
         var txt = document.createTextNode("getBBox");
         elem.replaceChild(txt,elem.firstChild);
         doBBox(id, xLoc[1], yLoc);
       }
  
       function updateG(id) {
         doBBox(id, xLoc[2], yLoc);
         var elem = root.getElementById(id);
         var use  = elem.firstChild;
         use.setAttribute("x",      "190");
         use.setAttribute("y",      "5");
         use.setAttribute("width",  "20");
         use.setAttribute("height", "20");
  
         doBBox(id, xLoc[1], yLoc);
       }
  
       function updateImg(id) {
         doBBox(id, xLoc[2], yLoc);
         var elem = root.getElementById(id);
         elem.setAttribute("x",      "261");
         elem.setAttribute("y",      "5");
         elem.setAttribute("width",  "43");
         elem.setAttribute("height", "20");
  
         doBBox(id, xLoc[1], yLoc);
       }
  
       function doBBox(id, locX, locY) {
         var elem = root.getElementById(id);
         var bbox;
         if (elem) bbox = elem.getBBox();
         var rect = document.createElementNS(svgns, "rect");
         if (!bbox) {
           // No BBox undisplayed etc...  use small crimson rect.
           rect.setAttribute("x",      ""+locX);
           rect.setAttribute("y",      ""+locY);
           rect.setAttribute("width",  "10");
           rect.setAttribute("height", "10");
           rect.setAttribute("fill",   "crimson");
         } else {
           rect.setAttribute("x",      ""+bbox.x);
           rect.setAttribute("y",      ""+bbox.y);
           rect.setAttribute("width",  ""+bbox.width);
           rect.setAttribute("height", ""+bbox.height);
           rect.setAttribute("fill", "none");
           rect.setAttribute("stroke", "black");
           rect.setAttribute("stroke-width", "2");
           rect.setAttribute("stroke-opacity", "0.5");
         }
  
         elem.getParentNode().getParentNode().appendChild(rect);
       }
      ]]></script>
    <defs>
       <symbol id="Batik_Squiggle" viewBox="0 0 540 570">
          <path id="Batik_Squiggle_Blue" 
           d="M172,44C137,60,31,135,11,199c-8,27,22,48,44,33
              C14,306-1,332,0,356c0,14,13,42,44,27c8-4,35-25,52-41
              c14-1,24-11,42-28c17,14,36,10,52-7c22,2,82-78,44-108
              c-3-24-30-37-53-18c-6-2-13-1-18,1c22-35,43-82,49-105
              C219,47,188,36,172,44z"/>
          <path id="Batik_Squiggle_Red" 
           d="M400,0c-18,3-49,31-49,31c-29,23-43,58-28,95
              c-13,14-29,44-29,67c0,28,20,52,50,29c7,8,21,16,37,5
              c-5,29,3,48,26,49c1,10,13,31,36,17c16-10,58-39,79-56
              c25-23,25-94-18-89c33-59-3-96-27-84c-10,4-46,25-52,30
              c-1-7-5-12-11-14C436,45,436-5,401,0z"/>
          <path id="Batik_Squiggle_Green"
           d="M275,353c-46,12-88,43-114,91c-9,16,6,37,25,33
              c-14,24-40,67-15,81c28,16,52-8,60-15c18,21,50,10,81-17
              c41,14,68-2,103-53c8-12,30-43,30-65c0-16-15-30-35-21
              c-1-12-9-38-53-19c-10-6-31-5-54,17
              C308,375,300,347,275,353z"/>
       </symbol>
    </defs>
  
    <g id="test-content" transform="translate(0, 60)" >
       <g> <!-- The test grid -->
          <g stroke="#000">
             <rect x="10" y="0"   width="20" height="120" fill="#eee"/>
             <rect x="10" y="120" width="20" height="120" fill="#ddd"/>
             <rect x="10" y="240" width="20" height="120" fill="#eee"/>
             <rect x="10" y="360" width="20" height="60" fill="#ddd"/>
  
  
             <rect x="30" y="0"  width="410" height="30" fill="#f8f8f8"/>
             <rect x="30" y="30" width="410" height="30" fill="#f0f0f0"/>
             <rect x="30" y="60" width="410" height="30" fill="#f8f8f8"/>
             <rect x="30" y="90" width="410" height="30" fill="#f0f0f0"/>
  
             <rect x="30" y="120" width="410" height="30" fill="#e0e0e0"/>
             <rect x="30" y="150" width="410" height="30" fill="#d0d0d0"/>
             <rect x="30" y="180" width="410" height="30" fill="#e0e0e0"/>
             <rect x="30" y="210" width="410" height="30" fill="#d0d0d0"/>
  
             <rect x="30" y="240" width="410" height="30" fill="#f8f8f8"/>
             <rect x="30" y="270" width="410" height="30" fill="#f0f0f0"/>
             <rect x="30" y="300" width="410" height="30" fill="#f8f8f8"/>
             <rect x="30" y="330" width="410" height="30" fill="#f0f0f0"/>
  
             <rect x="30" y="360" width="410" height="30" fill="#e0e0e0"/>
             <rect x="30" y="390" width="410" height="30" fill="#d0d0d0"/>
  
             <line x1="120" x2="120" y1="0" y2="420"/>
             <line x1="200" x2="200" y1="0" y2="420"/>
             <line x1="280" x2="280" y1="0" y2="420"/>
             <line x1="360" x2="360" y1="0" y2="420"/>
             <line x1="10" x2="440" y1="120" y2="120" stroke-width="3"/>
             <line x1="10" x2="440" y1="240" y2="240" stroke-width="3"/>
             <line x1="10" x2="440" y1="360" y2="360" stroke-width="3"/>
          </g>
          <text transform="rotate(-90,25,60)" x="25" y="60" text-anchor="middle">Normal</text>
          <text transform="rotate(-90,25,180)" x="25" y="180" text-anchor="middle">visiblilty="hidden"</text>
          <text transform="rotate(-90,25,300)" x="25" y="300" text-anchor="middle">display="none"</text>
          <text transform="rotate(-90,25,390)" x="25" y="390" text-anchor="middle">Update</text>
          <g font-size="15">
          <text x="110" y="22" text-anchor="end">none</text>
          <text x="110" y="52" text-anchor="end">fill</text>
          <text x="110" y="82" text-anchor="end">stroke</text>
          <text x="110" y="112" text-anchor="end">fill+stroke</text>
  
          <text x="110" y="142" text-anchor="end">none</text>
          <text x="110" y="172" text-anchor="end">fill</text>
          <text x="110" y="202" text-anchor="end">stroke</text>
          <text x="110" y="232" text-anchor="end">fill+stroke</text>
  
          <text x="110" y="262" text-anchor="end">none</text>
          <text x="110" y="292" text-anchor="end">fill</text>
          <text x="110" y="322" text-anchor="end">stroke</text>
          <text x="110" y="352" text-anchor="end">fill+stroke</text>
  
          <text x="110" y="382" text-anchor="end">none</text>
          <text x="110" y="412" text-anchor="end">fill+stroke</text>
          </g>
       </g>
  
       <g font-size="18" text-anchor="middle">
          <g transform="translate(120,0)">
             <g fill="none" stroke="none" stroke-width="3">
                <path id="n-p" d="M 10,25 c 0,-40 60,20 60,-20z"/>
                <text id="n-t" x="120" y="20" stroke-width=".5">getBBox</text>
                <g id="n-u">
                  <use x="190" y="5" width="20" height="20" stroke-width="20"
                       xlink:href="#Batik_Squiggle"/>
                </g>
                <image id="n-i" x="261" y="5" width="43" height="20"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
          <g transform="translate(120,30)">
             <g fill="crimson" stroke="none" stroke-width="3">
                <path id="nfp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
                <text id="nft" x="120" y="20" stroke-width=".5">getBBox</text>
                <g id="nfu">
                  <use x="190" y="5" width="20" height="20" stroke-width="20"
                       xlink:href="#Batik_Squiggle"/>
                </g>
                <image id="nfi" x="261" y="5" width="43" height="20"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
          <g transform="translate(120,60)">
             <g fill="none" stroke="gold" stroke-width="3" >
                <path id="nsp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
                <text id="nst" x="120" y="20" stroke-width=".5">getBBox</text>
                <g id="nsu">
                   <use x="190" y="5" width="20" height="20" stroke-width="20"
                        xlink:href="#Batik_Squiggle"/>
                </g>
                <image id="nsi" x="261" y="5" width="43" height="20"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
          <g transform="translate(120,90)">
             <g fill="crimson" stroke="gold" stroke-width="3">
                <path id="nfsp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
                <text id="nfst" x="120" y="20" stroke-width=".5">getBBox</text>
                <g id="nfsu">
                   <use x="190" y="5" width="20" height="20" stroke-width="20"
                        xlink:href="#Batik_Squiggle"/>
                </g>
                <image id="nfsi" x="261" y="5" width="43" height="20"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
       </g>
  
       <g transform="translate(0, 120)" font-size="18" text-anchor="middle">
          <g transform="translate(120,0)" >
             <g fill="none" stroke="none" stroke-width="3" visibility="hidden">
                <path id="v-p" d="M 10,25 c 0,-40 60,20 60,-20z"/>
                <text id="v-t" x="120" y="20" stroke-width=".5">getBBox</text>
                <g id="v-u">
                  <use x="190" y="5" width="20" height="20" stroke-width="20"
                       xlink:href="#Batik_Squiggle"/>
                </g>
                <image id="v-i" x="261" y="5" width="43" height="20"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
          <g transform="translate(120,30)">
             <g fill="crimson" stroke="none" stroke-width="3" 
                visibility="hidden">
                <path id="vfp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
                <text id="vft" x="120" y="20" stroke-width=".5">getBBox</text>
                <g id="vfu">
                  <use x="190" y="5" width="20" height="20" stroke-width="20"
                       xlink:href="#Batik_Squiggle"/>
                </g>
                <image id="vfi" x="261" y="5" width="43" height="20"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
          <g transform="translate(120,60)">
             <g fill="none" stroke="gold" stroke-width="3" visibility="hidden">
                <path id="vsp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
                <text id="vst" x="120" y="20" stroke-width=".5">getBBox</text>
                <g id="vsu">
                   <use x="190" y="5" width="20" height="20" stroke-width="20"
                        xlink:href="#Batik_Squiggle"/>
                </g>
                <image id="vsi" x="261" y="5" width="43" height="20"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
          <g transform="translate(120,90)">
             <g fill="crimson" stroke="gold" stroke-width="3" 
                visibility="hidden">
                <path id="vfsp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
                <text id="vfst" x="120" y="20" stroke-width=".5">getBBox</text>
                <g id="vfsu">
                   <use x="190" y="5" width="20" height="20" stroke-width="20"
                        xlink:href="#Batik_Squiggle"/>
                </g>
                <image id="vfsi" x="261" y="5" width="43" height="20"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
       </g>
  
       <g transform="translate(0, 240)" font-size="18" text-anchor="middle">
          <g transform="translate(120,0)" >
             <g fill="none" stroke="none" stroke-width="3" display="none">
                <path id="d-p" d="M 10,25 c 0,-40 60,20 60,-20z"/>
                <text id="d-t" x="120" y="20" stroke-width=".5">getBBox</text>
                <g id="d-u">
                  <use x="190" y="5" width="20" height="20" stroke-width="20"
                       xlink:href="#Batik_Squiggle"/>
                </g>
                <image id="d-i" x="261" y="5" width="43" height="20"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
          <g transform="translate(120,30)">
             <g fill="crimson" stroke="none" stroke-width="3" display="none">
                <path id="dfp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
                <text id="dft" x="120" y="20" stroke-width=".5">getBBox</text>
                <g id="dfu">
                  <use x="190" y="5" width="20" height="20" stroke-width="20"
                       xlink:href="#Batik_Squiggle"/>
                </g>
                <image id="dfi" x="261" y="5" width="43" height="20"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
          <g transform="translate(120,60)">
             <g fill="none" stroke="gold" stroke-width="3" display="none">
                <path id="dsp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
                <text id="dst" x="120" y="20" stroke-width=".5">getBBox</text>
                <g id="dsu">
                   <use x="190" y="5" width="20" height="20" stroke-width="20"
                        xlink:href="#Batik_Squiggle"/>
                </g>
                <image id="dsi" x="261" y="5" width="43" height="20"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
          <g transform="translate(120,90)">
             <g fill="crimson" stroke="gold" stroke-width="3" display="none">
                <path id="dfsp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
                <text id="dfst" x="120" y="20" stroke-width=".5">getBBox</text>
                <g id="dfsu">
                   <use x="190" y="5" width="20" height="20" stroke-width="20"
                        xlink:href="#Batik_Squiggle"/>
                </g>
                <image id="dfsi" x="261" y="5" width="43" height="20"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
       </g>
  
       <g transform="translate(0, 360)" font-size="18" text-anchor="middle">
          <g transform="translate(120,0)">
             <g fill="none" stroke="none" stroke-width="3">
                <path id="u-p" d="M 40,25 l-10,-10 l10,-10 l10,10 z"/>
                <text id="u-t" x="120" y="20" stroke-width=".5">sm</text>
                <g id="u-u"
                   ><use x="195" y="10" width="10" height="10" stroke-width="20"
                       xlink:href="#Batik_Squiggle"/></g>
                <image id="u-i" x="271.75" y="10" width="21.5" height="10"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
          <g transform="translate(120,30)">
             <g fill="crimson" stroke="gold" stroke-width="3">
                <path id="ufsp" d="M 40,25 l-10,-10 l10,-10 l10,10 z"/>
                <text id="ufst" x="120" y="20" stroke-width=".5">sm</text>
                <g id="ufsu"
                   ><use x="195" y="10" width="10" height="10" stroke-width="20"
                       xlink:href="#Batik_Squiggle"/></g>
                <image id="ufsi" x="271.75" y="10" width="21.5" height="10"
                       xlink:href="../../resources/images/tde.jpg"/>
             </g>
          </g>
       </g>
    </g>
  
  </svg>
  
  
  
  
  
  1.2       +5 -5      xml-batik/samples/tests/spec12/text/flowText.svg
  
  Index: flowText.svg
  ===================================================================
  RCS file: /home/cvs/xml-batik/samples/tests/spec12/text/flowText.svg,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- flowText.svg	18 Nov 2004 01:46:52 -0000	1.1
  +++ flowText.svg	30 Nov 2004 03:23:58 -0000	1.2
  @@ -53,10 +53,10 @@
            </flowRegion>
   
            <flowDiv>
  -	    <flowPara indent="20" bottom-margin="10" >This is an <flowSpan font-size="40"
fill="crimson">ex&#x00AD;ample</flowSpan> of a very long string that is split
&#x200D;across multi&#x00AD;ple lines via text wrap&#x0AD;ping.</flowPara>
  -	    <flowPara justification="middle" top-margin="10" left-margin="10" right-margin="10"
bottom-margin="10"><flowLine>Now check if text wrapping handles a number of tricky</flowLine>
situations: averylongrunonwordthatspansmultiplelines<flowSpan font-weight="bold">with<flowSpan
fill="crimson">embedded</flowSpan>span</flowSpan>elements &amp; <flowSpan
fill="green" dy="-.3em" font-size="80%">super</flowSpan><flowSpan dy=".3em">
or </flowSpan><flowSpan fill="darkgreen" dy=".3em" font-size="80%">sub</flowSpan><flowSpan
dy="-.3em"> scripts.</flowSpan></flowPara>
  -	    <flowPara top-margin="10" justification="end">Now we are just <flowSpan font-size="30"
fill="blue">about</flowSpan> to go to the next flow rect <flowSpan font-size="10">(note
if the 'about' were included on the last line of the previous flow rect the line would not
have fit and the whole line would have moved here).</flowSpan></flowPara>
  -	    <flowPara margin="10" justification="full">     I'll keep going because I want
to make sure that it properly stops when it hits the end of all of the the flow regions defined.
Also the last line includes text in a larger font size so it will not fit. Thus the end of
this sentence will be cut off because the line size gets <flowSpan font-size="35">tall</flowSpan>er</flowPara>
  +	    <flowPara indent="20" margin-bottom="10" >This is an <flowSpan font-size="40"
fill="crimson">ex&#x00AD;ample</flowSpan> of a very long string that is split
&#x200D;across multi&#x00AD;ple lines via text wrap&#x0AD;ping.</flowPara>
  +	    <flowPara text-align="full" margin-top="10" margin-left="10" margin-right="10"
margin-bottom="10">Now check if text wrapping handles some tricky stuff: a&#x00AD;very&#x00AD;long&#x00AD;runon&#x00AD;word&#x00AD;that&#x00AD;spans&#x00AD;multiple&#x00AD;lines&#x00AD;<flowSpan
font-weight="bold">with&#x00AD;<flowSpan fill="crimson">embed&#x00AD;</flowSpan>span</flowSpan>&#x00AD;elements
&amp; <flowSpan fill="green" dy="-.3em" font-size="80%">super</flowSpan><flowSpan
dy=".3em"> or </flowSpan><flowSpan fill="darkgreen" dy=".3em" font-size="80%">sub</flowSpan><flowSpan
dy="-.3em"> scripts.</flowSpan></flowPara>
  +	    <flowPara margin-top="10pt" text-align="end">We are just <flowSpan font-size="30"
fill="blue">about</flowSpan> to go to the next flow rect <flowSpan font-size="10">(NOTE:
if the 'about' were included on the last line of the previous flow the line would not have
fit in the region, so it is moved to this flowRegion).</flowSpan></flowPara>
  +	    <flowPara margin="10px" text-align="middle">     I want to make sure that it
stops when it hits the end of all of the flowRegions defined. Also the last line includes
text in a larger font size so it will not fit. The end of this sentence will be cut off because
the line size gets <flowSpan font-size="35">tall</flowSpan>er</flowPara>
            </flowDiv>
         </flowRoot>
      </g>
  
  
  
  1.39      +19 -2     xml-batik/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java
  
  Index: AbstractGraphicsNodeBridge.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- AbstractGraphicsNodeBridge.java	14 Oct 2004 09:42:00 -0000	1.38
  +++ AbstractGraphicsNodeBridge.java	30 Nov 2004 03:23:58 -0000	1.39
  @@ -17,16 +17,20 @@
    */
   package org.apache.batik.bridge;
   
  +import java.awt.Shape;
   import java.awt.geom.AffineTransform;
   import java.awt.geom.Rectangle2D;
  +import java.lang.ref.SoftReference;
   
   import org.apache.batik.css.engine.CSSEngineEvent;
   import org.apache.batik.css.engine.SVGCSSEngine;
   import org.apache.batik.dom.svg.SVGContext;
   import org.apache.batik.dom.svg.SVGOMElement;
  +import org.apache.batik.ext.awt.geom.SegmentList;
   import org.apache.batik.gvt.CanvasGraphicsNode;
   import org.apache.batik.gvt.CompositeGraphicsNode;
   import org.apache.batik.gvt.GraphicsNode;
  +
   import org.w3c.dom.Element;
   import org.w3c.dom.Node;
   import org.w3c.dom.events.MutationEvent;
  @@ -312,6 +316,9 @@
               
       }
   
  +    protected SoftReference bboxShape = null;
  +    protected Rectangle2D bbox = null;
  +
       /**
        * Returns the tight bounding box in current user space (i.e.,
        * after application of the transform attribute, if any) on the
  @@ -319,7 +326,17 @@
        * stroke-width and filter effects).
        */
       public Rectangle2D getBBox() {
  -        return node.getPrimitiveBounds();
  +        Shape s = node.getOutline();
  +        
  +        if ((bboxShape != null) && (s == bboxShape.get())) return bbox;
  +        bboxShape = new SoftReference(s); // don't keep this live.
  +        bbox = null;
  +        if (s == null) return bbox;
  +
  +        // SegmentList.getBounds2D gives tight BBox.
  +        SegmentList sl = new SegmentList(s);
  +        bbox = sl.getBounds2D();
  +        return bbox;
       }
   
       /**
  
  
  
  1.45      +11 -7     xml-batik/sources/org/apache/batik/bridge/SVGUseElementBridge.java
  
  Index: SVGUseElementBridge.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGUseElementBridge.java,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- SVGUseElementBridge.java	20 Aug 2004 19:29:46 -0000	1.44
  +++ SVGUseElementBridge.java	30 Nov 2004 03:23:58 -0000	1.45
  @@ -405,14 +405,18 @@
           String attrName = evt.getAttrName();
           Node evtNode = evt.getRelatedNode();
   
  -        if (attrName.equals(SVG_X_ATTRIBUTE) ||
  -            attrName.equals(SVG_Y_ATTRIBUTE) ||
  -            attrName.equals(SVG_TRANSFORM_ATTRIBUTE)) {
  +        if ((evtNode.getNamespaceURI() == null) &&
  +            (attrName.equals(SVG_X_ATTRIBUTE) ||
  +             attrName.equals(SVG_Y_ATTRIBUTE) ||
  +             attrName.equals(SVG_TRANSFORM_ATTRIBUTE))) {
               node.setTransform(computeTransform(e, ctx));
               handleGeometryChanged();
  -        } else if (( XLinkSupport.XLINK_NAMESPACE_URI.equals
  -                     (evtNode.getNamespaceURI()) ) 
  -                   && SVG_HREF_ATTRIBUTE.equals(evtNode.getLocalName()) ){
  +        } else if (((evtNode.getNamespaceURI() == null) && 
  +                   (attrName.equals(SVG_WIDTH_ATTRIBUTE) ||
  +                    attrName.equals(SVG_HEIGHT_ATTRIBUTE))) ||
  +                   (( XLinkSupport.XLINK_NAMESPACE_URI.equals
  +                     (evtNode.getNamespaceURI()) ) &&  
  +                    SVG_HREF_ATTRIBUTE.equals(evtNode.getLocalName()))) {
               buildCompositeGraphicsNode(ctx, e, (CompositeGraphicsNode)node);
           }
       }
  
  
  
  1.10      +5 -1      xml-batik/sources/org/apache/batik/dom/svg/SVGLocatableSupport.java
  
  Index: SVGLocatableSupport.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGLocatableSupport.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SVGLocatableSupport.java	18 Aug 2004 07:13:14 -0000	1.9
  +++ SVGLocatableSupport.java	30 Nov 2004 03:23:58 -0000	1.10
  @@ -71,6 +71,10 @@
        */
       public static SVGRect getBBox(Element elt) {
           final SVGOMElement svgelt = (SVGOMElement)elt;
  +        SVGContext svgctx = svgelt.getSVGContext();
  +        if (svgctx == null) return null;
  +        if (svgctx.getBBox() == null) return null;
  +
           return new SVGRect() {
                   public float getX() {
                       return (float)svgelt.getSVGContext().getBBox().getX();
  
  
  
  1.2       +14 -0     xml-batik/sources/org/apache/batik/ext/awt/geom/SegmentList.java
  
  Index: SegmentList.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/ext/awt/geom/SegmentList.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SegmentList.java	18 Nov 2004 01:46:58 -0000	1.1
  +++ SegmentList.java	30 Nov 2004 03:23:58 -0000	1.2
  @@ -67,6 +67,20 @@
           }
       }
   
  +    public Rectangle2D getBounds2D() {
  +        Iterator iter = iterator();
  +        if (!iter.hasNext()) return null;
  +
  +        Rectangle2D ret;
  +        ret = (Rectangle2D)((Segment)iter.next()).getBounds2D().clone();
  +        while (iter.hasNext()) {
  +            Segment seg = (Segment)iter.next();
  +            Rectangle2D segB = seg.getBounds2D();
  +            Rectangle2D.union(segB, ret, ret);
  +        }
  +        return ret;
  +    }
  +
       public void add(Segment s) {
           segments.add(s);
       }
  
  
  
  1.40      +13 -12    xml-batik/sources/org/apache/batik/gvt/CompositeGraphicsNode.java
  
  Index: CompositeGraphicsNode.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/CompositeGraphicsNode.java,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- CompositeGraphicsNode.java	23 Oct 2004 17:11:03 -0000	1.39
  +++ CompositeGraphicsNode.java	30 Nov 2004 03:23:58 -0000	1.40
  @@ -446,17 +446,18 @@
        * Returns the outline of this node.
        */
       public Shape getOutline() {
  -        if (outline == null) {
  -            outline = new GeneralPath();
  -            for (int i = 0; i < count; i++) {
  -                Shape childOutline = children[i].getOutline();
  -                if (childOutline != null) {
  -                    AffineTransform tr = children[i].getTransform();
  -                    if (tr != null) {
  -                        ((GeneralPath)outline).append(tr.createTransformedShape(childOutline),
false);
  -                    } else {
  -                        ((GeneralPath)outline).append(childOutline, false);
  -                    }
  +        if (outline != null) 
  +            return outline;
  +
  +        outline = new GeneralPath();
  +        for (int i = 0; i < count; i++) {
  +            Shape childOutline = children[i].getOutline();
  +            if (childOutline != null) {
  +                AffineTransform tr = children[i].getTransform();
  +                if (tr != null) {
  +                    ((GeneralPath)outline).append(tr.createTransformedShape(childOutline),
false);
  +                } else {
  +                    ((GeneralPath)outline).append(childOutline, false);
                   }
               }
           }
  
  
  
  1.30      +17 -16    xml-batik/sources/org/apache/batik/gvt/ShapeNode.java
  
  Index: ShapeNode.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/ShapeNode.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- ShapeNode.java	21 Nov 2004 21:20:23 -0000	1.29
  +++ ShapeNode.java	30 Nov 2004 03:23:58 -0000	1.30
  @@ -226,21 +226,22 @@
        * Returns the bounds of the area covered by this node's primitive paint.
        */
       public Rectangle2D getPrimitiveBounds() {
  -        if (primitiveBounds == null) {
  -            if (shape == null)
  -                return null;
  +        if (!isVisible)    return null;
  +        if (shape == null) return null;
  +        if (primitiveBounds != null) 
  +            return primitiveBounds;
   
  -            if (shapePainter == null)
  -                primitiveBounds = shape.getBounds2D();
  -            else
  -                primitiveBounds = shapePainter.getPaintedBounds2D();
  -
  -            // Check If we should halt early.
  -            if (HaltingThread.hasBeenHalted()) {
  -                // The Thread has been halted. 
  -                // Invalidate any cached values and proceed.
  -                invalidateGeometryCache();
  -            }
  +        if (shapePainter == null)
  +            primitiveBounds = shape.getBounds2D();
  +        else
  +            primitiveBounds = shapePainter.getPaintedBounds2D();
  +        
  +        // Check If we should halt early.
  +        if (HaltingThread.hasBeenHalted()) {
  +            // The Thread has been halted. 
  +            // Invalidate any cached values and proceed (this
  +            // sets primitiveBounds to null).
  +            invalidateGeometryCache();
           }
           return primitiveBounds;
       }
  
  
  
  1.2       +13 -10    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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LineInfo.java	18 Nov 2004 01:46:59 -0000	1.1
  +++ LineInfo.java	30 Nov 2004 03:23:58 -0000	1.2
  @@ -140,7 +140,6 @@
                   if (delta < 0) break;
                   
                   i++;
  -
                   rangeAdvance += adv;
               }
   
  @@ -334,6 +333,7 @@
           // of glpyhs in each range for use with full justification.
           int []rangeGG = new int[numRanges];
           int []rangeG  = new int[numRanges];
  +        GlyphGroupInfo []rangeLastGGI = new GlyphGroupInfo[numRanges];
           GlyphGroupInfo ggi  = ggis[0];
           int r = ggi.getRange();
           rangeGG[r]++;
  @@ -341,8 +341,10 @@
           for (int i=1; i<size; i++) {
               ggi  = ggis[i];
               r = ggi.getRange();
  -            if (!ggi.getHideLast())
  +            if ((rangeLastGGI[r]==null) || !rangeLastGGI[r].getHideLast())
                   rangeGG[r]++;
  +            rangeLastGGI[r] = ggi;
  +
               rangeG [r] += ggi.getGlyphCount();
   
               GlyphGroupInfo pggi = ggis[i-1];
  @@ -355,7 +357,7 @@
           int currRange = -1;
           double         locX=0, range=0, rAdv=0;
           r=-1;
  -        ggi = ggis[0];
  +        ggi = null;
           for (int i=0; i<size; i++) {
               GlyphGroupInfo pggi = ggi;
               int prevRange = currRange;
  @@ -388,10 +390,10 @@
                   case BlockInfo.ALIGN_MIDDLE: locX += (range-rAdv)/2; break;
                   case BlockInfo.ALIGN_END:    locX += (range-rAdv);   break;
                   }
  -            } else if (pggi.getHideLast()) {
  +            } else if ((pggi!= null) && pggi.getHideLast()) {
                   // Hide last glyph from prev glyph group (soft hyphen etc).
  -                gv.setGlyphVisible(pggi.getEnd(), false);
  -            }
  +                gv.setGlyphVisible(pggi.getEnd(), false); 
  +           }
   
               int        start  = ggi.getStart();
               int        end    = ggi.getEnd();
  @@ -413,9 +415,10 @@
                   p2d = np2d;
                   advAdj -= gAdv;
               }
  -            locX += ggi.getAdvance()-advAdj+ggAdv;
  -            prevRange = currRange;
  -            pggi = ggi;
  +            if (ggi.getHideLast()) 
  +                locX += ggi.getAdvance()-advAdj;
  +            else
  +                locX += ggi.getAdvance()-advAdj+ggAdv;
           }
       }
   
  
  
  
  1.47      +2 -2      xml-batik/sources/org/apache/batik/swing/gvt/JGVTComponent.java
  
  Index: JGVTComponent.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/gvt/JGVTComponent.java,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- JGVTComponent.java	20 Nov 2004 19:27:10 -0000	1.46
  +++ JGVTComponent.java	30 Nov 2004 03:23:58 -0000	1.47
  @@ -670,7 +670,7 @@
        */
       protected boolean computeRenderingTransform() {
           initialTransform = new AffineTransform();
  -        if (initialTransform != renderingTransform) {
  +        if (!initialTransform.equals(renderingTransform)) {
               setRenderingTransform(initialTransform, false);
               return true;
           }
  
  
  
  1.4       +227 -205  xml-batik/test-references/samples/tests/spec/scripting/text_content.png
  
  	<<Binary file>>
  
  
  1.3       +39 -44    xml-batik/test-references/samples/tests/spec/scripting/zeroSize.png
  
  	<<Binary file>>
  
  
  1.1                  xml-batik/test-references/samples/tests/spec/scripting/bbox.png
  
  	<<Binary file>>
  
  
  1.121     +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.120
  retrieving revision 1.121
  diff -u -r1.120 -r1.121
  --- samplesRendering.xml	21 Nov 2004 21:20:23 -0000	1.120
  +++ samplesRendering.xml	30 Nov 2004 03:23:58 -0000	1.121
  @@ -347,6 +347,7 @@
   
       <testGroup id="tests.spec.scripting">
           <test id="samples/tests/spec/scripting/add.svg" />
  +        <test id="samples/tests/spec/scripting/bbox.svg" />
           <test id="samples/tests/spec/scripting/circle.svg" />
           <test id="samples/tests/spec/scripting/display.svg" />
           <test id="samples/tests/spec/scripting/ellipse.svg" />
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org


Mime
View raw message