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

Side by Side Diff: third_party/WebKit/Source/core/animation/BasicShapeInterpolationFunctions.cpp

Issue 2080623002: Revert "Remove OwnPtr from Blink." (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/animation/BasicShapeInterpolationFunctions.h" 5 #include "core/animation/BasicShapeInterpolationFunctions.h"
6 6
7 #include "core/animation/CSSLengthInterpolationType.h" 7 #include "core/animation/CSSLengthInterpolationType.h"
8 #include "core/animation/CSSPositionAxisListInterpolationType.h" 8 #include "core/animation/CSSPositionAxisListInterpolationType.h"
9 #include "core/css/CSSBasicShapeValues.h" 9 #include "core/css/CSSBasicShapeValues.h"
10 #include "core/css/resolver/StyleResolverState.h" 10 #include "core/css/resolver/StyleResolverState.h"
11 #include "core/style/BasicShapes.h" 11 #include "core/style/BasicShapes.h"
12 #include <memory>
13 12
14 namespace blink { 13 namespace blink {
15 14
16 class BasicShapeNonInterpolableValue : public NonInterpolableValue { 15 class BasicShapeNonInterpolableValue : public NonInterpolableValue {
17 public: 16 public:
18 static PassRefPtr<NonInterpolableValue> create(BasicShape::ShapeType type) 17 static PassRefPtr<NonInterpolableValue> create(BasicShape::ShapeType type)
19 { 18 {
20 return adoptRef(new BasicShapeNonInterpolableValue(type)); 19 return adoptRef(new BasicShapeNonInterpolableValue(type));
21 } 20 }
22 static PassRefPtr<NonInterpolableValue> createPolygon(WindRule windRule, siz e_t size) 21 static PassRefPtr<NonInterpolableValue> createPolygon(WindRule windRule, siz e_t size)
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 const BasicShape::ShapeType m_type; 65 const BasicShape::ShapeType m_type;
67 const WindRule m_windRule; 66 const WindRule m_windRule;
68 const size_t m_size; 67 const size_t m_size;
69 }; 68 };
70 69
71 DEFINE_NON_INTERPOLABLE_VALUE_TYPE(BasicShapeNonInterpolableValue); 70 DEFINE_NON_INTERPOLABLE_VALUE_TYPE(BasicShapeNonInterpolableValue);
72 DEFINE_NON_INTERPOLABLE_VALUE_TYPE_CASTS(BasicShapeNonInterpolableValue); 71 DEFINE_NON_INTERPOLABLE_VALUE_TYPE_CASTS(BasicShapeNonInterpolableValue);
73 72
74 namespace { 73 namespace {
75 74
76 std::unique_ptr<InterpolableValue> unwrap(InterpolationValue&& value) 75 PassOwnPtr<InterpolableValue> unwrap(InterpolationValue&& value)
77 { 76 {
78 ASSERT(value.interpolableValue); 77 ASSERT(value.interpolableValue);
79 return std::move(value.interpolableValue); 78 return std::move(value.interpolableValue);
80 } 79 }
81 80
82 std::unique_ptr<InterpolableValue> convertCSSCoordinate(const CSSValue* coordina te) 81 PassOwnPtr<InterpolableValue> convertCSSCoordinate(const CSSValue* coordinate)
83 { 82 {
84 if (coordinate) 83 if (coordinate)
85 return unwrap(CSSPositionAxisListInterpolationType::convertPositionAxisC SSValue(*coordinate)); 84 return unwrap(CSSPositionAxisListInterpolationType::convertPositionAxisC SSValue(*coordinate));
86 return unwrap(CSSLengthInterpolationType::maybeConvertLength(Length(50, Perc ent), 1)); 85 return unwrap(CSSLengthInterpolationType::maybeConvertLength(Length(50, Perc ent), 1));
87 } 86 }
88 87
89 std::unique_ptr<InterpolableValue> convertCoordinate(const BasicShapeCenterCoord inate& coordinate, double zoom) 88 PassOwnPtr<InterpolableValue> convertCoordinate(const BasicShapeCenterCoordinate & coordinate, double zoom)
90 { 89 {
91 return unwrap(CSSLengthInterpolationType::maybeConvertLength(coordinate.comp utedLength(), zoom)); 90 return unwrap(CSSLengthInterpolationType::maybeConvertLength(coordinate.comp utedLength(), zoom));
92 } 91 }
93 92
94 std::unique_ptr<InterpolableValue> createNeutralInterpolableCoordinate() 93 PassOwnPtr<InterpolableValue> createNeutralInterpolableCoordinate()
95 { 94 {
96 return CSSLengthInterpolationType::createNeutralInterpolableValue(); 95 return CSSLengthInterpolationType::createNeutralInterpolableValue();
97 } 96 }
98 97
99 BasicShapeCenterCoordinate createCoordinate(const InterpolableValue& interpolabl eValue, const CSSToLengthConversionData& conversionData) 98 BasicShapeCenterCoordinate createCoordinate(const InterpolableValue& interpolabl eValue, const CSSToLengthConversionData& conversionData)
100 { 99 {
101 return BasicShapeCenterCoordinate( 100 return BasicShapeCenterCoordinate(
102 BasicShapeCenterCoordinate::TopLeft, 101 BasicShapeCenterCoordinate::TopLeft,
103 CSSLengthInterpolationType::resolveInterpolableLength(interpolableValue, nullptr, conversionData)); 102 CSSLengthInterpolationType::resolveInterpolableLength(interpolableValue, nullptr, conversionData));
104 } 103 }
105 104
106 std::unique_ptr<InterpolableValue> convertCSSRadius(const CSSPrimitiveValue* rad ius) 105 PassOwnPtr<InterpolableValue> convertCSSRadius(const CSSPrimitiveValue* radius)
107 { 106 {
108 if (!radius || radius->isValueID()) 107 if (!radius || radius->isValueID())
109 return nullptr; 108 return nullptr;
110 return unwrap(CSSLengthInterpolationType::maybeConvertCSSValue(*radius)); 109 return unwrap(CSSLengthInterpolationType::maybeConvertCSSValue(*radius));
111 } 110 }
112 111
113 std::unique_ptr<InterpolableValue> convertRadius(const BasicShapeRadius& radius, double zoom) 112 PassOwnPtr<InterpolableValue> convertRadius(const BasicShapeRadius& radius, doub le zoom)
114 { 113 {
115 if (radius.type() != BasicShapeRadius::Value) 114 if (radius.type() != BasicShapeRadius::Value)
116 return nullptr; 115 return nullptr;
117 return unwrap(CSSLengthInterpolationType::maybeConvertLength(radius.value(), zoom)); 116 return unwrap(CSSLengthInterpolationType::maybeConvertLength(radius.value(), zoom));
118 } 117 }
119 118
120 std::unique_ptr<InterpolableValue> createNeutralInterpolableRadius() 119 PassOwnPtr<InterpolableValue> createNeutralInterpolableRadius()
121 { 120 {
122 return CSSLengthInterpolationType::createNeutralInterpolableValue(); 121 return CSSLengthInterpolationType::createNeutralInterpolableValue();
123 } 122 }
124 123
125 BasicShapeRadius createRadius(const InterpolableValue& interpolableValue, const CSSToLengthConversionData& conversionData) 124 BasicShapeRadius createRadius(const InterpolableValue& interpolableValue, const CSSToLengthConversionData& conversionData)
126 { 125 {
127 return BasicShapeRadius(CSSLengthInterpolationType::resolveInterpolableLengt h(interpolableValue, nullptr, conversionData, ValueRangeNonNegative)); 126 return BasicShapeRadius(CSSLengthInterpolationType::resolveInterpolableLengt h(interpolableValue, nullptr, conversionData, ValueRangeNonNegative));
128 } 127 }
129 128
130 std::unique_ptr<InterpolableValue> convertCSSLength(const CSSValue* length) 129 PassOwnPtr<InterpolableValue> convertCSSLength(const CSSValue* length)
131 { 130 {
132 if (!length) 131 if (!length)
133 return CSSLengthInterpolationType::createNeutralInterpolableValue(); 132 return CSSLengthInterpolationType::createNeutralInterpolableValue();
134 return unwrap(CSSLengthInterpolationType::maybeConvertCSSValue(*length)); 133 return unwrap(CSSLengthInterpolationType::maybeConvertCSSValue(*length));
135 } 134 }
136 135
137 std::unique_ptr<InterpolableValue> convertLength(const Length& length, double zo om) 136 PassOwnPtr<InterpolableValue> convertLength(const Length& length, double zoom)
138 { 137 {
139 return unwrap(CSSLengthInterpolationType::maybeConvertLength(length, zoom)); 138 return unwrap(CSSLengthInterpolationType::maybeConvertLength(length, zoom));
140 } 139 }
141 140
142 std::unique_ptr<InterpolableValue> convertCSSBorderRadiusWidth(const CSSValuePai r* pair) 141 PassOwnPtr<InterpolableValue> convertCSSBorderRadiusWidth(const CSSValuePair* pa ir)
143 { 142 {
144 return convertCSSLength(pair ? &pair->first() : nullptr); 143 return convertCSSLength(pair ? &pair->first() : nullptr);
145 } 144 }
146 145
147 std::unique_ptr<InterpolableValue> convertCSSBorderRadiusHeight(const CSSValuePa ir* pair) 146 PassOwnPtr<InterpolableValue> convertCSSBorderRadiusHeight(const CSSValuePair* p air)
148 { 147 {
149 return convertCSSLength(pair ? &pair->second() : nullptr); 148 return convertCSSLength(pair ? &pair->second() : nullptr);
150 } 149 }
151 150
152 LengthSize createBorderRadius(const InterpolableValue& width, const Interpolable Value& height, const CSSToLengthConversionData& conversionData) 151 LengthSize createBorderRadius(const InterpolableValue& width, const Interpolable Value& height, const CSSToLengthConversionData& conversionData)
153 { 152 {
154 return LengthSize( 153 return LengthSize(
155 CSSLengthInterpolationType::resolveInterpolableLength(width, nullptr, co nversionData, ValueRangeNonNegative), 154 CSSLengthInterpolationType::resolveInterpolableLength(width, nullptr, co nversionData, ValueRangeNonNegative),
156 CSSLengthInterpolationType::resolveInterpolableLength(height, nullptr, c onversionData, ValueRangeNonNegative)); 155 CSSLengthInterpolationType::resolveInterpolableLength(height, nullptr, c onversionData, ValueRangeNonNegative));
157 } 156 }
158 157
159 namespace CircleFunctions { 158 namespace CircleFunctions {
160 159
161 enum CircleComponentIndex { 160 enum CircleComponentIndex {
162 CircleCenterXIndex, 161 CircleCenterXIndex,
163 CircleCenterYIndex, 162 CircleCenterYIndex,
164 CircleRadiusIndex, 163 CircleRadiusIndex,
165 CircleComponentIndexCount, 164 CircleComponentIndexCount,
166 }; 165 };
167 166
168 InterpolationValue convertCSSValue(const CSSBasicShapeCircleValue& circle) 167 InterpolationValue convertCSSValue(const CSSBasicShapeCircleValue& circle)
169 { 168 {
170 std::unique_ptr<InterpolableList> list = InterpolableList::create(CircleComp onentIndexCount); 169 OwnPtr<InterpolableList> list = InterpolableList::create(CircleComponentInde xCount);
171 list->set(CircleCenterXIndex, convertCSSCoordinate(circle.centerX())); 170 list->set(CircleCenterXIndex, convertCSSCoordinate(circle.centerX()));
172 list->set(CircleCenterYIndex, convertCSSCoordinate(circle.centerY())); 171 list->set(CircleCenterYIndex, convertCSSCoordinate(circle.centerY()));
173 172
174 std::unique_ptr<InterpolableValue> radius; 173 OwnPtr<InterpolableValue> radius;
175 if (!(radius = convertCSSRadius(circle.radius()))) 174 if (!(radius = convertCSSRadius(circle.radius())))
176 return nullptr; 175 return nullptr;
177 list->set(CircleRadiusIndex, std::move(radius)); 176 list->set(CircleRadiusIndex, std::move(radius));
178 177
179 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reate(BasicShape::BasicShapeCircleType)); 178 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reate(BasicShape::BasicShapeCircleType));
180 } 179 }
181 180
182 InterpolationValue convertBasicShape(const BasicShapeCircle& circle, double zoom ) 181 InterpolationValue convertBasicShape(const BasicShapeCircle& circle, double zoom )
183 { 182 {
184 std::unique_ptr<InterpolableList> list = InterpolableList::create(CircleComp onentIndexCount); 183 OwnPtr<InterpolableList> list = InterpolableList::create(CircleComponentInde xCount);
185 list->set(CircleCenterXIndex, convertCoordinate(circle.centerX(), zoom)); 184 list->set(CircleCenterXIndex, convertCoordinate(circle.centerX(), zoom));
186 list->set(CircleCenterYIndex, convertCoordinate(circle.centerY(), zoom)); 185 list->set(CircleCenterYIndex, convertCoordinate(circle.centerY(), zoom));
187 186
188 std::unique_ptr<InterpolableValue> radius; 187 OwnPtr<InterpolableValue> radius;
189 if (!(radius = convertRadius(circle.radius(), zoom))) 188 if (!(radius = convertRadius(circle.radius(), zoom)))
190 return nullptr; 189 return nullptr;
191 list->set(CircleRadiusIndex, std::move(radius)); 190 list->set(CircleRadiusIndex, std::move(radius));
192 191
193 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reate(BasicShape::BasicShapeCircleType)); 192 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reate(BasicShape::BasicShapeCircleType));
194 } 193 }
195 194
196 std::unique_ptr<InterpolableValue> createNeutralValue() 195 PassOwnPtr<InterpolableValue> createNeutralValue()
197 { 196 {
198 std::unique_ptr<InterpolableList> list = InterpolableList::create(CircleComp onentIndexCount); 197 OwnPtr<InterpolableList> list = InterpolableList::create(CircleComponentInde xCount);
199 list->set(CircleCenterXIndex, createNeutralInterpolableCoordinate()); 198 list->set(CircleCenterXIndex, createNeutralInterpolableCoordinate());
200 list->set(CircleCenterYIndex, createNeutralInterpolableCoordinate()); 199 list->set(CircleCenterYIndex, createNeutralInterpolableCoordinate());
201 list->set(CircleRadiusIndex, createNeutralInterpolableRadius()); 200 list->set(CircleRadiusIndex, createNeutralInterpolableRadius());
202 return std::move(list); 201 return std::move(list);
203 } 202 }
204 203
205 PassRefPtr<BasicShape> createBasicShape(const InterpolableValue& interpolableVal ue, const CSSToLengthConversionData& conversionData) 204 PassRefPtr<BasicShape> createBasicShape(const InterpolableValue& interpolableVal ue, const CSSToLengthConversionData& conversionData)
206 { 205 {
207 RefPtr<BasicShapeCircle> circle = BasicShapeCircle::create(); 206 RefPtr<BasicShapeCircle> circle = BasicShapeCircle::create();
208 const InterpolableList& list = toInterpolableList(interpolableValue); 207 const InterpolableList& list = toInterpolableList(interpolableValue);
(...skipping 10 matching lines...) Expand all
219 enum EllipseComponentIndex { 218 enum EllipseComponentIndex {
220 EllipseCenterXIndex, 219 EllipseCenterXIndex,
221 EllipseCenterYIndex, 220 EllipseCenterYIndex,
222 EllipseRadiusXIndex, 221 EllipseRadiusXIndex,
223 EllipseRadiusYIndex, 222 EllipseRadiusYIndex,
224 EllipseComponentIndexCount, 223 EllipseComponentIndexCount,
225 }; 224 };
226 225
227 InterpolationValue convertCSSValue(const CSSBasicShapeEllipseValue& ellipse) 226 InterpolationValue convertCSSValue(const CSSBasicShapeEllipseValue& ellipse)
228 { 227 {
229 std::unique_ptr<InterpolableList> list = InterpolableList::create(EllipseCom ponentIndexCount); 228 OwnPtr<InterpolableList> list = InterpolableList::create(EllipseComponentInd exCount);
230 list->set(EllipseCenterXIndex, convertCSSCoordinate(ellipse.centerX())); 229 list->set(EllipseCenterXIndex, convertCSSCoordinate(ellipse.centerX()));
231 list->set(EllipseCenterYIndex, convertCSSCoordinate(ellipse.centerY())); 230 list->set(EllipseCenterYIndex, convertCSSCoordinate(ellipse.centerY()));
232 231
233 std::unique_ptr<InterpolableValue> radius; 232 OwnPtr<InterpolableValue> radius;
234 if (!(radius = convertCSSRadius(ellipse.radiusX()))) 233 if (!(radius = convertCSSRadius(ellipse.radiusX())))
235 return nullptr; 234 return nullptr;
236 list->set(EllipseRadiusXIndex, std::move(radius)); 235 list->set(EllipseRadiusXIndex, std::move(radius));
237 if (!(radius = convertCSSRadius(ellipse.radiusY()))) 236 if (!(radius = convertCSSRadius(ellipse.radiusY())))
238 return nullptr; 237 return nullptr;
239 list->set(EllipseRadiusYIndex, std::move(radius)); 238 list->set(EllipseRadiusYIndex, std::move(radius));
240 239
241 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reate(BasicShape::BasicShapeEllipseType)); 240 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reate(BasicShape::BasicShapeEllipseType));
242 } 241 }
243 242
244 InterpolationValue convertBasicShape(const BasicShapeEllipse& ellipse, double zo om) 243 InterpolationValue convertBasicShape(const BasicShapeEllipse& ellipse, double zo om)
245 { 244 {
246 std::unique_ptr<InterpolableList> list = InterpolableList::create(EllipseCom ponentIndexCount); 245 OwnPtr<InterpolableList> list = InterpolableList::create(EllipseComponentInd exCount);
247 list->set(EllipseCenterXIndex, convertCoordinate(ellipse.centerX(), zoom)); 246 list->set(EllipseCenterXIndex, convertCoordinate(ellipse.centerX(), zoom));
248 list->set(EllipseCenterYIndex, convertCoordinate(ellipse.centerY(), zoom)); 247 list->set(EllipseCenterYIndex, convertCoordinate(ellipse.centerY(), zoom));
249 248
250 std::unique_ptr<InterpolableValue> radius; 249 OwnPtr<InterpolableValue> radius;
251 if (!(radius = convertRadius(ellipse.radiusX(), zoom))) 250 if (!(radius = convertRadius(ellipse.radiusX(), zoom)))
252 return nullptr; 251 return nullptr;
253 list->set(EllipseRadiusXIndex, std::move(radius)); 252 list->set(EllipseRadiusXIndex, std::move(radius));
254 if (!(radius = convertRadius(ellipse.radiusY(), zoom))) 253 if (!(radius = convertRadius(ellipse.radiusY(), zoom)))
255 return nullptr; 254 return nullptr;
256 list->set(EllipseRadiusYIndex, std::move(radius)); 255 list->set(EllipseRadiusYIndex, std::move(radius));
257 256
258 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reate(BasicShape::BasicShapeEllipseType)); 257 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reate(BasicShape::BasicShapeEllipseType));
259 } 258 }
260 259
261 std::unique_ptr<InterpolableValue> createNeutralValue() 260 PassOwnPtr<InterpolableValue> createNeutralValue()
262 { 261 {
263 std::unique_ptr<InterpolableList> list = InterpolableList::create(EllipseCom ponentIndexCount); 262 OwnPtr<InterpolableList> list = InterpolableList::create(EllipseComponentInd exCount);
264 list->set(EllipseCenterXIndex, createNeutralInterpolableCoordinate()); 263 list->set(EllipseCenterXIndex, createNeutralInterpolableCoordinate());
265 list->set(EllipseCenterYIndex, createNeutralInterpolableCoordinate()); 264 list->set(EllipseCenterYIndex, createNeutralInterpolableCoordinate());
266 list->set(EllipseRadiusXIndex, createNeutralInterpolableRadius()); 265 list->set(EllipseRadiusXIndex, createNeutralInterpolableRadius());
267 list->set(EllipseRadiusYIndex, createNeutralInterpolableRadius()); 266 list->set(EllipseRadiusYIndex, createNeutralInterpolableRadius());
268 return std::move(list); 267 return std::move(list);
269 } 268 }
270 269
271 PassRefPtr<BasicShape> createBasicShape(const InterpolableValue& interpolableVal ue, const CSSToLengthConversionData& conversionData) 270 PassRefPtr<BasicShape> createBasicShape(const InterpolableValue& interpolableVal ue, const CSSToLengthConversionData& conversionData)
272 { 271 {
273 RefPtr<BasicShapeEllipse> ellipse = BasicShapeEllipse::create(); 272 RefPtr<BasicShapeEllipse> ellipse = BasicShapeEllipse::create();
(...skipping 20 matching lines...) Expand all
294 InsetBorderTopRightHeightIndex, 293 InsetBorderTopRightHeightIndex,
295 InsetBorderBottomRightWidthIndex, 294 InsetBorderBottomRightWidthIndex,
296 InsetBorderBottomRightHeightIndex, 295 InsetBorderBottomRightHeightIndex,
297 InsetBorderBottomLeftWidthIndex, 296 InsetBorderBottomLeftWidthIndex,
298 InsetBorderBottomLeftHeightIndex, 297 InsetBorderBottomLeftHeightIndex,
299 InsetComponentIndexCount, 298 InsetComponentIndexCount,
300 }; 299 };
301 300
302 InterpolationValue convertCSSValue(const CSSBasicShapeInsetValue& inset) 301 InterpolationValue convertCSSValue(const CSSBasicShapeInsetValue& inset)
303 { 302 {
304 std::unique_ptr<InterpolableList> list = InterpolableList::create(InsetCompo nentIndexCount); 303 OwnPtr<InterpolableList> list = InterpolableList::create(InsetComponentIndex Count);
305 list->set(InsetTopIndex, convertCSSLength(inset.top())); 304 list->set(InsetTopIndex, convertCSSLength(inset.top()));
306 list->set(InsetRightIndex, convertCSSLength(inset.right())); 305 list->set(InsetRightIndex, convertCSSLength(inset.right()));
307 list->set(InsetBottomIndex, convertCSSLength(inset.bottom())); 306 list->set(InsetBottomIndex, convertCSSLength(inset.bottom()));
308 list->set(InsetLeftIndex, convertCSSLength(inset.left())); 307 list->set(InsetLeftIndex, convertCSSLength(inset.left()));
309 308
310 list->set(InsetBorderTopLeftWidthIndex, convertCSSBorderRadiusWidth(inset.to pLeftRadius())); 309 list->set(InsetBorderTopLeftWidthIndex, convertCSSBorderRadiusWidth(inset.to pLeftRadius()));
311 list->set(InsetBorderTopLeftHeightIndex, convertCSSBorderRadiusHeight(inset. topLeftRadius())); 310 list->set(InsetBorderTopLeftHeightIndex, convertCSSBorderRadiusHeight(inset. topLeftRadius()));
312 list->set(InsetBorderTopRightWidthIndex, convertCSSBorderRadiusWidth(inset.t opRightRadius())); 311 list->set(InsetBorderTopRightWidthIndex, convertCSSBorderRadiusWidth(inset.t opRightRadius()));
313 list->set(InsetBorderTopRightHeightIndex, convertCSSBorderRadiusHeight(inset .topRightRadius())); 312 list->set(InsetBorderTopRightHeightIndex, convertCSSBorderRadiusHeight(inset .topRightRadius()));
314 list->set(InsetBorderBottomRightWidthIndex, convertCSSBorderRadiusWidth(inse t.bottomRightRadius())); 313 list->set(InsetBorderBottomRightWidthIndex, convertCSSBorderRadiusWidth(inse t.bottomRightRadius()));
315 list->set(InsetBorderBottomRightHeightIndex, convertCSSBorderRadiusHeight(in set.bottomRightRadius())); 314 list->set(InsetBorderBottomRightHeightIndex, convertCSSBorderRadiusHeight(in set.bottomRightRadius()));
316 list->set(InsetBorderBottomLeftWidthIndex, convertCSSBorderRadiusWidth(inset .bottomLeftRadius())); 315 list->set(InsetBorderBottomLeftWidthIndex, convertCSSBorderRadiusWidth(inset .bottomLeftRadius()));
317 list->set(InsetBorderBottomLeftHeightIndex, convertCSSBorderRadiusHeight(ins et.bottomLeftRadius())); 316 list->set(InsetBorderBottomLeftHeightIndex, convertCSSBorderRadiusHeight(ins et.bottomLeftRadius()));
318 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reate(BasicShape::BasicShapeInsetType)); 317 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reate(BasicShape::BasicShapeInsetType));
319 } 318 }
320 319
321 InterpolationValue convertBasicShape(const BasicShapeInset& inset, double zoom) 320 InterpolationValue convertBasicShape(const BasicShapeInset& inset, double zoom)
322 { 321 {
323 std::unique_ptr<InterpolableList> list = InterpolableList::create(InsetCompo nentIndexCount); 322 OwnPtr<InterpolableList> list = InterpolableList::create(InsetComponentIndex Count);
324 list->set(InsetTopIndex, convertLength(inset.top(), zoom)); 323 list->set(InsetTopIndex, convertLength(inset.top(), zoom));
325 list->set(InsetRightIndex, convertLength(inset.right(), zoom)); 324 list->set(InsetRightIndex, convertLength(inset.right(), zoom));
326 list->set(InsetBottomIndex, convertLength(inset.bottom(), zoom)); 325 list->set(InsetBottomIndex, convertLength(inset.bottom(), zoom));
327 list->set(InsetLeftIndex, convertLength(inset.left(), zoom)); 326 list->set(InsetLeftIndex, convertLength(inset.left(), zoom));
328 327
329 list->set(InsetBorderTopLeftWidthIndex, convertLength(inset.topLeftRadius(). width(), zoom)); 328 list->set(InsetBorderTopLeftWidthIndex, convertLength(inset.topLeftRadius(). width(), zoom));
330 list->set(InsetBorderTopLeftHeightIndex, convertLength(inset.topLeftRadius() .height(), zoom)); 329 list->set(InsetBorderTopLeftHeightIndex, convertLength(inset.topLeftRadius() .height(), zoom));
331 list->set(InsetBorderTopRightWidthIndex, convertLength(inset.topRightRadius( ).width(), zoom)); 330 list->set(InsetBorderTopRightWidthIndex, convertLength(inset.topRightRadius( ).width(), zoom));
332 list->set(InsetBorderTopRightHeightIndex, convertLength(inset.topRightRadius ().height(), zoom)); 331 list->set(InsetBorderTopRightHeightIndex, convertLength(inset.topRightRadius ().height(), zoom));
333 list->set(InsetBorderBottomRightWidthIndex, convertLength(inset.bottomRightR adius().width(), zoom)); 332 list->set(InsetBorderBottomRightWidthIndex, convertLength(inset.bottomRightR adius().width(), zoom));
334 list->set(InsetBorderBottomRightHeightIndex, convertLength(inset.bottomRight Radius().height(), zoom)); 333 list->set(InsetBorderBottomRightHeightIndex, convertLength(inset.bottomRight Radius().height(), zoom));
335 list->set(InsetBorderBottomLeftWidthIndex, convertLength(inset.bottomLeftRad ius().width(), zoom)); 334 list->set(InsetBorderBottomLeftWidthIndex, convertLength(inset.bottomLeftRad ius().width(), zoom));
336 list->set(InsetBorderBottomLeftHeightIndex, convertLength(inset.bottomLeftRa dius().height(), zoom)); 335 list->set(InsetBorderBottomLeftHeightIndex, convertLength(inset.bottomLeftRa dius().height(), zoom));
337 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reate(BasicShape::BasicShapeInsetType)); 336 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reate(BasicShape::BasicShapeInsetType));
338 } 337 }
339 338
340 std::unique_ptr<InterpolableValue> createNeutralValue() 339 PassOwnPtr<InterpolableValue> createNeutralValue()
341 { 340 {
342 std::unique_ptr<InterpolableList> list = InterpolableList::create(InsetCompo nentIndexCount); 341 OwnPtr<InterpolableList> list = InterpolableList::create(InsetComponentIndex Count);
343 list->set(InsetTopIndex, CSSLengthInterpolationType::createNeutralInterpolab leValue()); 342 list->set(InsetTopIndex, CSSLengthInterpolationType::createNeutralInterpolab leValue());
344 list->set(InsetRightIndex, CSSLengthInterpolationType::createNeutralInterpol ableValue()); 343 list->set(InsetRightIndex, CSSLengthInterpolationType::createNeutralInterpol ableValue());
345 list->set(InsetBottomIndex, CSSLengthInterpolationType::createNeutralInterpo lableValue()); 344 list->set(InsetBottomIndex, CSSLengthInterpolationType::createNeutralInterpo lableValue());
346 list->set(InsetLeftIndex, CSSLengthInterpolationType::createNeutralInterpola bleValue()); 345 list->set(InsetLeftIndex, CSSLengthInterpolationType::createNeutralInterpola bleValue());
347 346
348 list->set(InsetBorderTopLeftWidthIndex, CSSLengthInterpolationType::createNe utralInterpolableValue()); 347 list->set(InsetBorderTopLeftWidthIndex, CSSLengthInterpolationType::createNe utralInterpolableValue());
349 list->set(InsetBorderTopLeftHeightIndex, CSSLengthInterpolationType::createN eutralInterpolableValue()); 348 list->set(InsetBorderTopLeftHeightIndex, CSSLengthInterpolationType::createN eutralInterpolableValue());
350 list->set(InsetBorderTopRightWidthIndex, CSSLengthInterpolationType::createN eutralInterpolableValue()); 349 list->set(InsetBorderTopRightWidthIndex, CSSLengthInterpolationType::createN eutralInterpolableValue());
351 list->set(InsetBorderTopRightHeightIndex, CSSLengthInterpolationType::create NeutralInterpolableValue()); 350 list->set(InsetBorderTopRightHeightIndex, CSSLengthInterpolationType::create NeutralInterpolableValue());
352 list->set(InsetBorderBottomRightWidthIndex, CSSLengthInterpolationType::crea teNeutralInterpolableValue()); 351 list->set(InsetBorderBottomRightWidthIndex, CSSLengthInterpolationType::crea teNeutralInterpolableValue());
(...skipping 19 matching lines...) Expand all
372 return inset.release(); 371 return inset.release();
373 } 372 }
374 373
375 } // namespace InsetFunctions 374 } // namespace InsetFunctions
376 375
377 namespace PolygonFunctions { 376 namespace PolygonFunctions {
378 377
379 InterpolationValue convertCSSValue(const CSSBasicShapePolygonValue& polygon) 378 InterpolationValue convertCSSValue(const CSSBasicShapePolygonValue& polygon)
380 { 379 {
381 size_t size = polygon.values().size(); 380 size_t size = polygon.values().size();
382 std::unique_ptr<InterpolableList> list = InterpolableList::create(size); 381 OwnPtr<InterpolableList> list = InterpolableList::create(size);
383 for (size_t i = 0; i < size; i++) 382 for (size_t i = 0; i < size; i++)
384 list->set(i, convertCSSLength(polygon.values()[i].get())); 383 list->set(i, convertCSSLength(polygon.values()[i].get()));
385 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reatePolygon(polygon.getWindRule(), size)); 384 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reatePolygon(polygon.getWindRule(), size));
386 } 385 }
387 386
388 InterpolationValue convertBasicShape(const BasicShapePolygon& polygon, double zo om) 387 InterpolationValue convertBasicShape(const BasicShapePolygon& polygon, double zo om)
389 { 388 {
390 size_t size = polygon.values().size(); 389 size_t size = polygon.values().size();
391 std::unique_ptr<InterpolableList> list = InterpolableList::create(size); 390 OwnPtr<InterpolableList> list = InterpolableList::create(size);
392 for (size_t i = 0; i < size; i++) 391 for (size_t i = 0; i < size; i++)
393 list->set(i, convertLength(polygon.values()[i], zoom)); 392 list->set(i, convertLength(polygon.values()[i], zoom));
394 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reatePolygon(polygon.getWindRule(), size)); 393 return InterpolationValue(std::move(list), BasicShapeNonInterpolableValue::c reatePolygon(polygon.getWindRule(), size));
395 } 394 }
396 395
397 std::unique_ptr<InterpolableValue> createNeutralValue(const BasicShapeNonInterpo lableValue& nonInterpolableValue) 396 PassOwnPtr<InterpolableValue> createNeutralValue(const BasicShapeNonInterpolable Value& nonInterpolableValue)
398 { 397 {
399 std::unique_ptr<InterpolableList> list = InterpolableList::create(nonInterpo lableValue.size()); 398 OwnPtr<InterpolableList> list = InterpolableList::create(nonInterpolableValu e.size());
400 for (size_t i = 0; i < nonInterpolableValue.size(); i++) 399 for (size_t i = 0; i < nonInterpolableValue.size(); i++)
401 list->set(i, CSSLengthInterpolationType::createNeutralInterpolableValue( )); 400 list->set(i, CSSLengthInterpolationType::createNeutralInterpolableValue( ));
402 return std::move(list); 401 return std::move(list);
403 } 402 }
404 403
405 PassRefPtr<BasicShape> createBasicShape(const InterpolableValue& interpolableVal ue, const BasicShapeNonInterpolableValue& nonInterpolableValue, const CSSToLengt hConversionData& conversionData) 404 PassRefPtr<BasicShape> createBasicShape(const InterpolableValue& interpolableVal ue, const BasicShapeNonInterpolableValue& nonInterpolableValue, const CSSToLengt hConversionData& conversionData)
406 { 405 {
407 RefPtr<BasicShapePolygon> polygon = BasicShapePolygon::create(); 406 RefPtr<BasicShapePolygon> polygon = BasicShapePolygon::create();
408 polygon->setWindRule(nonInterpolableValue.windRule()); 407 polygon->setWindRule(nonInterpolableValue.windRule());
409 const InterpolableList& list = toInterpolableList(interpolableValue); 408 const InterpolableList& list = toInterpolableList(interpolableValue);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 case BasicShape::BasicShapeInsetType: 446 case BasicShape::BasicShapeInsetType:
448 return InsetFunctions::convertBasicShape(toBasicShapeInset(*shape), zoom ); 447 return InsetFunctions::convertBasicShape(toBasicShapeInset(*shape), zoom );
449 case BasicShape::BasicShapePolygonType: 448 case BasicShape::BasicShapePolygonType:
450 return PolygonFunctions::convertBasicShape(toBasicShapePolygon(*shape), zoom); 449 return PolygonFunctions::convertBasicShape(toBasicShapePolygon(*shape), zoom);
451 default: 450 default:
452 ASSERT_NOT_REACHED(); 451 ASSERT_NOT_REACHED();
453 return nullptr; 452 return nullptr;
454 } 453 }
455 } 454 }
456 455
457 std::unique_ptr<InterpolableValue> BasicShapeInterpolationFunctions::createNeutr alValue(const NonInterpolableValue& untypedNonInterpolableValue) 456 PassOwnPtr<InterpolableValue> BasicShapeInterpolationFunctions::createNeutralVal ue(const NonInterpolableValue& untypedNonInterpolableValue)
458 { 457 {
459 const BasicShapeNonInterpolableValue& nonInterpolableValue = toBasicShapeNon InterpolableValue(untypedNonInterpolableValue); 458 const BasicShapeNonInterpolableValue& nonInterpolableValue = toBasicShapeNon InterpolableValue(untypedNonInterpolableValue);
460 switch (nonInterpolableValue.type()) { 459 switch (nonInterpolableValue.type()) {
461 case BasicShape::BasicShapeCircleType: 460 case BasicShape::BasicShapeCircleType:
462 return CircleFunctions::createNeutralValue(); 461 return CircleFunctions::createNeutralValue();
463 case BasicShape::BasicShapeEllipseType: 462 case BasicShape::BasicShapeEllipseType:
464 return EllipseFunctions::createNeutralValue(); 463 return EllipseFunctions::createNeutralValue();
465 case BasicShape::BasicShapeInsetType: 464 case BasicShape::BasicShapeInsetType:
466 return InsetFunctions::createNeutralValue(); 465 return InsetFunctions::createNeutralValue();
467 case BasicShape::BasicShapePolygonType: 466 case BasicShape::BasicShapePolygonType:
(...skipping 21 matching lines...) Expand all
489 return InsetFunctions::createBasicShape(interpolableValue, conversionDat a); 488 return InsetFunctions::createBasicShape(interpolableValue, conversionDat a);
490 case BasicShape::BasicShapePolygonType: 489 case BasicShape::BasicShapePolygonType:
491 return PolygonFunctions::createBasicShape(interpolableValue, nonInterpol ableValue, conversionData); 490 return PolygonFunctions::createBasicShape(interpolableValue, nonInterpol ableValue, conversionData);
492 default: 491 default:
493 ASSERT_NOT_REACHED(); 492 ASSERT_NOT_REACHED();
494 return nullptr; 493 return nullptr;
495 } 494 }
496 } 495 }
497 496
498 } // namespace blink 497 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698