OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. | 2 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above | 8 * 1. Redistributions of source code must retain the above |
9 * copyright notice, this list of conditions and the following | 9 * copyright notice, this list of conditions and the following |
10 * disclaimer. | 10 * disclaimer. |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 return buildCircleString(m_radius.get() ? m_radius->serializeResolvingVariab
les(variables) : String(), | 166 return buildCircleString(m_radius.get() ? m_radius->serializeResolvingVariab
les(variables) : String(), |
167 m_centerX.get() ? m_centerX->serializeResolvingVariables(variables) : St
ring(), | 167 m_centerX.get() ? m_centerX->serializeResolvingVariables(variables) : St
ring(), |
168 m_centerY.get() ? m_centerY->serializeResolvingVariables(variables) : St
ring(), | 168 m_centerY.get() ? m_centerY->serializeResolvingVariables(variables) : St
ring(), |
169 m_layoutBox.get() ? m_layoutBox->serializeResolvingVariables(variables)
: String()); | 169 m_layoutBox.get() ? m_layoutBox->serializeResolvingVariables(variables)
: String()); |
170 } | 170 } |
171 | 171 |
172 bool CSSBasicShapeCircle::hasVariableReference() const | 172 bool CSSBasicShapeCircle::hasVariableReference() const |
173 { | 173 { |
174 return (m_centerX && m_centerX->hasVariableReference()) | 174 return (m_centerX && m_centerX->hasVariableReference()) |
175 || (m_centerY && m_centerY->hasVariableReference()) | 175 || (m_centerY && m_centerY->hasVariableReference()) |
176 || (m_radius && m_radius->hasVariableReference()); | 176 || (m_radius && m_radius->hasVariableReference()) |
| 177 || (m_layoutBox && m_layoutBox->hasVariableReference()); |
177 } | 178 } |
178 | 179 |
179 static String buildDeprecatedCircleString(const String& x, const String& y, cons
t String& radius) | 180 static String buildDeprecatedCircleString(const String& x, const String& y, cons
t String& radius) |
180 { | 181 { |
181 return "circle(" + x + ", " + y + ", " + radius + ')'; | 182 return "circle(" + x + ", " + y + ", " + radius + ')'; |
182 } | 183 } |
183 | 184 |
184 String CSSDeprecatedBasicShapeCircle::cssText() const | 185 String CSSDeprecatedBasicShapeCircle::cssText() const |
185 { | 186 { |
186 return buildDeprecatedCircleString(m_centerX->cssText(), m_centerY->cssText(
), m_radius->cssText()); | 187 return buildDeprecatedCircleString(m_centerX->cssText(), m_centerY->cssText(
), m_radius->cssText()); |
(...skipping 18 matching lines...) Expand all Loading... |
205 } | 206 } |
206 | 207 |
207 bool CSSDeprecatedBasicShapeCircle::hasVariableReference() const | 208 bool CSSDeprecatedBasicShapeCircle::hasVariableReference() const |
208 { | 209 { |
209 return m_centerX->hasVariableReference() | 210 return m_centerX->hasVariableReference() |
210 || m_centerY->hasVariableReference() | 211 || m_centerY->hasVariableReference() |
211 || m_radius->hasVariableReference() | 212 || m_radius->hasVariableReference() |
212 || (m_layoutBox && m_layoutBox->hasVariableReference()); | 213 || (m_layoutBox && m_layoutBox->hasVariableReference()); |
213 } | 214 } |
214 | 215 |
215 static String buildEllipseString(const String& x, const String& y, const String&
radiusX, const String& radiusY, const String& layoutBox) | 216 static String buildEllipseString(const String& radiusX, const String& radiusY, c
onst String& centerX, const String& centerY, const String& box) |
216 { | 217 { |
| 218 char at[] = "at"; |
| 219 char separator[] = " "; |
217 StringBuilder result; | 220 StringBuilder result; |
218 const char separator[] = ", "; | |
219 result.appendLiteral("ellipse("); | 221 result.appendLiteral("ellipse("); |
220 result.append(x); | 222 bool needsSeparator = false; |
221 result.appendLiteral(separator); | 223 if (!radiusX.isNull()) { |
222 result.append(y); | 224 result.append(radiusX); |
223 result.appendLiteral(separator); | 225 needsSeparator = true; |
224 result.append(radiusX); | |
225 result.appendLiteral(separator); | |
226 result.append(radiusY); | |
227 if (!layoutBox.isEmpty()) { | |
228 result.append(' '); | |
229 result.append(layoutBox); | |
230 } | 226 } |
231 result.append(')'); | 227 if (!radiusY.isNull()) { |
| 228 if (needsSeparator) |
| 229 result.appendLiteral(separator); |
| 230 result.append(radiusY); |
| 231 needsSeparator = true; |
| 232 } |
| 233 |
| 234 if (!centerX.isNull() || !centerY.isNull()) { |
| 235 if (needsSeparator) |
| 236 result.appendLiteral(separator); |
| 237 result.appendLiteral(at); |
| 238 result.appendLiteral(separator); |
| 239 result.append(centerX); |
| 240 result.appendLiteral(separator); |
| 241 result.append(centerY); |
| 242 } |
| 243 result.append(")"); |
| 244 if (box.length()) { |
| 245 result.appendLiteral(separator); |
| 246 result.append(box); |
| 247 } |
232 return result.toString(); | 248 return result.toString(); |
233 } | 249 } |
234 | 250 |
235 String CSSBasicShapeEllipse::cssText() const | 251 String CSSBasicShapeEllipse::cssText() const |
236 { | 252 { |
237 return buildEllipseString(m_centerX->cssText(), | 253 return buildEllipseString(m_radiusX ? m_radiusX->cssText() : String(), |
238 m_centerY->cssText(), m_radiusX->cssText(), | 254 m_radiusY ? m_radiusY->cssText() : String(), |
239 m_radiusY->cssText(), | 255 m_centerX ? m_centerX->cssText() : String(), |
| 256 m_centerY ? m_centerY->cssText() : String(), |
240 m_layoutBox ? m_layoutBox->cssText() : String()); | 257 m_layoutBox ? m_layoutBox->cssText() : String()); |
241 } | 258 } |
242 | 259 |
243 bool CSSBasicShapeEllipse::equals(const CSSBasicShape& shape) const | 260 bool CSSBasicShapeEllipse::equals(const CSSBasicShape& shape) const |
244 { | 261 { |
245 if (shape.type() != CSSBasicShapeEllipseType) | 262 if (shape.type() != CSSBasicShapeEllipseType) |
246 return false; | 263 return false; |
247 | 264 |
248 const CSSBasicShapeEllipse& other = static_cast<const CSSBasicShapeEllipse&>
(shape); | 265 const CSSBasicShapeEllipse& other = static_cast<const CSSBasicShapeEllipse&>
(shape); |
249 return compareCSSValuePtr(m_centerX, other.m_centerX) | 266 return compareCSSValuePtr(m_centerX, other.m_centerX) |
250 && compareCSSValuePtr(m_centerY, other.m_centerY) | 267 && compareCSSValuePtr(m_centerY, other.m_centerY) |
251 && compareCSSValuePtr(m_radiusX, other.m_radiusX) | 268 && compareCSSValuePtr(m_radiusX, other.m_radiusX) |
252 && compareCSSValuePtr(m_radiusY, other.m_radiusY) | 269 && compareCSSValuePtr(m_radiusY, other.m_radiusY) |
253 && compareCSSValuePtr(m_layoutBox, other.m_layoutBox); | 270 && compareCSSValuePtr(m_layoutBox, other.m_layoutBox); |
254 } | 271 } |
255 | 272 |
256 String CSSBasicShapeEllipse::serializeResolvingVariables(const HashMap<AtomicStr
ing, String>& variables) const | 273 String CSSBasicShapeEllipse::serializeResolvingVariables(const HashMap<AtomicStr
ing, String>& variables) const |
257 { | 274 { |
258 return buildEllipseString(m_centerX->serializeResolvingVariables(variables), | 275 return buildEllipseString(m_radiusX.get() ? m_radiusX->serializeResolvingVar
iables(variables) : String(), |
259 m_centerY->serializeResolvingVariables(variables), | 276 m_radiusY.get() ? m_radiusY->serializeResolvingVariables(variables) : St
ring(), |
260 m_radiusX->serializeResolvingVariables(variables), | 277 m_centerX.get() ? m_centerX->serializeResolvingVariables(variables) : St
ring(), |
261 m_radiusY->serializeResolvingVariables(variables), | 278 m_centerY.get() ? m_centerY->serializeResolvingVariables(variables) : St
ring(), |
262 m_layoutBox ? m_layoutBox->serializeResolvingVariables(variables) : Stri
ng()); | 279 m_layoutBox.get() ? m_layoutBox->serializeResolvingVariables(variables)
: String()); |
263 } | 280 } |
264 | 281 |
265 bool CSSBasicShapeEllipse::hasVariableReference() const | 282 bool CSSBasicShapeEllipse::hasVariableReference() const |
266 { | 283 { |
| 284 return (m_centerX && m_centerX->hasVariableReference()) |
| 285 || (m_centerY && m_centerY->hasVariableReference()) |
| 286 || (m_radiusX && m_radiusX->hasVariableReference()) |
| 287 || (m_radiusY && m_radiusY->hasVariableReference()) |
| 288 || (m_layoutBox && m_layoutBox->hasVariableReference()); |
| 289 } |
| 290 |
| 291 static String buildDeprecatedEllipseString(const String& x, const String& y, con
st String& radiusX, const String& radiusY) |
| 292 { |
| 293 return "ellipse(" + x + ", " + y + ", " + radiusX + ", " + radiusY + ')'; |
| 294 } |
| 295 |
| 296 String CSSDeprecatedBasicShapeEllipse::cssText() const |
| 297 { |
| 298 return buildDeprecatedEllipseString(m_centerX->cssText(), m_centerY->cssText
(), m_radiusX->cssText(), m_radiusY->cssText()); |
| 299 } |
| 300 |
| 301 bool CSSDeprecatedBasicShapeEllipse::equals(const CSSBasicShape& shape) const |
| 302 { |
| 303 if (shape.type() != CSSDeprecatedBasicShapeEllipseType) |
| 304 return false; |
| 305 |
| 306 const CSSDeprecatedBasicShapeEllipse& other = static_cast<const CSSDeprecate
dBasicShapeEllipse&>(shape); |
| 307 return compareCSSValuePtr(m_centerX, other.m_centerX) |
| 308 && compareCSSValuePtr(m_centerY, other.m_centerY) |
| 309 && compareCSSValuePtr(m_radiusX, other.m_radiusX) |
| 310 && compareCSSValuePtr(m_radiusY, other.m_radiusY); |
| 311 } |
| 312 |
| 313 String CSSDeprecatedBasicShapeEllipse::serializeResolvingVariables(const HashMap
<AtomicString, String>& variables) const |
| 314 { |
| 315 return buildDeprecatedEllipseString(m_centerX->serializeResolvingVariables(v
ariables), |
| 316 m_centerY->serializeResolvingVariables(variables), |
| 317 m_radiusX->serializeResolvingVariables(variables), |
| 318 m_radiusY->serializeResolvingVariables(variables)); |
| 319 } |
| 320 |
| 321 bool CSSDeprecatedBasicShapeEllipse::hasVariableReference() const |
| 322 { |
267 return m_centerX->hasVariableReference() | 323 return m_centerX->hasVariableReference() |
268 || m_centerY->hasVariableReference() | 324 || m_centerY->hasVariableReference() |
269 || m_radiusX->hasVariableReference() | 325 || m_radiusX->hasVariableReference() |
270 || m_radiusY->hasVariableReference() | 326 || m_radiusY->hasVariableReference() |
271 || (m_layoutBox && m_layoutBox->hasVariableReference()); | 327 || (m_layoutBox && m_layoutBox->hasVariableReference()); |
272 } | 328 } |
273 | 329 |
274 static String buildPolygonString(const WindRule& windRule, const Vector<String>&
points, const String& layoutBox) | 330 static String buildPolygonString(const WindRule& windRule, const Vector<String>&
points, const String& layoutBox) |
275 { | 331 { |
276 ASSERT(!(points.size() % 2)); | 332 ASSERT(!(points.size() % 2)); |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 || m_right->hasVariableReference() | 495 || m_right->hasVariableReference() |
440 || m_bottom->hasVariableReference() | 496 || m_bottom->hasVariableReference() |
441 || m_left->hasVariableReference() | 497 || m_left->hasVariableReference() |
442 || (m_radiusX.get() && m_radiusX->hasVariableReference()) | 498 || (m_radiusX.get() && m_radiusX->hasVariableReference()) |
443 || (m_radiusY.get() && m_radiusY->hasVariableReference()) | 499 || (m_radiusY.get() && m_radiusY->hasVariableReference()) |
444 || (m_layoutBox && m_layoutBox->hasVariableReference()); | 500 || (m_layoutBox && m_layoutBox->hasVariableReference()); |
445 } | 501 } |
446 | 502 |
447 } // namespace WebCore | 503 } // namespace WebCore |
448 | 504 |
OLD | NEW |