- From: SVG Working Group repository <cam@mcc.id.au>
- Date: Fri, 14 Sep 2012 09:16:48 -0700
- To: public-svg-wg@w3.org
details: https://svgwg.org/hg/svg2/rev/9f46c2f1cb89
branches:
changeset: 369:9f46c2f1cb89
user: Cameron McCormack <cam@mcc.id.au>
date: Sat Sep 15 02:15:32 2012 +1000
description:
Add isPointIn{Fill,Stroke} methods, and an SVGMarkerList to access the markers painted on a markable element. (ACTION-3275)
diffstat:
master/definitions.xml | 4 +
master/painting.html | 155 +++++++++++++++++++++++++++++++++++++++++++++++++
master/paths.html | 5 +-
master/shapes.html | 24 ++++---
master/text.html | 2 +-
master/types.html | 67 +++++++++++++++++++++
6 files changed, 244 insertions(+), 13 deletions(-)
diffs (512 lines):
diff --git a/master/definitions.xml b/master/definitions.xml
--- a/master/definitions.xml
+++ b/master/definitions.xml
@@ -1052,16 +1052,17 @@
<interface name='SVGNumberList' href='types.html#InterfaceSVGNumberList'/>
<interface name='SVGAnimatedNumberList' href='types.html#InterfaceSVGAnimatedNumberList'/>
<interface name='SVGLengthList' href='types.html#InterfaceSVGLengthList'/>
<interface name='SVGColor' href='types.html#InterfaceSVGColor'/>
<interface name='SVGICCColor' href='types.html#InterfaceSVGICCColor'/>
<interface name='SVGLocatableElement' href='types.html#InterfaceSVGLocatableElement'/>
<interface name='SVGTransformableElement' href='types.html#InterfaceSVGTransformableElement'/>
<interface name='SVGGraphicsElement' href='types.html#InterfaceSVGGraphicsElement'/>
+ <interface name='SVGGeometryElement' href='types.html#InterfaceSVGGeometryElement'/>
<interface name='SVGDefinitionElement' href='types.html#InterfaceSVGDefinitionElement'/>
<interface name='SVGTests' href='types.html#InterfaceSVGTests'/>
<interface name='SVGURIReference' href='types.html#InterfaceSVGURIReference'/>
<interface name='SVGCSSRule' href='types.html#InterfaceSVGCSSRule'/>
<interface name='SVGRenderingIntent' href='types.html#InterfaceSVGRenderingIntent'/>
<interface name='SVGAnimatedBoolean' href='types.html#InterfaceSVGAnimatedBoolean'/>
<interface name='SVGUnitTypes' href='types.html#InterfaceSVGUnitTypes'/>
<interface name='SVGStyleElement' href='styling.html#InterfaceSVGStyleElement'/>
@@ -1103,17 +1104,20 @@
<interface name='SVGTRefElement' href='text.html#InterfaceSVGTRefElement'/>
<interface name='SVGTextPathElement' href='text.html#InterfaceSVGTextPathElement'/>
<interface name='SVGAltGlyphElement' href='text.html#InterfaceSVGAltGlyphElement'/>
<interface name='SVGAltGlyphDefElement' href='text.html#InterfaceSVGAltGlyphDefElement'/>
<interface name='SVGAltGlyphItemElement' href='text.html#InterfaceSVGAltGlyphItemElement'/>
<interface name='SVGGlyphRefElement' href='text.html#InterfaceSVGGlyphRefElement'/>
<interface name='SVGTextContentElement' href='text.html#InterfaceSVGTextContentElement'/>
<interface name='SVGTextPositioningElement' href='text.html#InterfaceSVGTextPositioningElement'/>
+ <interface name='SVGMarkableElement' href='painting.html#InterfaceSVGMarkableElement'/>
<interface name='SVGMarkerElement' href='painting.html#InterfaceSVGMarkerElement'/>
+ <interface name='SVGMarkerInstance' href='painting.html#InterfaceSVGMarkerInstance'/>
+ <interface name='SVGMarkerList' href='painting.html#InterfaceSVGMarkerList'/>
<interface name='SVGColorProfileElement' href='color.html#InterfaceSVGColorProfileElement'/>
<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'/>
diff --git a/master/painting.html b/master/painting.html
--- a/master/painting.html
+++ b/master/painting.html
@@ -3385,16 +3385,171 @@ interface SVGPaint : SVGColor {
void setUri(DOMString uri);
void setPaint(unsigned short paintType, DOMString uri, DOMString rgbColor, DOMString iccColor);
};
</pre>
<p class="issue">There are some missing definitions of
SVGPaint members here. The interface might be going away, however.</p>
+
+<div class="ready-for-wg-review">
+<h3 id="InterfaceSVGMarkerInstance">Interface SVGMarkerInstance</h3>
+
+<p>The <a>SVGMarkerInstance</a> interface is used to represent an instance
+of a marker that is on a <a>markable element</a>. An <a>SVGMarkerInstance</a>
+can represent any kind of marker, including <a>positioned markers</a>.</p>
+
+<p class="issue">What should we do about liveness? If it is live, we
+could have it know what index it is for, and always return information
+about the marker at that index (and return null for the element if
+that index is no longer valid).</p>
+
+<pre class='idl'>interface <b>SVGMarkerInstance</b> {
+ readonly attribute <a>SVGMarkerElement</a> element;
+ readonly attribute float position;
+ readonly attribute <a>SVGPoint</a> point;
+ readonly attribute float angle;
+};</pre>
+
+<dl class="interface">
+ <dt class="attributes-header">Attributes:</dt>
+ <dd>
+ <dl class="attributes">
+ <dt id="__svg__SVGMarkerInstance__element" class="attribute first-child"><b>element</b><span class="idl-type-parenthetical"> (readonly <a>SVGMarkerElement</a>)</span></dt>
+ <dd class="attribute">The <a>'marker element'</a> element that defines
+ the marker. If the marker is a <a>vertex marker</a>, <a>segment marker</a>
+ or <a>repeating marker</a>, then this will be the <a>'marker element'</a>
+ element that the relevant marker property referenced. If the marker is
+ a <a>positioned marker</a>, then this will be the child <a>'marker element'</a>
+ element of the <a>markable element</a>.</dd>
+
+ <dt id="__svg__SVGMarkerInstance__position" class="attribute"><b>position</b><span class="idl-type-parenthetical"> (readonly float)</span></dt>
+ <dd class="attribute">The distance along the <a>equivalent path</a> of the
+ <a>markable element</a> that the marker is positioned at.</dd>
+
+ <dt id="__svg__SVGMarkerInstance__point" class="attribute"><b>point</b><span class="idl-type-parenthetical"> (readonly <a>SVGPoint</a>)</span></dt>
+ <dd class="attribute">The point, in the user space of the
+ <a>markable element</a>, that the marker is positioned at.
+ The <a>SVGPoint</a> object is read only.</dd>
+
+ <dt id="__svg__SVGMarkerInstance__angle" class="attribute"><b>angle</b><span class="idl-type-parenthetical"> (readonly float)</span></dt>
+ <dd class="attribute">The orientation of the marker relative to a
+ vector pointing in the direction of the positive y-axis of the
+ <a>markable element</a>'s user space.</dd>
+ </dl>
+ </dd>
+</dl>
+
+
+<h3 id="InterfaceSVGMarkerList">Interface SVGMarkerList</h3>
+
+<p>The <a>SVGMarkerList</a> interface is used to expose the list of markers that
+are painted on a given <a>markable element</a>. This list includes all
+<a>vertex markers</a>, <a>segment markers</a>, <a>repeating markers</a> and
+<a>positioned markers</a>. The list of <a>SVGMarkerInstance</a> objects
+is maintained in the order that the markers are painted (see
+<a href='painting.html#Markers'>Markers</a>).</p>
+
+<pre class='idl'>interface <b>SVGMarkerList</b> {
+ readonly attribute unsigned long <a href='#__svg__SVGMarkerList__length'>length</a>;
+ getter <a>SVGMarkerInstance</a>? <a href='#__svg__SVGMarkerList__item'>item</a>(unsigned long index);
+};</pre>
+
+<dl class="interface">
+ <dt class="attributes-header">Attributes:</dt>
+ <dd>
+ <dl class="attributes">
+ <dt id="__svg__SVGMarkerList__length" class="attribute first-child"><b>length</b><span class="idl-type-parenthetical"> (readonly unsigned long)</span></dt>
+ <dd class="attribute">The number of markers on this element.</dd>
+ </dl>
+ </dd>
+ <dt class="operations-header">Operations:</dt>
+ <dd>
+ <dl class="attributes">
+ <dt id="__svg__SVGMarkerList__item" class="operation first-child"><a>SVGMarkerInstance</a>? <b>item</b>(unsigned long <var>index</var>)</dt>
+ <dd class="operation">
+ Gets the <a>SVGMarkerInstance</a> at the given position in the
+ list of markers on this element.
+ <dl class="operation">
+ <dt class="parameters-header">Parameters</dt>
+ <dd>
+ <ol class="parameters">
+ <li class="parameter first-child">
+ <div>unsigned long <var>index</var></div>
+ <div>The index of the <a>SVGMarkerInstance</a> to return.</div>
+ </li>
+ </ol>
+ </dd>
+ <dt class="returns-header">Returns</dt>
+ <dd>Returns the <a>SVGMarkerInstance</a> at position <var>index</var>
+ in the list of markers on this element, or null if <var>index</var>
+ is out of range.</dd>
+ </dl>
+ </dd>
+ </dl>
+ </dd>
+</dl>
+
+
+<h3 id="InterfaceSVGMarkableElement">Interface SVGMarkableElement</h3>
+
+<p>The <a>SVGMarkableElement</a> interface is implemented on all
+<a>markable elements</a>, and provides access to the markers that are placed on
+the element's path.</p>
+
+<pre class='idl'>[NoInterfaceObject]
+interface <b>SVGMarkableElement</b> {
+ readonly attribute <a>SVGMarkerList</a> <a href='#__svg__SVGMarkableElement__markers'>markers</a>;
+
+ long <a href='#__svg__SVGMarkableElement__getMarkerIndexFromPoint'>getMarkerIndexFromPoint</a>(<a>SVGPoint</a> point);
+};</pre>
+
+<dl class="interface">
+ <dt class="attributes-header">Attributes:</dt>
+ <dd>
+ <dl class="attributes">
+ <dt id="__svg__SVGMarkableElement__markers" class="attribute first-child"><b>markers</b><span class="idl-type-parenthetical"> (readonly <a>SVGMarkerList</a>)</span></dt>
+ <dd class="attribute">The list of markers on this element.</dd>
+ </dl>
+ </dd>
+ <dt class="operations-header">Operations:</dt>
+ <dd>
+ <dl class="attributes">
+ <dt id="__svg__SVGMarkableElement__getMarkerIndexFromPoint" class="operation first-child">long <b>getMarkerIndexFromPoint</b>(<a>SVGPoint</a> point)</dt>
+ <dd class="operation">
+ Returns the index into the <a>SVGMarkerList</a> of the marker that is at
+ the specified point. Normal hit testing rules apply; the value of the
+ <a>'pointer-events'</a> property on the elements that comprise the markers,
+ as well as its value on this element, is honored, and the top-most marker
+ is selected when there are multiple markers whose content is at the given
+ point.
+ <dl class="operation">
+ <dt class="parameters-header">Parameters</dt>
+ <dd>
+ <ol class="parameters">
+ <li class="parameter first-child">
+ <div><a>SVGPoint</a> <var>point</var></div>
+ <div>The point to check for intersection with the markers
+ on this element. The <a>SVGPoint</a> is interpreted as a
+ point in the user space of this element.</div>
+ </li>
+ </ol>
+ </dd>
+ <dt class="returns-header">Returns</dt>
+ <dd>The index into this element's <a>SVGMarkerList</a> of the marker
+ at the given point, or -1 if there is no such marker.</dd>
+ </dl>
+ </dd>
+ </dl>
+ </dd>
+</dl>
+</div>
+
+
<h3 id="InterfaceSVGMarkerElement">Interface SVGMarkerElement</h3>
<edit:with element='marker'>
The <a>SVGMarkerElement</a> interface corresponds to the
<a>'marker element'</a> element.
<pre class="idl">interface <b>SVGMarkerElement</b> : <a>SVGDefinitionElement</a> {
diff --git a/master/paths.html b/master/paths.html
--- a/master/paths.html
+++ b/master/paths.html
@@ -2480,17 +2480,17 @@ the same value as <a>normalizedPathSegLi
<h3 id="InterfaceSVGPathElement">Interface SVGPathElement</h3>
The <a>SVGPathElement</a> interface corresponds to the <a>'path'</a>
element.
-<pre class="idl">interface <b>SVGPathElement</b> : <a>SVGGraphicsElement</a> {
+<pre class="idl">interface <b>SVGPathElement</b> : <a>SVGGeometryElement</a> {
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedNumber">SVGAnimatedNumber</a> <a href="paths.html#__svg__SVGPathElement__pathLength">pathLength</a>;
float <a href="paths.html#__svg__SVGPathElement__getTotalLength">getTotalLength</a>();
<a class="idlinterface" href="coords.html#InterfaceSVGPoint">SVGPoint</a> <a href="paths.html#__svg__SVGPathElement__getPointAtLength">getPointAtLength</a>(float distance);
unsigned long <a href="paths.html#__svg__SVGPathElement__getPathSegAtLength">getPathSegAtLength</a>(float distance);
<a class="idlinterface" href="paths.html#InterfaceSVGPathSegClosePath">SVGPathSegClosePath</a> <a href="paths.html#__svg__SVGPathElement__createSVGPathSegClosePath">createSVGPathSegClosePath</a>();
<a class="idlinterface" href="paths.html#InterfaceSVGPathSegMovetoAbs">SVGPathSegMovetoAbs</a> <a href="paths.html#__svg__SVGPathElement__createSVGPathSegMovetoAbs">createSVGPathSegMovetoAbs</a>(float x, float y);
@@ -2508,17 +2508,18 @@ element.
<a class="idlinterface" href="paths.html#InterfaceSVGPathSegLinetoVerticalAbs">SVGPathSegLinetoVerticalAbs</a> <a href="paths.html#__svg__SVGPathElement__createSVGPathSegLinetoVerticalAbs">createSVGPathSegLinetoVerticalAbs</a>(float y);
<a class="idlinterface" href="paths.html#InterfaceSVGPathSegLinetoVerticalRel">SVGPathSegLinetoVerticalRel</a> <a href="paths.html#__svg__SVGPathElement__createSVGPathSegLinetoVerticalRel">createSVGPathSegLinetoVerticalRel</a>(float y);
<a class="idlinterface" href="paths.html#InterfaceSVGPathSegCurvetoCubicSmoothAbs">SVGPathSegCurvetoCubicSmoothAbs</a> <a href="paths.html#__svg__SVGPathElement__createSVGPathSegCurvetoCubicSmoothAbs">createSVGPathSegCurvetoCubicSmoothAbs</a>(float x, float y, float x2, float y2);
<a class="idlinterface" href="paths.html#InterfaceSVGPathSegCurvetoCubicSmoothRel">SVGPathSegCurvetoCubicSmoothRel</a> <a href="paths.html#__svg__SVGPathElement__createSVGPathSegCurvetoCubicSmoothRel">createSVGPathSegCurvetoCubicSmoothRel</a>(float x, float y, float x2, float y2);
<a class="idlinterface" href="paths.html#InterfaceSVGPathSegCurvetoQuadraticSmoothAbs">SVGPathSegCurvetoQuadraticSmoothAbs</a> <a href="paths.html#__svg__SVGPathElement__createSVGPathSegCurvetoQuadraticSmoothAbs">createSVGPathSegCurvetoQuadraticSmoothAbs</a>(float x, float y);
<a class="idlinterface" href="paths.html#InterfaceSVGPathSegCurvetoQuadraticSmoothRel">SVGPathSegCurvetoQuadraticSmoothRel</a> <a href="paths.html#__svg__SVGPathElement__createSVGPathSegCurvetoQuadraticSmoothRel">createSVGPathSegCurvetoQuadraticSmoothRel</a>(float x, float y);
};
-<a>SVGPathElement</a> implements <a>SVGAnimatedPathData</a>;</pre><dl class="interface">
+<a>SVGPathElement</a> implements <a>SVGAnimatedPathData</a>;
+<a>SVGPathElement</a> implements <a>SVGMarkableElement</a>;</pre><dl class="interface">
<dt class="attributes-header">Attributes:</dt>
<dd>
<dl class="attributes">
<dt id="__svg__SVGPathElement__pathLength" class="attribute first-child"><b>pathLength</b><span class="idl-type-parenthetical"> (readonly <a class="idlinterface" href="types.html#InterfaceSVGAnimatedNumber">SVGAnimatedNumber</a>)</span></dt>
<dd class="attribute">
<div>
Corresponds to attribute <a>pathLength</a> on the given <a>'path'</a>
diff --git a/master/shapes.html b/master/shapes.html
--- a/master/shapes.html
+++ b/master/shapes.html
@@ -87,17 +87,17 @@ appropriate values for attributes <a>'rx
<span class="attr-name"><a href="#RectElementHeightAttribute"><span>height</span></a></span>,
<span class="attr-name"><a href="#RectElementRXAttribute"><span>rx</span></a></span>,
<span class="attr-name"><a href="#RectElementRYAttribute"><span>ry</span></a></span>
</td>
</tr>
<tr>
<th>DOM Interface:</th>
<td>
-<pre class="idl">interface <b>SVGRectElement</b> : <a>SVGGraphicsElement</a> {
+<pre class="idl">interface <b>SVGRectElement</b> : <a>SVGGeometryElement</a> {
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGRectElement__x">x</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGRectElement__y">y</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGRectElement__width">width</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGRectElement__height">height</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGRectElement__rx">rx</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGRectElement__ry">ry</a>;
};</pre>
</td>
@@ -678,17 +678,17 @@ wsp:
<h3 id="InterfaceSVGRectElement">Interface SVGRectElement</h3>
<edit:with element='rect'>
The <a>SVGRectElement</a> interface corresponds to the <a>'rect'</a>
element.
-<pre class="idl">interface <b>SVGRectElement</b> : <a>SVGGraphicsElement</a> {
+<pre class="idl">interface <b>SVGRectElement</b> : <a>SVGGeometryElement</a> {
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGRectElement__x">x</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGRectElement__y">y</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGRectElement__width">width</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGRectElement__height">height</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGRectElement__rx">rx</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGRectElement__ry">ry</a>;
};</pre><dl class="interface">
<dt class="attributes-header">Attributes:</dt>
@@ -751,17 +751,17 @@ Corresponds to attribute <a>'ry'</a> on
<h3 id="InterfaceSVGCircleElement">Interface SVGCircleElement</h3>
<edit:with element='circle'>
The <a>SVGCircleElement</a> interface corresponds to the <a>'circle'</a>
element.
-<pre class="idl">interface <b>SVGCircleElement</b> : <a>SVGGraphicsElement</a> {
+<pre class="idl">interface <b>SVGCircleElement</b> : <a>SVGGeometryElement</a> {
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGCircleElement__cx">cx</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGCircleElement__cy">cy</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGCircleElement__r">r</a>;
};</pre><dl class="interface">
<dt class="attributes-header">Attributes:</dt>
<dd>
<dl class="attributes">
@@ -797,17 +797,17 @@ Corresponds to attribute <a>'r'</a> on t
<h3 id="InterfaceSVGEllipseElement">Interface SVGEllipseElement</h3>
<edit:with element='ellipse'>
The <a>SVGEllipseElement</a> interface corresponds to the <a>'ellipse'</a>
element.
-<pre class="idl">interface <b>SVGEllipseElement</b> : <a>SVGGraphicsElement</a> {
+<pre class="idl">interface <b>SVGEllipseElement</b> : <a>SVGGeometryElement</a> {
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGEllipseElement__cx">cx</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGEllipseElement__cy">cy</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGEllipseElement__rx">rx</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGEllipseElement__ry">ry</a>;
};</pre><dl class="interface">
<dt class="attributes-header">Attributes:</dt>
<dd>
<dl class="attributes">
@@ -852,22 +852,24 @@ Corresponds to attribute <a>'ry'</a> on
<h3 id="InterfaceSVGLineElement">Interface SVGLineElement</h3>
<edit:with element='line'>
The <a>SVGLineElement</a> interface corresponds to the <a>'line'</a>
element.
-<pre class="idl">interface <b>SVGLineElement</b> : <a>SVGGraphicsElement</a> {
+<pre class="idl">interface <b>SVGLineElement</b> : <a>SVGGeometryElement</a> {
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGLineElement__x1">x1</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGLineElement__y1">y1</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGLineElement__x2">x2</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="shapes.html#__svg__SVGLineElement__y2">y2</a>;
-};</pre><dl class="interface">
+};
+
+<a>SVGLineElement</a> implements <a>SVGMarkableElement</a>;</pre><dl class="interface">
<dt class="attributes-header">Attributes:</dt>
<dd>
<dl class="attributes">
<dt id="__svg__SVGLineElement__x1" class="attribute first-child"><b>x1</b><span class="idl-type-parenthetical"> (readonly <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a>)</span></dt>
<dd class="attribute">
<div>
Corresponds to attribute <a>'x1'</a> on the given <a>'line'</a> element.
@@ -957,31 +959,33 @@ currently being animated, contains the s
<h3 id="InterfaceSVGPolylineElement">Interface SVGPolylineElement</h3>
<edit:with element='polyline'>
<p>The <a>SVGPolylineElement</a> interface corresponds to the <a>'polyline'</a> element.</p>
-<pre class="idl">interface <b>SVGPolylineElement</b> : <a>SVGGraphicsElement</a> {
+<pre class="idl">interface <b>SVGPolylineElement</b> : <a>SVGGeometryElement</a> {
};
-<a>SVGPolylineElement</a> implements <a>SVGAnimatedPoints</a>;</pre>
+<a>SVGPolylineElement</a> implements <a>SVGAnimatedPoints</a>;
+<a>SVGPolylineElement</a> implements <a>SVGMarkableElement</a>;</pre>
</edit:with>
<h3 id="InterfaceSVGPolygonElement">Interface SVGPolygonElement</h3>
<edit:with element='polygon'>
<p>The <a>SVGPolygonElement</a> interface corresponds to the <a>'polygon'</a> element.</p>
-<pre class="idl">interface <b>SVGPolygonElement</b> : <a>SVGGraphicsElement</a> {
+<pre class="idl">interface <b>SVGPolygonElement</b> : <a>SVGGeometryElement</a> {
};
-<a>SVGPolygonElement</a> implements <a>SVGAnimatedPoints</a>;</pre>
+<a>SVGPolygonElement</a> implements <a>SVGAnimatedPoints</a>;
+<a>SVGPolygonElement</a> implements <a>SVGMarkableElement</a>;</pre>
</edit:with>
</body>
</html>
diff --git a/master/text.html b/master/text.html
--- a/master/text.html
+++ b/master/text.html
@@ -4754,17 +4754,17 @@ index to a UTF-16 code unit or a number
This is for consistency with DOM Level 2 Core, where methods on the
<a>CharacterData</a> interface use UTF-16 code units as indexes and counts
within the character data. Thus for example, if the text content of a
<a>'text'</a> element is a single non-BMP character, such as U+10000, then
invoking <a>SVGTextContentElement::getNumberOfChars</a> on that element
will return 2 since there are two UTF-16 code units (the surrogate pair)
used to represent that one character.
</p>
-<pre class="idl">interface <b>SVGTextContentElement</b> : <a>SVGGraphicsElement</a> {
+<pre class="idl">interface <b>SVGTextContentElement</b> : <a>SVGGeometryElement</a> {
// lengthAdjust Types
const unsigned short <a href="text.html#__svg__SVGTextContentElement__LENGTHADJUST_UNKNOWN">LENGTHADJUST_UNKNOWN</a> = 0;
const unsigned short <a href="text.html#__svg__SVGTextContentElement__LENGTHADJUST_SPACING">LENGTHADJUST_SPACING</a> = 1;
const unsigned short <a href="text.html#__svg__SVGTextContentElement__LENGTHADJUST_SPACINGANDGLYPHS">LENGTHADJUST_SPACINGANDGLYPHS</a> = 2;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedLength">SVGAnimatedLength</a> <a href="text.html#__svg__SVGTextContentElement__textLength">textLength</a>;
readonly attribute <a class="idlinterface" href="types.html#InterfaceSVGAnimatedEnumeration">SVGAnimatedEnumeration</a> <a href="text.html#__svg__SVGTextContentElement__lengthAdjust">lengthAdjust</a>;
diff --git a/master/types.html b/master/types.html
--- a/master/types.html
+++ b/master/types.html
@@ -4485,16 +4485,83 @@ property.</p>
is to directly render graphics into a group.</p>
<pre class="idl">interface <b>SVGGraphicsElement</b> : <a>SVGTransformableElement</a> {
};
<a>SVGGraphicsElement</a> implements <a>SVGTests</a>;</pre>
+<div class="ready-for-wg-review">
+<h3 id="InterfaceSVGGeometryElement">Interface SVGGeometryElement</h3>
+
+<p>Interface <a>SVGGeometryElement</a> represents SVG elements whose rendering
+is defined by geometry and which can be filled and stroked. This includes
+paths, text and the basic shapes.</p>
+
+<pre class="idl">interface <b>SVGGeometryElement</b> : <a>SVGGraphicsElement</a> {
+ bool isPointInFill(<a>SVGPoint</a> point);
+ bool isPointInStroke(<a>SVGPoint</a> point);
+};</pre>
+
+<dl class="interface">
+ <dt class="operations-header">Operations:</dt>
+ <dd>
+ <dl class="attributes">
+ <dt id="__svg__SVGGeometryElement__isPointInFill" class="operation first-child">bool <b>isPointInFill</b>(<a>SVGPoint</a> point)</dt>
+ <dd class="operation">
+ Returns whether the specified point is within the fill of the element.
+ Normal hit testing rules apply; the value of the <a>'pointer-events'</a>
+ property on the element determines whether a point is considered to be
+ within the fill.
+ <dl class="operation">
+ <dt class="parameters-header">Parameters</dt>
+ <dd>
+ <ol class="parameters">
+ <li class="parameter first-child">
+ <div><a>SVGPoint</a> <var>point</var></div>
+ <div>The point to check for intersection with the fill
+ of this element. The <a>SVGPoint</a> is interpreted as a
+ as a point in the user space of this element.</div>
+ </li>
+ </ol>
+ </dd>
+ <dt class="returns-header">Returns</dt>
+ <dd>true if the point is within the fill of this shape,
+ or false otherwise.</dd>
+ </dl>
+ </dd>
+ <dt id="__svg__SVGGeometryElement__isPointInStroke" class="operation">bool <b>isPointInStroke</b>(<a>SVGPoint</a> point)</dt>
+ <dd class="operation">
+ Returns whether the specified point is within the stroke of the element.
+ Normal hit testing rules apply; the value of the <a>'pointer-events'</a>
+ property on the element determines whether a point is considered to be
+ within the stroke.
+ <dl class="operation">
+ <dt class="parameters-header">Parameters</dt>
+ <dd>
+ <ol class="parameters">
+ <li class="parameter first-child">
+ <div><a>SVGPoint</a> <var>point</var></div>
+ <div>The point to check for intersection with the stroke
+ of this element. The <a>SVGPoint</a> is interpreted as a
+ as a point in the user space of this element.</div>
+ </li>
+ </ol>
+ </dd>
+ <dt class="returns-header">Returns</dt>
+ <dd>true if the point is within the stroke of this shape,
+ or false otherwise.</dd>
+ </dl>
+ </dd>
+ </dl>
+ </dd>
+</dl>
+</div>
+
<h3 id="InterfaceSVGDefinitionElement">Interface SVGDefinitionElement</h3>
<p>Interface <a>SVGGraphicsElement</a> represents SVG elements whose primary purpose
is to define a reusable resource.</p>
<pre class="idl">interface <b>SVGDefinitionElement</b> : <a>SVGElement</a> {
};
Received on Friday, 14 September 2012 16:18:06 UTC