blob: 1736c486d313a2a308d1468cacd8d9fa724568f0 [file] [log] [blame]
<?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 (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 test validates handling of the orient property on maker-start and -->
<!-- marker-end. -->
<!-- -->
<!-- @author vhardy@apache.org -->
<!-- @version $Id$ -->
<!-- ========================================================================= -->
<?xml-stylesheet type="text/css" href="test.css" ?>
<svg id="body" width="450" height="500" viewBox="0 0 450 500">
<title>Marker Test</title>
<style type="text/css"><![CDATA[
.markedPath { fill:none; stroke:black; stroke-width:.5; }
]]></style>
<g id="content">
<text class="title" x="50%" y="40">Markers, Orient 1/2</text>
<defs>
<g id="arrowMarker">
<g stroke="none" >
<circle r="3" />
<rect x="-1" y="0" width="2" height="7" />
<path d="M -3 6 l 6 0 l -3 3 z" />
</g>
</g>
<g id="crossHair" marker="none" marker-start="none" marker-end="none" marker-mid="none" stroke="black">
<line y1="-5" x2="0" y2="5" />
<line x1="-5" x2="5" y2="0" />
</g>
<g id="startEndCrossHairs">
<use x="0" y="20" xlink:href="#crossHair" />
<use x="30" y="0" xlink:href="#crossHair" />
</g>
<g id="startMidEndCrossHairs">
<use x="0" y="20" xlink:href="#crossHair" />
<use x="20" y="0" xlink:href="#crossHair" />
<use x="50" y="10" xlink:href="#crossHair" />
</g>
<pattern id="gridPattern" viewBox="-5 -5 10 10" x="-5" y="-5" width="10" height="10"
patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse">
<g stroke="rgb(245, 245, 255)" stroke-width="1">
<line x1="0" y1="-6" x2="0" y2="6" />
<line x1="-6" y1="0" x2="6" y2="0" />
</g>
</pattern>
<!-- ============================= -->
<!-- Simple Marker Definition -->
<!-- ============================= -->
<marker id="startMarker" markerWidth="48" markerHeight="32"
viewBox="-10 -3 13 6" orient="auto" refX="0" refY="0"
markerUnits="strokeWidth">
<g>
<use xlink:href="#arrowMarker" transform="rotate(90)" fill="crimson" />
</g>
</marker>
<marker id="endMarker" markerWidth="48" markerHeight="24"
viewBox="-3 -3 13 6" orient="auto" refX="0" refY="0"
markerUnits="strokeWidth">
<g>
<use xlink:href="#arrowMarker" transform="rotate(-90)" fill="orange"/>
</g>
</marker>
<marker id="midMarker" markerWidth="64" markerHeight="48"
viewBox="-5 -10 10 13" orient="auto" refX="0" refY="0"
markerUnits="strokeWidth">
<g>
<use xlink:href="#arrowMarker" transform="rotate(180)" fill="gold"/>
<line stroke="gold" x1="-5" y1="0" x2="5" y2="0" />
</g>
</marker>
</defs>
<g transform="translate(110, 120)">
<g id="grid" stroke="black" fill="none">
<rect x="-30" y="-25" width="300" height="350" fill="url(markersOrientA.svg#gridPattern)"/>
<rect x="-30" y="-45" width="300" height="20" fill="rgb(240, 240, 240)" />
<rect x="-50" y="-25" width="20" height="350" fill="rgb(240, 240, 240)" />
<line x1="70" y1="-45" x2="70" y2="325" />
<line x1="170" y1="-45" x2="170" y2="325" />
<line x1="-50" y1="45" x2="270" y2="45" />
<line x1="-50" y1="115" x2="270" y2="115" />
<line x1="-50" y1="185" x2="270" y2="185" />
<line x1="-50" y1="255" x2="270" y2="255" />
<g class="legend" text-anchor="middle" fill="black" stroke="none">
<text transform="translate(-35, 10) rotate(-90)">
moveTo
</text>
<text transform="translate(-35, 80) rotate(-90)">
lineTo
</text>
<text transform="translate(-35, 150) rotate(-90)">
quadTo
</text>
<text transform="translate(-35, 220) rotate(-90)">
cubicTo
</text>
<text transform="translate(-35, 290) rotate(-90)">
close
</text>
</g>
</g>
<g id="gridLabels" class="legend" text-anchor="middle">
<text x="20" y="-30">start/end</text>
<text x="120" y="-30">Middle w/ moveTo</text>
<text x="220" y="-30">Middle w/ lineTo</text>
</g>
<!-- ==================================== -->
<!-- The following 6 paths have two -->
<!-- points, validating the various -->
<!-- possibilities for start and end -->
<!-- orientations -->
<!-- Start is always a move to -->
<!-- ==================================== -->
<g marker-start="url(#startMarker)" marker-end="url(#endMarker)"
transform="translate(0, 0)" >
<!-- End is a moveTo -->
<path d="M 0 20 M 30 0" class="markedPath"/>
<use xlink:href="#startEndCrossHairs" />
<!-- End is a lineTo -->
<g transform="translate(0, 70)">
<path d="M 0 20 L 30 0" class="markedPath" />
<use xlink:href="#startEndCrossHairs" />
</g>
<!-- End is a quadTo -->
<g transform="translate(0, 140)">
<path d="M 0 20 Q 10 -20 30 0" class="markedPath"/>
<use xlink:href="#startEndCrossHairs" />
</g>
<!-- End is a cubicTo -->
<g transform="translate(0, 210)">
<path d="M 0 20 C 0 -15 20 -15 30 0" class="markedPath"/>
<use xlink:href="#startEndCrossHairs" />
</g>
<!-- End is a close -->
<g transform="translate(0, 280)" >
<path d="M 0 20 Z" class="markedPath"/>
<use xlink:href="#startEndCrossHairs" />
</g>
</g>
<!-- ==================================== -->
<!-- The following 5 paths have three -->
<!-- points, validating the various -->
<!-- possibilities for middle orientation -->
<!-- when the segment ending on the -->
<!-- middle point is a moveTo -->
<!-- -->
<!-- in : moveTo -->
<!-- ==================================== -->
<g marker-mid="url(#midMarker)"
transform="translate(100, 0)" >
<!-- Out is a moveTo -->
<path d="M 0 20 L 0 20 M 0 20 M 20 0 M 50 10" class="markedPath"/>
<use xlink:href="#startMidEndCrossHairs" />
<!-- Out is a lineTo -->
<g transform="translate(0, 70)">
<path d="M 0 20 L 0 20 M 0 20 M 20 0 L 50 10" class="markedPath" />
<use xlink:href="#startMidEndCrossHairs" />
</g>
<!-- Out is a quadTo -->
<g transform="translate(0, 140)">
<path d="M 0 20 L 0 20 M 0 20 M 20 0 Q 50 -30 50 10" class="markedPath" />
<use xlink:href="#startMidEndCrossHairs" />
</g>
<!-- Out is a cubicTo -->
<g transform="translate(0, 210)">
<path d="M 0 20 L 0 20 M 0 20 M 20 0 C 40 -10 80 -20 50 10" class="markedPath" />
<use xlink:href="#startMidEndCrossHairs" />
</g>
<!-- Out is a close -->
<g transform="translate(0, 280)">
<path d="M 0 20 L 0 20 M 0 20 M 20 0 Z" class="markedPath" />
<use xlink:href="#startMidEndCrossHairs" />
</g>
</g>
<!-- ==================================== -->
<!-- The following 5 paths have three -->
<!-- points, validating the various -->
<!-- possibilities for middle orientation -->
<!-- when the segment ending on the -->
<!-- middle point is a lineTo -->
<!-- -->
<!-- in : moveTo -->
<!-- ==================================== -->
<g marker-mid="url(#midMarker)"
transform="translate(200, 0)" >
<!-- Out is a moveTo -->
<path d="M 0 20 L 20 0 M 50 10" class="markedPath"/>
<use xlink:href="#startMidEndCrossHairs" />
<!-- Out is a lineTo -->
<g transform="translate(0, 70)">
<path d="M 0 20 L 20 0 L 50 10" class="markedPath" />
<use xlink:href="#startMidEndCrossHairs" />
</g>
<!-- Out is a quadTo -->
<g transform="translate(0, 140)">
<path d="M 0 20 L 20 0 Q 50 0 50 10" class="markedPath" />
<use xlink:href="#startMidEndCrossHairs" />
</g>
<!-- Out is a cubicTo -->
<g transform="translate(0, 210)">
<path d="M 0 20 L 20 0 C 40 -10 80 -20 50 10" class="markedPath" />
<use xlink:href="#startMidEndCrossHairs" />
</g>
<!-- Out is a close -->
<g transform="translate(0, 280)">
<path d="M 0 20 L 20 0 Z" class="markedPath" />
<use xlink:href="#startMidEndCrossHairs" />
</g>
</g>
</g>
</g>
<!-- ============================================================= -->
<!-- Batik sample mark -->
<!-- ============================================================= -->
<use xlink:href="../batikLogo.svg#Batik_Tag_Box" />
</svg>