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

Side by Side Diff: Source/core/rendering/style/BasicShapes.cpp

Issue 851693005: [CSS Shapes] Implement BasicShapeInset blending (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase Created 5 years, 11 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
« no previous file with comments | « LayoutTests/animations/interpolation/webkit-clip-path-interpolation-expected.txt ('k') | no next file » | 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) 2012 Adobe Systems Incorporated. All rights reserved. 2 * Copyright (C) 2012 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 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 std::max<float>(boundingBox.width() - left - floatValueForLength(m_r ight, boundingBox.width()), 0), 234 std::max<float>(boundingBox.width() - left - floatValueForLength(m_r ight, boundingBox.width()), 0),
235 std::max<float>(boundingBox.height() - top - floatValueForLength(m_b ottom, boundingBox.height()), 0) 235 std::max<float>(boundingBox.height() - top - floatValueForLength(m_b ottom, boundingBox.height()), 0)
236 ), 236 ),
237 floatSizeForLengthSize(m_topLeftRadius, boundingBox), 237 floatSizeForLengthSize(m_topLeftRadius, boundingBox),
238 floatSizeForLengthSize(m_topRightRadius, boundingBox), 238 floatSizeForLengthSize(m_topRightRadius, boundingBox),
239 floatSizeForLengthSize(m_bottomLeftRadius, boundingBox), 239 floatSizeForLengthSize(m_bottomLeftRadius, boundingBox),
240 floatSizeForLengthSize(m_bottomRightRadius, boundingBox) 240 floatSizeForLengthSize(m_bottomRightRadius, boundingBox)
241 ); 241 );
242 } 242 }
243 243
244 PassRefPtr<BasicShape> BasicShapeInset::blend(const BasicShape* other, double) c onst 244 static inline LengthSize blendLengthSize(const LengthSize& to, const LengthSize& from, double progress)
245 { 245 {
246 ASSERT(type() == other->type()); 246 return LengthSize(to.width().blend(from.width(), progress, ValueRangeAll),
247 // FIXME: Implement blend for BasicShapeInset (see: crbug.com/448295). 247 to.height().blend(from.height(), progress, ValueRangeAll));
248 return nullptr; 248 }
249
250 PassRefPtr<BasicShape> BasicShapeInset::blend(const BasicShape* other, double pr ogress) const
251 {
252 ASSERT(other && isSameType(*other));
253
254 const BasicShapeInset& otherInset = toBasicShapeInset(*other);
255 RefPtr<BasicShapeInset> result = BasicShapeInset::create();
256 result->setTop(m_top.blend(otherInset.top(), progress, ValueRangeAll));
257 result->setRight(m_right.blend(otherInset.right(), progress, ValueRangeAll)) ;
258 result->setBottom(m_bottom.blend(otherInset.bottom(), progress, ValueRangeAl l));
259 result->setLeft(m_left.blend(otherInset.left(), progress, ValueRangeAll));
260
261 result->setTopLeftRadius(blendLengthSize(m_topLeftRadius, otherInset.topLeft Radius(), progress));
262 result->setTopRightRadius(blendLengthSize(m_topRightRadius, otherInset.topRi ghtRadius(), progress));
263 result->setBottomRightRadius(blendLengthSize(m_bottomRightRadius, otherInset .bottomRightRadius(), progress));
264 result->setBottomLeftRadius(blendLengthSize(m_bottomLeftRadius, otherInset.b ottomLeftRadius(), progress));
265
266 return result.release();
249 } 267 }
250 268
251 bool BasicShapeInset::operator==(const BasicShape& o) const 269 bool BasicShapeInset::operator==(const BasicShape& o) const
252 { 270 {
253 if (!isSameType(o)) 271 if (!isSameType(o))
254 return false; 272 return false;
255 const BasicShapeInset& other = toBasicShapeInset(o); 273 const BasicShapeInset& other = toBasicShapeInset(o);
256 return m_right == other.m_right 274 return m_right == other.m_right
257 && m_top == other.m_top 275 && m_top == other.m_top
258 && m_bottom == other.m_bottom 276 && m_bottom == other.m_bottom
259 && m_left == other.m_left 277 && m_left == other.m_left
260 && m_topLeftRadius == other.m_topLeftRadius 278 && m_topLeftRadius == other.m_topLeftRadius
261 && m_topRightRadius == other.m_topRightRadius 279 && m_topRightRadius == other.m_topRightRadius
262 && m_bottomRightRadius == other.m_bottomRightRadius 280 && m_bottomRightRadius == other.m_bottomRightRadius
263 && m_bottomLeftRadius == other.m_bottomLeftRadius; 281 && m_bottomLeftRadius == other.m_bottomLeftRadius;
264 } 282 }
265 283
266 } 284 }
OLDNEW
« no previous file with comments | « LayoutTests/animations/interpolation/webkit-clip-path-interpolation-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698