Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: Source/core/css/CSSBasicShapes.cpp

Issue 200633005: [CSS Shapes] Remove deprecated shapes (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase against ToR Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 23 matching lines...) Expand all
34 #include "core/css/Pair.h" 34 #include "core/css/Pair.h"
35 #include "platform/Length.h" 35 #include "platform/Length.h"
36 #include "wtf/text/StringBuilder.h" 36 #include "wtf/text/StringBuilder.h"
37 37
38 using namespace WTF; 38 using namespace WTF;
39 39
40 namespace WebCore { 40 namespace WebCore {
41 41
42 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(CSSBasicShape) 42 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(CSSBasicShape)
43 43
44 static String buildRectangleString(const String& x, const String& y, const Strin g& width, const String& height, const String& radiusX, const String& radiusY, co nst String& layoutBox)
45 {
46 const char opening[] = "rectangle(";
47 const char separator[] = ", ";
48 StringBuilder result;
49 // Compute the required capacity in advance to reduce allocations.
50 result.reserveCapacity((sizeof(opening) - 1) + (5 * (sizeof(separator) - 1)) + 1 + x.length() + y.length() + width.length() + height.length() + radiusX.leng th() + radiusY.length() + (layoutBox.isEmpty() ? 0 : layoutBox.length() + 1));
51 result.appendLiteral(opening);
52 result.append(x);
53 result.appendLiteral(separator);
54 result.append(y);
55 result.appendLiteral(separator);
56 result.append(width);
57 result.appendLiteral(separator);
58 result.append(height);
59 if (!radiusX.isNull()) {
60 result.appendLiteral(separator);
61 result.append(radiusX);
62 if (!radiusY.isNull()) {
63 result.appendLiteral(separator);
64 result.append(radiusY);
65 }
66 }
67 if (!layoutBox.isEmpty()) {
68 result.append(' ');
69 result.append(layoutBox);
70 }
71 result.append(')');
72 return result.toString();
73 }
74
75 String CSSBasicShapeRectangle::cssText() const
76 {
77 return buildRectangleString(m_x->cssText(),
78 m_y->cssText(),
79 m_width->cssText(),
80 m_height->cssText(),
81 m_radiusX.get() ? m_radiusX->cssText() : String(),
82 m_radiusY.get() ? m_radiusY->cssText() : String(),
83 m_layoutBox ? m_layoutBox->cssText() : String());
84 }
85
86 bool CSSBasicShapeRectangle::equals(const CSSBasicShape& shape) const
87 {
88 if (shape.type() != CSSBasicShapeRectangleType)
89 return false;
90
91 const CSSBasicShapeRectangle& other = static_cast<const CSSBasicShapeRectang le&>(shape);
92 return compareCSSValuePtr(m_x, other.m_x)
93 && compareCSSValuePtr(m_y, other.m_y)
94 && compareCSSValuePtr(m_width, other.m_width)
95 && compareCSSValuePtr(m_height, other.m_height)
96 && compareCSSValuePtr(m_radiusX, other.m_radiusX)
97 && compareCSSValuePtr(m_radiusY, other.m_radiusY)
98 && compareCSSValuePtr(m_layoutBox, other.m_layoutBox);
99 }
100
101 void CSSBasicShapeRectangle::trace(Visitor* visitor)
102 {
103 visitor->trace(m_y);
104 visitor->trace(m_x);
105 visitor->trace(m_width);
106 visitor->trace(m_height);
107 visitor->trace(m_radiusX);
108 visitor->trace(m_radiusY);
109 CSSBasicShape::trace(visitor);
110 }
111
112 static String buildCircleString(const String& radius, const String& centerX, con st String& centerY, const String& layoutBox) 44 static String buildCircleString(const String& radius, const String& centerX, con st String& centerY, const String& layoutBox)
113 { 45 {
114 char at[] = "at"; 46 char at[] = "at";
115 char separator[] = " "; 47 char separator[] = " ";
116 StringBuilder result; 48 StringBuilder result;
117 result.appendLiteral("circle("); 49 result.appendLiteral("circle(");
118 if (!radius.isNull()) 50 if (!radius.isNull())
119 result.append(radius); 51 result.append(radius);
120 52
121 if (!centerX.isNull() || !centerY.isNull()) { 53 if (!centerX.isNull() || !centerY.isNull()) {
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 } 133 }
202 134
203 void CSSBasicShapeCircle::trace(Visitor* visitor) 135 void CSSBasicShapeCircle::trace(Visitor* visitor)
204 { 136 {
205 visitor->trace(m_centerX); 137 visitor->trace(m_centerX);
206 visitor->trace(m_centerY); 138 visitor->trace(m_centerY);
207 visitor->trace(m_radius); 139 visitor->trace(m_radius);
208 CSSBasicShape::trace(visitor); 140 CSSBasicShape::trace(visitor);
209 } 141 }
210 142
211 static String buildDeprecatedCircleString(const String& x, const String& y, cons t String& radius)
212 {
213 return "circle(" + x + ", " + y + ", " + radius + ')';
214 }
215
216 String CSSDeprecatedBasicShapeCircle::cssText() const
217 {
218 return buildDeprecatedCircleString(m_centerX->cssText(), m_centerY->cssText( ), m_radius->cssText());
219 }
220
221 bool CSSDeprecatedBasicShapeCircle::equals(const CSSBasicShape& shape) const
222 {
223 if (shape.type() != CSSDeprecatedBasicShapeCircleType)
224 return false;
225
226 const CSSDeprecatedBasicShapeCircle& other = static_cast<const CSSDeprecated BasicShapeCircle&>(shape);
227 return compareCSSValuePtr(m_centerX, other.m_centerX)
228 && compareCSSValuePtr(m_centerY, other.m_centerY)
229 && compareCSSValuePtr(m_radius, other.m_radius);
230 }
231
232 void CSSDeprecatedBasicShapeCircle::trace(Visitor* visitor)
233 {
234 visitor->trace(m_centerX);
235 visitor->trace(m_centerY);
236 visitor->trace(m_radius);
237 CSSBasicShape::trace(visitor);
238 }
239
240 static String buildEllipseString(const String& radiusX, const String& radiusY, c onst String& centerX, const String& centerY, const String& box) 143 static String buildEllipseString(const String& radiusX, const String& radiusY, c onst String& centerX, const String& centerY, const String& box)
241 { 144 {
242 char at[] = "at"; 145 char at[] = "at";
243 char separator[] = " "; 146 char separator[] = " ";
244 StringBuilder result; 147 StringBuilder result;
245 result.appendLiteral("ellipse("); 148 result.appendLiteral("ellipse(");
246 bool needsSeparator = false; 149 bool needsSeparator = false;
247 if (!radiusX.isNull()) { 150 if (!radiusX.isNull()) {
248 result.append(radiusX); 151 result.append(radiusX);
249 needsSeparator = true; 152 needsSeparator = true;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 202
300 void CSSBasicShapeEllipse::trace(Visitor* visitor) 203 void CSSBasicShapeEllipse::trace(Visitor* visitor)
301 { 204 {
302 visitor->trace(m_centerX); 205 visitor->trace(m_centerX);
303 visitor->trace(m_centerY); 206 visitor->trace(m_centerY);
304 visitor->trace(m_radiusX); 207 visitor->trace(m_radiusX);
305 visitor->trace(m_radiusY); 208 visitor->trace(m_radiusY);
306 CSSBasicShape::trace(visitor); 209 CSSBasicShape::trace(visitor);
307 } 210 }
308 211
309 static String buildDeprecatedEllipseString(const String& x, const String& y, con st String& radiusX, const String& radiusY)
310 {
311 return "ellipse(" + x + ", " + y + ", " + radiusX + ", " + radiusY + ')';
312 }
313
314 String CSSDeprecatedBasicShapeEllipse::cssText() const
315 {
316 return buildDeprecatedEllipseString(m_centerX->cssText(), m_centerY->cssText (), m_radiusX->cssText(), m_radiusY->cssText());
317 }
318
319 bool CSSDeprecatedBasicShapeEllipse::equals(const CSSBasicShape& shape) const
320 {
321 if (shape.type() != CSSDeprecatedBasicShapeEllipseType)
322 return false;
323
324 const CSSDeprecatedBasicShapeEllipse& other = static_cast<const CSSDeprecate dBasicShapeEllipse&>(shape);
325 return compareCSSValuePtr(m_centerX, other.m_centerX)
326 && compareCSSValuePtr(m_centerY, other.m_centerY)
327 && compareCSSValuePtr(m_radiusX, other.m_radiusX)
328 && compareCSSValuePtr(m_radiusY, other.m_radiusY);
329 }
330
331 void CSSDeprecatedBasicShapeEllipse::trace(Visitor* visitor)
332 {
333 visitor->trace(m_centerX);
334 visitor->trace(m_centerY);
335 visitor->trace(m_radiusX);
336 visitor->trace(m_radiusY);
337 CSSBasicShape::trace(visitor);
338 }
339
340 static String buildPolygonString(const WindRule& windRule, const Vector<String>& points, const String& layoutBox) 212 static String buildPolygonString(const WindRule& windRule, const Vector<String>& points, const String& layoutBox)
341 { 213 {
342 ASSERT(!(points.size() % 2)); 214 ASSERT(!(points.size() % 2));
343 215
344 StringBuilder result; 216 StringBuilder result;
345 const char evenOddOpening[] = "polygon(evenodd, "; 217 const char evenOddOpening[] = "polygon(evenodd, ";
346 const char nonZeroOpening[] = "polygon("; 218 const char nonZeroOpening[] = "polygon(";
347 const char commaSeparator[] = ", "; 219 const char commaSeparator[] = ", ";
348 COMPILE_ASSERT(sizeof(evenOddOpening) > sizeof(nonZeroOpening), polygon_stri ng_openings_have_same_length); 220 COMPILE_ASSERT(sizeof(evenOddOpening) > sizeof(nonZeroOpening), polygon_stri ng_openings_have_same_length);
349 221
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 277
406 return compareCSSValueVector(m_values, rhs.m_values); 278 return compareCSSValueVector(m_values, rhs.m_values);
407 } 279 }
408 280
409 void CSSBasicShapePolygon::trace(Visitor* visitor) 281 void CSSBasicShapePolygon::trace(Visitor* visitor)
410 { 282 {
411 visitor->trace(m_values); 283 visitor->trace(m_values);
412 CSSBasicShape::trace(visitor); 284 CSSBasicShape::trace(visitor);
413 } 285 }
414 286
415 static String buildInsetRectangleString(const String& top, const String& right, const String& bottom, const String& left, const String& radiusX, const String& r adiusY, const String& layoutBox)
416 {
417 const char opening[] = "inset-rectangle(";
418 const char separator[] = ", ";
419 StringBuilder result;
420 // Compute the required capacity in advance to reduce allocations.
421 result.reserveCapacity((sizeof(opening) - 1) + (5 * (sizeof(separator) - 1)) + 1 + top.length() + right.length() + bottom.length() + left.length() + radiusX .length() + radiusY.length() + (layoutBox.isEmpty() ? 0 : layoutBox.length() + 1 ));
422 result.appendLiteral(opening);
423 result.append(top);
424 result.appendLiteral(separator);
425 result.append(right);
426 result.appendLiteral(separator);
427 result.append(bottom);
428 result.appendLiteral(separator);
429 result.append(left);
430 if (!radiusX.isNull()) {
431 result.appendLiteral(separator);
432 result.append(radiusX);
433 if (!radiusY.isNull()) {
434 result.appendLiteral(separator);
435 result.append(radiusY);
436 }
437 }
438 result.append(')');
439
440 if (!layoutBox.isEmpty()) {
441 result.append(' ');
442 result.append(layoutBox);
443 }
444
445 return result.toString();
446 }
447
448 String CSSBasicShapeInsetRectangle::cssText() const
449 {
450 return buildInsetRectangleString(m_top->cssText(),
451 m_right->cssText(),
452 m_bottom->cssText(),
453 m_left->cssText(),
454 m_radiusX.get() ? m_radiusX->cssText() : String(),
455 m_radiusY.get() ? m_radiusY->cssText() : String(),
456 m_layoutBox ? m_layoutBox->cssText() : String());
457 }
458
459 bool CSSBasicShapeInsetRectangle::equals(const CSSBasicShape& shape) const
460 {
461 if (shape.type() != CSSBasicShapeInsetRectangleType)
462 return false;
463
464 const CSSBasicShapeInsetRectangle& other = static_cast<const CSSBasicShapeIn setRectangle&>(shape);
465 return compareCSSValuePtr(m_top, other.m_top)
466 && compareCSSValuePtr(m_right, other.m_right)
467 && compareCSSValuePtr(m_bottom, other.m_bottom)
468 && compareCSSValuePtr(m_left, other.m_left)
469 && compareCSSValuePtr(m_radiusX, other.m_radiusX)
470 && compareCSSValuePtr(m_radiusY, other.m_radiusY)
471 && compareCSSValuePtr(m_layoutBox, other.m_layoutBox);
472 }
473
474 void CSSBasicShapeInsetRectangle::trace(Visitor* visitor)
475 {
476 visitor->trace(m_right);
477 visitor->trace(m_top);
478 visitor->trace(m_bottom);
479 visitor->trace(m_left);
480 visitor->trace(m_radiusX);
481 visitor->trace(m_radiusY);
482 CSSBasicShape::trace(visitor);
483 }
484
485 static String buildInsetString(const String& top, const String& right, const Str ing& bottom, const String& left, 287 static String buildInsetString(const String& top, const String& right, const Str ing& bottom, const String& left,
486 const String& topLeftRadiusWidth, const String& topLeftRadiusHeight, 288 const String& topLeftRadiusWidth, const String& topLeftRadiusHeight,
487 const String& topRightRadiusWidth, const String& topRightRadiusHeight, 289 const String& topRightRadiusWidth, const String& topRightRadiusHeight,
488 const String& bottomRightRadiusWidth, const String& bottomRightRadiusHeight, 290 const String& bottomRightRadiusWidth, const String& bottomRightRadiusHeight,
489 const String& bottomLeftRadiusWidth, const String& bottomLeftRadiusHeight) 291 const String& bottomLeftRadiusWidth, const String& bottomLeftRadiusHeight)
490 { 292 {
491 char opening[] = "inset("; 293 char opening[] = "inset(";
492 char separator[] = " "; 294 char separator[] = " ";
493 char cornersSeparator[] = "round"; 295 char cornersSeparator[] = "round";
494 StringBuilder result; 296 StringBuilder result;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 visitor->trace(m_left); 404 visitor->trace(m_left);
603 visitor->trace(m_topLeftRadius); 405 visitor->trace(m_topLeftRadius);
604 visitor->trace(m_topRightRadius); 406 visitor->trace(m_topRightRadius);
605 visitor->trace(m_bottomRightRadius); 407 visitor->trace(m_bottomRightRadius);
606 visitor->trace(m_bottomLeftRadius); 408 visitor->trace(m_bottomLeftRadius);
607 CSSBasicShape::trace(visitor); 409 CSSBasicShape::trace(visitor);
608 } 410 }
609 411
610 } // namespace WebCore 412 } // namespace WebCore
611 413
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698