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 Sun, 21 Nov 2004 21:20:23 GMT
deweese     2004/11/21 13:20:23

  Modified:    sources/org/apache/batik/bridge SVGTextElementBridge.java
               sources/org/apache/batik/gvt ShapeNode.java TextNode.java
               sources/org/apache/batik/gvt/font AWTGVTGlyphVector.java
                        SVGGVTGlyphVector.java
               sources/org/apache/batik/gvt/text TextPaintInfo.java
               test-resources/org/apache/batik/test samplesRendering.xml
  Added:       samples/tests/spec/scripting textProperties2.svg
               samples/tests/spec/text textProperties2.svg
               test-references/samples/tests/spec/scripting
                        textProperties2.png
               test-references/samples/tests/spec/text textProperties2.png
  Log:
  1) Fixed PR: 30923.  Text children now respect display and
     visibility properties (including dynamic changes).
  2) New tests for 1.
  
  PR: 30923
  
  Revision  Changes    Path
  1.1                  xml-batik/samples/tests/spec/scripting/textProperties2.svg
  
  Index: textProperties2.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 2001-2002  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 description here                                                     -->
  <!--                                                                           -->
  <!-- @author bill.haneman@ireland.sun.com                                      -->
  <!-- @version $Id: textProperties2.svg,v 1.1 2004/11/21 21:20:22 deweese Exp $      
                                                      -->
  <!-- ========================================================================= -->
  <?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
  
  <svg width="450" height="500" viewBox="0 0 450 500"
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:xlink="http://www.w3.org/1999/xlink" >
  
       <style type="text/css"><![CDATA[
         .Caption { font-size: 8; font-family: dialog; font-weight: normal;
                    font-style: normal; stroke: none; stroke-width: 0; 
                    fill: black } 
         text > tspan { fill: blue; }
         text > tspan > tspan { fill: purple; }]]>
       </style>
  
      <script type="text/ecmascript"><![CDATA[
         var inRegard=false;
         var root;
         function regardStart() {
            inRegard = true;
            doChange();
         }
         function doSet(idx, attr, tv, tsv, ttsv) {
           var t   = root.getElementById("t"+idx);
           var ts  = root.getElementById("ts"+idx);
           var tts = root.getElementById("tts"+idx);
           if (tv)   t.setAttribute(attr, tv);
           if (tsv)  ts.setAttribute(attr, tsv);
           if (ttsv) tts.setAttribute(attr, ttsv);
         }
  
         function doChange() {
           root = document.getRootElement();
           doSet(1, "visibility", "hidden", "hidden", undefined);
           doSet(2, "visibility", undefined, undefined, "hidden");
           doSet(3, "visibility", undefined, undefined, "visible");
           doSet(4, "visibility", "visible", undefined, "visible");
           doSet(5, "visibility", undefined, undefined, "hidden");
           doSet(6, "visibility", "hidden",  undefined, undefined);
  
           doSet(7, "display", undefined,  "none", undefined);
           doSet(8, "display", undefined,  undefined, "inline");
           doSet(9, "display", undefined,  "inline", undefined);
           doSet(10, "display", "none",  "inline", "inline");
           doSet(11, "display", "inline",  undefined, undefined);
  
           if (inRegard) 
             regardTestInstance.scriptDone();
         }
      ]]></script>
  
     <rect fill="gold" stroke="crimson" x="15" y="15" width="70" height="25"
           onclick="doChange()"/>
     <text fill="crimson" x="50" y="32" font-weight="bold" text-anchor="middle"
      pointer-events="none">Change!</text>
  
  <title>Text Properties</title>
  
      <!-- ============================================================= -->
      <!-- Test content                                                  -->
      <!-- ============================================================= -->
      <g id="testContent">
          <text class="title" x="50%" y="40" font-size="15" >
              Text display and visibility.</text>
  
          <text x="50%" y="74" text-anchor="middle"
           >Visibility on text &amp; tspans</text>
          <text x="50%" y="250" text-anchor="middle"
           >Display on text &amp; tspans</text>
  
           <g stroke="black" stroke-width="1">
           <rect x="12.5" y="82" width="425" height="25" fill="#EEE"/>
           <rect x="12.5" y="107" width="425" height="25" fill="#CCC"/>
           <rect x="12.5" y="132" width="425" height="25" fill="#EEE"/>
           <rect x="12.5" y="157" width="425" height="25" fill="#CCC"/>
           <rect x="12.5" y="182" width="425" height="25" fill="#EEE"/>
           <rect x="12.5" y="207" width="425" height="25" fill="#CCC"/>
           <line x1="325" x2="325" y1="82" y2="232"/>
           <line x1="381" x2="381" y1="82" y2="232"/>
  
           <rect x="12.5" y="257" width="425" height="25" fill="#EEE"/>
           <rect x="12.5" y="282" width="425" height="25" fill="#CCC"/>
           <rect x="12.5" y="307" width="425" height="25" fill="#EEE"/>
           <rect x="12.5" y="332" width="425" height="25" fill="#CCC"/>
           <rect x="12.5" y="357" width="425" height="25" fill="#EEE"/>
           <line x1="325" x2="325" y1="257" y2="382"/>
           <line x1="381" x2="381" y1="257" y2="382"/>
           </g>
  
           <text class="Caption" x="335" y="97" >---, ---, ---</text>
           <text class="Caption" x="335" y="122">---, hid, vis</text>
           <text class="Caption" x="335" y="147">---, hid, hid</text>
           <text class="Caption" x="335" y="172">hid, vis, hid</text>
           <text class="Caption" x="335" y="197">---, ---, ---</text>
           <text class="Caption" x="335" y="222">---, ---, ---</text>
  
           <text class="Caption" x="391" y="97" >hid, hid, ---</text>
           <text class="Caption" x="391" y="122">---, ---, hid</text>
           <text class="Caption" x="391" y="147">---, ---, vis</text>
           <text class="Caption" x="391" y="172">vis, ---, vis</text>
           <text class="Caption" x="391" y="197">---, ---, hid</text>
           <text class="Caption" x="391" y="222">hid, ---, ---</text>
  
           <text class="Caption" x="335" y="273">---, ---, ---</text>
           <text class="Caption" x="335" y="298">---, inl, non</text>
           <text class="Caption" x="335" y="323">---, non, inl</text>
           <text class="Caption" x="335" y="348">---, non, non</text>
           <text class="Caption" x="335" y="373">non, inl, non</text>
  
           <text class="Caption" x="391" y="273">---, non, ---</text>
           <text class="Caption" x="391" y="298">---, ---, inl</text>
           <text class="Caption" x="391" y="323">---, inl, ---</text>
           <text class="Caption" x="391" y="348">non, inl, inl</text>
           <text class="Caption" x="391" y="373">inl, ---, ---</text>
  
         <g transform="scale(1.25), translate(0, 10)">
          <text id="t1" x="20" y="70">Text <tspan id="ts1"
            >tspan 1 <tspan id="tts1"> tspan 2</tspan
            > more span 1</tspan> finish text</text>
  
          <text id="t2" x="20" y="90" >Text <tspan id="ts2" visibility="hidden"
           >tspan 1 <tspan id="tts2" visibility="visible"> tspan 2</tspan
           > more span 1</tspan> finish text</text>
  
          <text id="t3" x="20" y="110">Text <tspan id="ts3" visibility="hidden"
           >tspan 1 <tspan id="tts3" visibility="hidden"
           > tspan 2</tspan> more span 1</tspan> finish text</text>
  
          <text id="t4" x="20" y="130" visibility="hidden"
           >Text <tspan id="ts4" visibility="visible"
           >tspan 1 <tspan id="tts4" visibility="hidden"> tspan 2</tspan
           > more span 1</tspan> finish text</text>
  
          <text id="t5" x="20" y="150"
           >Text <tspan id="ts5"
           >tspan 1 <tspan id="tts5" > tspan 2</tspan
           > more span 1</tspan> finish text</text>
  
          <text id="t6" x="20" y="170" 
           >Text <tspan id="ts6" 
           >tspan 1 <tspan id="tts6" > tspan 2</tspan
           > more span 1</tspan> finish text</text>
  
  
          <text id="t7" x="20" y="210">Text <tspan id="ts7" 
           >tspan 1 <tspan id="tts7" 
           >tspan 2 </tspan>more span 1</tspan
           > finish text</text>
          <text id="t8" x="20" y="230">Text <tspan id="ts8" display="inline"
           >tspan 1 <tspan id="tts8" display="none"
           > tspan 2</tspan> more span 1</tspan
           > finish text</text>
          <text id="t9" x="20" y="250">Text <tspan id="ts9" display="none"
           >tspan 1 <tspan id="tts9" display="inline"
           > tspan 2</tspan> more span 1</tspan
           > finish text</text>
          <text id="t10" x="20" y="270">Text <tspan id="ts10" display="none"
           >tspan 1 <tspan id="tts10" display="none"
           > tspan 2</tspan> more span 1</tspan
           > finish text</text>
          <text id="t11" x="20" y="290" display="none"
           >Text <tspan id="ts11" display="inline"
           >tspan 1 <tspan id="tts11" display="none"
           > tspan 2</tspan> more span 1</tspan
           > finish text</text>
      </g>
      </g>
  
      <!-- ============================================================= -->
      <!-- Batik sample mark                                             -->
      <!-- ============================================================= -->
      <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
      
  </svg>
  
  
  
  1.1                  xml-batik/samples/tests/spec/text/textProperties2.svg
  
  Index: textProperties2.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 2001-2002  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 description here                                                     -->
  <!--                                                                           -->
  <!-- @author bill.haneman@ireland.sun.com                                      -->
  <!-- @version $Id: textProperties2.svg,v 1.1 2004/11/21 21:20:23 deweese Exp $      
                                                      -->
  <!-- ========================================================================= -->
  <?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
  
  <svg width="450" height="500" viewBox="0 0 450 500"
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:xlink="http://www.w3.org/1999/xlink" >
  
  <title>Text Properties</title>
  
      <!-- ============================================================= -->
      <!-- Test content                                                  -->
      <!-- ============================================================= -->
  
      <defs>
  
       <style type="text/css"><![CDATA[
         .Caption { font-size: 8; font-family: dialog; font-weight: normal;
                    font-style: normal; stroke: none; stroke-width: 0; 
                    fill: black } 
         text > tspan { fill: blue; }
         text > tspan > tspan { fill: purple; }]]>
       </style>
      </defs>
  
      <g id="testContent">
          <text class="title" x="50%" y="40" font-size="15" >
              Text display and visibility.</text>
  
          <text x="50%" y="74" text-anchor="middle"
           >Visibility on text &amp; tspans</text>
          <text x="50%" y="200" text-anchor="middle"
           >Display on text &amp; tspans</text>
  
           <g stroke="black" stroke-width="1">
           <rect x="12.5" y="82" width="425" height="25" fill="#EEE"/>
           <rect x="12.5" y="107" width="425" height="25" fill="#CCC"/>
           <rect x="12.5" y="132" width="425" height="25" fill="#EEE"/>
           <rect x="12.5" y="157" width="425" height="25" fill="#CCC"/>
           <line x1="340" x2="340" y1="82" y2="182"/>
  
           <rect x="12.5" y="207" width="425" height="25" fill="#EEE"/>
           <rect x="12.5" y="232" width="425" height="25" fill="#CCC"/>
           <rect x="12.5" y="257" width="425" height="25" fill="#EEE"/>
           <rect x="12.5" y="282" width="425" height="25" fill="#CCC"/>
           <rect x="12.5" y="307" width="425" height="25" fill="#EEE"/>
           <line x1="340" x2="340" y1="207" y2="332"/>
           </g>
  
           <text class="Caption" x="360" y="97" >vis, vis, vis</text>
           <text class="Caption" x="360" y="122">vis, hid, vis</text>
           <text class="Caption" x="360" y="147">vis, hid, hid</text>
           <text class="Caption" x="360" y="172">hid, vis, hid</text>
  
           <text class="Caption" x="360" y="223">inline, inline, inline</text>
           <text class="Caption" x="360" y="248">inline, inline, none</text>
           <text class="Caption" x="360" y="273">inline, none, inline</text>
           <text class="Caption" x="360" y="298">inline, none, none</text>
           <text class="Caption" x="360" y="323">none, inline, none</text>
  
         <g transform="scale(1.25), translate(0, 10)">
          <text x="20" y="70">Text <tspan>tspan 1 <tspan> tspan 2</tspan>
