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

Side by Side Diff: Source/core/css/resolver/AnimatedStyleBuilder.cpp

Issue 983103003: Use Length for the stroke-width property in SVGLayoutStyle (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: lengthSetterForProperty Created 5 years, 9 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 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. 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 are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 26 matching lines...) Expand all
37 #include "core/animation/animatable/AnimatableDoubleAndBool.h" 37 #include "core/animation/animatable/AnimatableDoubleAndBool.h"
38 #include "core/animation/animatable/AnimatableFilterOperations.h" 38 #include "core/animation/animatable/AnimatableFilterOperations.h"
39 #include "core/animation/animatable/AnimatableImage.h" 39 #include "core/animation/animatable/AnimatableImage.h"
40 #include "core/animation/animatable/AnimatableLength.h" 40 #include "core/animation/animatable/AnimatableLength.h"
41 #include "core/animation/animatable/AnimatableLengthBox.h" 41 #include "core/animation/animatable/AnimatableLengthBox.h"
42 #include "core/animation/animatable/AnimatableLengthBoxAndBool.h" 42 #include "core/animation/animatable/AnimatableLengthBoxAndBool.h"
43 #include "core/animation/animatable/AnimatableLengthPoint.h" 43 #include "core/animation/animatable/AnimatableLengthPoint.h"
44 #include "core/animation/animatable/AnimatableLengthPoint3D.h" 44 #include "core/animation/animatable/AnimatableLengthPoint3D.h"
45 #include "core/animation/animatable/AnimatableLengthSize.h" 45 #include "core/animation/animatable/AnimatableLengthSize.h"
46 #include "core/animation/animatable/AnimatableRepeatable.h" 46 #include "core/animation/animatable/AnimatableRepeatable.h"
47 #include "core/animation/animatable/AnimatableSVGLength.h"
48 #include "core/animation/animatable/AnimatableSVGPaint.h" 47 #include "core/animation/animatable/AnimatableSVGPaint.h"
49 #include "core/animation/animatable/AnimatableShadow.h" 48 #include "core/animation/animatable/AnimatableShadow.h"
50 #include "core/animation/animatable/AnimatableShapeValue.h" 49 #include "core/animation/animatable/AnimatableShapeValue.h"
51 #include "core/animation/animatable/AnimatableStrokeDasharrayList.h" 50 #include "core/animation/animatable/AnimatableStrokeDasharrayList.h"
52 #include "core/animation/animatable/AnimatableTransform.h" 51 #include "core/animation/animatable/AnimatableTransform.h"
53 #include "core/animation/animatable/AnimatableUnknown.h" 52 #include "core/animation/animatable/AnimatableUnknown.h"
54 #include "core/animation/animatable/AnimatableValue.h" 53 #include "core/animation/animatable/AnimatableValue.h"
55 #include "core/animation/animatable/AnimatableVisibility.h" 54 #include "core/animation/animatable/AnimatableVisibility.h"
56 #include "core/css/CSSPrimitiveValueMappings.h" 55 #include "core/css/CSSPrimitiveValueMappings.h"
57 #include "core/css/CSSPropertyMetadata.h" 56 #include "core/css/CSSPropertyMetadata.h"
58 #include "core/css/resolver/StyleBuilder.h" 57 #include "core/css/resolver/StyleBuilder.h"
59 #include "core/css/resolver/StyleResolverState.h" 58 #include "core/css/resolver/StyleResolverState.h"
60 #include "core/layout/style/LayoutStyle.h" 59 #include "core/layout/style/LayoutStyle.h"
61 #include "wtf/MathExtras.h" 60 #include "wtf/MathExtras.h"
62 #include "wtf/TypeTraits.h" 61 #include "wtf/TypeTraits.h"
63 62
64 namespace blink { 63 namespace blink {
65 64
66 namespace { 65 namespace {
67 66
67 Length animatableValueToLengthWithZoom(const AnimatableValue* value, float zoom, ValueRange range = ValueRangeAll)
68 {
69 if (value->isLength())
70 return toAnimatableLength(value)->length(zoom, range);
71 ASSERT(toAnimatableUnknown(value)->toCSSValueID() == CSSValueAuto);
72 return Length(Auto);
73 }
74
68 Length animatableValueToLength(const AnimatableValue* value, const StyleResolver State& state, ValueRange range = ValueRangeAll) 75 Length animatableValueToLength(const AnimatableValue* value, const StyleResolver State& state, ValueRange range = ValueRangeAll)
69 { 76 {
70 if (value->isLength()) 77 return animatableValueToLengthWithZoom(value, state.style()->effectiveZoom() , range);
71 return toAnimatableLength(value)->length(state.style()->effectiveZoom(), range); 78 }
72 ASSERT(toAnimatableUnknown(value)->toCSSValueID() == CSSValueAuto); 79
73 return Length(Auto); 80 UnzoomedLength animatableValueToUnzoomedLength(const AnimatableValue* value, con st StyleResolverState&, ValueRange range = ValueRangeAll)
81 {
82 return UnzoomedLength(animatableValueToLengthWithZoom(value, 1, range));
74 } 83 }
75 84
76 BorderImageLength animatableValueToBorderImageLength(const AnimatableValue* valu e, const StyleResolverState& state) 85 BorderImageLength animatableValueToBorderImageLength(const AnimatableValue* valu e, const StyleResolverState& state)
77 { 86 {
78 if (value->isLength()) 87 if (value->isLength())
79 return BorderImageLength(toAnimatableLength(value)->length(state.style() ->effectiveZoom(), ValueRangeNonNegative)); 88 return BorderImageLength(toAnimatableLength(value)->length(state.style() ->effectiveZoom(), ValueRangeNonNegative));
80 if (value->isDouble()) 89 if (value->isDouble())
81 return BorderImageLength(clampTo<double>(toAnimatableDouble(value)->toDo uble(), 0)); 90 return BorderImageLength(clampTo<double>(toAnimatableDouble(value)->toDo uble(), 0));
82 ASSERT(toAnimatableUnknown(value)->toCSSValueID() == CSSValueAuto); 91 ASSERT(toAnimatableUnknown(value)->toCSSValueID() == CSSValueAuto);
83 return Length(Auto); 92 return Length(Auto);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 } 145 }
137 146
138 void setFillSize(FillLayer* fillLayer, const AnimatableValue* value, StyleResolv erState& state) 147 void setFillSize(FillLayer* fillLayer, const AnimatableValue* value, StyleResolv erState& state)
139 { 148 {
140 if (value->isLengthSize()) 149 if (value->isLengthSize())
141 fillLayer->setSize(FillSize(SizeLength, animatableValueToLengthSize(valu e, state, ValueRangeNonNegative))); 150 fillLayer->setSize(FillSize(SizeLength, animatableValueToLengthSize(valu e, state, ValueRangeNonNegative)));
142 else 151 else
143 CSSToStyleMap::mapFillSize(state, fillLayer, toAnimatableUnknown(value)- >toCSSValue().get()); 152 CSSToStyleMap::mapFillSize(state, fillLayer, toAnimatableUnknown(value)- >toCSSValue().get());
144 } 153 }
145 154
146 PassRefPtrWillBeRawPtr<SVGLength> animatableValueToNonNegativeSVGLength(const An imatableValue* value)
147 {
148 RefPtrWillBeRawPtr<SVGLength> length = toAnimatableSVGLength(value)->toSVGLe ngth();
149 if (length->valueInSpecifiedUnits() < 0)
150 length->setValueInSpecifiedUnits(0);
151 return length.release();
152 }
153
154 template <CSSPropertyID property> 155 template <CSSPropertyID property>
155 void setOnFillLayers(FillLayer& fillLayers, const AnimatableValue* value, StyleR esolverState& state) 156 void setOnFillLayers(FillLayer& fillLayers, const AnimatableValue* value, StyleR esolverState& state)
156 { 157 {
157 const WillBeHeapVector<RefPtrWillBeMember<AnimatableValue> >& values = toAni matableRepeatable(value)->values(); 158 const WillBeHeapVector<RefPtrWillBeMember<AnimatableValue> >& values = toAni matableRepeatable(value)->values();
158 ASSERT(!values.isEmpty()); 159 ASSERT(!values.isEmpty());
159 FillLayer* fillLayer = &fillLayers; 160 FillLayer* fillLayer = &fillLayers;
160 FillLayer* prev = 0; 161 FillLayer* prev = 0;
161 for (size_t i = 0; i < values.size(); ++i) { 162 for (size_t i = 0; i < values.size(); ++i) {
162 if (!fillLayer) 163 if (!fillLayer)
163 fillLayer = prev->ensureNext(); 164 fillLayer = prev->ensureNext();
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 case CSSPropertyPaddingRight: 471 case CSSPropertyPaddingRight:
471 style->setPaddingRight(animatableValueToLength(value, state, ValueRangeN onNegative)); 472 style->setPaddingRight(animatableValueToLength(value, state, ValueRangeN onNegative));
472 return; 473 return;
473 case CSSPropertyPaddingTop: 474 case CSSPropertyPaddingTop:
474 style->setPaddingTop(animatableValueToLength(value, state, ValueRangeNon Negative)); 475 style->setPaddingTop(animatableValueToLength(value, state, ValueRangeNon Negative));
475 return; 476 return;
476 case CSSPropertyRight: 477 case CSSPropertyRight:
477 style->setRight(animatableValueToLength(value, state)); 478 style->setRight(animatableValueToLength(value, state));
478 return; 479 return;
479 case CSSPropertyStrokeWidth: 480 case CSSPropertyStrokeWidth:
480 style->setStrokeWidth(animatableValueToNonNegativeSVGLength(value)); 481 style->setStrokeWidth(animatableValueToUnzoomedLength(value, state, Valu eRangeNonNegative));
481 return; 482 return;
482 case CSSPropertyStopColor: 483 case CSSPropertyStopColor:
483 style->setStopColor(toAnimatableColor(value)->color()); 484 style->setStopColor(toAnimatableColor(value)->color());
484 return; 485 return;
485 case CSSPropertyStopOpacity: 486 case CSSPropertyStopOpacity:
486 style->setStopOpacity(clampTo<float>(toAnimatableDouble(value)->toDouble (), 0, 1)); 487 style->setStopOpacity(clampTo<float>(toAnimatableDouble(value)->toDouble (), 0, 1));
487 return; 488 return;
488 case CSSPropertyStrokeDasharray: 489 case CSSPropertyStrokeDasharray:
489 style->setStrokeDashArray(toAnimatableStrokeDasharrayList(value)->toSVGD ashArray(style->effectiveZoom())); 490 style->setStrokeDashArray(toAnimatableStrokeDasharrayList(value)->toSVGD ashArray(style->effectiveZoom()));
490 return; 491 return;
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 case CSSPropertyRy: 639 case CSSPropertyRy:
639 style->setRy(animatableValueToLength(value, state)); 640 style->setRy(animatableValueToLength(value, state));
640 return; 641 return;
641 642
642 default: 643 default:
643 ASSERT_NOT_REACHED(); 644 ASSERT_NOT_REACHED();
644 } 645 }
645 } 646 }
646 647
647 } // namespace blink 648 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/css/LayoutStyleCSSValueMapping.cpp ('k') | Source/core/css/resolver/StyleBuilderConverter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698