- From: SVG Working Group repository <cam+svgwgrepo@mcc.id.au>
- Date: Tue, 21 May 2013 11:13:23 -0700
- To: public-svg-wg@w3.org
details: https://svgwg.org/hg/svg2/rev/6a335756fc10 branches: changeset: 496:6a335756fc10 user: tbah <tavmjong@free.fr> date: Tue May 21 20:10:29 2013 +0200 description: Add the <hatch> and <hatchpath> elements. diffstat: master/changes.html | 4 +- master/definitions.xml | 37 +- master/images/pservers/hatch01.png | 0 master/images/pservers/hatch01.svg | 28 + master/images/pservers/hatch02.png | 0 master/images/pservers/hatch02.svg | 38 + master/images/pservers/hatch03.png | 0 master/images/pservers/hatch03.svg | 35 + master/images/pservers/hatch04.png | 0 master/images/pservers/hatch04.svg | 35 + master/images/pservers/hatch05.png | 0 master/images/pservers/hatch05.svg | 39 + master/images/pservers/hatch_attributes.svg | 57 + master/images/pservers/hatch_path_attributes.svg | 60 ++ master/pservers.html | 689 +++++++++++++++++++--- 15 files changed, 915 insertions(+), 107 deletions(-) diffs (1689 lines): diff --git a/master/changes.html b/master/changes.html --- a/master/changes.html +++ b/master/changes.html @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional+edit//EN" "xhtml1-transitional+edit.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:edit="http://xmlns.grorg.org/SVGT12NG/"> <head> <title>Changes from SVG 1.1</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link rel="stylesheet" title="Default" type="text/css" media="screen" href="style/default_svg.css"/> <link rel="alternate stylesheet" title="No issues/annotations" type="text/css" media="screen" href="style/default_no_issues.css"/> <!-- @@ -182,16 +182,18 @@ have been made.</p> <li>Added the <a>'solidColor'</a> element and its two properties <a>'solid-color'</a> and <a>'solid-opacity'</a>, ported over from SVG Tiny 1.2.</li> <li>Added an <a>'radialGradient/fr'</a> attribute to the <a>'radialGradient'</a> element, which allows specifying the radius of the focal circle.</li> <li>Added a section for mesh gradients, defining the <a>'meshGradient'</a>, <a>'meshRow'</a> and <a>'meshPatch'</a> elements.</li> + + <li>Added a section for hatches, defining the <a>'hatch'</a> and <a>'hatchPath'</a> elements.</li> </ul> <h3 id="masking">Clipping, Masking and Compositing chapter</h3> <ul> <li>SVG now references CSS Masking [<a href="refs.html#ref-CSS-MASKING">CSS-MASKING</a>] specification. <ul> <li>Removed definition of clipping/masking properties and elements.</li> <li>Keep short introduction to clipping/masking and add reference to CSS Masking</li> diff --git a/master/definitions.xml b/master/definitions.xml --- a/master/definitions.xml +++ b/master/definitions.xml @@ -318,16 +318,45 @@ <attribute name='dx' href='text.html#GlyphRefElementDXAttribute'/> <attribute name='dy' href='text.html#GlyphRefElementDYAttribute'/> <attribute name='glyphRef' href='text.html#GlyphRefElementGlyphRefAttribute'/> <attribute name='format' href='text.html#GlyphRefElementFormatAttribute'/> <attribute name='xlink:href' href='text.html#GlyphRefElementHrefAttribute'/> </element> <element + name='hatch' + href='pservers.html#HatchElement' + contentmodel='anyof' + elementcategories='animation, descriptive' + elements='hatchPath' + attributecategories='core, presentation, style, xlink' + interfaces='SVGHatchElement'> + <attribute name='x' href='pservers.html#HatchElementXAttribute' animatable='yes'/> + <attribute name='y' href='pservers.html#HatchElementYAttribute' animatable='yes'/> + <attribute name='pitch' href='pservers.html#HatchElementPitchAttribute' animatable='yes'/> + <attribute name='angle' href='pservers.html#HatchElementAngleAttribute' animatable='yes'/> + <attribute name='hatchUnits' href='pservers.html#HatchElementHatchUnitsAttribute' animatable='yes'/> + <attribute name='hatchContentUnits' href='pservers.html#HatchElementHatchContentUnitsAttribute' animatable='yes'/> + <attribute name='hatchTransform' href='pservers.html#HatchElementHatchTransformAttribute' animatable='yes'/> + <attribute name='xlink:href' href='pservers.html#HatchElementHrefAttribute' animatable='yes'/> + </element> + + <element + name='hatchPath' + href='pservers.html#HatchPathElement' + contentmodel='anyof' + elementcategories='animation, descriptive' + attributecategories='core, presentation, style' + interfaces='SVGHatchPathElement'> + <attribute name='d' href='paths.html#DAttribute' animatable='yes'/> + <attribute name='offset' href='pservers.html#HatchPathElementOffsetAttribute' animatable='yes'/> + </element> + + <element name='hkern' href='fonts.html#HKernElement' attributecategories='aria, navigation, core' attributes='u1, g1, u2, g2, k' interfaces='SVGHKernElement'/> <element name='image' @@ -742,17 +771,17 @@ <elementcategory name='animation' href='intro.html#TermAnimationElement' elements='animate, animateColor, animateMotion, animateTransform, discard, set'/> <elementcategory name='container' href='intro.html#TermContainerElement' elements='svg, g, defs, symbol, mask, pattern, marker, a, switch, glyph, missing-glyph'/> <elementcategory name='descriptive' href='intro.html#TermDescriptiveElement' elements='desc, title, metadata'/> <elementcategory name='gradient' href='intro.html#TermGradientElement' elements='linearGradient, radialGradient, meshGradient'/> <elementcategory name='graphics' href='intro.html#TermGraphicsElement' elements='path, text, rect, circle, ellipse, line, polyline, polygon, image, use, foreignObject'/> <elementcategory name='graphics referencing' href='intro.html#TermGraphicsReferencingElement' elements='use, image'/> <elementcategory name='light source' href='intro.html#TermLightSourceElement' elements='feDistantLight, fePointLight, feSpotLight'/> <elementcategory name='markable' href='intro.html#TermMarkableElement' elements='path, line, polyline, polygon'/> - <elementcategory name='paint server' href='intro.html#TermPaintServerElement' elements='solidColor, linearGradient, radialGradient, meshGradient, pattern'/> + <elementcategory name='paint server' href='intro.html#TermPaintServerElement' elements='solidColor, linearGradient, radialGradient, meshGradient, pattern, hatch'/> <elementcategory name='shape' href='intro.html#TermShapeElement' elements='circle, ellipse, line, path, polygon, polyline, rect'/> <elementcategory name='structural' href='intro.html#TermStructuralElement' elements='defs, g, svg, symbol, use'/> <elementcategory name='text content' href='intro.html#TermTextContentElement' elements='text, tspan, tref, textPath, altGlyph'/> <elementcategory name='text content child' href='intro.html#TermTextContentChildElement' elements='tspan, tref, textPath, altGlyph'/> <!-- ... attributes common to multiple elements ........................ --> <!-- Note: An <attribute> defined here applies only to the listed @@ -786,18 +815,18 @@ <attribute name='rotate' elements='tref, tspan' href='text.html#TSpanElementRotateAttribute' animatable='yes'/> <attribute name='textLength' elements='textPath, tref, tspan' href='text.html#TSpanElementTextLengthAttribute' animatable='yes'/> <attribute name='lengthAdjust' elements='text, textPath, tref, tspan' href='text.html#TextElementLengthAdjustAttribute' animatable='yes'/> <!-- attribute common to text content block elements --> <!-- <attribute name='width' elements='text' href='text.html#TextElementWidthAttribute' animatable='yes'/> --> <!-- xlink:show and xlink:actuate for all elements supporting the XLink attributes, except a --> - <attribute name='xlink:show' elements='animate, set, animateMotion, mpath, animateColor, animateTransform, color-profile, filter, feImage, font-face-uri, cursor, pattern, script, textPath, tref, use, image, altGlyph, glyphRef, linearGradient, radialGradient, meshGradient' href='linking.html#XLinkShowAttribute'/> - <attribute name='xlink:actuate' elements='animate, set, animateMotion, mpath, animateColor, animateTransform, color-profile, filter, feImage, font-face-uri, cursor, pattern, script, textPath, tref, use, image, altGlyph, glyphRef, linearGradient, radialGradient, meshGradient' href='linking.html#XLinkActuateAttribute'/> + <attribute name='xlink:show' elements='animate, set, animateMotion, mpath, animateColor, animateTransform, color-profile, filter, feImage, font-face-uri, cursor, pattern, hatch, script, textPath, tref, use, image, altGlyph, glyphRef, linearGradient, radialGradient, meshGradient' href='linking.html#XLinkShowAttribute'/> + <attribute name='xlink:actuate' elements='animate, set, animateMotion, mpath, animateColor, animateTransform, color-profile, filter, feImage, font-face-uri, cursor, pattern, hatch, script, textPath, tref, use, image, altGlyph, glyphRef, linearGradient, radialGradient, meshGradient' href='linking.html#XLinkActuateAttribute'/> <!-- attribute common to all animation elements --> <attribute name='xlink:href' elements='animate, animateColor, animateMotion, animateTransform, set' href='animate.html#HrefAttribute'/> <!-- misc: Applies to all <element>s that include attribute name in 'attribute'. --> <attribute name='viewBox' href='coords.html#ViewBoxAttribute' animatable='yes'/> <attribute name='preserveAspectRatio' href='coords.html#PreserveAspectRatioAttribute' animatable='yes'/> <attribute name='zoomAndPan' href='interact.html#ZoomAndPanAttribute'/> @@ -1135,16 +1164,18 @@ <interface name='SVGColorProfileRule' href='color.html#InterfaceSVGColorProfileRule'/> <interface name='SVGLinearGradientElement' href='pservers.html#InterfaceSVGLinearGradientElement'/> <interface name='SVGRadialGradientElement' href='pservers.html#InterfaceSVGRadialGradientElement'/> <interface name='SVGMeshGradientElement' href='pservers.html#InterfaceSVGMeshGradientElement'/> <interface name='SVGMeshRowElement' href='pservers.html#InterfaceSVGMeshRowElement'/> <interface name='SVGMeshPatchElement' href='pservers.html#InterfaceSVGMeshPatchElement'/> <interface name='SVGStopElement' href='pservers.html#InterfaceSVGStopElement'/> <interface name='SVGPatternElement' href='pservers.html#InterfaceSVGPatternElement'/> + <interface name='SVGHatchElement' href='pservers.html#InterfaceSVGHatchElement'/> + <interface name='SVGHatchPathElement' href='pservers.html#InterfaceSVGHatchPathElement'/> <interface name='SVGCursorElement' href='interact.html#InterfaceSVGCursorElement'/> <interface name='SVGAElement' href='linking.html#InterfaceSVGAElement'/> <interface name='SVGViewElement' href='linking.html#InterfaceSVGViewElement'/> <interface name='SVGScriptElement' href='script.html#InterfaceSVGScriptElement'/> <interface name='SVGZoomEvent' href='script.html#InterfaceSVGZoomEvent'/> <interface name='SVGAnimateElement' href='animate.html#InterfaceSVGAnimateElement'/> <interface name='SVGSetElement' href='animate.html#InterfaceSVGSetElement'/> <interface name='SVGAnimateMotionElement' href='animate.html#InterfaceSVGAnimateMotionElement'/> diff --git a/master/images/pservers/hatch01.png b/master/images/pservers/hatch01.png new file mode 100644 index 0000000000000000000000000000000000000000..9763d07c2ea9e9def8eea9604c713b5882e6dc3d GIT binary patch literal 8216 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 diff --git a/master/images/pservers/hatch01.svg b/master/images/pservers/hatch01.svg new file mode 100644 --- /dev/null +++ b/master/images/pservers/hatch01.svg @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="200" + height="200"> + <defs> + <pattern + id="pattern" + patternUnits="userSpaceOnUse" + patternTransform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,200,200)" + width="5" + height="250"> + <path + d="M 0,0 0,250" + stroke="#a080ff" + stroke-width="2"/> + </pattern> + </defs> + <rect + fill="url(#pattern)" + stroke="black" + stroke-width="2" + x="25" + y="25" + width="150" + height="150" /> +</svg> diff --git a/master/images/pservers/hatch02.png b/master/images/pservers/hatch02.png new file mode 100644 index 0000000000000000000000000000000000000000..325a6cf3fc0010baa68ebcf275588f10c1bf1967 GIT binary patch literal 2359 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 G9R3R)=&y+Y diff --git a/master/images/pservers/hatch02.svg b/master/images/pservers/hatch02.svg new file mode 100644 --- /dev/null +++ b/master/images/pservers/hatch02.svg @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="200" + height="200"> + <defs> + <pattern + id="pattern" + patternUnits="userSpaceOnUse" + width="6" + height="20"> + <path + d="M -6,0 C -6,4 2,6 2,10 2,14 -6,16 -6,20" + fill="none" + stroke="#a080ff" + stroke-width="1"/> + <path + d="M 0,0 C 0,4 8,6 8,10 8,14 0,16 0,20" + fill="none" + stroke="#a080ff" + stroke-width="1"/> + <path + d="M 6,0 C 6,4 14,6 14,10 14,14 6,16 6,20" + fill="none" + stroke="#a080ff" + stroke-width="1"/> + </pattern> + </defs> + <rect + fill="url(#pattern)" + stroke="black" + stroke-width="2" + x="25" + y="25" + width="150" + height="150" /> +</svg> diff --git a/master/images/pservers/hatch03.png b/master/images/pservers/hatch03.png new file mode 100644 index 0000000000000000000000000000000000000000..eff83f21de0cb43170beb5cc10b3591f17930632 GIT binary patch literal 3555 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 diff --git a/master/images/pservers/hatch03.svg b/master/images/pservers/hatch03.svg new file mode 100644 --- /dev/null +++ b/master/images/pservers/hatch03.svg @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="200" + height="200"> + <defs> + <pattern + id="pattern" + patternUnits="userSpaceOnUse" + width="20" + height="50"> + <g transform="translate(0,-1)"> + <path + d="M 0,-50 10,-50 0,0 10,50 0,50 10,100" + fill="none" + stroke="#a080ff" + stroke-width="2"/> + <path + d="M 20,-50 30,-50 20,0 30,50 20,50 30,100" + fill="none" + stroke="#a080ff" + stroke-width="2"/> + </g> + </pattern> + </defs> + <rect + fill="url(#pattern)" + stroke="black" + stroke-width="2" + x="25" + y="25" + width="150" + height="150" /> +</svg> diff --git a/master/images/pservers/hatch04.png b/master/images/pservers/hatch04.png new file mode 100644 index 0000000000000000000000000000000000000000..7c78c321024c983737e4c372c93476eef0dcb4f3 GIT binary patch literal 3476 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 IQ_r}60U<cZp8x;= diff --git a/master/images/pservers/hatch04.svg b/master/images/pservers/hatch04.svg new file mode 100644 --- /dev/null +++ b/master/images/pservers/hatch04.svg @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="200" + height="200"> + <defs> + <pattern + id="pattern" + patternUnits="userSpaceOnUse" + width="20" + height="50"> + <g transform="translate(0,-1)"> + <path + d="M 0,0 10,50 M 0,50 10,100" + fill="none" + stroke="#a080ff" + stroke-width="2"/> + <path + d="M 20,0 30,50 M 20,50 30,100" + fill="none" + stroke="#a080ff" + stroke-width="2"/> + </g> + </pattern> + </defs> + <rect + fill="url(#pattern)" + stroke="black" + stroke-width="2" + x="25" + y="25" + width="150" + height="150" /> +</svg> diff --git a/master/images/pservers/hatch05.png b/master/images/pservers/hatch05.png new file mode 100644 index 0000000000000000000000000000000000000000..0661d5e058eef5f3a95653e91f6be11b65556fea GIT binary patch literal 1068 zc%17D@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST_$yu@pObhHwBu4M$1`kk47*5m^jW ze;tGwoit`w00kvWTq8<?^V3So6N^$A%FE03GV`*FlM@S4_413-XTP(NVqjoi>FMGa zQZeW4?TuZrsUmF;OZ%Fc4cC5cxURspb4EmTXHs&xo`b-f9F}6sq}=pGuk52D&f9v| z%Abn-y!*S=`QX#mnx8iQf3QZ20R#N_KUeHePwv6<56Wy`-hcQx_}If2@525rkk`9? ze143d{lDA)|NUOS?fd!fU%f-;{$KO!!R6C0w}(%EdwA`u+iPEytor5iep$75oZ3DG z0SOKkHl~A{>YM*e|NhdxveNQzNT|NlKZ`2!3$Gt=Gc`6kY<Sc8_0{ROd#A_G|F>h= z$GfT3Wp!)Xf3I3){x!<~{Yu^6O*VGx+q0#gAFrzTzRs@xw_okT<=YP}oEPyubZc(u zs^IhM#b2C#R~qr{$gbae>-JiGS{ApzHtzn5muolWD9FA)xnJ7e{7>PRyam@E2Kehl zoOMu$_<4JeeC+S~%j<u>4cvSCb?FDz#sdxt1_B&BEKJNOOy6DiZp5+2gSqA}tCFi_ z?<{%U`?l2Lig5OO^9xnKUzHY2UT41jIz(l=v+c$NQ#5_dn1(|PfmjRDzwP=#xc+Z- z%xkx=k7EZ~S6s~tw~jl^7**e>a|hnJVROv#xa-)qzxMpkSDnO&nU~(&i9dJw;!V>J Q3Tr`JPgg&ebxsLQ0Dg1N4FCWD diff --git a/master/images/pservers/hatch05.svg b/master/images/pservers/hatch05.svg new file mode 100644 --- /dev/null +++ b/master/images/pservers/hatch05.svg @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="200" + height="200"> + <defs> + <pattern + id="pattern" + patternUnits="userSpaceOnUse" + width="20" + height="20"> + <path + d="M 0,0 0,50" + fill="none" + stroke="#a080ff" + stroke-width="2"/> + <path + d="M 20,0 20,50" + fill="none" + stroke="#a080ff" + stroke-width="2"/> + <path + d="M 5,0 5,50" + fill="none" + stroke="#a080ff" + stroke-width="2" + stroke-dasharray="10 4 2 4"/> + </pattern> + </defs> + <rect + fill="url(#pattern)" + stroke="black" + stroke-width="2" + x="25" + y="25" + width="150" + height="150" /> +</svg> diff --git a/master/images/pservers/hatch_attributes.svg b/master/images/pservers/hatch_attributes.svg new file mode 100644 --- /dev/null +++ b/master/images/pservers/hatch_attributes.svg @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + width="450" + height="300"> + <defs> + <marker + id="Arrow2Mstart" + orient="auto" + refY="0.0" + refX="0.0" + style="overflow:visible"> + <path + d="M 8.7,4 L -2.2,0 L 8.7,-4 C 7,-1.6 7,1.6 8.7,4 z " + transform="scale(0.6)"/> + </marker> + <marker + id="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + style="overflow:visible;"> + <path + d="M 8.7,4 L -2.2,0 L 8.7,-4 C 7,-1.6 7,1.6 8.7,4 z " + transform="scale(0.6) rotate(180)"/> + </marker> + </defs> + <path + style="fill:none;stroke:black" + d="M 125,50 325,250"/> + <g style="fill:none;stroke:black;stroke-width:2;stroke-dasharray:3, 1"> + <path d="M 250,275 400,125" style="opacity:0.5"/> + <path d="M 175,250 350,75"/> + <path d="M 100,225 275,50"/> + <path d="M 50,175 200,25" style="opacity:0.5"/> + </g> + <path + style="fill:none;stroke:black;stroke-width:2;marker-end:url(#Arrow2Mend)" + d="m 200,125 50,50"/> + <circle cx="200" cy="125" r="3"/> + <path + style="fill:none;stroke:black" + d="m 200,125 35,0"/> + <path + style="fill:none;stroke:black;stroke-width:1.5;marker-start:url(#Arrow2Mstart)" + d="M 222.3,145 A 30,30 0 0 0 230,125" /> + <g style="font-size:16px;text-anchor:middle;font-family:DejaVu Sans"> + <text x="170" y="130">(x,y)</text> + <text x="253" y="143">Angle</text> + <text x="265" y="-35" + transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)">Pitch</text> + <text> + <tspan x="365" y="245">Reference</tspan> + <tspan x="365" y="262.5">line</tspan> + </text> + </g> +</svg> diff --git a/master/images/pservers/hatch_path_attributes.svg b/master/images/pservers/hatch_path_attributes.svg new file mode 100644 --- /dev/null +++ b/master/images/pservers/hatch_path_attributes.svg @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + width="450" + height="300"> + <defs> + <marker + id="Arrow2Mstart" + orient="auto" + refY="0.0" + refX="0.0" + style="overflow:visible"> + <path + d="M 8.7,4 L -2.2,0 L 8.7,-4 C 7,-1.6 7,1.6 8.7,4 z " + transform="scale(0.6)"/> + </marker> + <marker + id="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + style="overflow:visible;"> + <path + d="M 8.7,4 L -2.2,0 L 8.7,-4 C 7,-1.6 7,1.6 8.7,4 z " + transform="scale(0.6) rotate(180)"/> + </marker> + </defs> + <path + style="fill:none;stroke:black" + d="m 85,100 330,0"/> + <g style="fill:none;stroke:black;stroke-width:1;stroke-dasharray:3, 1"> + <path d="M 100,250 100,50" style="opacity:0.5"/> + <path d="M 200,250 200,50"/> + <path d="M 300,250 300,50"/> + <path d="M 400,250 400,50" style="opacity:0.5"/> + </g> + <path + style="fill:none;stroke:black;stroke-width:2;marker-end:url(#Arrow2Mend)" + d="m 200,100 75,0"/> + <path + style="fill:none;stroke:black;stroke-width:2;marker-end:url(#Arrow2Mend)" + d="m 200,100 0,75"/> + <circle cx="200" cy="100" r="3"/> + <path + style="fill:none;stroke:black;stroke-width:1.5;marker-end:url(#Arrow2Mend)" + d="m 224,240 -21,0"/> + <path + style="fill:none;stroke:black;stroke-width:1.5;marker-end:url(#Arrow2Mend)" + d="m 276,240 21,0"/> + <g style="font-size:16px;text-anchor:middle;font-family:DejaVu Sans"> + <text x="175" y="92">(0,0)</text> + <text x="255" y="92">x</text> + <text x="190" y="155">y</text> + <text x="250" y="245">Pitch</text> + <text> + <tspan x="53" y="95">Reference</tspan> + <tspan x="53" y="112.5">line</tspan> + </text> + </g> +</svg> diff --git a/master/pservers.html b/master/pservers.html --- a/master/pservers.html +++ b/master/pservers.html @@ -1,81 +1,61 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional+edit//EN" "xhtml1-transitional+edit.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:edit="http://xmlns.grorg.org/SVGT12NG/"> <head> - <title>Paint Servers: Solid Colors, Gradients, and Patterns</title> + <title>Paint Servers: Solid Colors, Gradients, Patterns, and Hatches</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link rel="stylesheet" title="Default" type="text/css" media="screen" href="style/default_svg.css"/> <link rel="alternate stylesheet" title="No issues/annotations" type="text/css" media="screen" href="style/default_no_issues.css"/> <!-- <link rel="alternate stylesheet" title="CSS3 Unmodified" type="text/css" media="screen" href="style/default.css"/> <link rel="alternate stylesheet" title="SVG 1.1" type="text/css" media="screen" href="style/svg-style.css"/> --> <!-- W3C style sheet will be added here during processing. --> </head> <body> -<h1>Paint Servers: Solid Colors, Gradients, and Patterns</h1> +<h1>Paint Servers: Solid Colors, Gradients, Patterns, and Hatches</h1> <h2 id="Introduction">Introduction</h2> <p> This section covers <strong>Paint Servers</strong>, a method which allows the <a>'fill'</a> or <a>'stroke'</a> of an object to be defined by a resource found elsewhere. It allows resources to be reused throughout a document. See the section <a href="painting.html">Painting: Filling and Stroking</a> for a general discussion of filling and stroking objects. </p> <!-- Fill and stroke are already defined in painting.html. No need to redefine them here. --> <p> - SVG defines three types of paint servers: + SVG defines several types of paint servers: </p> <ul> <li><a href="#SolidColors">Solid colors</a>,</li> <li><a href="#Gradients">Gradients</a>,</li> <li><a href="#Patterns">Patterns</a>.</li> + <li><a href="#Hatches">Hatches</a>.</li> </ul> <p class="issue"> SVG1.1 refers to "<a href="http://www.w3.org/TR/SVG/pservers.html#Introduction">built-in</a>" paint servers. Is there any other kind? </p> <div class="annotation svg2-requirement"> <table> <tr> <th>SVG 2 Requirement:</th> - <td>Support hatching.</td> - </tr> - <tr> - <th>Resolution:</th> - <td><a href="http://www.w3.org/2011/10/28-svg-irc#T18-28-09">SVG 2 should support hatching without the artifacts that patterns currently impose.</a></td> - </tr> - <tr> - <th>Purpose:</th> - <td>To allow the kinds of patterns required for mapping, engraving, etc. where continuous lines are required.</td> - </tr> - <tr> - <th>Owner:</th> - <td>Tav (no action)</td> - </tr> - </table> -</div> - -<div class="annotation svg2-requirement"> - <table> - <tr> - <th>SVG 2 Requirement:</th> <td>Arbitrary fills for shapes.</td> </tr> <tr> <th>Resolution:</th> <td><a href="http://www.w3.org/2011/10/28-svg-irc#T18-32-32">SVG 2 shall support filling and stroking from arbitrary elements.</a></td> </tr> <tr> <th>Purpose:</th> @@ -83,40 +63,52 @@ redefine them here. --> </tr> <tr> <th>Owner:</th> <td>Alex? (no action)</td> </tr> </table> </div> -<p class="issue"> - It seems that all paint servers (except perhaps, mesh gradients, - when rendered directly) inherit from their ancestors and do not - inherit from the element referencing the paint server. Rather than - repeating this for each type of paint server, can the text be moved - into the introduction section for paint servers? -</p> - <div class="figure"> <img alt="Image of three types of paint servers." src="images/pservers/pservers_example.png"/> <p class="caption">Three types of paint servers. From left to right: A solid color ("MyLightPurple"). A linear gradient. A pattern. </p> </div> <p> Paint servers are used by including an <a>IRI reference</a> in a <a>'fill'</a> or <a>'stroke'</a> property (i.e. fill="#MyLightPurple"). </p> +<p> + <a href="styling.html#SVGStylingProperties">Properties</a> inherit + into a paintserver element from its ancestors; + properties do <em>not</em> inherit from the element referencing + the paintserver element. +</p> + +<p> + Paintserver elements are never rendered directly (with the exception + of <a>'meshGradient'</a> which may be rendered in a non-paintserver + mode); their only usage is as something that can be referenced using + the <a>'fill'</a> and <a>'stroke'</a> properties. The + <a>'display'</a> property does not apply to a paintserver element; + thus, paintserver elements are not directly rendered even if + the <a>'display'</a> property is set to a value other + than <span class="prop-value">none</span>, and paintserver elements + are available for referencing even when the <a>'display'</a> + property on the paintserver element or any of its ancestors is set + to <span class="prop-value">none</span>. +</p> <h2 id="SolidColors">Solid colors</h2> <p class="note">Solid Colors are new in SVG 2 (ported from SVG 1.2 Tiny).</p> <div class="annotation svg2-requirement"> <table> <tr> @@ -141,32 +133,16 @@ redefine them here. --> <p>The 'solidColor' element is a paint server that provides a single color with opacity. It can be referenced any place a single color can be used. The 'solidColor' element allows a palette to be defined and used consistently throughout a document. It is also useful as away of animating a palette colors. (See the chapter <a href="color.html">Color</a> for a more general discussion of color in SVG.)</p> -<p><a href="styling.html#SVGStylingProperties">Properties</a> inherit -into the <a>'solidColor'</a> element from its ancestors; -properties do <em>not</em> inherit from the element referencing -the <a>'solidColor'</a> element.</p> - -<p><a>'solidColor'</a> elements are never rendered directly; -their only usage is as something that can be referenced using the -<a>'fill'</a> and <a>'stroke'</a> properties. The <a>'display'</a> -property does not apply to the <a>'solidColor'</a> element; thus, -<a>'solidColor'</a> elements are not directly rendered even if -the <a>'display'</a> property is set to a value other than -<span class="prop-value">none</span>, and <a>'solidColor'</a> -elements are available for referencing even when the <a>'display'</a> -property on the <a>'solidColor'</a> element or any of its ancestors -is set to <span class="prop-value">none</span>.</p> - <edit:with element='solidColor'> <p id="SolidColorElement">Solid colors are defined by a <a>'solidColor'</a> element.</p> <edit:elementsummary name='solidColor'/> <h3 id="SolidColorProperties">Properties</h3> @@ -572,32 +548,16 @@ in the stops. This is discussed in detai <h4 id="LinearGradientNotes">Notes on linear gradients</h4> <p>If <a>'x1'</a> = <a>'x2'</a> and <a>'y1'</a> = <a>'y2'</a>, then the area to be painted will be painted as a single color using the color and opacity of the last <a href="pservers.html#GradientStops">gradient stop</a>.</p> -<p><a href="styling.html#SVGStylingProperties">Properties</a> inherit -into the <a>'linearGradient'</a> element from its ancestors; -properties do <em>not</em> inherit from the element referencing -the <a>'linearGradient'</a> element.</p> - -<p><a>'linearGradient'</a> elements are never rendered directly; -their only usage is as something that can be referenced using the -<a>'fill'</a> and <a>'stroke'</a> properties. The <a>'display'</a> -property does not apply to the <a>'linearGradient'</a> element; thus, -<a>'linearGradient'</a> elements are not directly rendered even if -the <a>'display'</a> property is set to a value other than -<span class="prop-value">none</span>, and <a>'linearGradient'</a> -elements are available for referencing even when the <a>'display'</a> -property on the <a>'linearGradient'</a> element or any of its ancestors -is set to <span class="prop-value">none</span>.</p> - <p id="ExampleLinGrad01"><span class="example-ref">Example lingrad01</span> shows how to fill a rectangle by referencing a linear gradient paint server.</p> <edit:example href='images/pservers/lingrad01.svg' name='lingrad01' description='Fill a rectangle by referencing a linear gradient paint server' image='yes' link='yes'/> </edit:with> @@ -1051,32 +1011,16 @@ in the right-hand side of the above figu Canvas where the area would be transparent black. The difference is to maintain compatibility with SVG 1.1.</p> <p class="annotation">The color space for the weighted average is the same as in which the gradient is interpolated. See <a href="http://www.w3.org/2012/09/19-svg-minutes.html#item01">Rigi Kaltbad working group meeting</a>.</p> -<p><a href="styling.html#SVGStylingProperties">Properties</a> -inherit into the <a>'radialGradient'</a> element from its ancestors; -properties do <em>not</em> inherit from the element referencing the -<a>'radialGradient'</a> element.</p> - -<p><a>'radialGradient'</a> elements are never rendered directly; -their only usage is as something that can be referenced using the -<a>'fill'</a> and <a>'stroke'</a> properties. The <a>'display'</a> -property does not apply to the <a>'radialGradient'</a> element; thus, -<a>'radialGradient'</a> elements are not directly rendered even if -the <a>'display'</a> property is set to a value other than -<span class="prop-value">none</span>, and <a>'radialGradient'</a> elements -are available for referencing even when the <a>'display'</a> property on -the <a>'radialGradient'</a> element or any of its ancestors is set to -<span class="prop-value">none</span>.</p> - <p id="ExampleRadGrad01"><span class="example-ref">Example radgrad01</span> shows how to fill a rectangle by referencing a radial gradient paint server.</p> <edit:example href='images/pservers/radgrad01.svg' name='radgrad01' description='Fill a rectangle by referencing a radial gradient paint server' image='yes' link='yes'/> @@ -1118,24 +1062,32 @@ the coordinates inside the unit square): S = S<sub>C</sub> + S<sub>D</sub> − S<sub>B</sub>, where S<sub>C</sub>(u,v) = (1−v)×C<sub>1</sub>(u) + v×C<sub>2</sub>(u), S<sub>D</sub>(u,v) = (1−u)×D<sub>1</sub>(v) + u×D<sub>2</sub>(v), and S<sub>B</sub>(u,v) = (1−v)×[(1-u)×C<sub>1</sub>(0) + u×C<sub>1</sub>(1)] + v×[(1−u)×C<sub>2</sub>(0) + u×C<sub>2</sub>(1)]. </pre> </div> -<p class="issue">MathML gets stripped out by build script.</p> - -<pre><![CDATA[ -<math xmlns="http://www.w3.org/1998/Math/MathML"> - <mrow> - <msup><mi>S</mi></msup><mo>=</mo><mi>S</mi><msub>C</msub><mo>+</mo><mi>S</mi><msub>D</msub> - </mrow> -</math>]]></pre> +<p class="issue">Finish converting to MATHML.</p> + +<div role="math" aria-describedby="math-meshpatch-equation"> + <math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> + <mrow> + <mi>S</mi> + <mo>=</mo> + <msub><mi>S</mi><mi>C</mi></msub> + <mo>+</mo> + <msub><mi>S</mi><mi>D</mi></msub> + <mo>-</mo> + <msub><mi>S</mi><mi>B</mi></msub> + </mrow> + </math> + <pre id="math-meshpatch-equation">S = S_C + S_D - S_B_</pre> +</div> <p class="issue">Come up with better explanation of the mapping with diagram. The subtraction term in the above formula ensures that the boundary conditions are met.</p> <div class="note"> <p>One method of rendering a patch is to "divide and conquer." Check if the four corner colors of the patch are the same within a @@ -1770,31 +1722,16 @@ attribute on the <a>'pattern'</a> elemen <p>the rectangle has its top/left located 5 units to the right and 5 units down from the origin of the pattern tile.</p> <p>The <a>'viewBox'</a> attribute introduces a supplemental transformation which is applied on top of any transformations necessary to create a new pattern coordinate system due to attributes <a>'x'</a>, <a>'y'</a>, <a>'width'</a>, <a>'height'</a> and <a>'patternUnits'</a>.</p> -<p><a href="styling.html#SVGStylingProperties">Properties</a> inherit into the -<a>'pattern'</a> element from its ancestors; properties do <em>not</em> -inherit from the element referencing the <a>'pattern'</a> element.</p> - -<p><a>'pattern'</a> elements are never rendered directly; their only -usage is as something that can be referenced using the <a>'fill'</a> -and <a>'stroke'</a> properties. The <a>'display'</a> property does not -apply to the <a>'pattern'</a> element; thus, <a>'pattern'</a> elements -are not directly rendered even if the <a>'display'</a> property is set -to a value other than -<span class="prop-value">none</span>, and <a>'pattern'</a> elements are -available for referencing even when the <a>'display'</a> property on the -<a>'pattern'</a> element or any of its ancestors is set to -<span class="prop-value">none</span>.</p> - <p><a href="script.html#EventAttributes">Event attributes</a> and <a href="svgdom.html#EventListeners">event listeners</a> attached to the contents of a <a>'pattern'</a> element are not processed; only the rendering aspects of <a>'pattern'</a> elements are processed.</p> <p id="ExamplePattern01"><span class="example-ref">Example pattern01</span> shows how to fill a rectangle by referencing a pattern paint @@ -1805,16 +1742,542 @@ the <a>'overflow'</a> property for <a>'p <span class="prop-value">hidden</span>, which causes the pattern to be clipped to the bounds of the pattern tile.</p> <edit:example href='images/pservers/pattern01.svg' name='pattern01' description='fill a rectangle by referencing a pattern paint server' image='yes' link='yes'/> </edit:with> +<h2 id="Hatches">Hatches</h2> + +<edit:with element='hatch'> + +<p class="note">Hatches are new in SVG 2. They were added to allow the +kinds of patterns required for mapping, engraving, etc. where continuous +lines are needed.</p> + +<div class="annotation svg2-requirement"> + <table> + <tr> + <th>SVG 2 Requirement:</th> + <td>Support hatches.</td> + </tr> + <tr> + <th>Resolution:</th> + <td><a href="http://www.w3.org/2011/10/28-svg-irc#T18-28-09">SVG 2 should support hatchings without the artifacts that patterns currently impose.</a></td> + </tr> + <tr> + <th>Purpose:</th> + <td>To allow the kinds of patterns required for mapping, engraving, etc. where continuous lines are required.</td> + </tr> + <tr> + <th>Owner:</th> + <td>Tav (no action)</td> + </tr> + </table> +</div> + +<p id="HatchElement">A hatch is used to <a>'fill'</a> or <a>'stroke'</a> +an object using one or more pre-defined paths that are repeated +at fixed intervals in a specified direction to cover the +areas to be painted. Hatches are defined using a <a>'hatch'</a> +element and then referenced by properties <a>'fill'</a> and +<a>'stroke'</a> on a given <a>graphics element</a> to indicate that the +given element shall be filled or stroked with the hatch. +Paths are defined by <a>'hatchPath'</a> elements.</p> + +<p>Attributes <a>'x'</a>, <a>'y'</a>, <a>'pitch'</a>, <a>'angle'</a>, +and <a>'hatchUnits'</a> define an infinitely long reference strip +on the infinite canvas. The strip has one edge at +(<var>x</var>, <var>y</var>) and its other edge at a distance +of <var>pitch</var> in the direction defined by <var>angle</var>. +This one-dimension tiling theoretically extends a series of such +strips in the direction of 'angle' to infinity (positive and +negative), with strips starting at +(<var>x</var> + m*<var>pitch</var>*cos(<var>angle</var>), <var>y</var> + m*<var>pitch</var>*sin(<var>angle</var>) +for each possible integer value of <em>m</em>.</p> + +<div class="figure"> + <img + alt="A diagram showing the layout of a series of strips." + src="images/pservers/hatch_attributes.svg"/> + <p class="caption">Three adjacent strips separated by dashed lines + showing their relationship to each other for a + given <var>pitch</var> and <var>angle</var>. The reference line + determines the origin of <a>'hatchPath'</a>s. + </p> +</div> + +<p class="issue">Check that angle defined in same sense as other + angles is SVG (clockwise/counter-clockwise, etc.).</p> + +<edit:elementsummary name='hatch'/> + +<p class="issue">Review content model.</p> + +<h3 id="HatchElementAttributes">Attributes</h3> + + <dl class="attrdef-list-svg2"> + + <dt id="HatchElementHatchUnitsAttribute"><span class="adef">hatchUnits</span></dt> + <dd> + + <p> + Defines the coordinate system for attributes + <a>'x'</a>, <a>'y'</a>, <a>'pitch'</a> and <a>'angle'</a>. + </p> + + <dl class="attrdef-svg2"> + + <dt>Value</dt> <dd>userSpaceOnUse | objectBoundingBox</dd> + <dt><a>Lacuna value</a></dt> <dd>objectBoundingBox</dd> + <dt><a>Animatable</a></dt> <dd>yes</dd> + + </dl> + + <dl class="attrdef-values"> + + <dt>userSpaceOnUse</dt> + <dd> + <p> + If <span class="attr-value">hatchUnits="userSpaceOnUse"</span>, + + <a>'x'</a>, <a>'y'</a>, <a>'pitch'</a>, and <a>'angle'</a> + + represent values in the coordinate system that results + from taking the current user coordinate system in place at + the time when the <a>'hatch'</a> element is referenced + (i.e., the user coordinate system for the element + referencing the <a>'hatch'</a> element via a + <a>'fill'</a> or <a>'stroke'</a> property) and then + applying the transform specified by attribute + <a>'hatchTransform'</a>. Percentages + represent values relative to the current viewport. + </p> + </dd> + + <dt>objectBoundingBox</dt> + <dd> + <p> + If <span class="attr-value">hatchUnits="objectBoundingBox"</span>, + the user coordinate system for attributes + + <a>'x'</a>, <a>'y'</a>, <a>'pitch'</a>, and <a>'angle'</a> + + is established using the bounding box of the element to + which the hatch is applied + (see <a href="coords.html#ObjectBoundingBox">Object + bounding box units</a>) and then applying the transform + specified by attribute <a>'hatchTransform'</a>. + Percentages represent values relative to the bounding box + for the object. + </p> + </dd> + + </dl><!-- Attribute values --> + + </dd> + + <dt id="HatchElementHatchContentUnitsAttribute"> + <span class="adef">hatchContentUnits</span> + </dt> + <dd> + + <p> + Defines the coordinate system for the contents of the + <a>'hatch'</a>. + </p> + + <dl class="attrdef-svg2"> + + <dt>Value</dt> <dd>userSpaceOnUse | objectBoundingBox</dd> + <dt><a>Lacuna value</a></dt> <dd>userSpaceOnUse</dd> + <dt><a>Animatable</a></dt> <dd>yes</dd> + + </dl> + + <dl class="attrdef-values"> + + <dt>userSpaceOnUse</dt> + <dd> + <p> + If <span class="attr-value">hatchContentUnits="userSpaceOnUse"</span>, + the user coordinate system for the contents of the <a>'hatch'</a> + element is the coordinate system that results from taking + the current user coordinate system in place at the time + when the <a>'hatch'</a> element is referenced (i.e., the + user coordinate system for the element referencing the + <a>'hatch'</a> element via a <a>'fill'</a> or <a>'stroke'</a> + property) and then applying the transform specified by attribute + <a>'hatchTransform'</a>. + </p> + </dd> + + <dt>objectBoundingBox</dt> + <dd> + <p> + If <span class="attr-value">hatchContentUnits="objectBoundingBox"</span>, + the user coordinate system for the contents of + the <a>'hatch'</a> element is established using the + bounding box of the element to which the hatch is + applied + (see <a href="coords.html#ObjectBoundingBox">Object + bounding box units</a>) and then applying the transform + specified by attribute <a>'hatchTransform'</a>. + </p> + </dd> + + </dl><!-- Attribute values --> + + </dd> + + <dt id="HatchElementHatchTransformAttribute"> + <span class="adef">hatchTransform</span> + </dt> + <dd> + + <p> + Contains the definition of an optional additional + transformation from the hatch coordinate system onto the + target coordinate system + + (i.e., <span class='attr-value'>'userSpaceOnUse'</span> or + <span class='attr-value'>'objectBoundingBox'</span>). + + This allows for things such as skewing the hatch strips. + + This additional transformation matrix is post-multiplied to + (i.e., inserted to the right of) any previously defined + transformations, including the implicit transformation + necessary to convert + from <a href="coords.html#ObjectBoundingBox">object bounding + box units</a> to user space. + </p> + + <dl class="attrdef-svg2"> + <dt>Value</dt> <dd><a><transform-list></a></dd> + <dt><a>Lacuna value</a></dt> <dd>identity transform</dd> + <dt><a>Animatable</a></dt> <dd>yes</dd> + </dl> + + </dd> + + <dt id="HatchElementXAttribute"><span class="adef">x</span></dt> + <dd> + <p> + <a>'x'</a>, <a>'y'</a>, <a>'pitch'</a> and <a>'angle'</a> + indicate how the hatch strips are placed and spaced. These + attributes represent coordinates and values in the coordinate + space specified by the combination of + attributes <a>'hatchUnits'</a> + and <a>'hatchTransform'</a>. + </p> + + <dl class="attrdef-svg2"> + <dt>Value</dt> <dd><a><length></a></dd> + <dt><a>Lacuna value</a></dt> <dd>0</dd> + <dt><a>Animatable</a></dt> <dd>yes</dd> + </dl> + + </dd> + + <dt id="HatchElementYAttribute"><span class="adef">y</span></dt> + <dd> + + <p> + See <a>'x'</a>. + </p> + + <dl class="attrdef-svg2"> + <dt>Value</dt> <dd><a><length></a></dd> + <dt><a>Lacuna value</a></dt> <dd>0</dd> + <dt><a>Animatable</a></dt> <dd>yes</dd> + </dl> + + </dd> + + <dt id="HatchElementPitchAttribute"><span class="adef">pitch</span></dt> + <dd> + + <p> + See <a>'x'</a>. + </p> + + <dl class="attrdef-svg2"> + <dt>Value</dt> <dd><a><length></a></dd> + <dt><a>Lacuna value</a></dt> <dd>0</dd> + <dt><a>Animatable</a></dt> <dd>yes</dd> + </dl> + + <p> + A negative value is an error + (see <a href="implnote.html#ErrorProcessing">Error + processing</a>). A value of zero disables rendering of the + element (i.e., no paint is applied). + </p> + + </dd> + + <dt id="HatchElementAngleAttribute"><span class="adef">angle</span></dt> + <dd> + + <p> + See <a>'x'</a>. + </p> + + <dl class="attrdef-svg2"> + <dt>Value</dt> <dd><a><angle></a></dd> + <dt><a>Lacuna value</a></dt> <dd>0</dd> + <dt><a>Animatable</a></dt> <dd>yes</dd> + </dl> + + </dd> + + <dt id="HatchElementHrefAttribute"><span class="adef">xlink:href</span></dt> + <dd> + <p> + An <a href="linking.html#IRIReference">IRI reference</a> to a + different <a>'hatch'</a> element within the current SVG + document fragment. Any attributes which are defined on the + referenced element which are not defined on this element are + inherited by this element. If this element has no children, + and the referenced element does (possibly due to its + own <a>'xlink:href'</a> attribute), then this element inherits + the children from the referenced element. Inheritance can be + indirect to an arbitrary level; thus, if the referenced + element inherits attributes or children due to its + own <a>'xlink:href'</a> attribute, then the current element + can inherit those attributes or children. + </p> + + <dl class="attrdef-svg2"> + <dt>Value</dt> <dd><a><iri></a></dd> + <dt><a>Lacuna value</a></dt> <dd>empty</dd> + <dt><a>Animatable</a></dt> <dd>yes</dd> + </dl> + + </dd> + + </dl> + +<h3 id="HatchNotes">Notes on hatches</h3> + +<p>SVG's <a href="styling.html#UAStyleSheet">user agent style sheet</a> sets +the <a>'overflow'</a> property for <a>'hatch'</a> elements to +<span class="prop-value">hidden</span>, which causes an infinite strip clipping +path to be created at the bounds of the hatch strip. Unless the +<a>'overflow'</a> property is overridden, any graphics within the +hatch which goes outside of the hatch strip will be clipped. Note that +if the <a>'overflow'</a> property is set +to <span class="prop-value">visible</span> the area outside must be +rendered (NB this is different from a <a>'pattern'</a> +element). Strips with higher <var>x</var> (larger <var>m</var>) values +must be rendered after strips with lower <var>x</var> +(lower <var>m</var>) values.</p> + +<p class="issue">The default should probably be visible.</p> + +<p>The contents of the <a>'hatch'</a> are relative to a new coordinate +system. The new coordinate system has its origin at +(<var>x</var>, <var>y</var>), where <var>x</var> is established +by the <a>'x'</a> attribute on the <a>'hatch'</a> element, +and <var>y</var> is established by the <a>'y'</a> attribute on +the <a>'hatch'</a> element. The coordinate system is rotated around +the origin by the angle given by the <a>'angle'</a> attribute. +</p> + +<p class="issue">The viewBox and preserveAspectRatio attributes are +not useful and have been removed (as compared to the pattern element).</p> + +<p><a href="script.html#EventAttributes">Event attributes</a> and +<a href="svgdom.html#EventListeners">event listeners</a> attached +to the contents of a <a>'hatch'</a> element are not processed; +only the rendering aspects of <a>'hatch'</a> elements are +processed.</p> + + +<p>The following illustrates a very simple <a>'hatch'</a> fill:</p> + +<!-- +<edit:example href='images/pservers/pattern01.svg' name='hatch01' + description='fill a rectangle by referencing a hatch paint server' image='yes' link='yes'/> +--> +<div class="example"> +<pre><![CDATA[ +<hatch pitch="5" angle="135"> + <hatchPath stroke="#a080ff" stroke-width="2"/> +</hatch> +]]></pre> +<div class="figure"> + <img + alt="A hatch example with parallel lines filling a rectangle at a 45 degree angle." + src="images/pservers/hatch01.png"/> + <p class="caption">A hatch with a single <a>'hatchPath'</a>. + </p> +</div> +</div> + +<p class="issue">Proper examples with links to the SVG need to be given.</p> + +</edit:with> + +<h3 id="HatchPaths">Hatch paths</h3> + +<edit:with element='hatchPath'> + +<p id="HatchPathElement">Hatch paths are defined by a <a>'hatchPath'</a> element.</p> + +<edit:elementsummary name='hatchPath'/> + +<h4 id="HatchPathElementAttributes">Attributes</h4> + + <dl class="attrdef-list-svg2"> + + <dt id="HatchPathElementDAttribute"><span class="adef">d</span></dt> + <dd> + + <p> + Defines a single path in the <a>'hatch'</a>. + </p> + + <dl class="attrdef-svg2"> + + <dt>Value</dt> <dd><a href="#PathData">Path data</a></dd> + <dt><a>Lacuna value</a></dt> <dd>An infinite line, see below</dd> + <dt><a>Animatable</a></dt> <dd>yes</dd> + + </dl> + + </dd> + + <dt id="HatchPathElementOffsetAttribute"><span class="adef">offset</span></dt> + <dd> + + <p> + Defines the point along the reference line where a path begins. + </p> + + <dl class="attrdef-svg2"> + + <dt>Value</dt> <dd><a><length></a></dd> + <dt><a>Lacuna value</a></dt> <dd>0</dd> + <dt><a>Animatable</a></dt> <dd>yes</dd> + + </dl> + + </dd> + + </dl> + +<h4 id="HatchPathNotes">Notes on hatch paths</h4> + +<p>Hatch paths are defined with the same <a href="#PathData">Path +data</a> used in the <a>'d'</a> attribute of the <a>'path'</a> +element. The path is defined relative to the origin of each strip +translated in the <var>x</var> direction by the <a>'offset'</a> +(the <var>y</var> direction is aligned along the infinite axis of the +strip). +</p> + +<div class="figure"> + <img + alt="A diagram showing the coordinate system for the 'd' attribute." + src="images/pservers/hatch_path_attributes.svg"/> + <p class="caption">The coordinate system for path data relative to a strip. + </p> +</div> + +<p>If a <a>'d'</a> attribute is not provided, the path defaults to an +infinitely long line aligned with the <var>y</var>-axis of the +reference strip and passing through a point <a>'offset'</a> distance +in the <var>x</var> direction from the strip origin (see above). +</p> + +<p>If a <a>'d'</a> attribute is given, the hatch path is constructed +by repeating the <a>'d'</a> data, each time with an offset along the +<var>y</var>-axis determined by the <var>y</var> value of the last +path data point. (The offset must be positive, a negative or zero +offset value results in the hatch path not being rendered.) A hatch +path need not start with a "moveto" path instruction. If missing, the +first path instruction uses for its current point a value of +(<var>x</var>,<var>0</var>) where <var>x</var> is the <var>x</var> +value of the last data point given in the path. If the first path +command is not a "moveto" and the last not a "closepath", the last +point of each repeating section is joined to the first point of the +next repeating section with the current value +of <a>'stroke-linejoin'</a>. +</p> + +<!-- +<edit:example href='images/pservers/pattern01.svg' name='hatch01' + description='fill a rectangle by referencing a hatch paint server' image='yes' link='yes'/> +--> +<div class="example"> +<pre><![CDATA[ +<hatch hatchUnits="userSpaceOnUse" pitch="6"> + <hatchPath stroke-width="1" d="c 0,4 8,6 8,10 8,14 0,16 0,20"/> +</hatch>]]></pre> +<div class="figure"> + <img + alt="A hatch example with squiggly lines filling a rectangle." + src="images/pservers/hatch02.png"/> + <p class="caption">A hatch fill with a continuous squiggly <a>'hatchPath'</a>. + </p> +</div> +</div> + +<div class="example"> +<pre><![CDATA[ +<hatch hatchUnits="userSpaceOnUse" pitch="20"> + <hatchPath stroke-width="2" d="L 0,0 10,50"/> +</hatch>]]></pre> +<div class="figure"> + <img + alt="A hatch example with a zigzag line." + src="images/pservers/hatch03.png"/> + <p class="caption">A hatch fill with a zigzag <a>'hatchPath'</a>. + The <a>'d'</a> path data describes two line segments, the first + starting at (10, 0). The repeating sections are joined. + </p> +</div> +</div> + +<div class="example"> +<pre><![CDATA[ +<hatch hatchUnits="userSpaceOnUse" pitch="20"> + <hatchPath stroke-width="2" d="M 0,0 10,50"/> +</hatch>]]></pre> +<div class="figure"> + <img + alt="A hatch example with diagonal lines segments filling a rectangle." + src="images/pservers/hatch04.png"/> + <p class="caption">A hatch fill with diagonal line segments. The + repeating sections are not joined. + </p> +</div> +</div> + +<div class="example"> +<pre><![CDATA[ +<hatch hatchUnits="userSpaceOnUse" pitch="20"> + <hatchPath stroke-width="2"/> + <hatchPath stroke-width="2" offset="5" stroke-dasharray="10 4 2 4"/> +</hatch>]]></pre> +<div class="figure"> + <img + alt="A hatch example with two alternating lines, one dashed." + src="images/pservers/hatch05.png"/> + <p class="caption">A hatch fill with two <a>'hatchPath'</a>s, one dashed. + </p> +</div> +</div> + +</edit:with> + <h2 id="DOMInterfaces">DOM interfaces</h2> <h3 id="InterfaceSVGSolidColorElement">Interface SVGSolidColorElement</h3> <edit:with element='solidColor'> <pre class="idl"></pre> @@ -2234,10 +2697,30 @@ element. </div> </dd> </dl> </dd> </dl> </edit:with> +<h3 id="InterfaceSVGHatchElement">Interface SVGSolidHatchElement</h3> + +<edit:with element='hatch'> + +<pre class="idl"></pre> + +<p class="issue">IDL needs to be added for SVGHatchElement.</p> + +</edit:with> + +<h3 id="InterfaceSVGHatchPathElement">Interface SVGSolidHatchPathElement</h3> + +<edit:with element='hatchesPath'> + +<pre class="idl"></pre> + +<p class="issue">IDL needs to be added for SVGHatchPathElement.</p> + +</edit:with> + </body> </html>
Received on Tuesday, 21 May 2013 18:13:53 UTC