more span 1</tspan> finish text</text>
  
          <text x="20" y="90">Text <tspan visibility="hidden">tspan 1 <tspan
visibility="visible"> tspan 2</tspan> more span 1</tspan> finish text</text>
  
          <text x="20" y="110">Text <tspan visibility="hidden">tspan 1 <tspan
visibility="hidden"> tspan 2</tspan> more span 1</tspan> finish text</text>
  
          <text x="20" y="130" visibility="hidden">Text <tspan visibility="visible">tspan
1 <tspan visibility="hidden"> tspan 2</tspan> more span 1</tspan> finish
text</text>
  
  
          <text x="20" y="170">Text <tspan>tspan 1 <tspan>tspan 2 </tspan>more
span 1</tspan> finish text</text>
          <text x="20" y="190">Text <tspan display="inline">tspan 1 <tspan
display="none"> tspan 2</tspan> more span 1</tspan> finish text</text>
          <text x="20" y="210">Text <tspan display="none">tspan 1 <tspan display="inline">
tspan 2</tspan> more span 1</tspan> finish text</text>
          <text x="20" y="230">Text <tspan display="none">tspan 1 <tspan display="none">
tspan 2</tspan> more span 1</tspan> finish text</text>
          <text x="20" y="250" display="none">Text <tspan display="inline">tspan
