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

Side by Side Diff: Source/core/animation/ImageSliceStyleInterpolation.cpp

Issue 1276183004: Oilpan: Unship oilpan from temporary animation objects (Closed) 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "config.h" 5 #include "config.h"
6 #include "core/animation/ImageSliceStyleInterpolation.h" 6 #include "core/animation/ImageSliceStyleInterpolation.h"
7 7
8 #include "core/css/CSSBorderImageSliceValue.h" 8 #include "core/css/CSSBorderImageSliceValue.h"
9 #include "core/css/CSSPrimitiveValue.h" 9 #include "core/css/CSSPrimitiveValue.h"
10 #include "core/css/CSSQuadValue.h" 10 #include "core/css/CSSQuadValue.h"
(...skipping 14 matching lines...) Expand all
25 namespace { 25 namespace {
26 26
27 class Decomposition { 27 class Decomposition {
28 STACK_ALLOCATED(); 28 STACK_ALLOCATED();
29 public: 29 public:
30 Decomposition(const CSSBorderImageSliceValue& value) 30 Decomposition(const CSSBorderImageSliceValue& value)
31 { 31 {
32 decompose(value); 32 decompose(value);
33 } 33 }
34 34
35 OwnPtrWillBeMember<InterpolableValue> interpolableValue; 35 OwnPtr<InterpolableValue> interpolableValue;
36 ImageSliceStyleInterpolation::Metadata metadata; 36 ImageSliceStyleInterpolation::Metadata metadata;
37 37
38 private: 38 private:
39 void decompose(const CSSBorderImageSliceValue& value) 39 void decompose(const CSSBorderImageSliceValue& value)
40 { 40 {
41 const size_t kQuadSides = 4; 41 const size_t kQuadSides = 4;
42 OwnPtrWillBeRawPtr<InterpolableList> interpolableList = InterpolableList ::create(kQuadSides); 42 OwnPtr<InterpolableList> interpolableList = InterpolableList::create(kQu adSides);
43 const CSSQuadValue& quad = *value.slices(); 43 const CSSQuadValue& quad = *value.slices();
44 interpolableList->set(0, InterpolableNumber::create(quad.top()->getDoubl eValue())); 44 interpolableList->set(0, InterpolableNumber::create(quad.top()->getDoubl eValue()));
45 interpolableList->set(1, InterpolableNumber::create(quad.right()->getDou bleValue())); 45 interpolableList->set(1, InterpolableNumber::create(quad.right()->getDou bleValue()));
46 interpolableList->set(2, InterpolableNumber::create(quad.bottom()->getDo ubleValue())); 46 interpolableList->set(2, InterpolableNumber::create(quad.bottom()->getDo ubleValue()));
47 interpolableList->set(3, InterpolableNumber::create(quad.left()->getDoub leValue())); 47 interpolableList->set(3, InterpolableNumber::create(quad.left()->getDoub leValue()));
48 bool isPercentage = quad.top()->isPercentage(); 48 bool isPercentage = quad.top()->isPercentage();
49 ASSERT(quad.bottom()->isPercentage() == isPercentage 49 ASSERT(quad.bottom()->isPercentage() == isPercentage
50 && quad.left()->isPercentage() == isPercentage 50 && quad.left()->isPercentage() == isPercentage
51 && quad.right()->isPercentage() == isPercentage); 51 && quad.right()->isPercentage() == isPercentage);
52 52
53 interpolableValue = interpolableList.release(); 53 interpolableValue = interpolableList.release();
54 metadata = ImageSliceStyleInterpolation::Metadata {isPercentage, value.m _fill}; 54 metadata = ImageSliceStyleInterpolation::Metadata {isPercentage, value.m _fill};
55 } 55 }
56 }; 56 };
57 57
58 PassRefPtrWillBeRawPtr<CSSBorderImageSliceValue> compose(const InterpolableValue & value, const ImageSliceStyleInterpolation::Metadata& metadata) 58 PassRefPtrWillBeRawPtr<CSSBorderImageSliceValue> compose(const InterpolableValue & value, const ImageSliceStyleInterpolation::Metadata& metadata)
59 { 59 {
60 const InterpolableList& interpolableList = toInterpolableList(value); 60 const InterpolableList& interpolableList = toInterpolableList(value);
61 CSSPrimitiveValue::UnitType type = metadata.isPercentage ? CSSPrimitiveValue ::UnitType::Percentage : CSSPrimitiveValue::UnitType::Number; 61 CSSPrimitiveValue::UnitType type = metadata.isPercentage ? CSSPrimitiveValue ::UnitType::Percentage : CSSPrimitiveValue::UnitType::Number;
62 RefPtrWillBeRawPtr<CSSPrimitiveValue> top = CSSPrimitiveValue::create(clampT o<double>(toInterpolableNumber(interpolableList.get(0))->value(), 0), type); 62 RefPtrWillBeRawPtr<CSSPrimitiveValue> top = CSSPrimitiveValue::create(clampT o<double>(toInterpolableNumber(interpolableList.get(0))->value(), 0), type);
63 RefPtrWillBeRawPtr<CSSPrimitiveValue> right = CSSPrimitiveValue::create(clam pTo<double>(toInterpolableNumber(interpolableList.get(1))->value(), 0), type); 63 RefPtrWillBeRawPtr<CSSPrimitiveValue> right = CSSPrimitiveValue::create(clam pTo<double>(toInterpolableNumber(interpolableList.get(1))->value(), 0), type);
64 RefPtrWillBeRawPtr<CSSPrimitiveValue> bottom = CSSPrimitiveValue::create(cla mpTo<double>(toInterpolableNumber(interpolableList.get(2))->value(), 0), type); 64 RefPtrWillBeRawPtr<CSSPrimitiveValue> bottom = CSSPrimitiveValue::create(cla mpTo<double>(toInterpolableNumber(interpolableList.get(2))->value(), 0), type);
65 RefPtrWillBeRawPtr<CSSPrimitiveValue> left = CSSPrimitiveValue::create(clamp To<double>(toInterpolableNumber(interpolableList.get(3))->value(), 0), type); 65 RefPtrWillBeRawPtr<CSSPrimitiveValue> left = CSSPrimitiveValue::create(clamp To<double>(toInterpolableNumber(interpolableList.get(3))->value(), 0), type);
66 return CSSBorderImageSliceValue::create(CSSQuadValue::create(top.release(), right.release(), bottom.release(), left.release(), CSSQuadValue::SerializeAsQuad ), metadata.fill); 66 return CSSBorderImageSliceValue::create(CSSQuadValue::create(top.release(), right.release(), bottom.release(), left.release(), CSSQuadValue::SerializeAsQuad ), metadata.fill);
67 } 67 }
68 68
69 } // namespace 69 } // namespace
70 70
71 PassRefPtrWillBeRawPtr<ImageSliceStyleInterpolation> ImageSliceStyleInterpolatio n::maybeCreate(const CSSValue& start, const CSSValue& end, CSSPropertyID propert y) 71 PassRefPtr<ImageSliceStyleInterpolation> ImageSliceStyleInterpolation::maybeCrea te(const CSSValue& start, const CSSValue& end, CSSPropertyID property)
72 { 72 {
73 if (!start.isBorderImageSliceValue() || !end.isBorderImageSliceValue()) 73 if (!start.isBorderImageSliceValue() || !end.isBorderImageSliceValue())
74 return nullptr; 74 return nullptr;
75 75
76 Decomposition startDecompose(toCSSBorderImageSliceValue(start)); 76 Decomposition startDecompose(toCSSBorderImageSliceValue(start));
77 Decomposition endDecompose(toCSSBorderImageSliceValue(end)); 77 Decomposition endDecompose(toCSSBorderImageSliceValue(end));
78 if (!(startDecompose.metadata == endDecompose.metadata)) 78 if (!(startDecompose.metadata == endDecompose.metadata))
79 return nullptr; 79 return nullptr;
80 80
81 return adoptRefWillBeNoop(new ImageSliceStyleInterpolation( 81 return adoptRef(new ImageSliceStyleInterpolation(
82 startDecompose.interpolableValue.release(), 82 startDecompose.interpolableValue.release(),
83 endDecompose.interpolableValue.release(), 83 endDecompose.interpolableValue.release(),
84 property, 84 property,
85 startDecompose.metadata 85 startDecompose.metadata
86 )); 86 ));
87 } 87 }
88 88
89 void ImageSliceStyleInterpolation::apply(StyleResolverState& state) const 89 void ImageSliceStyleInterpolation::apply(StyleResolverState& state) const
90 { 90 {
91 StyleBuilder::applyProperty(m_id, state, compose(*m_cachedValue, m_metadata) .get()); 91 StyleBuilder::applyProperty(m_id, state, compose(*m_cachedValue, m_metadata) .get());
92 } 92 }
93 93
94 DEFINE_TRACE(ImageSliceStyleInterpolation)
95 {
96 StyleInterpolation::trace(visitor);
97 }
98
99 } // namespace blink 94 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698