tkormann    01/12/19 08:17:42

  Modified:    sources/org/apache/batik/bridge
                        AbstractGraphicsNodeBridge.java CSSUtilities.java
                        SVGImageElementBridge.java
                        SVGTextElementBridge.java
               sources/org/apache/batik/gvt AbstractGraphicsNode.java
                        CompositeShapePainter.java GraphicsNode.java
                        ImageNode.java ShapeNode.java TextNode.java
  Added:       samples/tests/spec/linking pointerEvents.svg
                        pointerEvents2.svg
  Log:
  - commit support for the 'pointer-events' property
  - 2 new tests added
  
  Revision  Changes    Path
  1.1                  xml-batik/samples/tests/spec/linking/pointerEvents.svg
  
  Index: pointerEvents.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 (C) The Apache Software Foundation. All rights reserved.        -->
  <!--                                                                           -->
  <!-- This software is published under the terms of the Apache Software License -->
  <!-- version 1.1, a copy of which has been included with this distribution in  -->
  <!-- the LICENSE file.                                                         -->
  <!-- ========================================================================= -->
  
  <!-- ========================================================================= -->
  <!-- This interactive test validates that the pointer-events property          -->
  <!--                                                                           -->
  <!-- @author [EMAIL PROTECTED]                                                  -->
  <!-- @version $Id: pointerEvents.svg,v 1.1 2001/12/19 16:17:41 tkormann Exp $ -->
  <!-- ========================================================================= -->
  <?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
  
  <svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; 
id="body" width="450" height="500" viewBox="0 0 450 500">
  <title>Pointer Events Test</title>
  
      <g id="content">
  
          <text class="title" x="50%" y="40">'pointer-events' Test
          <desc>Click in any of the links in the 
                table. You should see a smilley.</desc></text>
  
          <defs>
              <g id="smilley">
                  <g  transform="scale(.8, .8) translate(-15,-15)">
                      <circle cx="15" cy="15" r="10"/>
                      <circle cx="12" cy="12" r="1.5" fill="black"/>
                      <circle cx="17" cy="12" r="1.5" fill="black"/>
                      <path d="M 10 19 A 8 8 0 0 0 20 19" stroke="black" 
stroke-width="1"/>
                  </g>
              </g>
  
              <g id="success" fill="rgb(0,255,0)">
                  <use xlink:href="#smilley" />
              </g>
        <g id="cell">
                <rect x="20" y="60" width="120" height="20" style="fill:#eee; 
stroke:black"/>
                <rect x="20" y="80" width="120" height="100" style="fill:none; 
stroke:black"/>
  
                <g>
                        <g>
                                <rect x="90" y="90" width="40" height="20" 
style="fill:#aaa"/>
                        </g>
  
                        <g transform="translate(0 30)">
                                <rect x="90" y="90" width="40" height="20" 
style="fill:none; stroke:black; stroke-width:4"/>
                        </g>
  
                        <g transform="translate(0 60)">
                                <rect x="90" y="90" width="40" height="20" 
style="fill:#aaa; stroke:black; stroke-width:4"/>
                        </g>
                </g>
        </g>
  
          </defs>
  
          <g transform="translate(5, 5) scale(.2)">
              <use xlink:href="#success"/>
              <a xlink:href="#svgView(viewBox(0,0,450,500))">
                  <text y="-11" font-size="2" fill="blue" text-decoration="underline" 
text-anchor="middle">Return to test</text>
              </a>
          </g>
  
  <!-- ######################################### -->
  
  
  <g style="text-anchor:middle;">
  
  <g transform="translate(0 0)">
        <use xlink:href="#cell" />
        <text x="80" y="74">visiblePainted</text>
  </g>
  
  <g transform="translate(140 0)">
        <use xlink:href="#cell" />
        <text x="80" y="74">visibleFill</text>
  </g>
  
  <g transform="translate(280 0)">
        <use xlink:href="#cell" />
        <text x="80" y="74">visibleStroke</text>
  </g>
  
  <g transform="translate(0 130)">
        <use xlink:href="#cell" />
        <text x="80" y="74">visible</text>
  </g>
  
  <g transform="translate(140 130)">
        <use xlink:href="#cell" />
        <text x="80" y="74">painted</text>
  </g>
  
  <g transform="translate(280 130)">
        <use xlink:href="#cell" />
        <text x="80" y="74">fill</text>
  </g>
  
  <g transform="translate(0 260)">
        <use xlink:href="#cell" />
        <text x="80" y="74">stroke</text>
  </g>
  
  <g transform="translate(140 260)">
        <use xlink:href="#cell" />
        <text x="80" y="74">all</text>
  </g>
  
  <g transform="translate(280 260)">
        <use xlink:href="#cell" />
        <text x="80" y="74">none</text>
  </g>
  
  <!-- ######################################### -->
  
  <g transform="translate(0 0)" style="pointer-events:visiblePainted">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <g style="fill:crimson">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 30)" style="fill:none; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 60)" style="fill:crimson; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
        </a>
  </g>
  
  <g transform="translate(140 0)" style="pointer-events:visibleFill">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <g style="fill:crimson">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 30)" style="fill:none; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 60)" style="fill:crimson; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
        </a>
  </g>
  
  <g transform="translate(280 0)" style="pointer-events:visibleStroke">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <g style="fill:crimson">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 30)" style="fill:none; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 60)" style="fill:crimson; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
        </a>
  </g>
  
  <g transform="translate(0 130)" style="pointer-events:visible">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <g style="fill:crimson">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 30)" style="fill:none; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 60)" style="fill:crimson; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
        </a>
  </g>
  
  <g transform="translate(140 130)" style="pointer-events:painted">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <g style="fill:crimson">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 30)" style="fill:none; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 60)" style="fill:crimson; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
        </a>
  </g>
  
  <g transform="translate(280 130)" style="pointer-events:fill">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <g style="fill:crimson">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 30)" style="fill:none; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 60)" style="fill:crimson; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
        </a>
  </g>
  
  <g transform="translate(0 260)" style="pointer-events:stroke">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <g style="fill:crimson">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 30)" style="fill:none; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 60)" style="fill:crimson; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
        </a>
  </g>
  
  <g transform="translate(140 260)" style="pointer-events:all">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <g style="fill:crimson">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 30)" style="fill:none; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 60)" style="fill:crimson; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
        </a>
  </g>
  
  <g transform="translate(280 260)" style="pointer-events:none">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <g style="fill:crimson">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 30)" style="fill:none; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
                <g transform="translate(0 60)" style="fill:crimson; stroke:gold; 