1 <tspan display="none"> tspan 2</tspan> more span 1</tspan> finish text</text>
      </g>
      </g>
  
      <!-- ============================================================= -->
      <!-- Batik sample mark                                             -->
      <!-- ============================================================= -->
      <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
      
  </svg>
  
  
  
  1.100     +32 -24    xml-batik/sources/org/apache/batik/bridge/SVGTextElementBridge.java
  
  Index: SVGTextElementBridge.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGTextElementBridge.java,v
  retrieving revision 1.99
  retrieving revision 1.100
  diff -u -r1.99 -r1.100
  --- SVGTextElementBridge.java	18 Nov 2004 01:46:53 -0000	1.99
  +++ SVGTextElementBridge.java	21 Nov 2004 21:20:23 -0000	1.100
  @@ -535,9 +535,11 @@
                                             Element element,
                                             BridgeContext ctx) {
           // 'requiredFeatures', 'requiredExtensions' and 'systemLanguage'
  -        if (!SVGUtilities.matchUserAgent(element, ctx.getUserAgent())) {
  +        if ((!SVGUtilities.matchUserAgent(element, ctx.getUserAgent())) ||
  +            (!CSSUtilities.convertDisplay(element))) {
               return;
           }
  +
           AttributedCharacterIterator aci = as.getIterator();
   
           // calculate which chars in the string belong to this element
  @@ -624,21 +626,22 @@
           // first try to find CSS properties that change the layout
           for (int i=0; i < properties.length; ++i) {
               switch(properties[i]) {
  -            case SVGCSSEngine.TEXT_ANCHOR_INDEX:
  -            case SVGCSSEngine.FONT_SIZE_INDEX:
  -            case SVGCSSEngine.FONT_WEIGHT_INDEX:
  -            case SVGCSSEngine.FONT_STYLE_INDEX:
  -            case SVGCSSEngine.FONT_STRETCH_INDEX:
  -            case SVGCSSEngine.FONT_FAMILY_INDEX:
               case SVGCSSEngine.BASELINE_SHIFT_INDEX:
  -            case SVGCSSEngine.UNICODE_BIDI_INDEX:
               case SVGCSSEngine.DIRECTION_INDEX:
  -            case SVGCSSEngine.WRITING_MODE_INDEX:
  -            case SVGCSSEngine.GLYPH_ORIENTATION_VERTICAL_INDEX:
  +            case SVGCSSEngine.DISPLAY_INDEX:
  +            case SVGCSSEngine.FONT_FAMILY_INDEX:
  +            case SVGCSSEngine.FONT_SIZE_INDEX:
  +            case SVGCSSEngine.FONT_STRETCH_INDEX:
  +            case SVGCSSEngine.FONT_STYLE_INDEX:
  +            case SVGCSSEngine.FONT_WEIGHT_INDEX:
               case SVGCSSEngine.GLYPH_ORIENTATION_HORIZONTAL_INDEX:
  +            case SVGCSSEngine.GLYPH_ORIENTATION_VERTICAL_INDEX:
  +            case SVGCSSEngine.KERNING_INDEX: 
               case SVGCSSEngine.LETTER_SPACING_INDEX:
  +            case SVGCSSEngine.TEXT_ANCHOR_INDEX:
  +            case SVGCSSEngine.UNICODE_BIDI_INDEX:
               case SVGCSSEngine.WORD_SPACING_INDEX:
  -            case SVGCSSEngine.KERNING_INDEX: {
  +            case SVGCSSEngine.WRITING_MODE_INDEX: {
                   if (!hasNewACI) {
                       hasNewACI = true;
                       computeLaidoutText(ctx, e, node);
  @@ -790,7 +793,8 @@
                                                 Integer bidiLevel,
                                                 AttributedStringBuffer asb) {
           // 'requiredFeatures', 'requiredExtensions' and 'systemLanguage'
  -        if (!SVGUtilities.matchUserAgent(element, ctx.getUserAgent())) {
  +        if ((!SVGUtilities.matchUserAgent(element, ctx.getUserAgent())) ||
  +            (!CSSUtilities.convertDisplay(element))) {
               return;
           }
           
  @@ -811,7 +815,7 @@
           for (Node n = element.getFirstChild();
                n != null;
                n = n.getNextSibling()) {
  -            
  +
               last = n.getNextSibling() == null;
               
               int lastChar = asb.getLastChar();
  @@ -820,11 +824,11 @@
               
               switch (n.getNodeType()) {
               case Node.ELEMENT_NODE:
  -                if (!SVG_NAMESPACE_URI.equals(n.getNamespaceURI())) {
  +                if (!SVG_NAMESPACE_URI.equals(n.getNamespaceURI()))
                       break;
  -                }
                   
                   nodeElement = (Element)n;
  +
                   String ln = n.getLocalName();
                   
                   if (ln.equals(SVG_TSPAN_TAG) ||
  @@ -1137,7 +1141,8 @@
                                                 BridgeContext ctx) {
   
           // 'requiredFeatures', 'requiredExtensions' and 'systemLanguage'
  -        if (!SVGUtilities.matchUserAgent(element, ctx.getUserAgent())) {
  +        if ((!SVGUtilities.matchUserAgent(element, ctx.getUserAgent())) ||
  +            (!CSSUtilities.convertDisplay(element))) {
               return;
           }
           AttributedCharacterIterator aci = as.getIterator();
  @@ -1257,16 +1262,17 @@
               if (child.getNodeType() != Node.ELEMENT_NODE) {
                   continue;
               }
  -            if (!SVG_NAMESPACE_URI.equals(child.getNamespaceURI())) {
  +            if (!SVG_NAMESPACE_URI.equals(child.getNamespaceURI()))
                   continue;
  -            }
  +
               String ln = child.getLocalName();
               if (ln.equals(SVG_TSPAN_TAG) ||
                   ln.equals(SVG_ALT_GLYPH_TAG) ||
                   ln.equals(SVG_A_TAG) ||
                   ln.equals(SVG_TEXT_PATH_TAG) ||
                   ln.equals(SVG_TREF_TAG)) {
  -                addGlyphPositionAttributes(as, (Element)child, ctx);
  +                Element childElement = (Element)child;
  +                addGlyphPositionAttributes(as, childElement, ctx);
               }
           }
       }
  @@ -1280,7 +1286,8 @@
                                         TextPaintInfo pi,
                                         BridgeContext ctx) {
           // 'requiredFeatures', 'requiredExtensions' and 'systemLanguage'
  -        if (!SVGUtilities.matchUserAgent(element, ctx.getUserAgent())) {
  +        if ((!SVGUtilities.matchUserAgent(element, ctx.getUserAgent())) ||
  +            (!CSSUtilities.convertDisplay(element))) {
               return;
           }
           Object o = elemTPI.get(element);
  @@ -1301,16 +1308,16 @@
               if (child.getNodeType() != Node.ELEMENT_NODE) {
                   continue;
               }
  -            if (!SVG_NAMESPACE_URI.equals(child.getNamespaceURI())) {
  +            if (!SVG_NAMESPACE_URI.equals(child.getNamespaceURI()))
                   continue;
  -            }
  +
  +            Element childElement = (Element)child;
               String ln = child.getLocalName();
               if (ln.equals(SVG_TSPAN_TAG) ||
                   ln.equals(SVG_ALT_GLYPH_TAG) ||
                   ln.equals(SVG_A_TAG) ||
                   ln.equals(SVG_TEXT_PATH_TAG) ||
                   ln.equals(SVG_TREF_TAG)) {
  -                Element childElement = (Element)child;
                   TextPaintInfo pi = getTextPaintInfo(childElement, node,
                                                           parentPI, ctx);
                   addPaintAttributes(as, childElement, node, pi, ctx);
  @@ -1708,6 +1715,7 @@
           else
               pi.composite    = AlphaComposite.SrcOver;
   
  +        pi.visible      = CSSUtilities.convertVisibility(element);
           pi.fillPaint    = PaintServer.convertFillPaint  (element, node, ctx);
           pi.strokePaint  = PaintServer.convertStrokePaint(element, node, ctx);
           pi.strokeStroke = PaintServer.convertStroke     (element);
  
  
  
  1.29      +2 -4      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.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- ShapeNode.java	23 Oct 2004 17:11:03 -0000	1.28
  +++ ShapeNode.java	21 Nov 2004 21:20:23 -0000	1.29
  @@ -138,10 +138,8 @@
        * @param g2d the Graphics2D to use
        */
       public void paint(Graphics2D g2d) {
  -        if (isVisible) {
  +        if (isVisible)
               super.paint(g2d);
  -        }
  -
       }
   
       /**
  
  
  
  1.33      +1 -12     xml-batik/sources/org/apache/batik/gvt/TextNode.java
  
  Index: TextNode.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/TextNode.java,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- TextNode.java	18 Aug 2004 07:14:27 -0000	1.32
  +++ TextNode.java	21 Nov 2004 21:20:23 -0000	1.33
  @@ -378,17 +378,6 @@
       //
   
       /**
  -     * Paints this node.
  -     *
  -     * @param g2d the Graphics2D to use
  -     */
  -    public void paint(Graphics2D g2d) {
  -        if (isVisible) {
  -            super.paint(g2d);
  -        }
  -    }
  -
  -    /**
        * Paints this node without applying Filter, Mask, Composite, and clip.
        *
        * @param g2d the Graphics2D to use
  
  
  
  1.33      +6 -2      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.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- AWTGVTGlyphVector.java	6 Sep 2004 00:01:58 -0000	1.32
  +++ AWTGVTGlyphVector.java	21 Nov 2004 21:20:23 -0000	1.33
  @@ -174,7 +174,9 @@
   
           if (tpi == null)
               return null;
  -
  +        if (!tpi.visible) 
  +            return null;
  +            
           cacheTPI = new TextPaintInfo(tpi);
           Shape outline = null;
           if (tpi.fillPaint != null) {
  @@ -818,6 +820,8 @@
           TextPaintInfo tpi = (TextPaintInfo)aci.getAttribute
               (GVTAttributedCharacterIterator.TextAttribute.PAINT_INFO);
           if (tpi == null) return;
  +        if (!tpi.visible) return;
  +
           Paint  fillPaint   = tpi.fillPaint;
           Stroke stroke      = tpi.strokeStroke;
           Paint  strokePaint = tpi.strokePaint;
  
  
  
  1.21      +14 -8     xml-batik/sources/org/apache/batik/gvt/font/SVGGVTGlyphVector.java
  
  Index: SVGGVTGlyphVector.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/font/SVGGVTGlyphVector.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- SVGGVTGlyphVector.java	6 Sep 2004 00:01:58 -0000	1.20
  +++ SVGGVTGlyphVector.java	21 Nov 2004 21:20:23 -0000	1.21
  @@ -486,14 +486,16 @@
               return bounds2D;
   
           Rectangle2D b=null;
  -        for (int i = 0; i < getNumGlyphs(); i++) {
  -            if (!glyphVisible[i])  continue;
  +        if (tpi.visible) {
  +            for (int i = 0; i < getNumGlyphs(); i++) {
  +                if (!glyphVisible[i])  continue;
   
  -            Rectangle2D glyphBounds = glyphs[i].getBounds2D();
  -            // System.out.println("GB["+i+"]: " + glyphBounds);
  -            if (glyphBounds == null) continue;
  -            if (b == null) b=glyphBounds;
  -            else b = glyphBounds.createUnion(b);
  +                Rectangle2D glyphBounds = glyphs[i].getBounds2D();
  +                // System.out.println("GB["+i+"]: " + glyphBounds);
  +                if (glyphBounds == null) continue;
  +                if (b == null) b=glyphBounds;
  +                else b = glyphBounds.createUnion(b);
  +            }
           }
   
           bounds2D = b;
  @@ -709,6 +711,10 @@
        */
       public void draw(Graphics2D graphics2D, 
                        AttributedCharacterIterator aci) {
  +        aci.first();
  +        TextPaintInfo tpi = (TextPaintInfo)aci.getAttribute(PAINT_INFO);
  +        if (!tpi.visible) return;
  +
           for (int i = 0; i < glyphs.length; i++) {
               if (glyphVisible[i]) {
                   glyphs[i].draw(graphics2D);
  
  
  
  1.3       +10 -2     xml-batik/sources/org/apache/batik/gvt/text/TextPaintInfo.java
  
  Index: TextPaintInfo.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/text/TextPaintInfo.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TextPaintInfo.java	18 Aug 2004 07:14:42 -0000	1.2
  +++ TextPaintInfo.java	21 Nov 2004 21:20:23 -0000	1.3
  @@ -31,6 +31,7 @@
    * @version $Id$
    */
   public class TextPaintInfo {
  +    public boolean   visible;
       public Paint     fillPaint;
       public Paint     strokePaint;
       public Stroke    strokeStroke;
  @@ -47,7 +48,7 @@
       public Paint  strikethroughPaint;
       public Paint  strikethroughStrokePaint;
       public Stroke strikethroughStroke;
  -    
  +
       public TextPaintInfo() { }
       
       public TextPaintInfo(TextPaintInfo pi) {
  @@ -72,6 +73,8 @@
               this.strikethroughPaint       = null;
               this.strikethroughStrokePaint = null;
               this.strikethroughStroke      = null;
  +
  +            this.visible = false;
           } else {
               this.fillPaint    = pi.fillPaint;
               this.strokePaint  = pi.strokePaint;
  @@ -89,6 +92,8 @@
               this.strikethroughPaint       = pi.strikethroughPaint;
               this.strikethroughStrokePaint = pi.strikethroughStrokePaint;
               this.strikethroughStroke      = pi.strikethroughStroke;
  +
  +            this.visible = pi.visible;
           }
       }
   
  @@ -100,12 +105,15 @@
   
           if ((tpi1.fillPaint == null) != (tpi2.fillPaint == null))
               return false;
  +
  +        if (tpi1.visible != tpi2.visible) return false;
           
           boolean tpi1Stroke = ((tpi1.strokePaint != null) &&
                                 (tpi1.strokeStroke != null));
   
           boolean tpi2Stroke = ((tpi2.strokePaint != null) &&
                                 (tpi2.strokeStroke != null));
  +
           return (tpi1Stroke == tpi2Stroke);
   
       }
  
  
  
  1.1                  xml-batik/test-references/samples/tests/spec/scripting/textProperties2.png
  
  	<<Binary file>>
  
  
  1.1                  xml-batik/test-references/samples/tests/spec/text/textProperties2.png
  
  	<<Binary file>>
  
  
  1.120     +3 -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.119
  retrieving revision 1.120
  diff -u -r1.119 -r1.120
  --- samplesRendering.xml	18 Nov 2004 01:47:06 -0000	1.119
  +++ samplesRendering.xml	21 Nov 2004 21:20:23 -0000	1.120
  @@ -336,6 +336,7 @@
           <test id="samples/tests/spec/text/textOnPathSpaces.svg" />
           <test id="samples/tests/spec/text/textPCDATA.svg" />
           <test id="samples/tests/spec/text/textProperties.svg" />
  +        <test id="samples/tests/spec/text/textProperties2.svg" />
           <test id="samples/tests/spec/text/textStyles.svg" />
           <test id="samples/tests/spec/text/verticalText.svg" />
           <test id="samples/tests/spec/text/verticalTextOnPath.svg" />
  @@ -417,5 +418,6 @@
           <test id="samples/tests/spec/scripting/setProperty.svg" />
           <test id="samples/tests/spec/scripting/styling.svg" />
           <test id="samples/tests/spec/scripting/text_content.svg" />
  +        <test id="samples/tests/spec/scripting/textProperties2.svg" />
       </testGroup>
   </testSuite>
  
  
  

---------------------------------------------------------------------
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