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

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

Issue 1225553002: CSSValue Immediates: Make CSSPrimitiveValue a container (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@cssvalue_patch_1
Patch Set: Rebase Created 5 years, 4 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 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All r ights reserved. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All r ights reserved.
6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 void CSSToStyleMap::mapFillAttachment(StyleResolverState&, FillLayer* layer, CSS Value value) 46 void CSSToStyleMap::mapFillAttachment(StyleResolverState&, FillLayer* layer, CSS Value value)
47 { 47 {
48 if (value.isInitialValue()) { 48 if (value.isInitialValue()) {
49 layer->setAttachment(FillLayer::initialFillAttachment(layer->type())); 49 layer->setAttachment(FillLayer::initialFillAttachment(layer->type()));
50 return; 50 return;
51 } 51 }
52 52
53 if (!value.isPrimitiveValue()) 53 if (!value.isPrimitiveValue())
54 return; 54 return;
55 55
56 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 56 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
57 switch (primitiveValue.getValueID()) { 57 switch (primitiveValue.getValueID()) {
58 case CSSValueFixed: 58 case CSSValueFixed:
59 layer->setAttachment(FixedBackgroundAttachment); 59 layer->setAttachment(FixedBackgroundAttachment);
60 break; 60 break;
61 case CSSValueScroll: 61 case CSSValueScroll:
62 layer->setAttachment(ScrollBackgroundAttachment); 62 layer->setAttachment(ScrollBackgroundAttachment);
63 break; 63 break;
64 case CSSValueLocal: 64 case CSSValueLocal:
65 layer->setAttachment(LocalBackgroundAttachment); 65 layer->setAttachment(LocalBackgroundAttachment);
66 break; 66 break;
67 default: 67 default:
68 return; 68 return;
69 } 69 }
70 } 70 }
71 71
72 void CSSToStyleMap::mapFillClip(StyleResolverState&, FillLayer* layer, CSSValue value) 72 void CSSToStyleMap::mapFillClip(StyleResolverState&, FillLayer* layer, CSSValue value)
73 { 73 {
74 if (value.isInitialValue()) { 74 if (value.isInitialValue()) {
75 layer->setClip(FillLayer::initialFillClip(layer->type())); 75 layer->setClip(FillLayer::initialFillClip(layer->type()));
76 return; 76 return;
77 } 77 }
78 78
79 if (!value.isPrimitiveValue()) 79 if (!value.isPrimitiveValue())
80 return; 80 return;
81 81
82 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 82 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
83 layer->setClip(primitiveValue); 83 layer->setClip(primitiveValue);
84 } 84 }
85 85
86 void CSSToStyleMap::mapFillComposite(StyleResolverState&, FillLayer* layer, CSSV alue value) 86 void CSSToStyleMap::mapFillComposite(StyleResolverState&, FillLayer* layer, CSSV alue value)
87 { 87 {
88 if (value.isInitialValue()) { 88 if (value.isInitialValue()) {
89 layer->setComposite(FillLayer::initialFillComposite(layer->type())); 89 layer->setComposite(FillLayer::initialFillComposite(layer->type()));
90 return; 90 return;
91 } 91 }
92 92
93 if (!value.isPrimitiveValue()) 93 if (!value.isPrimitiveValue())
94 return; 94 return;
95 95
96 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 96 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
97 layer->setComposite(primitiveValue); 97 layer->setComposite(primitiveValue);
98 } 98 }
99 99
100 void CSSToStyleMap::mapFillBlendMode(StyleResolverState&, FillLayer* layer, CSSV alue value) 100 void CSSToStyleMap::mapFillBlendMode(StyleResolverState&, FillLayer* layer, CSSV alue value)
101 { 101 {
102 if (value.isInitialValue()) { 102 if (value.isInitialValue()) {
103 layer->setBlendMode(FillLayer::initialFillBlendMode(layer->type())); 103 layer->setBlendMode(FillLayer::initialFillBlendMode(layer->type()));
104 return; 104 return;
105 } 105 }
106 106
107 if (!value.isPrimitiveValue()) 107 if (!value.isPrimitiveValue())
108 return; 108 return;
109 109
110 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 110 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
111 layer->setBlendMode(primitiveValue); 111 layer->setBlendMode(primitiveValue);
112 } 112 }
113 113
114 void CSSToStyleMap::mapFillOrigin(StyleResolverState&, FillLayer* layer, CSSValu e value) 114 void CSSToStyleMap::mapFillOrigin(StyleResolverState&, FillLayer* layer, CSSValu e value)
115 { 115 {
116 if (value.isInitialValue()) { 116 if (value.isInitialValue()) {
117 layer->setOrigin(FillLayer::initialFillOrigin(layer->type())); 117 layer->setOrigin(FillLayer::initialFillOrigin(layer->type()));
118 return; 118 return;
119 } 119 }
120 120
121 if (!value.isPrimitiveValue()) 121 if (!value.isPrimitiveValue())
122 return; 122 return;
123 123
124 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 124 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
125 layer->setOrigin(primitiveValue); 125 layer->setOrigin(primitiveValue);
126 } 126 }
127 127
128 128
129 void CSSToStyleMap::mapFillImage(StyleResolverState& state, FillLayer* layer, CS SValue value) 129 void CSSToStyleMap::mapFillImage(StyleResolverState& state, FillLayer* layer, CS SValue value)
130 { 130 {
131 if (value.isInitialValue()) { 131 if (value.isInitialValue()) {
132 layer->setImage(FillLayer::initialFillImage(layer->type())); 132 layer->setImage(FillLayer::initialFillImage(layer->type()));
133 return; 133 return;
134 } 134 }
135 135
136 CSSPropertyID property = layer->type() == BackgroundFillLayer ? CSSPropertyB ackgroundImage : CSSPropertyWebkitMaskImage; 136 CSSPropertyID property = layer->type() == BackgroundFillLayer ? CSSPropertyB ackgroundImage : CSSPropertyWebkitMaskImage;
137 layer->setImage(state.styleImage(property, value)); 137 layer->setImage(state.styleImage(property, value));
138 } 138 }
139 139
140 void CSSToStyleMap::mapFillRepeatX(StyleResolverState&, FillLayer* layer, CSSVal ue value) 140 void CSSToStyleMap::mapFillRepeatX(StyleResolverState&, FillLayer* layer, CSSVal ue value)
141 { 141 {
142 if (value.isInitialValue()) { 142 if (value.isInitialValue()) {
143 layer->setRepeatX(FillLayer::initialFillRepeatX(layer->type())); 143 layer->setRepeatX(FillLayer::initialFillRepeatX(layer->type()));
144 return; 144 return;
145 } 145 }
146 146
147 if (!value.isPrimitiveValue()) 147 if (!value.isPrimitiveValue())
148 return; 148 return;
149 149
150 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 150 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
151 layer->setRepeatX(primitiveValue); 151 layer->setRepeatX(primitiveValue);
152 } 152 }
153 153
154 void CSSToStyleMap::mapFillRepeatY(StyleResolverState&, FillLayer* layer, CSSVal ue value) 154 void CSSToStyleMap::mapFillRepeatY(StyleResolverState&, FillLayer* layer, CSSVal ue value)
155 { 155 {
156 if (value.isInitialValue()) { 156 if (value.isInitialValue()) {
157 layer->setRepeatY(FillLayer::initialFillRepeatY(layer->type())); 157 layer->setRepeatY(FillLayer::initialFillRepeatY(layer->type()));
158 return; 158 return;
159 } 159 }
160 160
161 if (!value.isPrimitiveValue()) 161 if (!value.isPrimitiveValue())
162 return; 162 return;
163 163
164 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 164 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
165 layer->setRepeatY(primitiveValue); 165 layer->setRepeatY(primitiveValue);
166 } 166 }
167 167
168 void CSSToStyleMap::mapFillSize(StyleResolverState& state, FillLayer* layer, CSS Value value) 168 void CSSToStyleMap::mapFillSize(StyleResolverState& state, FillLayer* layer, CSS Value value)
169 { 169 {
170 if (value.isInitialValue()) { 170 if (value.isInitialValue()) {
171 layer->setSizeType(FillLayer::initialFillSizeType(layer->type())); 171 layer->setSizeType(FillLayer::initialFillSizeType(layer->type()));
172 layer->setSizeLength(FillLayer::initialFillSizeLength(layer->type())); 172 layer->setSizeLength(FillLayer::initialFillSizeLength(layer->type()));
173 return; 173 return;
174 } 174 }
175 175
176 if (!value.isPrimitiveValue()) 176 if (!value.isPrimitiveValue())
177 return; 177 return;
178 178
179 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 179 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
180 if (primitiveValue.getValueID() == CSSValueContain) 180 if (primitiveValue.getValueID() == CSSValueContain)
181 layer->setSizeType(Contain); 181 layer->setSizeType(Contain);
182 else if (primitiveValue.getValueID() == CSSValueCover) 182 else if (primitiveValue.getValueID() == CSSValueCover)
183 layer->setSizeType(Cover); 183 layer->setSizeType(Cover);
184 else 184 else
185 layer->setSizeType(SizeLength); 185 layer->setSizeType(SizeLength);
186 186
187 LengthSize b = FillLayer::initialFillSizeLength(layer->type()); 187 LengthSize b = FillLayer::initialFillSizeLength(layer->type());
188 188
189 if (primitiveValue.getValueID() == CSSValueContain || primitiveValue.getValu eID() == CSSValueCover) { 189 if (primitiveValue.getValueID() == CSSValueContain || primitiveValue.getValu eID() == CSSValueCover) {
(...skipping 20 matching lines...) Expand all
210 void CSSToStyleMap::mapFillXPosition(StyleResolverState& state, FillLayer* layer , CSSValue value) 210 void CSSToStyleMap::mapFillXPosition(StyleResolverState& state, FillLayer* layer , CSSValue value)
211 { 211 {
212 if (value.isInitialValue()) { 212 if (value.isInitialValue()) {
213 layer->setXPosition(FillLayer::initialFillXPosition(layer->type())); 213 layer->setXPosition(FillLayer::initialFillXPosition(layer->type()));
214 return; 214 return;
215 } 215 }
216 216
217 if (!value.isPrimitiveValue()) 217 if (!value.isPrimitiveValue())
218 return; 218 return;
219 219
220 CSSPrimitiveValue* primitiveValue = &toCSSPrimitiveValue(value); 220 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
221 Pair* pair = primitiveValue->getPairValue(); 221 Pair* pair = primitiveValue.getPairValue();
222 if (pair) 222 if (pair)
223 primitiveValue = pair->second(); 223 primitiveValue = toCSSPrimitiveValue(*pair->second());
224 224
225 Length length = primitiveValue->convertToLength(state.cssToLengthConversionD ata()); 225 Length length = primitiveValue.convertToLength(state.cssToLengthConversionDa ta());
226 226
227 layer->setXPosition(length); 227 layer->setXPosition(length);
228 if (pair) 228 if (pair)
229 layer->setBackgroundXOrigin(*(pair->first())); 229 layer->setBackgroundXOrigin(toCSSPrimitiveValue(*pair->first()));
230 } 230 }
231 231
232 void CSSToStyleMap::mapFillYPosition(StyleResolverState& state, FillLayer* layer , CSSValue value) 232 void CSSToStyleMap::mapFillYPosition(StyleResolverState& state, FillLayer* layer , CSSValue value)
233 { 233 {
234 if (value.isInitialValue()) { 234 if (value.isInitialValue()) {
235 layer->setYPosition(FillLayer::initialFillYPosition(layer->type())); 235 layer->setYPosition(FillLayer::initialFillYPosition(layer->type()));
236 return; 236 return;
237 } 237 }
238 238
239 if (!value.isPrimitiveValue()) 239 if (!value.isPrimitiveValue())
240 return; 240 return;
241 241
242 CSSPrimitiveValue* primitiveValue = &toCSSPrimitiveValue(value); 242 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
243 Pair* pair = primitiveValue->getPairValue(); 243 Pair* pair = primitiveValue.getPairValue();
244 if (pair) 244 if (pair)
245 primitiveValue = pair->second(); 245 primitiveValue = toCSSPrimitiveValue(*pair->second());
246 246
247 Length length = primitiveValue->convertToLength(state.cssToLengthConversionD ata()); 247 Length length = primitiveValue.convertToLength(state.cssToLengthConversionDa ta());
248 248
249 layer->setYPosition(length); 249 layer->setYPosition(length);
250 if (pair) 250 if (pair)
251 layer->setBackgroundYOrigin(*(pair->first())); 251 layer->setBackgroundYOrigin(toCSSPrimitiveValue(*pair->first()));
252 } 252 }
253 253
254 void CSSToStyleMap::mapFillMaskSourceType(StyleResolverState&, FillLayer* layer, CSSValue value) 254 void CSSToStyleMap::mapFillMaskSourceType(StyleResolverState&, FillLayer* layer, CSSValue value)
255 { 255 {
256 EMaskSourceType type = FillLayer::initialFillMaskSourceType(layer->type()); 256 EMaskSourceType type = FillLayer::initialFillMaskSourceType(layer->type());
257 if (value.isInitialValue()) { 257 if (value.isInitialValue()) {
258 layer->setMaskSourceType(type); 258 layer->setMaskSourceType(type);
259 return; 259 return;
260 } 260 }
261 261
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 default: 329 default:
330 ASSERT_NOT_REACHED(); 330 ASSERT_NOT_REACHED();
331 return CSSAnimationData::initialFillMode(); 331 return CSSAnimationData::initialFillMode();
332 } 332 }
333 } 333 }
334 334
335 double CSSToStyleMap::mapAnimationIterationCount(CSSValue value) 335 double CSSToStyleMap::mapAnimationIterationCount(CSSValue value)
336 { 336 {
337 if (value.isInitialValue()) 337 if (value.isInitialValue())
338 return CSSAnimationData::initialIterationCount(); 338 return CSSAnimationData::initialIterationCount();
339 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 339 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
340 if (primitiveValue.getValueID() == CSSValueInfinite) 340 if (primitiveValue.getValueID() == CSSValueInfinite)
341 return std::numeric_limits<double>::infinity(); 341 return std::numeric_limits<double>::infinity();
342 return primitiveValue.getFloatValue(); 342 return primitiveValue.getFloatValue();
343 } 343 }
344 344
345 AtomicString CSSToStyleMap::mapAnimationName(CSSValue value) 345 AtomicString CSSToStyleMap::mapAnimationName(CSSValue value)
346 { 346 {
347 if (value.isInitialValue()) 347 if (value.isInitialValue())
348 return CSSAnimationData::initialName(); 348 return CSSAnimationData::initialName();
349 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 349 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
350 if (primitiveValue.getValueID() == CSSValueNone) 350 if (primitiveValue.getValueID() == CSSValueNone)
351 return CSSAnimationData::initialName(); 351 return CSSAnimationData::initialName();
352 return AtomicString(primitiveValue.getStringValue()); 352 return AtomicString(primitiveValue.getStringValue());
353 } 353 }
354 354
355 EAnimPlayState CSSToStyleMap::mapAnimationPlayState(CSSValue value) 355 EAnimPlayState CSSToStyleMap::mapAnimationPlayState(CSSValue value)
356 { 356 {
357 if (value.isInitialValue()) 357 if (value.isInitialValue())
358 return CSSAnimationData::initialPlayState(); 358 return CSSAnimationData::initialPlayState();
359 if (toCSSPrimitiveValue(value).getValueID() == CSSValuePaused) 359 if (toCSSPrimitiveValue(value).getValueID() == CSSValuePaused)
360 return AnimPlayStatePaused; 360 return AnimPlayStatePaused;
361 ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueRunning); 361 ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueRunning);
362 return AnimPlayStatePlaying; 362 return AnimPlayStatePlaying;
363 } 363 }
364 364
365 CSSTransitionData::TransitionProperty CSSToStyleMap::mapAnimationProperty(CSSVal ue value) 365 CSSTransitionData::TransitionProperty CSSToStyleMap::mapAnimationProperty(CSSVal ue value)
366 { 366 {
367 if (value.isInitialValue()) 367 if (value.isInitialValue())
368 return CSSTransitionData::initialProperty(); 368 return CSSTransitionData::initialProperty();
369 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 369 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
370 if (primitiveValue.isCustomIdent()) 370 if (primitiveValue.isCustomIdent())
371 return CSSTransitionData::TransitionProperty(primitiveValue.getStringVal ue()); 371 return CSSTransitionData::TransitionProperty(primitiveValue.getStringVal ue());
372 if (primitiveValue.getValueID() == CSSValueAll) 372 if (primitiveValue.getValueID() == CSSValueAll)
373 return CSSTransitionData::TransitionProperty(CSSTransitionData::Transiti onAll); 373 return CSSTransitionData::TransitionProperty(CSSTransitionData::Transiti onAll);
374 if (primitiveValue.getValueID() == CSSValueNone) 374 if (primitiveValue.getValueID() == CSSValueNone)
375 return CSSTransitionData::TransitionProperty(CSSTransitionData::Transiti onNone); 375 return CSSTransitionData::TransitionProperty(CSSTransitionData::Transiti onNone);
376 return CSSTransitionData::TransitionProperty(primitiveValue.getPropertyID()) ; 376 return CSSTransitionData::TransitionProperty(primitiveValue.getPropertyID()) ;
377 } 377 }
378 378
379 PassRefPtr<TimingFunction> CSSToStyleMap::mapAnimationTimingFunction(CSSValue va lue, bool allowStepMiddle) 379 PassRefPtr<TimingFunction> CSSToStyleMap::mapAnimationTimingFunction(CSSValue va lue, bool allowStepMiddle)
380 { 380 {
381 // FIXME: We should probably only call into this function with a valid 381 // FIXME: We should probably only call into this function with a valid
382 // single timing function value which isn't initial or inherit. We can 382 // single timing function value which isn't initial or inherit. We can
383 // currently get into here with initial since the parser expands unset 383 // currently get into here with initial since the parser expands unset
384 // properties in shorthands to initial. 384 // properties in shorthands to initial.
385 385
386 if (value.isPrimitiveValue()) { 386 if (value.isPrimitiveValue()) {
387 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); 387 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(value);
388 switch (primitiveValue.getValueID()) { 388 switch (primitiveValue.getValueID()) {
389 case CSSValueLinear: 389 case CSSValueLinear:
390 return LinearTimingFunction::shared(); 390 return LinearTimingFunction::shared();
391 case CSSValueEase: 391 case CSSValueEase:
392 return CubicBezierTimingFunction::preset(CubicBezierTimingFunction:: Ease); 392 return CubicBezierTimingFunction::preset(CubicBezierTimingFunction:: Ease);
393 case CSSValueEaseIn: 393 case CSSValueEaseIn:
394 return CubicBezierTimingFunction::preset(CubicBezierTimingFunction:: EaseIn); 394 return CubicBezierTimingFunction::preset(CubicBezierTimingFunction:: EaseIn);
395 case CSSValueEaseOut: 395 case CSSValueEaseOut:
396 return CubicBezierTimingFunction::preset(CubicBezierTimingFunction:: EaseOut); 396 return CubicBezierTimingFunction::preset(CubicBezierTimingFunction:: EaseOut);
397 case CSSValueEaseInOut: 397 case CSSValueEaseInOut:
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 { 488 {
489 if (!value || !value->isBorderImageSliceValue()) 489 if (!value || !value->isBorderImageSliceValue())
490 return; 490 return;
491 491
492 // Retrieve the border image value. 492 // Retrieve the border image value.
493 CSSBorderImageSliceValue* borderImageSlice = toCSSBorderImageSliceValue(valu e); 493 CSSBorderImageSliceValue* borderImageSlice = toCSSBorderImageSliceValue(valu e);
494 494
495 // Set up a length box to represent our image slices. 495 // Set up a length box to represent our image slices.
496 LengthBox box; 496 LengthBox box;
497 Quad* slices = borderImageSlice->slices(); 497 Quad* slices = borderImageSlice->slices();
498 if (slices->top()->isPercentage()) 498 if (slices->top().isPercentage())
499 box.m_top = Length(slices->top()->getDoubleValue(), Percent); 499 box.m_top = Length(slices->top().getDoubleValue(), Percent);
500 else 500 else
501 box.m_top = Length(slices->top()->getIntValue(), Fixed); 501 box.m_top = Length(slices->top().getIntValue(), Fixed);
502 if (slices->bottom()->isPercentage()) 502 if (slices->bottom().isPercentage())
503 box.m_bottom = Length(slices->bottom()->getDoubleValue(), Percent); 503 box.m_bottom = Length(slices->bottom().getDoubleValue(), Percent);
504 else 504 else
505 box.m_bottom = Length(slices->bottom()->getIntValue(), Fixed); 505 box.m_bottom = Length(slices->bottom().getIntValue(), Fixed);
506 if (slices->left()->isPercentage()) 506 if (slices->left().isPercentage())
507 box.m_left = Length(slices->left()->getDoubleValue(), Percent); 507 box.m_left = Length(slices->left().getDoubleValue(), Percent);
508 else 508 else
509 box.m_left = Length(slices->left()->getIntValue(), Fixed); 509 box.m_left = Length(slices->left().getIntValue(), Fixed);
510 if (slices->right()->isPercentage()) 510 if (slices->right().isPercentage())
511 box.m_right = Length(slices->right()->getDoubleValue(), Percent); 511 box.m_right = Length(slices->right().getDoubleValue(), Percent);
512 else 512 else
513 box.m_right = Length(slices->right()->getIntValue(), Fixed); 513 box.m_right = Length(slices->right().getIntValue(), Fixed);
514 image.setImageSlices(box); 514 image.setImageSlices(box);
515 515
516 // Set our fill mode. 516 // Set our fill mode.
517 image.setFill(borderImageSlice->m_fill); 517 image.setFill(borderImageSlice->m_fill);
518 } 518 }
519 519
520 static BorderImageLength toBorderImageLength(CSSPrimitiveValue& value, const CSS ToLengthConversionData& conversionData) 520 static BorderImageLength toBorderImageLength(CSSPrimitiveValue value, const CSST oLengthConversionData& conversionData)
521 { 521 {
522 if (value.isNumber()) 522 if (value.isNumber())
523 return value.getDoubleValue(); 523 return value.getDoubleValue();
524 if (value.isPercentage()) 524 if (value.isPercentage())
525 return Length(value.getDoubleValue(), Percent); 525 return Length(value.getDoubleValue(), Percent);
526 if (value.getValueID() != CSSValueAuto) 526 if (value.getValueID() != CSSValueAuto)
527 return value.computeLength<Length>(conversionData); 527 return value.computeLength<Length>(conversionData);
528 return Length(Auto); 528 return Length(Auto);
529 } 529 }
530 530
531 BorderImageLengthBox CSSToStyleMap::mapNinePieceImageQuad(StyleResolverState& st ate, NullableCSSValue value) 531 BorderImageLengthBox CSSToStyleMap::mapNinePieceImageQuad(StyleResolverState& st ate, NullableCSSValue value)
532 { 532 {
533 if (!value || !value->isPrimitiveValue()) 533 if (!value || !value->isPrimitiveValue())
534 return BorderImageLengthBox(Length(Auto)); 534 return BorderImageLengthBox(Length(Auto));
535 535
536 Quad* slices = toCSSPrimitiveValue(value)->getQuadValue(); 536 Quad* slices = toCSSPrimitiveValue(*value).getQuadValue();
537 537
538 // Set up a border image length box to represent our image slices. 538 // Set up a border image length box to represent our image slices.
539 return BorderImageLengthBox( 539 return BorderImageLengthBox(
540 toBorderImageLength(*slices->top(), state.cssToLengthConversionData()), 540 toBorderImageLength(slices->top(), state.cssToLengthConversionData()),
541 toBorderImageLength(*slices->right(), state.cssToLengthConversionData()) , 541 toBorderImageLength(slices->right(), state.cssToLengthConversionData()),
542 toBorderImageLength(*slices->bottom(), state.cssToLengthConversionData() ), 542 toBorderImageLength(slices->bottom(), state.cssToLengthConversionData()) ,
543 toBorderImageLength(*slices->left(), state.cssToLengthConversionData())) ; 543 toBorderImageLength(slices->left(), state.cssToLengthConversionData()));
544 } 544 }
545 545
546 void CSSToStyleMap::mapNinePieceImageRepeat(StyleResolverState&, NullableCSSValu e value, NinePieceImage& image) 546 void CSSToStyleMap::mapNinePieceImageRepeat(StyleResolverState&, NullableCSSValu e value, NinePieceImage& image)
547 { 547 {
548 if (!value || !value->isPrimitiveValue()) 548 if (!value || !value->isPrimitiveValue())
549 return; 549 return;
550 550
551 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 551 CSSPrimitiveValue primitiveValue = toCSSPrimitiveValue(*value);
552 Pair* pair = primitiveValue->getPairValue(); 552 Pair* pair = primitiveValue.getPairValue();
553 if (!pair || !pair->first() || !pair->second()) 553 if (!pair || !pair->first() || !pair->second())
554 return; 554 return;
555 555
556 CSSValueID firstIdentifier = pair->first()->getValueID(); 556 CSSValueID firstIdentifier = toCSSPrimitiveValue(*pair->first()).getValueID( );
557 CSSValueID secondIdentifier = pair->second()->getValueID(); 557 CSSValueID secondIdentifier = toCSSPrimitiveValue(*pair->second()).getValueI D();
558 558
559 ENinePieceImageRule horizontalRule; 559 ENinePieceImageRule horizontalRule;
560 switch (firstIdentifier) { 560 switch (firstIdentifier) {
561 case CSSValueStretch: 561 case CSSValueStretch:
562 horizontalRule = StretchImageRule; 562 horizontalRule = StretchImageRule;
563 break; 563 break;
564 case CSSValueRound: 564 case CSSValueRound:
565 horizontalRule = RoundImageRule; 565 horizontalRule = RoundImageRule;
566 break; 566 break;
567 case CSSValueSpace: 567 case CSSValueSpace:
(...skipping 17 matching lines...) Expand all
585 verticalRule = SpaceImageRule; 585 verticalRule = SpaceImageRule;
586 break; 586 break;
587 default: // CSSValueRepeat 587 default: // CSSValueRepeat
588 verticalRule = RepeatImageRule; 588 verticalRule = RepeatImageRule;
589 break; 589 break;
590 } 590 }
591 image.setVerticalRule(verticalRule); 591 image.setVerticalRule(verticalRule);
592 } 592 }
593 593
594 }; 594 };
OLDNEW
« no previous file with comments | « Source/core/css/parser/SizesCalcParserTest.cpp ('k') | Source/core/css/resolver/FilterOperationResolver.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698