stroke-width:4">
                        <rect x="30" y="90" width="40" height="20" />
                        <rect x="90" y="90" width="40" height="20" 
style="visibility:hidden"/>
                </g>
  
        </a>
  </g>
  
  </g>
  
  
  
  
      </g><!-- "content" -->
  
      <!-- ============================================================= -->
      <!-- Batik sample mark                                             -->
      <!-- ============================================================= -->
      <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
  
  </svg>
  
  
  
  1.1                  xml-batik/samples/tests/spec/linking/pointerEvents2.svg
  
  Index: pointerEvents2.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 (C) The Apache Software Foundation. All rights reserved.        -->
  <!--                                                                           -->
  <!-- This software is published under the terms of the Apache Software License -->
  <!-- version 1.1, a copy of which has been included with this distribution in  -->
  <!-- the LICENSE file.                                                         -->
  <!-- ========================================================================= -->
  
  <!-- ========================================================================= -->
  <!-- This interactive test validates that the pointer-events property          -->
  <!--                                                                           -->
  <!-- @author [EMAIL PROTECTED]                                                  -->
  <!-- @version $Id: pointerEvents2.svg,v 1.1 2001/12/19 16:17:41 tkormann Exp $ -->
  <!-- ========================================================================= -->
  <?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
  
  <svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; 
id="body" width="450" height="500" viewBox="0 0 450 500">
  <title>Pointer Events Test</title>
  
      <g id="content">
  
          <text class="title" x="50%" y="40">'pointer-events' Test
          <desc>Click in any of the links in the 
                table. You should see a smilley.</desc></text>
  
          <defs>
              <g id="smilley">
                  <g  transform="scale(.8, .8) translate(-15,-15)">
                      <circle cx="15" cy="15" r="10"/>
                      <circle cx="12" cy="12" r="1.5" fill="black"/>
                      <circle cx="17" cy="12" r="1.5" fill="black"/>
                      <path d="M 10 19 A 8 8 0 0 0 20 19" stroke="black" 
stroke-width="1"/>
                  </g>
              </g>
  
              <g id="success" fill="rgb(0,255,0)">
                  <use xlink:href="#smilley" />
              </g>
        <g id="cell">
                <rect x="20" y="60" width="120" height="20" style="fill:#eee; 
stroke:black"/>
                <rect x="20" y="80" width="120" height="100" style="fill:none; 
stroke:black"/>
  
                <g style="fill:#aaa">
                        <rect x="35" y="90" width="35" height="14.5" />
                        <rect x="90" y="90" width="35" height="14.5" />
                        <rect x="25" y="120" width="50" height="28" />
                        <rect x="80" y="120" width="50" height="28" />
                        <rect x="35" y="158" width="30" height="16" />
                        <rect x="90" y="158" width="30" height="16" />
                </g>
        </g>
  
          </defs>
  
          <g transform="translate(5, 5) scale(.2)">
              <use xlink:href="#success"/>
              <a xlink:href="#svgView(viewBox(0,0,450,500))">
                  <text y="-11" font-size="2" fill="blue" text-decoration="underline" 
text-anchor="middle">Return to test</text>
              </a>
          </g>
  
  <!-- ######################################### -->
  
  
  <g style="text-anchor:middle;">
  
  <g transform="translate(0 0)">
        <use xlink:href="#cell" />
        <text x="80" y="74">visiblePainted</text>
  </g>
  
  <g transform="translate(140 0)">
        <use xlink:href="#cell" />
        <text x="80" y="74">visibleFill</text>
  </g>
  
  <g transform="translate(280 0)">
        <use xlink:href="#cell" />
        <text x="80" y="74">visibleStroke</text>
  </g>
  
  <g transform="translate(0 130)">
        <use xlink:href="#cell" />
        <text x="80" y="74">visible</text>
  </g>
  
  <g transform="translate(140 130)">
        <use xlink:href="#cell" />
        <text x="80" y="74">painted</text>
  </g>
  
  <g transform="translate(280 130)">
        <use xlink:href="#cell" />
        <text x="80" y="74">fill</text>
  </g>
  
  <g transform="translate(0 260)">
        <use xlink:href="#cell" />
        <text x="80" y="74">stroke</text>
  </g>
  
  <g transform="translate(140 260)">
        <use xlink:href="#cell" />
        <text x="80" y="74">all</text>
  </g>
  
  <g transform="translate(280 260)">
        <use xlink:href="#cell" />
        <text x="80" y="74">none</text>
  </g>
  
  <!-- ######################################### -->
  
  <g transform="translate(0 0)" style="pointer-events:visiblePainted">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" 
width="35" height="14.5" />
                <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" 
