12
12
13
13
package org .w3c .dom .svg ;
14
14
15
+ import org .w3c .css .om .unit .CSSUnit ;
15
16
import org .w3c .dom .DOMException ;
16
17
18
+ /**
19
+ * Represents a value that can be a <length>, <percentage> or
20
+ * <number>.
21
+ */
17
22
public interface SVGLength {
23
+
18
24
// Length Unit Types
19
25
short SVG_LENGTHTYPE_UNKNOWN = 0 ;
20
26
short SVG_LENGTHTYPE_NUMBER = 1 ;
@@ -28,21 +34,182 @@ public interface SVGLength {
28
34
short SVG_LENGTHTYPE_PT = 9 ;
29
35
short SVG_LENGTHTYPE_PC = 10 ;
30
36
31
- short getUnitType ();
37
+ /**
38
+ * Get the unit type according to {@link CSSUnit}.
39
+ * <p>
40
+ * Optional attribute.
41
+ * </p>
42
+ *
43
+ * @return the CSS unit type.
44
+ */
45
+ default short getCSSUnitType () {
46
+ return CSSUnit .CSS_INVALID ;
47
+ }
48
+
49
+ /**
50
+ * The type of the value as specified by one of the SVG_LENGTHTYPE_* constants
51
+ * defined on this interface.
52
+ *
53
+ * @return the SVG unit type.
54
+ */
55
+ default short getUnitType () {
56
+ short svgUnit ;
57
+ switch (getCSSUnitType ()) {
58
+ case CSSUnit .CSS_NUMBER :
59
+ svgUnit = SVGLength .SVG_LENGTHTYPE_NUMBER ;
60
+ break ;
61
+ case CSSUnit .CSS_PX :
62
+ svgUnit = SVGLength .SVG_LENGTHTYPE_PX ;
63
+ break ;
64
+ case CSSUnit .CSS_EM :
65
+ svgUnit = SVGLength .SVG_LENGTHTYPE_EMS ;
66
+ break ;
67
+ case CSSUnit .CSS_EX :
68
+ svgUnit = SVGLength .SVG_LENGTHTYPE_EXS ;
69
+ break ;
70
+ case CSSUnit .CSS_IN :
71
+ svgUnit = SVGLength .SVG_LENGTHTYPE_IN ;
72
+ break ;
73
+ case CSSUnit .CSS_CM :
74
+ svgUnit = SVGLength .SVG_LENGTHTYPE_CM ;
75
+ break ;
76
+ case CSSUnit .CSS_MM :
77
+ svgUnit = SVGLength .SVG_LENGTHTYPE_MM ;
78
+ break ;
79
+ case CSSUnit .CSS_PC :
80
+ svgUnit = SVGLength .SVG_LENGTHTYPE_PC ;
81
+ break ;
82
+ case CSSUnit .CSS_PT :
83
+ svgUnit = SVGLength .SVG_LENGTHTYPE_PT ;
84
+ break ;
85
+ case CSSUnit .CSS_PERCENTAGE :
86
+ svgUnit = SVGLength .SVG_LENGTHTYPE_PERCENTAGE ;
87
+ break ;
88
+ default :
89
+ svgUnit = SVGLength .SVG_LENGTHTYPE_UNKNOWN ;
90
+ break ;
91
+ }
92
+ return svgUnit ;
93
+ }
32
94
95
+ /**
96
+ * Gets the SVGLength's value in user units.
97
+ *
98
+ * @return the value in user units.
99
+ */
33
100
float getValue ();
34
101
102
+ /**
103
+ * Sets the SVGLength's value in user units.
104
+ *
105
+ * @param value the value in user units.
106
+ * @throws DOMException NO_MODIFICATION_ALLOWED_ERR if the object is read-only.
107
+ */
35
108
void setValue (float value ) throws DOMException ;
36
109
110
+ /**
111
+ * Gets the numeric factor of the SVGLength's value.
112
+ *
113
+ * @return the numeric value in the current unit.
114
+ */
37
115
float getValueInSpecifiedUnits ();
38
116
117
+ /**
118
+ * Sets the numeric factor of the SVGLength's value.
119
+ *
120
+ * @param valueInSpecifiedUnits the value in the current unit.
121
+ * @throws DOMException NO_MODIFICATION_ALLOWED_ERR if the object is read-only.
122
+ */
39
123
void setValueInSpecifiedUnits (float valueInSpecifiedUnits ) throws DOMException ;
40
124
125
+ /**
126
+ * Gets the SVGLength's value as a string.
127
+ *
128
+ * @return the value as a string.
129
+ */
41
130
String getValueAsString ();
42
131
132
+ /**
133
+ * Sets the SVGLength's value as a string.
134
+ *
135
+ * @param valueAsString the length value as a string.
136
+ * @throws DOMException SYNTAX_ERR if the value is not a valid length.
137
+ * NO_MODIFICATION_ALLOWED_ERR if the object is read-only.
138
+ *
139
+ */
43
140
void setValueAsString (String valueAsString ) throws DOMException ;
44
141
45
- void newValueSpecifiedUnits (short unitType , float valueInSpecifiedUnits );
142
+ /**
143
+ * Sets the SVGLength's value in a typed manner.
144
+ *
145
+ * @param cssUnitType the unit type according to {@link CSSUnit}.
146
+ * @param valueInSpecifiedUnits the value in the given unit.
147
+ * @throws DOMException NOT_SUPPORTED_ERR if the unit is not supported or
148
+ * invalid. NO_MODIFICATION_ALLOWED_ERR if the object is
149
+ * read-only.
150
+ */
151
+ default void newValueSpecifiedCSSUnits (short cssUnitType , float valueInSpecifiedUnits )
152
+ throws DOMException {
153
+ short svgUnit ;
154
+ switch (getCSSUnitType ()) {
155
+ case CSSUnit .CSS_NUMBER :
156
+ svgUnit = SVGLength .SVG_LENGTHTYPE_NUMBER ;
157
+ break ;
158
+ case CSSUnit .CSS_PX :
159
+ svgUnit = SVGLength .SVG_LENGTHTYPE_PX ;
160
+ break ;
161
+ case CSSUnit .CSS_EM :
162
+ svgUnit = SVGLength .SVG_LENGTHTYPE_EMS ;
163
+ break ;
164
+ case CSSUnit .CSS_EX :
165
+ svgUnit = SVGLength .SVG_LENGTHTYPE_EXS ;
166
+ break ;
167
+ case CSSUnit .CSS_IN :
168
+ svgUnit = SVGLength .SVG_LENGTHTYPE_IN ;
169
+ break ;
170
+ case CSSUnit .CSS_CM :
171
+ svgUnit = SVGLength .SVG_LENGTHTYPE_CM ;
172
+ break ;
173
+ case CSSUnit .CSS_MM :
174
+ svgUnit = SVGLength .SVG_LENGTHTYPE_MM ;
175
+ break ;
176
+ case CSSUnit .CSS_PC :
177
+ svgUnit = SVGLength .SVG_LENGTHTYPE_PC ;
178
+ break ;
179
+ case CSSUnit .CSS_PT :
180
+ svgUnit = SVGLength .SVG_LENGTHTYPE_PT ;
181
+ break ;
182
+ case CSSUnit .CSS_PERCENTAGE :
183
+ svgUnit = SVGLength .SVG_LENGTHTYPE_PERCENTAGE ;
184
+ break ;
185
+ default :
186
+ throw new DOMException (DOMException .NOT_SUPPORTED_ERR , "Unsupported CSS unit: "
187
+ + cssUnitType );
188
+ }
189
+ newValueSpecifiedUnits (svgUnit , valueInSpecifiedUnits );
190
+ }
191
+
192
+ /**
193
+ * Sets the SVGLength's value in a typed manner.
194
+ *
195
+ * @param unitType the unit type according to the {@code SVGLength}
196
+ * constants.
197
+ * @param valueInSpecifiedUnits the value in the given unit.
198
+ * @throws DOMException NOT_SUPPORTED_ERR if the unit is not supported or
199
+ * invalid. NO_MODIFICATION_ALLOWED_ERR if the object is
200
+ * read-only.
201
+ */
202
+ void newValueSpecifiedUnits (short unitType , float valueInSpecifiedUnits )
203
+ throws DOMException ;
204
+
205
+ /**
206
+ * Converts this SVGLength's value to a specific unit.
207
+ *
208
+ * @param unitType the unit type according to the {@code SVGLength} constants.
209
+ * @throws DOMException NOT_SUPPORTED_ERR if the unit is not supported or
210
+ * invalid. NO_MODIFICATION_ALLOWED_ERR if the object is
211
+ * read-only.
212
+ */
213
+ void convertToSpecifiedUnits (short unitType ) throws DOMException ;
46
214
47
- void convertToSpecifiedUnits (short unitType );
48
215
}
0 commit comments