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

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

Issue 1303173007: Oilpan: Unship Oilpan from CSSValues Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/css/CSSBasicShapes.h ('k') | Source/core/css/CSSBorderImage.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 21 matching lines...) Expand all
32 32
33 #include "core/css/CSSValuePool.h" 33 #include "core/css/CSSValuePool.h"
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 blink { 40 namespace blink {
41 41
42 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(CSSBasicShape)
43
44 static String buildCircleString(const String& radius, const String& centerX, con st String& centerY, const String& box) 42 static String buildCircleString(const String& radius, const String& centerX, con st String& centerY, const String& box)
45 { 43 {
46 char at[] = "at"; 44 char at[] = "at";
47 char separator[] = " "; 45 char separator[] = " ";
48 StringBuilder result; 46 StringBuilder result;
49 result.appendLiteral("circle("); 47 result.appendLiteral("circle(");
50 if (!radius.isNull()) 48 if (!radius.isNull())
51 result.append(radius); 49 result.append(radius);
52 50
53 if (!centerX.isNull() || !centerY.isNull()) { 51 if (!centerX.isNull() || !centerY.isNull()) {
(...skipping 14 matching lines...) Expand all
68 } 66 }
69 67
70 static String serializePositionOffset(const Pair& offset, const Pair& other) 68 static String serializePositionOffset(const Pair& offset, const Pair& other)
71 { 69 {
72 if ((offset.first()->getValueID() == CSSValueLeft && other.first()->getValue ID() == CSSValueTop) 70 if ((offset.first()->getValueID() == CSSValueLeft && other.first()->getValue ID() == CSSValueTop)
73 || (offset.first()->getValueID() == CSSValueTop && other.first()->getVal ueID() == CSSValueLeft)) 71 || (offset.first()->getValueID() == CSSValueTop && other.first()->getVal ueID() == CSSValueLeft))
74 return offset.second()->cssText(); 72 return offset.second()->cssText();
75 return offset.cssText(); 73 return offset.cssText();
76 } 74 }
77 75
78 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> buildSerializablePositionOffset (PassRefPtrWillBeRawPtr<CSSPrimitiveValue> offset, CSSValueID defaultSide) 76 static PassRefPtr<CSSPrimitiveValue> buildSerializablePositionOffset(PassRefPtr< CSSPrimitiveValue> offset, CSSValueID defaultSide)
79 { 77 {
80 CSSValueID side = defaultSide; 78 CSSValueID side = defaultSide;
81 RefPtrWillBeRawPtr<CSSPrimitiveValue> amount = nullptr; 79 RefPtr<CSSPrimitiveValue> amount = nullptr;
82 80
83 if (!offset) { 81 if (!offset) {
84 side = CSSValueCenter; 82 side = CSSValueCenter;
85 } else if (offset->isValueID()) { 83 } else if (offset->isValueID()) {
86 side = offset->getValueID(); 84 side = offset->getValueID();
87 } else if (Pair* pair = offset->getPairValue()) { 85 } else if (Pair* pair = offset->getPairValue()) {
88 side = pair->first()->getValueID(); 86 side = pair->first()->getValueID();
89 amount = pair->second(); 87 amount = pair->second();
90 } else { 88 } else {
91 amount = offset; 89 amount = offset;
(...skipping 12 matching lines...) Expand all
104 else 102 else
105 amount = cssValuePool().createValue(0, CSSPrimitiveValue::UnitType:: Percentage); 103 amount = cssValuePool().createValue(0, CSSPrimitiveValue::UnitType:: Percentage);
106 side = defaultSide; 104 side = defaultSide;
107 } 105 }
108 106
109 return cssValuePool().createValue(Pair::create(cssValuePool().createValue(si de), amount.release(), Pair::KeepIdenticalValues)); 107 return cssValuePool().createValue(Pair::create(cssValuePool().createValue(si de), amount.release(), Pair::KeepIdenticalValues));
110 } 108 }
111 109
112 String CSSBasicShapeCircle::cssText() const 110 String CSSBasicShapeCircle::cssText() const
113 { 111 {
114 RefPtrWillBeRawPtr<CSSPrimitiveValue> normalizedCX = buildSerializablePositi onOffset(m_centerX, CSSValueLeft); 112 RefPtr<CSSPrimitiveValue> normalizedCX = buildSerializablePositionOffset(m_c enterX, CSSValueLeft);
115 RefPtrWillBeRawPtr<CSSPrimitiveValue> normalizedCY = buildSerializablePositi onOffset(m_centerY, CSSValueTop); 113 RefPtr<CSSPrimitiveValue> normalizedCY = buildSerializablePositionOffset(m_c enterY, CSSValueTop);
116 114
117 String radius; 115 String radius;
118 if (m_radius && m_radius->getValueID() != CSSValueClosestSide) 116 if (m_radius && m_radius->getValueID() != CSSValueClosestSide)
119 radius = m_radius->cssText(); 117 radius = m_radius->cssText();
120 118
121 return buildCircleString(radius, 119 return buildCircleString(radius,
122 serializePositionOffset(*normalizedCX->getPairValue(), *normalizedCY->ge tPairValue()), 120 serializePositionOffset(*normalizedCX->getPairValue(), *normalizedCY->ge tPairValue()),
123 serializePositionOffset(*normalizedCY->getPairValue(), *normalizedCX->ge tPairValue()), 121 serializePositionOffset(*normalizedCY->getPairValue(), *normalizedCX->ge tPairValue()),
124 m_referenceBox ? m_referenceBox->cssText() : String()); 122 m_referenceBox ? m_referenceBox->cssText() : String());
125 } 123 }
126 124
127 bool CSSBasicShapeCircle::equals(const CSSBasicShape& shape) const 125 bool CSSBasicShapeCircle::equals(const CSSBasicShape& shape) const
128 { 126 {
129 if (shape.type() != CSSBasicShapeCircleType) 127 if (shape.type() != CSSBasicShapeCircleType)
130 return false; 128 return false;
131 129
132 const CSSBasicShapeCircle& other = toCSSBasicShapeCircle(shape); 130 const CSSBasicShapeCircle& other = toCSSBasicShapeCircle(shape);
133 return compareCSSValuePtr(m_centerX, other.m_centerX) 131 return compareCSSValuePtr(m_centerX, other.m_centerX)
134 && compareCSSValuePtr(m_centerY, other.m_centerY) 132 && compareCSSValuePtr(m_centerY, other.m_centerY)
135 && compareCSSValuePtr(m_radius, other.m_radius) 133 && compareCSSValuePtr(m_radius, other.m_radius)
136 && compareCSSValuePtr(m_referenceBox, other.m_referenceBox); 134 && compareCSSValuePtr(m_referenceBox, other.m_referenceBox);
137 } 135 }
138 136
139 DEFINE_TRACE(CSSBasicShapeCircle)
140 {
141 visitor->trace(m_centerX);
142 visitor->trace(m_centerY);
143 visitor->trace(m_radius);
144 CSSBasicShape::trace(visitor);
145 }
146
147 static String buildEllipseString(const String& radiusX, const String& radiusY, c onst String& centerX, const String& centerY, const String& box) 137 static String buildEllipseString(const String& radiusX, const String& radiusY, c onst String& centerX, const String& centerY, const String& box)
148 { 138 {
149 char at[] = "at"; 139 char at[] = "at";
150 char separator[] = " "; 140 char separator[] = " ";
151 StringBuilder result; 141 StringBuilder result;
152 result.appendLiteral("ellipse("); 142 result.appendLiteral("ellipse(");
153 bool needsSeparator = false; 143 bool needsSeparator = false;
154 if (!radiusX.isNull()) { 144 if (!radiusX.isNull()) {
155 result.append(radiusX); 145 result.append(radiusX);
156 needsSeparator = true; 146 needsSeparator = true;
(...skipping 17 matching lines...) Expand all
174 result.append(')'); 164 result.append(')');
175 if (box.length()) { 165 if (box.length()) {
176 result.appendLiteral(separator); 166 result.appendLiteral(separator);
177 result.append(box); 167 result.append(box);
178 } 168 }
179 return result.toString(); 169 return result.toString();
180 } 170 }
181 171
182 String CSSBasicShapeEllipse::cssText() const 172 String CSSBasicShapeEllipse::cssText() const
183 { 173 {
184 RefPtrWillBeRawPtr<CSSPrimitiveValue> normalizedCX = buildSerializablePositi onOffset(m_centerX, CSSValueLeft); 174 RefPtr<CSSPrimitiveValue> normalizedCX = buildSerializablePositionOffset(m_c enterX, CSSValueLeft);
185 RefPtrWillBeRawPtr<CSSPrimitiveValue> normalizedCY = buildSerializablePositi onOffset(m_centerY, CSSValueTop); 175 RefPtr<CSSPrimitiveValue> normalizedCY = buildSerializablePositionOffset(m_c enterY, CSSValueTop);
186 176
187 String radiusX; 177 String radiusX;
188 String radiusY; 178 String radiusY;
189 if (m_radiusX) { 179 if (m_radiusX) {
190 bool shouldSerializeRadiusXValue = m_radiusX->getValueID() != CSSValueCl osestSide; 180 bool shouldSerializeRadiusXValue = m_radiusX->getValueID() != CSSValueCl osestSide;
191 bool shouldSerializeRadiusYValue = false; 181 bool shouldSerializeRadiusYValue = false;
192 182
193 if (m_radiusY) { 183 if (m_radiusY) {
194 shouldSerializeRadiusYValue = m_radiusY->getValueID() != CSSValueClo sestSide; 184 shouldSerializeRadiusYValue = m_radiusY->getValueID() != CSSValueClo sestSide;
195 if (shouldSerializeRadiusYValue) 185 if (shouldSerializeRadiusYValue)
(...skipping 15 matching lines...) Expand all
211 return false; 201 return false;
212 202
213 const CSSBasicShapeEllipse& other = toCSSBasicShapeEllipse(shape); 203 const CSSBasicShapeEllipse& other = toCSSBasicShapeEllipse(shape);
214 return compareCSSValuePtr(m_centerX, other.m_centerX) 204 return compareCSSValuePtr(m_centerX, other.m_centerX)
215 && compareCSSValuePtr(m_centerY, other.m_centerY) 205 && compareCSSValuePtr(m_centerY, other.m_centerY)
216 && compareCSSValuePtr(m_radiusX, other.m_radiusX) 206 && compareCSSValuePtr(m_radiusX, other.m_radiusX)
217 && compareCSSValuePtr(m_radiusY, other.m_radiusY) 207 && compareCSSValuePtr(m_radiusY, other.m_radiusY)
218 && compareCSSValuePtr(m_referenceBox, other.m_referenceBox); 208 && compareCSSValuePtr(m_referenceBox, other.m_referenceBox);
219 } 209 }
220 210
221 DEFINE_TRACE(CSSBasicShapeEllipse)
222 {
223 visitor->trace(m_centerX);
224 visitor->trace(m_centerY);
225 visitor->trace(m_radiusX);
226 visitor->trace(m_radiusY);
227 CSSBasicShape::trace(visitor);
228 }
229
230 static String buildPolygonString(const WindRule& windRule, const Vector<String>& points, const String& box) 211 static String buildPolygonString(const WindRule& windRule, const Vector<String>& points, const String& box)
231 { 212 {
232 ASSERT(!(points.size() % 2)); 213 ASSERT(!(points.size() % 2));
233 214
234 StringBuilder result; 215 StringBuilder result;
235 const char evenOddOpening[] = "polygon(evenodd, "; 216 const char evenOddOpening[] = "polygon(evenodd, ";
236 const char nonZeroOpening[] = "polygon("; 217 const char nonZeroOpening[] = "polygon(";
237 const char commaSeparator[] = ", "; 218 const char commaSeparator[] = ", ";
238 static_assert(sizeof(evenOddOpening) > sizeof(nonZeroOpening), "polygon stri ng openings should be the same length"); 219 static_assert(sizeof(evenOddOpening) > sizeof(nonZeroOpening), "polygon stri ng openings should be the same length");
239 220
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 return false; 270 return false;
290 271
291 const CSSBasicShapePolygon& rhs = toCSSBasicShapePolygon(shape); 272 const CSSBasicShapePolygon& rhs = toCSSBasicShapePolygon(shape);
292 273
293 if (!compareCSSValuePtr(m_referenceBox, rhs.m_referenceBox)) 274 if (!compareCSSValuePtr(m_referenceBox, rhs.m_referenceBox))
294 return false; 275 return false;
295 276
296 return compareCSSValueVector(m_values, rhs.m_values); 277 return compareCSSValueVector(m_values, rhs.m_values);
297 } 278 }
298 279
299 DEFINE_TRACE(CSSBasicShapePolygon)
300 {
301 visitor->trace(m_values);
302 CSSBasicShape::trace(visitor);
303 }
304
305 static bool buildInsetRadii(Vector<String> &radii, const String& topLeftRadius, const String& topRightRadius, const String& bottomRightRadius, const String& bot tomLeftRadius) 280 static bool buildInsetRadii(Vector<String> &radii, const String& topLeftRadius, const String& topRightRadius, const String& bottomRightRadius, const String& bot tomLeftRadius)
306 { 281 {
307 bool showBottomLeft = topRightRadius != bottomLeftRadius; 282 bool showBottomLeft = topRightRadius != bottomLeftRadius;
308 bool showBottomRight = showBottomLeft || (bottomRightRadius != topLeftRadius ); 283 bool showBottomRight = showBottomLeft || (bottomRightRadius != topLeftRadius );
309 bool showTopRight = showBottomRight || (topRightRadius != topLeftRadius); 284 bool showTopRight = showBottomRight || (topRightRadius != topLeftRadius);
310 285
311 radii.append(topLeftRadius); 286 radii.append(topLeftRadius);
312 if (showTopRight) 287 if (showTopRight)
313 radii.append(topRightRadius); 288 radii.append(topRightRadius);
314 if (showBottomRight) 289 if (showBottomRight)
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 return compareCSSValuePtr(m_top, other.m_top) 403 return compareCSSValuePtr(m_top, other.m_top)
429 && compareCSSValuePtr(m_right, other.m_right) 404 && compareCSSValuePtr(m_right, other.m_right)
430 && compareCSSValuePtr(m_bottom, other.m_bottom) 405 && compareCSSValuePtr(m_bottom, other.m_bottom)
431 && compareCSSValuePtr(m_left, other.m_left) 406 && compareCSSValuePtr(m_left, other.m_left)
432 && compareCSSValuePtr(m_topLeftRadius, other.m_topLeftRadius) 407 && compareCSSValuePtr(m_topLeftRadius, other.m_topLeftRadius)
433 && compareCSSValuePtr(m_topRightRadius, other.m_topRightRadius) 408 && compareCSSValuePtr(m_topRightRadius, other.m_topRightRadius)
434 && compareCSSValuePtr(m_bottomRightRadius, other.m_bottomRightRadius) 409 && compareCSSValuePtr(m_bottomRightRadius, other.m_bottomRightRadius)
435 && compareCSSValuePtr(m_bottomLeftRadius, other.m_bottomLeftRadius); 410 && compareCSSValuePtr(m_bottomLeftRadius, other.m_bottomLeftRadius);
436 } 411 }
437 412
438 DEFINE_TRACE(CSSBasicShapeInset)
439 {
440 visitor->trace(m_top);
441 visitor->trace(m_right);
442 visitor->trace(m_bottom);
443 visitor->trace(m_left);
444 visitor->trace(m_topLeftRadius);
445 visitor->trace(m_topRightRadius);
446 visitor->trace(m_bottomRightRadius);
447 visitor->trace(m_bottomLeftRadius);
448 CSSBasicShape::trace(visitor);
449 }
450
451 } // namespace blink 413 } // namespace blink
452 414
OLDNEW
« no previous file with comments | « Source/core/css/CSSBasicShapes.h ('k') | Source/core/css/CSSBorderImage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698