width="35" height="14.5" style="visibility:hidden"/>
  
                <image xlink:href="../../resources/images/svg.svg" x="25" y="120" 
width="50" height="28" />
                <image xlink:href="../../resources/images/svg.svg" x="80" y="120" 
width="50" height="28" style="visibility:hidden"/>
  
                <text x="50" y="170">Batik</text>
                <text x="105" y="170" style="visibility:hidden">Batik</text>
        </a>
  </g>
  
  <g transform="translate(140 0)" style="pointer-events:visibleFill">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" 
width="35" height="14.5" />
                <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" 
width="35" height="14.5" style="visibility:hidden"/>
  
                <image xlink:href="../../resources/images/svg.svg" x="25" y="120" 
width="50" height="28" />
                <image xlink:href="../../resources/images/svg.svg" x="80" y="120" 
width="50" height="28" style="visibility:hidden"/>
  
                <text x="50" y="170">Batik</text>
                <text x="105" y="170" style="visibility:hidden">Batik</text>
        </a>
  </g>
  
  <g transform="translate(280 0)" style="pointer-events:visibleStroke">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" 
width="35" height="14.5" />
                <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" 
width="35" height="14.5" style="visibility:hidden"/>
  
                <image xlink:href="../../resources/images/svg.svg" x="25" y="120" 
width="50" height="28" />
                <image xlink:href="../../resources/images/svg.svg" x="80" y="120" 
width="50" height="28" style="visibility:hidden"/>
  
                <text x="50" y="170">Batik</text>
                <text x="105" y="170" style="visibility:hidden">Batik</text>
        </a>
  </g>
  
  <g transform="translate(0 130)" style="pointer-events:visible">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" 
width="35" height="14.5" />
                <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" 
width="35" height="14.5" style="visibility:hidden"/>
  
                <image xlink:href="../../resources/images/svg.svg" x="25" y="120" 
width="50" height="28" />
                <image xlink:href="../../resources/images/svg.svg" x="80" y="120" 
width="50" height="28" style="visibility:hidden"/>
  
                <text x="50" y="170">Batik</text>
                <text x="105" y="170" style="visibility:hidden">Batik</text>
        </a>
  </g>
  
  <g transform="translate(140 130)" style="pointer-events:painted">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" 
width="35" height="14.5" />
                <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" 
width="35" height="14.5" style="visibility:hidden"/>
  
                <image xlink:href="../../resources/images/svg.svg" x="25" y="120" 
width="50" height="28" />
                <image xlink:href="../../resources/images/svg.svg" x="80" y="120" 
width="50" height="28" style="visibility:hidden"/>
  
                <text x="50" y="170">Batik</text>
                <text x="105" y="170" style="visibility:hidden">Batik</text>
        </a>
  </g>
  
  <g transform="translate(280 130)" style="pointer-events:fill">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" 
width="35" height="14.5" />
                <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" 
width="35" height="14.5" style="visibility:hidden"/>
  
                <image xlink:href="../../resources/images/svg.svg" x="25" y="120" 
width="50" height="28" />
                <image xlink:href="../../resources/images/svg.svg" x="80" y="120" 
width="50" height="28" style="visibility:hidden"/>
  
                <text x="50" y="170">Batik</text>
                <text x="105" y="170" style="visibility:hidden">Batik</text>
        </a>
  </g>
  
  <g transform="translate(0 260)" style="pointer-events:stroke">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" 
width="35" height="14.5" />
                <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" 
width="35" height="14.5" style="visibility:hidden"/>
  
                <image xlink:href="../../resources/images/svg.svg" x="25" y="120" 
width="50" height="28" />
                <image xlink:href="../../resources/images/svg.svg" x="80" y="120" 
width="50" height="28" style="visibility:hidden"/>
  
                <text x="50" y="170">Batik</text>
                <text x="105" y="170" style="visibility:hidden">Batik</text>
        </a>
  </g>
  
  <g transform="translate(140 260)" style="pointer-events:all">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" 
width="35" height="14.5" />
                <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" 
width="35" height="14.5" style="visibility:hidden"/>
  
                <image xlink:href="../../resources/images/svg.svg" x="25" y="120" 
width="50" height="28" />
                <image xlink:href="../../resources/images/svg.svg" x="80" y="120" 
width="50" height="28" style="visibility:hidden"/>
  
                <text x="50" y="170">Batik</text>
                <text x="105" y="170" style="visibility:hidden">Batik</text>
        </a>
  </g>
  
  <g transform="translate(280 260)" style="pointer-events:none">
          <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
                <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" 
width="35" height="14.5" />
                <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" 
width="35" height="14.5" style="visibility:hidden"/>
  
                <image xlink:href="../../resources/images/svg.svg" x="25" y="120" 
width="50" height="28" />
                <image xlink:href="../../resources/images/svg.svg" x="80" y="120" 
width="50" height="28" style="visibility:hidden"/>
  
                <text x="50" y="170">Batik</text>
                <text x="105" y="170" style="visibility:hidden">Batik</text>
        </a>
  </g>
  
  </g>
  
  
  
  
      </g><!-- "content" -->
  
      <!-- ============================================================= -->
      <!-- Batik sample mark                                             -->
      <!-- ============================================================= -->
      <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
  
  </svg>
  
  
  
  1.6       +7 -5      
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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- AbstractGraphicsNodeBridge.java   2001/11/13 15:20:58     1.5
  +++ AbstractGraphicsNodeBridge.java   2001/12/19 16:17:41     1.6
  @@ -35,7 +35,7 @@
    * </ul>
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Thierry Kormann</a>
  - * @version $Id: AbstractGraphicsNodeBridge.java,v 1.5 2001/11/13 15:20:58 tkormann 
