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

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

Issue 2812213002: Add CSSInterpolationType specific ConversionChecker (Closed)
Patch Set: rebased Created 3 years, 7 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 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 "core/animation/CSSColorInterpolationType.h" 5 #include "core/animation/CSSColorInterpolationType.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include "core/animation/ColorPropertyFunctions.h" 8 #include "core/animation/ColorPropertyFunctions.h"
9 #include "core/css/CSSColorValue.h" 9 #include "core/css/CSSColorValue.h"
10 #include "core/css/CSSIdentifierValue.h" 10 #include "core/css/CSSIdentifierValue.h"
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 colors.TextColor()); 151 colors.TextColor());
152 152
153 alpha = clampTo<double>(alpha, 0, 255); 153 alpha = clampTo<double>(alpha, 0, 255);
154 if (alpha == 0) 154 if (alpha == 0)
155 return Color::kTransparent; 155 return Color::kTransparent;
156 156
157 return MakeRGBA(round(red / alpha), round(green / alpha), round(blue / alpha), 157 return MakeRGBA(round(red / alpha), round(green / alpha), round(blue / alpha),
158 round(alpha)); 158 round(alpha));
159 } 159 }
160 160
161 class InheritedColorChecker : public InterpolationType::ConversionChecker { 161 class InheritedColorChecker
162 : public CSSInterpolationType::CSSConversionChecker {
162 public: 163 public:
163 static std::unique_ptr<InheritedColorChecker> Create( 164 static std::unique_ptr<InheritedColorChecker> Create(
164 CSSPropertyID property, 165 CSSPropertyID property,
165 const OptionalStyleColor& color) { 166 const OptionalStyleColor& color) {
166 return WTF::WrapUnique(new InheritedColorChecker(property, color)); 167 return WTF::WrapUnique(new InheritedColorChecker(property, color));
167 } 168 }
168 169
169 private: 170 private:
170 InheritedColorChecker(CSSPropertyID property, const OptionalStyleColor& color) 171 InheritedColorChecker(CSSPropertyID property, const OptionalStyleColor& color)
171 : property_(property), color_(color) {} 172 : property_(property), color_(color) {}
172 173
173 bool IsValid(const InterpolationEnvironment& environment, 174 bool IsValid(const StyleResolverState& state,
174 const InterpolationValue& underlying) const final { 175 const InterpolationValue& underlying) const final {
175 return color_ == ColorPropertyFunctions::GetUnvisitedColor( 176 return color_ == ColorPropertyFunctions::GetUnvisitedColor(
176 property_, *environment.GetState().ParentStyle()); 177 property_, *state.ParentStyle());
177 } 178 }
178 179
179 const CSSPropertyID property_; 180 const CSSPropertyID property_;
180 const OptionalStyleColor color_; 181 const OptionalStyleColor color_;
181 }; 182 };
182 183
183 InterpolationValue CSSColorInterpolationType::MaybeConvertNeutral( 184 InterpolationValue CSSColorInterpolationType::MaybeConvertNeutral(
184 const InterpolationValue&, 185 const InterpolationValue&,
185 ConversionCheckers&) const { 186 ConversionCheckers&) const {
186 return ConvertStyleColorPair(StyleColor(Color::kTransparent), 187 return ConvertStyleColorPair(StyleColor(Color::kTransparent),
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 const CSSValue* CSSColorInterpolationType::CreateCSSValue( 283 const CSSValue* CSSColorInterpolationType::CreateCSSValue(
283 const InterpolableValue& interpolable_value, 284 const InterpolableValue& interpolable_value,
284 const NonInterpolableValue*, 285 const NonInterpolableValue*,
285 const StyleResolverState& state) const { 286 const StyleResolverState& state) const {
286 const InterpolableList& color_pair = ToInterpolableList(interpolable_value); 287 const InterpolableList& color_pair = ToInterpolableList(interpolable_value);
287 Color color = ResolveInterpolableColor(*color_pair.Get(kUnvisited), state); 288 Color color = ResolveInterpolableColor(*color_pair.Get(kUnvisited), state);
288 return CSSColorValue::Create(color.Rgb()); 289 return CSSColorValue::Create(color.Rgb());
289 } 290 }
290 291
291 } // namespace blink 292 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698