1 /**********************************************
2 * Copyright (C) 2010 Lukas Laag
3 * This file is part of lib-gwt-svg.
4 *
5 * libgwtsvg is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU Lesser General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * libgwtsvg is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public License
16 * along with libgwtsvg. If not, see http://www.gnu.org/licenses/
17 **********************************************/
18 /*
19 * Copyright (c) 2004 World Wide Web Consortium,
20 *
21 * (Massachusetts Institute of Technology, European Research Consortium for
22 * Informatics and Mathematics, Keio University). All Rights Reserved. This
23 * work is distributed under the W3C(r) Software License [1] in the hope that
24 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
25 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
26 *
27 * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
28 */
29
30 package org.vectomatic.dom.svg.itf;
31
32 import org.vectomatic.dom.svg.OMSVGPathSegList;
33
34 /**
35 * <p>The SVGAnimatedPathData interface supports elements which have a <span
36 * class='attr-name'>'d'</span> attribute which holds SVG path data, and supports
37 * the ability to animate that attribute.</p> <p>The {@link org.vectomatic.dom.svg.itf.ISVGAnimatedPathData}
38 * interface provides two lists to access and modify the base (i.e., static)
39 * contents of the <span class='attr-name'>'d'</span> attribute:</p> <ul>
40 * <li>DOM attribute {@link org.vectomatic.dom.svg.itf.ISVGAnimatedPathData#getPathSegList()}
41 * provides access to the static/base contents of the <span class='attr-name'>'d'</span>
42 * attribute in a form which matches one-for-one with SVG's syntax.</li>
43 * <li>DOM attribute {@link org.vectomatic.dom.svg.itf.ISVGAnimatedPathData#getNormalizedPathSegList()}
44 * provides normalized access to the static/base contents of the <span class='attr-name'>'d'</span>
45 * attribute where all path data commands are expressed in terms of the
46 * following subset of {@link org.vectomatic.dom.svg.OMSVGPathSeg} types:
47 * SVG_PATHSEG_MOVETO_ABS (M), SVG_PATHSEG_LINETO_ABS (L), SVG_PATHSEG_CURVETO_CUBIC_ABS
48 * (C) and SVG_PATHSEG_CLOSEPATH (z).</li> </ul> <p>and two lists to access
49 * the current animated values of the <span class='attr-name'>'d'</span> attribute:</p>
50 * <ul> <li>DOM attribute {@link org.vectomatic.dom.svg.itf.ISVGAnimatedPathData#getAnimatedPathSegList()}
51 * provides access to the current animated contents of the <span class='attr-name'>'d'</span>
52 * attribute in a form which matches one-for-one with SVG's syntax.</li>
53 * <li>DOM attribute {@link org.vectomatic.dom.svg.itf.ISVGAnimatedPathData#getAnimatedNormalizedPathSegList()}
54 * provides normalized access to the current animated contents of the <span
55 * class='attr-name'>'d'</span> attribute where all path data commands are
56 * expressed in terms of the following subset of {@link org.vectomatic.dom.svg.OMSVGPathSeg}
57 * types: SVG_PATHSEG_MOVETO_ABS (M), SVG_PATHSEG_LINETO_ABS (L), SVG_PATHSEG_CURVETO_CUBIC_ABS
58 * (C) and SVG_PATHSEG_CLOSEPATH (z).</li> </ul> <p>Each of the two lists
59 * are always kept synchronized. Modifications to one list will immediately
60 * cause the corresponding list to be modified. Modifications to {@link org.vectomatic.dom.svg.itf.ISVGAnimatedPathData#getNormalizedPathSegList()}
61 * might cause entries in {@link org.vectomatic.dom.svg.itf.ISVGAnimatedPathData#getPathSegList()}
62 * to be broken into a set of normalized path segments.</p> <p>Additionally,
63 * the <code>path/d</code> attribute on the <a href='http://www.w3.org/TR/SVG11/paths.html#PathElement'
64 * title='path element specification'>path</a> element accessed via the XML
65 * DOM (e.g., using the <code>getAttribute()</code> method call) will reflect
66 * any changes made to {@link org.vectomatic.dom.svg.itf.ISVGAnimatedPathData#getPathSegList()}
67 * or {@link org.vectomatic.dom.svg.itf.ISVGAnimatedPathData#getNormalizedPathSegList()}.</p>
68 */
69 public interface ISVGAnimatedPathData {
70 /**
71 * Provides access to the base (i.e., static) contents of the <span class='attr-name'>'d'</span>
72 * attribute in a form which matches one-for-one with SVG's syntax. Thus,
73 * if the <span class='attr-name'>'d'</span> attribute has an "absolute moveto
74 * (M)" and an "absolute arcto (A)" command, then {@link org.vectomatic.dom.svg.itf.ISVGAnimatedPathData#getPathSegList()}
75 * will have two entries: a SVG_PATHSEG_MOVETO_ABS and a SVG_PATHSEG_ARC_ABS.
76 */
77 public OMSVGPathSegList getPathSegList();
78 /**
79 * <p>Provides access to the base (i.e., static) contents of the <span class='attr-name'>'d'</span>
80 * attribute in a form where all path data commands are expressed in terms
81 * of the following subset of {@link org.vectomatic.dom.svg.OMSVGPathSeg}
82 * types: SVG_PATHSEG_MOVETO_ABS (M), SVG_PATHSEG_LINETO_ABS (L), SVG_PATHSEG_CURVETO_CUBIC_ABS
83 * (C) and SVG_PATHSEG_CLOSEPATH (z). Thus, if the <span class='attr-name'>'d'</span>
84 * attribute has an "absolute moveto (M)" and an "absolute arcto (A)" command,
85 * then pathSegList will have one SVG_PATHSEG_MOVETO_ABS entry followed by
86 * a series of SVG_PATHSEG_LINETO_ABS entries which approximate the arc. This
87 * alternate representation is available to provide a simpler interface to
88 * developers who would benefit from a more limited set of commands.</p> <p>The
89 * only valid {@link org.vectomatic.dom.svg.OMSVGPathSeg} types are SVG_PATHSEG_MOVETO_ABS
90 * (M), SVG_PATHSEG_LINETO_ABS (L), SVG_PATHSEG_CURVETO_CUBIC_ABS (C) and
91 * SVG_PATHSEG_CLOSEPATH (z).</p>
92 */
93 public OMSVGPathSegList getNormalizedPathSegList();
94 /**
95 * Provides access to the current animated contents of the <span class='attr-name'>'d'</span>
96 * attribute in a form which matches one-for-one with SVG's syntax. If the
97 * given attribute or property is being animated, contains the current animated
98 * value of the attribute or property, and both the object itself and its
99 * contents are read only. If the given attribute or property is not currently
100 * being animated, contains the same value as {@link org.vectomatic.dom.svg.itf.ISVGAnimatedPathData#getPathSegList()}.
101 */
102 public OMSVGPathSegList getAnimatedPathSegList();
103 /**
104 * Provides access to the current animated contents of the <span class='attr-name'>'d'</span>
105 * attribute in a form where all path data commands are expressed in terms
106 * of the following subset of {@link org.vectomatic.dom.svg.OMSVGPathSeg}
107 * types: SVG_PATHSEG_MOVETO_ABS (M), SVG_PATHSEG_LINETO_ABS (L), SVG_PATHSEG_CURVETO_CUBIC_ABS
108 * (C) and SVG_PATHSEG_CLOSEPATH (z). If the given attribute or property is
109 * being animated, contains the current animated value of the attribute or
110 * property, and both the object itself and its contents are read only. If
111 * the given attribute or property is not currently being animated, contains
112 * the same value as {@link org.vectomatic.dom.svg.itf.ISVGAnimatedPathData#getNormalizedPathSegList()}.
113 */
114 public OMSVGPathSegList getAnimatedNormalizedPathSegList();
115 }