Exp $
  + * @version $Id: AbstractGraphicsNodeBridge.java,v 1.6 2001/12/19 16:17:41 tkormann 
Exp $
    */
   public abstract class AbstractGraphicsNodeBridge extends AbstractSVGBridge
       implements GraphicsNodeBridge, ErrorConstants {
  @@ -53,10 +53,10 @@
        * @return a graphics node that represents the specified element
        */
       public GraphicsNode createGraphicsNode(BridgeContext ctx, Element e) {
  -     // 'requiredFeatures', 'requiredExtensions' and 'systemLanguage'
  -     if (!SVGUtilities.matchUserAgent(e, ctx.getUserAgent())) {
  -         return null;
  -     }
  +        // 'requiredFeatures', 'requiredExtensions' and 'systemLanguage'
  +        if (!SVGUtilities.matchUserAgent(e, ctx.getUserAgent())) {
  +            return null;
  +        }
   
           GraphicsNode node = instantiateGraphicsNode();
           // 'transform'
  @@ -95,6 +95,8 @@
           node.setMask(CSSUtilities.convertMask(e, node, ctx));
           // 'clip-path'
           node.setClip(CSSUtilities.convertClipPath(e, node, ctx));
  +        // 'pointer-events'
  +        node.setPointerEventType(CSSUtilities.convertPointerEvents(e));
   
           // bind the specified element and its associated graphics node if needed
           if (ctx.isDynamic()) {
  
  
  
  1.35      +57 -3     xml-batik/sources/org/apache/batik/bridge/CSSUtilities.java
  
  Index: CSSUtilities.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/CSSUtilities.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- CSSUtilities.java 2001/10/19 08:05:18     1.34
  +++ CSSUtilities.java 2001/12/19 16:17:41     1.35
  @@ -64,9 +64,9 @@
    * concrete objects regarding to CSS properties.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Thierry Kormann</a>
  - * @version $Id: CSSUtilities.java,v 1.34 2001/10/19 08:05:18 tkormann Exp $
  + * @version $Id: CSSUtilities.java,v 1.35 2001/12/19 16:17:41 tkormann Exp $
    */
  -public abstract class CSSUtilities 
  +public abstract class CSSUtilities
       implements CSSConstants, ErrorConstants, XMLConstants {
   
       /**
  @@ -96,6 +96,60 @@
       }
   
       /////////////////////////////////////////////////////////////////////////
  +    // 'pointer-events'
  +    /////////////////////////////////////////////////////////////////////////
  +
  +    /**
  +     * Returns the type that describes how this graphics node reacts to events.
  +     *
  +     * @return GraphicsNode.VISIBLE_PAINTED |
  +     *         GraphicsNode.VISIBLE_FILL |
  +     *         GraphicsNode.VISIBLE_STROKE |
  +     *         GraphicsNode.VISIBLE |
  +     *         GraphicsNode.PAINTED |
  +     *         GraphicsNode.FILL |
  +     *         GraphicsNode.STROKE |
  +     *         GraphicsNode.ALL |
  +     *         GraphicsNode.NONE
  +     */
  +    public static int convertPointerEvents(Element e) {
  +        CSSOMReadOnlyStyleDeclaration decl = getComputedStyle(e);
  +        CSSPrimitiveValue v
  +            = (CSSPrimitiveValue) decl.getPropertyCSSValueInternal
  +            (CSS_POINTER_EVENTS_PROPERTY);
  +        String s = v.getStringValue();
  +        switch(s.charAt(0)) {
  +        case 'v':
  +            if (s.length() == 7) {
  +                return GraphicsNode.VISIBLE;
  +            } else {
  +                switch(s.charAt(7)) {
  +                case 'p':
  +                    return GraphicsNode.VISIBLE_PAINTED;
  +                case 'f':
  +                    return GraphicsNode.VISIBLE_FILL;
  +                case 's':
  +                    return GraphicsNode.VISIBLE_STROKE;
  +                default:
  +                    throw new Error(); // can't be reached
  +                }
  +            }
  +        case 'p':
  +            return GraphicsNode.PAINTED;
  +        case 'f':
  +            return GraphicsNode.FILL;
  +        case 's':
  +            return GraphicsNode.STROKE;
  +        case 'a':
  +            return GraphicsNode.ALL;
  +        case 'n':
  +            return GraphicsNode.NONE;
  +        default:
  +            throw new Error(); // can't be reached
  +        }
  +    }
  +
  +    /////////////////////////////////////////////////////////////////////////
       // 'enable-background'
       /////////////////////////////////////////////////////////////////////////
   
  @@ -841,7 +895,7 @@
           SVGOMDocument refDocument
               = (SVGOMDocument)refElement.getOwnerDocument();
           AbstractViewCSS refView = (AbstractViewCSS)refDocument.getDefaultView();
  -        
  +
           HiddenChildElementSupport.setStyle(localRefElement,
                                              view,
                                              refElement,
  
  
  
  1.33      +3 -1      
xml-batik/sources/org/apache/batik/bridge/SVGImageElementBridge.java
  
  Index: SVGImageElementBridge.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGImageElementBridge.java,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- SVGImageElementBridge.java        2001/11/19 08:29:25     1.32
  +++ SVGImageElementBridge.java        2001/12/19 16:17:41     1.33
  @@ -51,7 +51,7 @@
    * Bridge class for the &lt;image> element.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Thierry Kormann</a>
  - * @version $Id: SVGImageElementBridge.java,v 1.32 2001/11/19 08:29:25 tkormann Exp 
$
  + * @version $Id: SVGImageElementBridge.java,v 1.33 2001/12/19 16:17:41 tkormann Exp 
$
    */
   public class SVGImageElementBridge extends AbstractGraphicsNodeBridge {
   
  @@ -163,6 +163,8 @@
           node.setMask(CSSUtilities.convertMask(e, node, ctx));
           // 'clip-path'
           node.setClip(CSSUtilities.convertClipPath(e, node, ctx));
  +        // 'pointer-events'
  +        node.setPointerEventType(CSSUtilities.convertPointerEvents(e));
   
           // bind the specified element and its associated graphics node if needed
           if (ctx.isDynamic()) {
  
  
  
  1.43      +3 -1      
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.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- SVGTextElementBridge.java 2001/12/03 13:01:40     1.42
  +++ SVGTextElementBridge.java 2001/12/19 16:17:41     1.43
  @@ -56,7 +56,7 @@
    * Bridge class for the &lt;text> element.
    *
    * @author <a href="[EMAIL PROTECTED]>Bill Haneman</a>
  - * @version $Id: SVGTextElementBridge.java,v 1.42 2001/12/03 13:01:40 tkormann Exp $
  + * @version $Id: SVGTextElementBridge.java,v 1.43 2001/12/19 16:17:41 tkormann Exp $
    */
   public class SVGTextElementBridge extends AbstractSVGBridge
       implements GraphicsNodeBridge, ErrorConstants {
  @@ -176,6 +176,8 @@
           node.setMask(CSSUtilities.convertMask(e, node, ctx));
           // 'clip-path'
           node.setClip(CSSUtilities.convertClipPath(e, node, ctx));
  +        // 'pointer-events'
  +        node.setPointerEventType(CSSUtilities.convertPointerEvents(e));
   
           // bind the specified element and its associated graphics node if needed
           if (ctx.isDynamic()) {
  
  
  
  1.29      +47 -3     xml-batik/sources/org/apache/batik/gvt/AbstractGraphicsNode.java
  
  Index: AbstractGraphicsNode.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/gvt/AbstractGraphicsNode.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- AbstractGraphicsNode.java 2001/12/19 12:10:09     1.28
  +++ AbstractGraphicsNode.java 2001/12/19 16:17:41     1.29
  @@ -51,7 +51,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]";>Thierry Kormann</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Emmanuel Tissandier</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Thomas DeWeese</a>
  - * @version $Id: AbstractGraphicsNode.java,v 1.28 2001/12/19 12:10:09 tkormann Exp $
  + * @version $Id: AbstractGraphicsNode.java,v 1.29 2001/12/19 16:17:41 tkormann Exp $
    */
   public abstract class AbstractGraphicsNode implements GraphicsNode {
   
  @@ -114,8 +114,13 @@
       protected Filter filter;
   
       /**
  -     * .The GraphicsNodeRable for this node.
  +     * Indicates how this graphics node reacts to events.
        */
  +    protected int pointerEventType = VISIBLE_PAINTED;
  +
  +    /**
  +     * The GraphicsNodeRable for this node.
  +     */
       protected WeakReference graphicsNodeRable;
   
       /**
  @@ -133,6 +138,26 @@
       //
   
       /**
  +     * Returns the type that describes how this graphics node reacts to events.
  +     *
  +     * @return VISIBLE_PAINTED | VISIBLE_FILL | VISIBLE_STROKE | VISIBLE |
  +     * PAINTED | FILL | STROKE | ALL | NONE
  +     */
  +    public int getPointerEventType() {
  +        return pointerEventType;
  +    }
  +
  +    /**
  +     * Sets the type that describes how this graphics node reacts to events.
  +     *
  +     * @param pointerEventType VISIBLE_PAINTED | VISIBLE_FILL | VISIBLE_STROKE |
  +     * VISIBLE | PAINTED | FILL | STROKE | ALL | NONE
  +     */
  +    public void setPointerEventType(int pointerEventType) {
  +        this.pointerEventType = pointerEventType;
  +    }
  +
  +    /**
        * Sets the transform of this node.
        *
        * @param newTransform the new transform of this node
  @@ -892,7 +917,26 @@
        * @param p the specified Point2D in the user space
        */
       public boolean contains(Point2D p) {
  -        return getBounds().contains(p);
  +        Rectangle2D b = getBounds();
  +        if (b == null || !b.contains(p)) {
  +            return false;
  +        }
  +        switch(pointerEventType) {
  +        case VISIBLE_PAINTED:
  +        case VISIBLE_FILL:
  +        case VISIBLE_STROKE:
  +        case VISIBLE:
  +            return isVisible;
  +        case PAINTED:
  +        case FILL:
  +        case STROKE:
  +        case ALL:
  +            return true;
  +        case NONE:
  +            return false;
  +        default:
  +            return false;
  +        }
       }
   
       /**
  
  
  
  1.10      +21 -5     
xml-batik/sources/org/apache/batik/gvt/CompositeShapePainter.java
  
  Index: CompositeShapePainter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/gvt/CompositeShapePainter.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- CompositeShapePainter.java        2001/09/18 21:18:59     1.9
  +++ CompositeShapePainter.java        2001/12/19 16:17:41     1.10
  @@ -20,7 +20,7 @@
    * A shape painter which consists of multiple shape painters.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Thierry Kormann</a>
  - * @version $Id: CompositeShapePainter.java,v 1.9 2001/09/18 21:18:59 deweese Exp $
  + * @version $Id: CompositeShapePainter.java,v 1.10 2001/12/19 16:17:41 tkormann Exp 
$
    */
   public class CompositeShapePainter implements ShapePainter {
   
  @@ -29,7 +29,7 @@
        */
       protected Shape shape;
   
  -    /** 
  +    /**
        * The enclosed <tt>ShapePainter</tt>s of this composite shape painter.
        */
       protected ShapePainter [] painters;
  @@ -73,6 +73,22 @@
       }
   
       /**
  +     * Returns the shape painter at the specified index.
  +     *
  +     * @param index the index of the shape painter to return
  +     */
  +    public ShapePainter getShapePainter(int index) {
  +        return painters[index];
  +    }
  +
  +    /**
  +     * Returns the number of shape painter of this composite shape painter.
  +     */
  +    public int getShapePainterCount() {
  +        return count;
  +    }
  +
  +    /**
        * Paints the specified shape using the specified Graphics2D.
        *
        * @param g2d the Graphics2D to use
  @@ -91,11 +107,11 @@
       public Shape getPaintedArea(){
           // <!> FIX ME: Use of GeneralPath is a work around Area problems.
           if (painters != null) {
  -            GeneralPath paintedArea = new GeneralPath();
  +            Area paintedArea = new Area();
               for (int i=0; i < count; ++i) {
                   Shape s = painters[i].getPaintedArea();
                   if (s != null) {
  -                    paintedArea.append(s, false);
  +                    paintedArea.add(new Area(s));
                   }
               }
               return paintedArea;
  @@ -103,7 +119,7 @@
               return null;
           }
       }
  -    
  +
       /**
        * Sets the Shape this shape painter is associated with.
        *
  
  
  
  1.31      +70 -1     xml-batik/sources/org/apache/batik/gvt/GraphicsNode.java
  
  Index: GraphicsNode.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/GraphicsNode.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- GraphicsNode.java 2001/12/19 12:10:09     1.30
  +++ GraphicsNode.java 2001/12/19 16:17:41     1.31
  @@ -34,11 +34,64 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Thierry Kormann</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Emmanuel Tissandier</a>
  - * @version $Id: GraphicsNode.java,v 1.30 2001/12/19 12:10:09 tkormann Exp $
  + * @version $Id: GraphicsNode.java,v 1.31 2001/12/19 16:17:41 tkormann Exp $
    */
   public interface GraphicsNode {
   
       /**
  +     * Indicates that this graphics node can be the target for events when it
  +     * is visible and when the mouse is over the "painted" area.
  +     */
  +    public static final int VISIBLE_PAINTED = 0;
  +
  +    /**
  +     * Indicates that this graphics node can be the target for events when it
  +     * is visible and when the mouse is over the filled area if any.
  +     */
  +    public static final int VISIBLE_FILL = 1;
  +
  +    /**
  +     * Indicates that this graphics node can be the target for events when it
  +     * is visible and when the mouse is over the stroked area if any.
  +     */
  +    public static final int VISIBLE_STROKE = 2;
  +
  +    /**
  +     * Indicates that this graphics node can be the target for events when it
  +     * is visible and whatever is the filled and stroked area.
  +     */
  +    public static final int VISIBLE = 3;
  +
  +    /**
  +     * Indicates that this graphics node can be the target for events when the
  +     * mouse is over the painted area whatever or not it is the visible.
  +     */
  +    public static final int PAINTED = 4;
  +
  +    /**
  +     * Indicates that this graphics node can be the target for events when the
  +     * mouse is over the filled area whatever or not it is the visible.
  +     */
  +    public static final int FILL = 5;
  +
  +    /**
  +     * Indicates that this graphics node can be the target for events when the
  +     * mouse is over the stroked area whatever or not it is the visible.
  +     */
  +    public static final int STROKE = 6;
  +
  +    /**
  +     * Indicates that this graphics node can be the target for events if any
  +     * cases.
  +     */
  +    public static final int ALL = 7;
  +
  +    /**
  +     * Indicates that this graphics node can not be the target for events.
  +     */
  +    public static final int NONE = 8;
  +
  +    /**
        * The identity affine transform matrix used to draw renderable images.
        */
       public static final AffineTransform IDENTITY = new AffineTransform();
  @@ -46,6 +99,22 @@
       //
       // Properties methods
       //
  +
  +    /**
  +     * Returns the type that describes how this graphics node reacts to events.
  +     *
  +     * @return VISIBLE_PAINTED | VISIBLE_FILL | VISIBLE_STROKE | VISIBLE |
  +     * PAINTED | FILL | STROKE | ALL | NONE
  +     */
  +    int getPointerEventType();
  +
  +    /**
  +     * Sets the type that describes how this graphics node reacts to events.
  +     *
  +     * @param pointerEventType VISIBLE_PAINTED | VISIBLE_FILL | VISIBLE_STROKE |
  +     * VISIBLE | PAINTED | FILL | STROKE | ALL | NONE
  +     */
  +    void setPointerEventType(int pointerEventType);
   
       /**
        * Sets the transform of this node.
  
  
  
  1.9       +36 -1     xml-batik/sources/org/apache/batik/gvt/ImageNode.java
  
  Index: ImageNode.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/ImageNode.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ImageNode.java    2001/09/18 21:18:59     1.8
  +++ ImageNode.java    2001/12/19 16:17:41     1.9
  @@ -18,7 +18,7 @@
    * A graphics node that represents an image described as a graphics node.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Thierry Kormann</a>
  - * @version $Id: ImageNode.java,v 1.8 2001/09/18 21:18:59 deweese Exp $
  + * @version $Id: ImageNode.java,v 1.9 2001/12/19 16:17:41 tkormann Exp $
    */
   public class ImageNode extends CompositeGraphicsNode {
   
  @@ -36,6 +36,41 @@
           if (isVisible) {
               super.paint(g2d);
           }
  +    }
  +
  +    /**
  +     * Returns true if the specified Point2D is inside the boundary of this
  +     * node, false otherwise.
  +     *
  +     * @param p the specified Point2D in the user space
  +     */
  +    public boolean contains(Point2D p) {
  +        switch(pointerEventType) {
  +        case VISIBLE_PAINTED:
  +        case VISIBLE_FILL:
  +        case VISIBLE_STROKE:
  +        case VISIBLE:
  +            return isVisible && super.contains(p);
  +        case PAINTED:
  +        case FILL:
  +        case STROKE:
  +        case ALL:
  +            return super.contains(p);
  +        case NONE:
  +            return false;
  +        default:
  +            return false;
  +        }
  +    }
  +
  +    /**
  +     * Returns the GraphicsNode containing point p if this node or one of its
  +     * children is sensitive to mouse events at p.
  +     *
  +     * @param p the specified Point2D in the user space
  +     */
  +    public GraphicsNode nodeHitAt(Point2D p) {
  +        return (contains(p) ? super.nodeHitAt(p) : null);
       }
   
       //
  
  
  
  1.12      +91 -10    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.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ShapeNode.java    2001/09/18 21:19:00     1.11
  +++ ShapeNode.java    2001/12/19 16:17:41     1.12
  @@ -20,7 +20,7 @@
    * A graphics node that represents a shape.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Thierry Kormann</a>
  - * @version $Id: ShapeNode.java,v 1.11 2001/09/18 21:19:00 deweese Exp $
  + * @version $Id: ShapeNode.java,v 1.12 2001/12/19 16:17:41 tkormann Exp $
    */
   public class ShapeNode extends AbstractGraphicsNode {
   
  @@ -50,6 +50,11 @@
       private Shape paintedArea;
   
       /**
  +     * Internal Cache: The sensitive area.
  +     */
  +    private Shape sensitiveArea;
  +
  +    /**
        * Constructs a new empty <tt>ShapeNode</tt>.
        */
       public ShapeNode() {}
  @@ -82,7 +87,7 @@
        * Sets the <tt>ShapePainter</tt> used by this shape node to render its
        * shape.
        *
  -     * @param newShapePainter the new ShapePainter to use 
  +     * @param newShapePainter the new ShapePainter to use
        */
       public void setShapePainter(ShapePainter newShapePainter) {
           invalidateGeometryCache();
  @@ -134,13 +139,14 @@
       /**
        * Invalidates this <tt>ShapeNode</tt>. This node and all its ancestors have
        * been informed that all its cached values related to its bounds must be
  -     * recomputed.  
  +     * recomputed.
        */
       protected void invalidateGeometryCache() {
           super.invalidateGeometryCache();
           primitiveBounds = null;
           geometryBounds = null;
           paintedArea = null;
  +        sensitiveArea = null;
       }
   
       /**
  @@ -151,13 +157,38 @@
        */
       public boolean contains(Point2D p) {
           Rectangle2D b = getBounds();
  -        if (b != null) {
  -            return (b.contains(p) &&
  -                    paintedArea != null &&
  -                    paintedArea.contains(p));
  -        } else {
  -         return false;
  -     }
  +        if (b == null || !b.contains(p)) {
  +            return false;
  +        }
  +        Shape s;
  +        switch(pointerEventType) {
  +        case VISIBLE_PAINTED:
  +        case VISIBLE_FILL:
  +        case VISIBLE_STROKE:
  +            s = getSensitiveArea();
  +            if (s != null) {
  +                return isVisible && s.contains(p);
  +            } else {
  +                return false;
  +            }
  +        case VISIBLE:
  +            return isVisible;
  +        case PAINTED:
  +        case FILL:
  +        case STROKE:
  +            s = getSensitiveArea();
  +            if (s != null) {
  +                return s.contains(p);
  +            } else {
  +                return false;
  +            }
  +        case ALL:
  +            return true;
  +        case NONE:
  +            return false;
  +        default:
  +            return false;
  +        }
       }
   
       /**
  @@ -195,6 +226,56 @@
               }
           }
           return primitiveBounds;
  +    }
  +
  +    /**
  +     * Returns the shape that represents the sensitive area of this graphics
  +     * node.
  +     */
  +    public Shape getSensitiveArea() {
  +        if (sensitiveArea == null) {
  +            // <!> NOT REALLY NICE CODE BUT NO OTHER WAY
  +            ShapePainter strokeShapePainter = null;
  +            ShapePainter fillShapePainter = null;
  +            if (shapePainter instanceof StrokeShapePainter) {
  +                strokeShapePainter = shapePainter;
  +            } else if (shapePainter instanceof FillShapePainter) {
  +                fillShapePainter = shapePainter;
  +            } else {
  +                CompositeShapePainter cp = (CompositeShapePainter)shapePainter;
  +                for (int i=0; i < cp.getShapePainterCount(); ++i) {
  +                    ShapePainter sp = cp.getShapePainter(i);
  +                    if (sp instanceof StrokeShapePainter) {
  +                        strokeShapePainter = sp;
  +                    } else if (sp instanceof FillShapePainter) {
  +                        fillShapePainter = sp;
  +                    }
  +                }
  +            }
  +            switch(pointerEventType) {
  +            case VISIBLE_PAINTED:
  +            case PAINTED:
  +                sensitiveArea = shapePainter.getPaintedArea();
  +                break;
  +            case VISIBLE_FILL:
  +            case FILL:
  +                if (fillShapePainter != null) {
  +                    sensitiveArea = fillShapePainter.getPaintedArea();
  +                }
  +                break;
  +            case VISIBLE_STROKE:
  +            case STROKE:
  +                if (strokeShapePainter != null) {
  +                    sensitiveArea = strokeShapePainter.getPaintedArea();
  +                }
  +                break;
  +            case ALL:
  +            case NONE:
  +            default:
  +                // nothing to tdo
  +            }
  +        }
  +        return sensitiveArea;
       }
   
       /**
  
  
  
  1.22      +34 -49    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.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- TextNode.java     2001/11/05 20:04:11     1.21
  +++ TextNode.java     2001/12/19 16:17:41     1.22
  @@ -35,7 +35,7 @@
    * A graphics node that represents text.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Thierry Kormann</a>
  - * @version $Id: TextNode.java,v 1.21 2001/11/05 20:04:11 deweese Exp $
  + * @version $Id: TextNode.java,v 1.22 2001/12/19 16:17:41 tkormann Exp $
    */
   public class TextNode extends AbstractGraphicsNode implements Selectable {
   
  @@ -102,21 +102,21 @@
        * null, this text node will use its default text painter
        * (StrokingTextPainter.getInstance()).
        *
  -     * @param textPainter the text painter to use 
  +     * @param textPainter the text painter to use
        */
       public void setTextPainter(TextPainter textPainter) {
  -     if (textPainter == null) {
  -         this.textPainter = StrokingTextPainter.getInstance();
  -     } else {
  -         this.textPainter = textPainter;
  -     }
  +        if (textPainter == null) {
  +            this.textPainter = StrokingTextPainter.getInstance();
  +        } else {
  +            this.textPainter = textPainter;
  +        }
       }
   
       /**
        * Returns the text painter of this text node.
        */
       public TextPainter getTextPainter() {
  -     return textPainter;
  +        return textPainter;
       }
   
       /**
  @@ -141,9 +141,9 @@
       public String getText() {
           if (text == null) {
               StringBuffer buf = new StringBuffer(aci.getEndIndex());
  -            for (char c = aci.first(); 
  -              c != CharacterIterator.DONE; 
  -              c = aci.next()) {
  +            for (char c = aci.first();
  +                 c != CharacterIterator.DONE;
  +                 c = aci.next()) {
                   buf.append(c);
               }
               text = buf.toString();
  @@ -199,13 +199,13 @@
       /**
        * Invalidates this <tt>TextNode</tt>. This node and all its ancestors have
        * been informed that all its cached values related to its bounds must be
  -     * recomputed.  
  +     * recomputed.
        */
       protected void invalidateGeometryCache() {
           super.invalidateGeometryCache();
           primitiveBounds = null;
           geometryBounds = null;
  -     outline = null;
  +        outline = null;
       }
   
       /**
  @@ -230,34 +230,19 @@
               if (aci != null) {
                   geometryBounds = textPainter.getBounds(this);
               }
  -     }
  +        }
           return geometryBounds;
       }
   
       /**
  -     * Returns true if the specified Point2D is inside the boundary of this
  -     * node, false otherwise.
  -     *
  -     * @param p the specified Point2D in the user space
  -     */
  -    public boolean contains(Point2D p) {
  -     Rectangle2D b = getBounds();
  -     if (b != null) {
  -         return b.contains(p.getX(), p.getY());
  -     } else {
  -         return false;
  -     }
  -    }
  -
  -    /**
        * Returns the outline of this node.
        */
       public Shape getOutline() {
  -     if (outline == null) {
  -         if (aci != null) {
  -             outline = textPainter.getDecoratedShape(this);
  -         }
  -     }
  +        if (outline == null) {
  +            if (aci != null) {
  +                outline = textPainter.getDecoratedShape(this);
  +            }
  +        }
           return outline;
       }
   
  @@ -339,7 +324,7 @@
                   ranges[0] = temp;
               }
               o = new AttributedCharacterSpanIterator
  -             (aci, ranges[0], ranges[1]+1);
  +                (aci, ranges[0], ranges[1]+1);
           }
           return o;
       }
  @@ -350,8 +335,8 @@
        * @return a Shape which encloses the current text selection.
        */
       public Shape getHighlightShape() {
  -        Shape highlightShape = 
  -         textPainter.getHighlightShape(beginMark, endMark);
  +        Shape highlightShape =
  +            textPainter.getHighlightShape(beginMark, endMark);
           AffineTransform t = getGlobalTransform();
           highlightShape = t.createTransformedShape(highlightShape);
           return highlightShape;
  @@ -415,32 +400,32 @@
           /**
            * The anchor which enables the rendered characters to be aligned such
            * that the start of the text string is at the initial current text
  -         * location.  
  -      */
  +         * location.
  +         */
           public static final Anchor START = new Anchor(ANCHOR_START);
   
           /**
            * The anchor which enables the rendered characters to be aligned such
            * that the middle of the text string is at the initial current text
  -         * location.  
  -      */
  +         * location.
  +         */
           public static final Anchor MIDDLE = new Anchor(ANCHOR_MIDDLE);
   
           /**
            * The anchor which enables the rendered characters to be aligned such
            * that the end of the text string is at the initial current text
  -         * location.  
  -      */
  +         * location.
  +         */
           public static final Anchor END = new Anchor(ANCHOR_END);
   
  -     /**
  -      * The anchor type.
  -      */
  +        /**
  +         * The anchor type.
  +         */
           private int type;
   
  -        /** 
  -      * No instance of this class.
  -      */
  +        /**
  +         * No instance of this class.
  +         */
           private Anchor(int type) {
               this.type = type;
           }
  
  
  

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

Reply via email to