| OLD | NEW |
| 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 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 } | 122 } |
| 123 | 123 |
| 124 template <typename T> | 124 template <typename T> |
| 125 T animatableLineWidthClamp(const AnimatableValue* value, | 125 T animatableLineWidthClamp(const AnimatableValue* value, |
| 126 const StyleResolverState& state) { | 126 const StyleResolverState& state) { |
| 127 double lineWidth = animatableValueToPixels(value, state); | 127 double lineWidth = animatableValueToPixels(value, state); |
| 128 // This matches StyleBuilderConverter::convertLineWidth(). | 128 // This matches StyleBuilderConverter::convertLineWidth(). |
| 129 return (lineWidth > 0 && lineWidth < 1) ? 1 : roundedClampTo<T>(lineWidth); | 129 return (lineWidth > 0 && lineWidth < 1) ? 1 : roundedClampTo<T>(lineWidth); |
| 130 } | 130 } |
| 131 | 131 |
| 132 float animatableLineWidth(const AnimatableValue* value, |
| 133 const StyleResolverState& state) { |
| 134 double lineWidth = |
| 135 toAnimatableLength(value) |
| 136 ->getLength(state.style()->effectiveZoom(), ValueRangeNonNegative) |
| 137 .pixels(); |
| 138 // This matches StyleBuilderConverter::convertLineWidth(). |
| 139 return (lineWidth > 0 && lineWidth < 1) ? 1 : lineWidth; |
| 140 } |
| 141 |
| 132 LengthBox animatableValueToLengthBox(const AnimatableValue* value, | 142 LengthBox animatableValueToLengthBox(const AnimatableValue* value, |
| 133 const StyleResolverState& state, | 143 const StyleResolverState& state, |
| 134 ValueRange range = ValueRangeAll) { | 144 ValueRange range = ValueRangeAll) { |
| 135 const AnimatableLengthBox* animatableLengthBox = toAnimatableLengthBox(value); | 145 const AnimatableLengthBox* animatableLengthBox = toAnimatableLengthBox(value); |
| 136 return LengthBox( | 146 return LengthBox( |
| 137 animatableValueToLength(animatableLengthBox->top(), state, range), | 147 animatableValueToLength(animatableLengthBox->top(), state, range), |
| 138 animatableValueToLength(animatableLengthBox->right(), state, range), | 148 animatableValueToLength(animatableLengthBox->right(), state, range), |
| 139 animatableValueToLength(animatableLengthBox->bottom(), state, range), | 149 animatableValueToLength(animatableLengthBox->bottom(), state, range), |
| 140 animatableValueToLength(animatableLengthBox->left(), state, range)); | 150 animatableValueToLength(animatableLengthBox->left(), state, range)); |
| 141 } | 151 } |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 return; | 361 return; |
| 352 case CSSPropertyBorderBottomLeftRadius: | 362 case CSSPropertyBorderBottomLeftRadius: |
| 353 style->setBorderBottomLeftRadius( | 363 style->setBorderBottomLeftRadius( |
| 354 animatableValueToLengthSize(value, state, ValueRangeNonNegative)); | 364 animatableValueToLengthSize(value, state, ValueRangeNonNegative)); |
| 355 return; | 365 return; |
| 356 case CSSPropertyBorderBottomRightRadius: | 366 case CSSPropertyBorderBottomRightRadius: |
| 357 style->setBorderBottomRightRadius( | 367 style->setBorderBottomRightRadius( |
| 358 animatableValueToLengthSize(value, state, ValueRangeNonNegative)); | 368 animatableValueToLengthSize(value, state, ValueRangeNonNegative)); |
| 359 return; | 369 return; |
| 360 case CSSPropertyBorderBottomWidth: | 370 case CSSPropertyBorderBottomWidth: |
| 361 style->setBorderBottomWidth( | 371 style->setBorderBottomWidth(animatableLineWidth(value, state)); |
| 362 animatableLineWidthClamp<unsigned>(value, state)); | |
| 363 return; | 372 return; |
| 364 case CSSPropertyBorderImageOutset: | 373 case CSSPropertyBorderImageOutset: |
| 365 style->setBorderImageOutset( | 374 style->setBorderImageOutset( |
| 366 animatableValueToBorderImageLengthBox(value, state)); | 375 animatableValueToBorderImageLengthBox(value, state)); |
| 367 return; | 376 return; |
| 368 case CSSPropertyBorderImageSlice: | 377 case CSSPropertyBorderImageSlice: |
| 369 style->setBorderImageSlices( | 378 style->setBorderImageSlices( |
| 370 animatableValueToLengthBox(toAnimatableLengthBoxAndBool(value)->box(), | 379 animatableValueToLengthBox(toAnimatableLengthBoxAndBool(value)->box(), |
| 371 state, ValueRangeNonNegative)); | 380 state, ValueRangeNonNegative)); |
| 372 style->setBorderImageSlicesFill( | 381 style->setBorderImageSlicesFill( |
| 373 toAnimatableLengthBoxAndBool(value)->flag()); | 382 toAnimatableLengthBoxAndBool(value)->flag()); |
| 374 return; | 383 return; |
| 375 case CSSPropertyBorderImageSource: | 384 case CSSPropertyBorderImageSource: |
| 376 style->setBorderImageSource( | 385 style->setBorderImageSource( |
| 377 state.styleImage(property, *toAnimatableImage(value)->toCSSValue())); | 386 state.styleImage(property, *toAnimatableImage(value)->toCSSValue())); |
| 378 return; | 387 return; |
| 379 case CSSPropertyBorderImageWidth: | 388 case CSSPropertyBorderImageWidth: |
| 380 style->setBorderImageWidth( | 389 style->setBorderImageWidth( |
| 381 animatableValueToBorderImageLengthBox(value, state)); | 390 animatableValueToBorderImageLengthBox(value, state)); |
| 382 return; | 391 return; |
| 383 case CSSPropertyBorderLeftColor: | 392 case CSSPropertyBorderLeftColor: |
| 384 style->setBorderLeftColor(toAnimatableColor(value)->getColor()); | 393 style->setBorderLeftColor(toAnimatableColor(value)->getColor()); |
| 385 style->setVisitedLinkBorderLeftColor( | 394 style->setVisitedLinkBorderLeftColor( |
| 386 toAnimatableColor(value)->visitedLinkColor()); | 395 toAnimatableColor(value)->visitedLinkColor()); |
| 387 return; | 396 return; |
| 388 case CSSPropertyBorderLeftWidth: | 397 case CSSPropertyBorderLeftWidth: |
| 389 style->setBorderLeftWidth( | 398 style->setBorderLeftWidth(animatableLineWidth(value, state)); |
| 390 animatableLineWidthClamp<unsigned>(value, state)); | |
| 391 return; | 399 return; |
| 392 case CSSPropertyBorderRightColor: | 400 case CSSPropertyBorderRightColor: |
| 393 style->setBorderRightColor(toAnimatableColor(value)->getColor()); | 401 style->setBorderRightColor(toAnimatableColor(value)->getColor()); |
| 394 style->setVisitedLinkBorderRightColor( | 402 style->setVisitedLinkBorderRightColor( |
| 395 toAnimatableColor(value)->visitedLinkColor()); | 403 toAnimatableColor(value)->visitedLinkColor()); |
| 396 return; | 404 return; |
| 397 case CSSPropertyBorderRightWidth: | 405 case CSSPropertyBorderRightWidth: |
| 398 style->setBorderRightWidth( | 406 style->setBorderRightWidth(animatableLineWidth(value, state)); |
| 399 animatableLineWidthClamp<unsigned>(value, state)); | |
| 400 return; | 407 return; |
| 401 case CSSPropertyBorderTopColor: | 408 case CSSPropertyBorderTopColor: |
| 402 style->setBorderTopColor(toAnimatableColor(value)->getColor()); | 409 style->setBorderTopColor(toAnimatableColor(value)->getColor()); |
| 403 style->setVisitedLinkBorderTopColor( | 410 style->setVisitedLinkBorderTopColor( |
| 404 toAnimatableColor(value)->visitedLinkColor()); | 411 toAnimatableColor(value)->visitedLinkColor()); |
| 405 return; | 412 return; |
| 406 case CSSPropertyBorderTopLeftRadius: | 413 case CSSPropertyBorderTopLeftRadius: |
| 407 style->setBorderTopLeftRadius( | 414 style->setBorderTopLeftRadius( |
| 408 animatableValueToLengthSize(value, state, ValueRangeNonNegative)); | 415 animatableValueToLengthSize(value, state, ValueRangeNonNegative)); |
| 409 return; | 416 return; |
| 410 case CSSPropertyBorderTopRightRadius: | 417 case CSSPropertyBorderTopRightRadius: |
| 411 style->setBorderTopRightRadius( | 418 style->setBorderTopRightRadius( |
| 412 animatableValueToLengthSize(value, state, ValueRangeNonNegative)); | 419 animatableValueToLengthSize(value, state, ValueRangeNonNegative)); |
| 413 return; | 420 return; |
| 414 case CSSPropertyBorderTopWidth: | 421 case CSSPropertyBorderTopWidth: |
| 415 style->setBorderTopWidth( | 422 style->setBorderTopWidth(animatableLineWidth(value, state)); |
| 416 animatableLineWidthClamp<unsigned>(value, state)); | |
| 417 return; | 423 return; |
| 418 case CSSPropertyBottom: | 424 case CSSPropertyBottom: |
| 419 style->setBottom(animatableValueToLength(value, state)); | 425 style->setBottom(animatableValueToLength(value, state)); |
| 420 return; | 426 return; |
| 421 case CSSPropertyBoxShadow: | 427 case CSSPropertyBoxShadow: |
| 422 style->setBoxShadow(toAnimatableShadow(value)->getShadowList()); | 428 style->setBoxShadow(toAnimatableShadow(value)->getShadowList()); |
| 423 return; | 429 return; |
| 424 case CSSPropertyCaretColor: | 430 case CSSPropertyCaretColor: |
| 425 style->setCaretColor(toAnimatableColor(value)->getColor()); | 431 style->setCaretColor(toAnimatableColor(value)->getColor()); |
| 426 style->setVisitedLinkCaretColor( | 432 style->setVisitedLinkCaretColor( |
| (...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 849 style->setRy( | 855 style->setRy( |
| 850 animatableValueToLength(value, state, ValueRangeNonNegative)); | 856 animatableValueToLength(value, state, ValueRangeNonNegative)); |
| 851 return; | 857 return; |
| 852 | 858 |
| 853 default: | 859 default: |
| 854 ASSERT_NOT_REACHED(); | 860 ASSERT_NOT_REACHED(); |
| 855 } | 861 } |
| 856 } | 862 } |
| 857 | 863 |
| 858 } // namespace blink | 864 } // namespace blink |
| OLD | NEW |