blob: 568832233cb2df83be1563605d33e0550f8944af [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:4; }
]]></style>
<g id="content">
<g transform="translate(0, 40)">
<text class="title" x="50%" y="0">Markers, preserveAspectRatio</text>
</g>
<defs>
<g id="markerColumn">
<circle cx=".5" cy=".5" r=".5" />
<rect x="0" y="1" width="1" height="1" />
<path d="M 0 3 l 1 0 l -0.5 -1 z" />
</g>
<g id="markerContent" stroke="none">
<rect x="0" y="0" width="3" height="3" fill="black" />
<use xlink:href="#markerColumn" fill="crimson" />
<use xlink:href="#markerColumn" x="1" fill="gold" />
<use xlink:href="#markerColumn" x="2" fill="orange" />
</g>
<path id="testPath" d="M 60 20 l 30 0 l 30 0" fill="none"/>
<!-- ============================= -->
<!-- Marker Definitions -->
<!-- ============================= -->
<marker id="startEndMarker" markerWidth="8" markerHeight="8"
viewBox="-4 -4 8 8" orient="0"
markerUnits="strokeWidth" overflow="hidden">
<circle r="4" fill="black" stroke="none" />
</marker>
<marker id="test" markerWidth="20" markerHeight="20"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<!-- ======================================================== -->
<!-- align = none -->
<!-- ======================================================== -->
<marker id="meetNone" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="none meet">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="sliceNone" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="none slice">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="noneNone" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="none">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<!-- ========================================================= -->
<!-- meetOrSlice = meet -->
<!-- ========================================================= -->
<!-- xMxx = xMin -->
<marker id="meetXminYmin" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMinYMin meet">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="meetXminYmid" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMinYMid meet">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="meetXminYmax" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMinYMax meet">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<!-- xMxx = xMid -->
<marker id="meetXmidYmin" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMidYMin meet">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="meetXmidYmid" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMidYMid meet">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="meetXmidYmax" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMidYMax meet">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<!-- xMxx = xmax -->
<marker id="meetXmaxYmin" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMaxYMin meet">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="meetXmaxYmid" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMaxYMid meet">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="meetXmaxYmax" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMaxYMax meet">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<!-- ========================================================= -->
<!-- meetOrSlice = slice -->
<!-- ========================================================= -->
<!-- xMxx = xMin -->
<marker id="sliceXminYmin" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMinYMin slice">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="sliceXminYmid" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMinYMid slice">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="sliceXminYmax" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMinYMax slice">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<!-- xMxx = xMid -->
<marker id="sliceXmidYmin" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMidYMin slice">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="sliceXmidYmid" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMidYMid slice">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="sliceXmidYmax" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMidYMax slice">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<!-- xMxx = xmax -->
<marker id="sliceXmaxYmin" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMaxYMin slice">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="sliceXmaxYmid" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMaxYMid slice">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="sliceXmaxYmax" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMaxYMax slice">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<!-- ========================================================= -->
<!-- meetOrSlice = none -->
<!-- ========================================================= -->
<!-- xMxx = xMin -->
<marker id="noneXminYmin" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMinYMin">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="noneXminYmid" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMinYMid">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="noneXminYmax" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMinYMax">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<!-- xMxx = xMid -->
<marker id="noneXmidYmin" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMidYMin">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="noneXmidYmid" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMidYMid">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="noneXmidYmax" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMidYMax">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<!-- xMxx = xmax -->
<marker id="noneXmaxYmin" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMaxYMin">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="noneXmaxYmid" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMaxYMid">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<marker id="noneXmaxYmax" markerWidth="20" markerHeight="30"
viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5"
markerUnits="strokeWidth" overflow="hidden"
preserveAspectRatio="xMaxYMax">
<g>
<use xlink:href="#markerContent" />
</g>
</marker>
<rect id="xMxx" x="0" y="0" width="20" height="120" />
<rect id="yMxx" x="20" y="0" width="20" height="40" />
<rect id="sampleCell" x="40" y="0" width="100" height="40" />
<g id="xMxxBlock" stroke="black">
<use xlink:href="#xMxx" />
<use xlink:href="#yMxx" fill="rgb(255, 250, 210)"/>
<text class="label" stroke="none" fill="black"
text-anchor="middle" x="35" y="20"
transform="rotate(-90, 35, 20)">
yMin
</text>
<use xlink:href="#yMxx" y="40" fill="rgb(255, 240, 150)"/>
<text class="label" stroke="none" fill="black"
text-anchor="middle" x="35" y="60"
transform="rotate(-90, 35, 60)">
yMid
</text>
<use xlink:href="#yMxx" y="80" fill="rgb(255, 235, 120)"/>
<text class="label" stroke="none" fill="black"
text-anchor="middle" x="35" y="100"
transform="rotate(-90, 35, 100)">
yMax
</text>
</g>
<g id="sampleColumn" stroke="black" fill="none">
<use xlink:href="#sampleCell" fill="rgb(255, 250, 210)"/>
<use xlink:href="#sampleCell" y="40" fill="rgb(255, 240, 150)"/>
<use xlink:href="#sampleCell" y="80" fill="rgb(255, 235, 120)"/>
<use xlink:href="#sampleCell" y="120" fill="rgb(255, 250, 210)"/>
<use xlink:href="#sampleCell" y="160" fill="rgb(255, 240, 150)"/>
<use xlink:href="#sampleCell" y="200" fill="rgb(255, 235, 120)"/>
<use xlink:href="#sampleCell" y="240" fill="rgb(255, 250, 210)"/>
<use xlink:href="#sampleCell" y="280" fill="rgb(255, 240, 150)"/>
<use xlink:href="#sampleCell" y="320" fill="rgb(255, 235, 120)"/>
<use xlink:href="#sampleCell" y="360"/>
</g>
<rect id="columnHeader" x="40" y="-20" width="100" height="20" stroke="black"/>
</defs>
<g transform="translate(50, 80)">
<use xlink:href="#xMxxBlock" fill="rgb(255, 250, 210)"/>
<text class="label" stroke="none" fill="black"
text-anchor="middle" x="15" y="60"
transform="rotate(-90, 15, 60)">
xMin
</text>
<use xlink:href="#xMxxBlock" y="120" fill="rgb(255, 240, 150)"/>
<text class="label" stroke="none" fill="black"
text-anchor="middle" x="15" y="180"
transform="rotate(-90, 15, 180)">
xMid
</text>
<use xlink:href="#xMxxBlock" y="240" fill="rgb(255, 235, 120)"/>
<text class="label" stroke="none" fill="black"
text-anchor="middle" x="15" y="300"
transform="rotate(-90, 15, 300)">
xMax
</text>
<use xlink:href="#sampleColumn" />
<use xlink:href="#sampleColumn" x="100" />
<use xlink:href="#sampleColumn" x="200" />
<use xlink:href="#columnHeader" fill="none"/>
<use xlink:href="#columnHeader" x="100" fill="none"/>
<use xlink:href="#columnHeader" x="200" fill="none"/>
<text class="label" stroke="none" fill="black"
text-anchor="middle" x="90" y="-5">
meet
</text>
<text class="label" stroke="none" fill="black"
text-anchor="middle" x="190" y="-5">
slice
</text>
<text class="label" stroke="none" fill="black"
text-anchor="middle" x="290" y="-5">
none
</text>
<rect x="0" y="360" width="40" height="40" stroke="black" fill="none" />
<text class="label" stroke="none" fill="black"
text-anchor="middle" x="25" y="380"
transform="rotate(-90, 25, 380)">
none
</text>
<!-- ============================================ -->
<!-- Various marker settings here -->
<!-- ============================================ -->
<!-- =============================== -->
<!-- meetOrSlice = meet -->
<!-- =============================== -->
<g marker-start="url(#startEndMarker)" marker-end="url(#startEndMarker)" stroke="black">
<!-- xMxx = xMin -->
<use xlink:href="#testPath" marker-mid="url(#meetXminYmin)" />
<use xlink:href="#testPath" marker-mid="url(#meetXminYmid)" y="40"/>
<use xlink:href="#testPath" marker-mid="url(#meetXminYmax)" y="80"/>
<!-- xMxx = xMid -->
<g transform="translate(0, 120)">
<use xlink:href="#testPath" marker-mid="url(#meetXmidYmin)" />
<use xlink:href="#testPath" marker-mid="url(#meetXmidYmid)" y="40"/>
<use xlink:href="#testPath" marker-mid="url(#meetXmidYmax)" y="80"/>
</g>
<!-- xMxx = xMax -->
<g transform="translate(0, 240)">
<use xlink:href="#testPath" marker-mid="url(#meetXmaxYmin)" />
<use xlink:href="#testPath" marker-mid="url(#meetXmaxYmid)" y="40"/>
<use xlink:href="#testPath" marker-mid="url(#meetXmaxYmax)" y="80"/>
</g>
</g>
<!-- =============================== -->
<!-- meetOrSlice = slice -->
<!-- =============================== -->
<g marker-start="url(#startEndMarker)" transform="translate(100, 0)"
marker-end="url(#startEndMarker)" stroke="black">
<!-- xMxx = xMin -->
<use xlink:href="#testPath" marker-mid="url(#sliceXminYmin)" />
<use xlink:href="#testPath" marker-mid="url(#sliceXminYmid)" y="40"/>
<use xlink:href="#testPath" marker-mid="url(#sliceXminYmax)" y="80"/>
<!-- xMxx = xMid -->
<g transform="translate(0, 120)">
<use xlink:href="#testPath" marker-mid="url(#sliceXmidYmin)" />
<use xlink:href="#testPath" marker-mid="url(#sliceXmidYmid)" y="40"/>
<use xlink:href="#testPath" marker-mid="url(#sliceXmidYmax)" y="80"/>
</g>
<!-- xMxx = xMax -->
<g transform="translate(0, 240)">
<use xlink:href="#testPath" marker-mid="url(#sliceXmaxYmin)" />
<use xlink:href="#testPath" marker-mid="url(#sliceXmaxYmid)" y="40"/>
<use xlink:href="#testPath" marker-mid="url(#sliceXmaxYmax)" y="80"/>
</g>
</g>
<!-- =============================== -->
<!-- meetOrSlice = none -->
<!-- =============================== -->
<g marker-start="url(#startEndMarker)" transform="translate(200, 0)"
marker-end="url(#startEndMarker)" stroke="black">
<!-- xMxx = xMin -->
<use xlink:href="#testPath" marker-mid="url(#noneXminYmin)" />
<use xlink:href="#testPath" marker-mid="url(#noneXminYmid)" y="40"/>
<use xlink:href="#testPath" marker-mid="url(#noneXminYmax)" y="80"/>
<!-- xMxx = xMid -->
<g transform="translate(0, 120)">
<use xlink:href="#testPath" marker-mid="url(#noneXmidYmin)" />
<use xlink:href="#testPath" marker-mid="url(#noneXmidYmid)" y="40"/>
<use xlink:href="#testPath" marker-mid="url(#noneXmidYmax)" y="80"/>
</g>
<!-- xMxx = xMax -->
<g transform="translate(0, 240)">
<use xlink:href="#testPath" marker-mid="url(#noneXmaxYmin)" />
<use xlink:href="#testPath" marker-mid="url(#noneXmaxYmid)" y="40"/>
<use xlink:href="#testPath" marker-mid="url(#noneXmaxYmax)" y="80"/>
</g>
</g>
<!-- =============================== -->
<!-- align = none -->
<!-- =============================== -->
<g marker-start="url(#startEndMarker)" transform="translate(0, 360)"
marker-end="url(#startEndMarker)" stroke="black">
<use xlink:href="#testPath" marker-mid="url(#meetNone)" />
<use xlink:href="#testPath" marker-mid="url(#sliceNone)" x="100"/>
<use xlink:href="#testPath" marker-mid="url(#noneNone)" x="200"/>
</g>
</g>
</g>
<!-- ============================================================= -->
<!-- Batik sample mark -->
<!-- ============================================================= -->
<use xlink:href="../batikLogo.svg#Batik_Tag_Box" />
</svg>