Changeset 175997 in webkit
- Timestamp:
- Nov 11, 2014, 5:51:39 PM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
css/CSSPropertyNames.in (modified) (2 diffs)
-
css/DeprecatedStyleBuilder.cpp (modified) (3 diffs)
-
css/StyleBuilderCustom.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r175995 r175997 1 2014-11-11 Chris Dumez <cdumez@apple.com> 2 3 Move 'border-image-*' / '-webkit-mask-box-image-*' CSS properties to the new StyleBuilder 4 https://bugs.webkit.org/show_bug.cgi?id=138594 5 6 Reviewed by Antti Koivisto. 7 8 Move 'border-image-*' / '-webkit-mask-box-image-*' CSS properties from 9 DeprecatedStyleBuilder to the new StyleBuilder using custom code. 10 11 No new tests, no behavior change. 12 13 * css/CSSPropertyNames.in: 14 * css/DeprecatedStyleBuilder.cpp: 15 (WebCore::DeprecatedStyleBuilder::DeprecatedStyleBuilder): 16 (WebCore::ApplyPropertyBorderImageModifier::getValue): Deleted. 17 (WebCore::ApplyPropertyBorderImageModifier::setValue): Deleted. 18 (WebCore::ApplyPropertyBorderImageModifier::applyInheritValue): Deleted. 19 (WebCore::ApplyPropertyBorderImageModifier::applyInitialValue): Deleted. 20 (WebCore::ApplyPropertyBorderImageModifier::applyValue): Deleted. 21 (WebCore::ApplyPropertyBorderImageModifier::createHandler): Deleted. 22 * css/StyleBuilderCustom.h: 23 (WebCore::StyleBuilderFunctions::ApplyPropertyBorderImageModifier::applyInheritValue): 24 (WebCore::StyleBuilderFunctions::ApplyPropertyBorderImageModifier::applyInitialValue): 25 (WebCore::StyleBuilderFunctions::ApplyPropertyBorderImageModifier::applyValue): 26 (WebCore::StyleBuilderFunctions::ApplyPropertyBorderImageModifier::getValue): 27 (WebCore::StyleBuilderFunctions::ApplyPropertyBorderImageModifier::setValue): 28 1 29 2014-11-11 David Kilzer <ddkilzer@apple.com> 2 30 -
trunk/Source/WebCore/css/CSSPropertyNames.in
r175932 r175997 113 113 border-color 114 114 border-image 115 border-image-outset 116 border-image-repeat 117 border-image-slice 115 border-image-outset [NewStyleBuilder, Custom=All] 116 border-image-repeat [NewStyleBuilder, Custom=All] 117 border-image-slice [NewStyleBuilder, Custom=All] 118 118 border-image-source [NewStyleBuilder, Converter=BorderImageSource<CSSPropertyBorderImageSource>] 119 border-image-width 119 border-image-width [NewStyleBuilder, Custom=All] 120 120 border-left 121 121 border-left-color … … 426 426 -webkit-mask 427 427 -webkit-mask-box-image [NewStyleBuilder, Initial=initialNinePieceImage, Converter=BorderMask<CSSPropertyWebkitMaskBoxImage>] 428 -webkit-mask-box-image-outset 429 -webkit-mask-box-image-repeat 430 -webkit-mask-box-image-slice 428 -webkit-mask-box-image-outset [NewStyleBuilder, Custom=All] 429 -webkit-mask-box-image-repeat [NewStyleBuilder, Custom=All] 430 -webkit-mask-box-image-slice [NewStyleBuilder, Custom=All] 431 431 -webkit-mask-box-image-source [NewStyleBuilder, Converter=BorderImageSource<CSSPropertyWebkitMaskBoxImageSource>] 432 -webkit-mask-box-image-width 432 -webkit-mask-box-image-width [NewStyleBuilder, Custom=All] 433 433 -webkit-mask-clip 434 434 -webkit-mask-composite -
trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp
r175932 r175997 795 795 }; 796 796 797 enum BorderImageType { BorderImage = 0, BorderMask };798 enum BorderImageModifierType { Outset, Repeat, Slice, Width };799 template <BorderImageType type, BorderImageModifierType modifier>800 class ApplyPropertyBorderImageModifier {801 private:802 static inline const NinePieceImage& getValue(RenderStyle* style) { return type == BorderImage ? style->borderImage() : style->maskBoxImage(); }803 static inline void setValue(RenderStyle* style, const NinePieceImage& value) { return type == BorderImage ? style->setBorderImage(value) : style->setMaskBoxImage(value); }804 public:805 static void applyInheritValue(CSSPropertyID, StyleResolver* styleResolver)806 {807 NinePieceImage image(getValue(styleResolver->style()));808 switch (modifier) {809 case Outset:810 image.copyOutsetFrom(getValue(styleResolver->parentStyle()));811 break;812 case Repeat:813 image.copyRepeatFrom(getValue(styleResolver->parentStyle()));814 break;815 case Slice:816 image.copyImageSlicesFrom(getValue(styleResolver->parentStyle()));817 break;818 case Width:819 image.copyBorderSlicesFrom(getValue(styleResolver->parentStyle()));820 break;821 }822 setValue(styleResolver->style(), image);823 }824 825 static void applyInitialValue(CSSPropertyID, StyleResolver* styleResolver)826 {827 NinePieceImage image(getValue(styleResolver->style()));828 switch (modifier) {829 case Outset:830 image.setOutset(LengthBox(0));831 break;832 case Repeat:833 image.setHorizontalRule(StretchImageRule);834 image.setVerticalRule(StretchImageRule);835 break;836 case Slice:837 // Masks have a different initial value for slices. Preserve the value of 0 for backwards compatibility.838 image.setImageSlices(type == BorderImage ? LengthBox(Length(100, Percent), Length(100, Percent), Length(100, Percent), Length(100, Percent)) : LengthBox());839 image.setFill(false);840 break;841 case Width:842 // Masks have a different initial value for widths. They use an 'auto' value rather than trying to fit to the border.843 image.setBorderSlices(type == BorderImage ? LengthBox(Length(1, Relative), Length(1, Relative), Length(1, Relative), Length(1, Relative)) : LengthBox());844 break;845 }846 setValue(styleResolver->style(), image);847 }848 849 static void applyValue(CSSPropertyID, StyleResolver* styleResolver, CSSValue* value)850 {851 NinePieceImage image(getValue(styleResolver->style()));852 switch (modifier) {853 case Outset:854 image.setOutset(styleResolver->styleMap()->mapNinePieceImageQuad(*value));855 break;856 case Repeat:857 styleResolver->styleMap()->mapNinePieceImageRepeat(*value, image);858 break;859 case Slice:860 styleResolver->styleMap()->mapNinePieceImageSlice(*value, image);861 break;862 case Width:863 image.setBorderSlices(styleResolver->styleMap()->mapNinePieceImageQuad(*value));864 break;865 }866 setValue(styleResolver->style(), image);867 }868 869 static PropertyHandler createHandler() { return PropertyHandler(&applyInheritValue, &applyInitialValue, &applyValue); }870 };871 872 797 enum CounterBehavior {Increment = 0, Reset}; 873 798 template <CounterBehavior counterBehavior> … … 1537 1462 setPropertyHandler(CSSPropertyBackgroundSize, ApplyPropertyFillLayer<FillSize, CSSPropertyBackgroundSize, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isSizeSet, &FillLayer::size, &FillLayer::setSize, &FillLayer::clearSize, &FillLayer::initialFillSize, &CSSToStyleMap::mapFillSize>::createHandler()); 1538 1463 setPropertyHandler(CSSPropertyBorderBottomColor, ApplyPropertyColor<NoInheritFromParent, &RenderStyle::borderBottomColor, &RenderStyle::setBorderBottomColor, &RenderStyle::setVisitedLinkBorderBottomColor, &RenderStyle::color>::createHandler()); 1539 setPropertyHandler(CSSPropertyBorderImageOutset, ApplyPropertyBorderImageModifier<BorderImage, Outset>::createHandler());1540 setPropertyHandler(CSSPropertyBorderImageRepeat, ApplyPropertyBorderImageModifier<BorderImage, Repeat>::createHandler());1541 setPropertyHandler(CSSPropertyBorderImageSlice, ApplyPropertyBorderImageModifier<BorderImage, Slice>::createHandler());1542 setPropertyHandler(CSSPropertyBorderImageWidth, ApplyPropertyBorderImageModifier<BorderImage, Width>::createHandler());1543 1464 setPropertyHandler(CSSPropertyBorderLeftColor, ApplyPropertyColor<NoInheritFromParent, &RenderStyle::borderLeftColor, &RenderStyle::setBorderLeftColor, &RenderStyle::setVisitedLinkBorderLeftColor, &RenderStyle::color>::createHandler()); 1544 1465 setPropertyHandler(CSSPropertyBorderRightColor, ApplyPropertyColor<NoInheritFromParent, &RenderStyle::borderRightColor, &RenderStyle::setBorderRightColor, &RenderStyle::setVisitedLinkBorderRightColor, &RenderStyle::color>::createHandler()); … … 1593 1514 setPropertyHandler(CSSPropertyWebkitFontVariantLigatures, ApplyPropertyFontVariantLigatures::createHandler()); 1594 1515 setPropertyHandler(CSSPropertyWebkitMarqueeRepetition, ApplyPropertyMarqueeRepetition::createHandler()); 1595 setPropertyHandler(CSSPropertyWebkitMaskBoxImageOutset, ApplyPropertyBorderImageModifier<BorderMask, Outset>::createHandler());1596 setPropertyHandler(CSSPropertyWebkitMaskBoxImageRepeat, ApplyPropertyBorderImageModifier<BorderMask, Repeat>::createHandler());1597 setPropertyHandler(CSSPropertyWebkitMaskBoxImageSlice, ApplyPropertyBorderImageModifier<BorderMask, Slice>::createHandler());1598 setPropertyHandler(CSSPropertyWebkitMaskBoxImageWidth, ApplyPropertyBorderImageModifier<BorderMask, Width>::createHandler());1599 1516 setPropertyHandler(CSSPropertyWebkitMaskClip, ApplyPropertyFillLayer<EFillBox, CSSPropertyWebkitMaskClip, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isClipSet, &FillLayer::clip, &FillLayer::setClip, &FillLayer::clearClip, &FillLayer::initialFillClip, &CSSToStyleMap::mapFillClip>::createHandler()); 1600 1517 setPropertyHandler(CSSPropertyWebkitMaskComposite, ApplyPropertyFillLayer<CompositeOperator, CSSPropertyWebkitMaskComposite, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isCompositeSet, &FillLayer::composite, &FillLayer::setComposite, &FillLayer::clearComposite, &FillLayer::initialFillComposite, &CSSToStyleMap::mapFillComposite>::createHandler()); -
trunk/Source/WebCore/css/StyleBuilderCustom.h
r175815 r175997 355 355 } 356 356 357 enum BorderImageType { BorderImage, WebkitMaskBoxImage }; 358 enum BorderImageModifierType { Outset, Repeat, Slice, Width }; 359 template <BorderImageType type, BorderImageModifierType modifier> 360 class ApplyPropertyBorderImageModifier { 361 public: 362 static void applyInheritValue(StyleResolver& styleResolver) 363 { 364 NinePieceImage image(getValue(styleResolver.style())); 365 switch (modifier) { 366 case Outset: 367 image.copyOutsetFrom(getValue(styleResolver.parentStyle())); 368 break; 369 case Repeat: 370 image.copyRepeatFrom(getValue(styleResolver.parentStyle())); 371 break; 372 case Slice: 373 image.copyImageSlicesFrom(getValue(styleResolver.parentStyle())); 374 break; 375 case Width: 376 image.copyBorderSlicesFrom(getValue(styleResolver.parentStyle())); 377 break; 378 } 379 setValue(styleResolver.style(), image); 380 } 381 382 static void applyInitialValue(StyleResolver& styleResolver) 383 { 384 NinePieceImage image(getValue(styleResolver.style())); 385 switch (modifier) { 386 case Outset: 387 image.setOutset(LengthBox(0)); 388 break; 389 case Repeat: 390 image.setHorizontalRule(StretchImageRule); 391 image.setVerticalRule(StretchImageRule); 392 break; 393 case Slice: 394 // Masks have a different initial value for slices. Preserve the value of 0 for backwards compatibility. 395 image.setImageSlices(type == BorderImage ? LengthBox(Length(100, Percent), Length(100, Percent), Length(100, Percent), Length(100, Percent)) : LengthBox()); 396 image.setFill(false); 397 break; 398 case Width: 399 // Masks have a different initial value for widths. They use an 'auto' value rather than trying to fit to the border. 400 image.setBorderSlices(type == BorderImage ? LengthBox(Length(1, Relative), Length(1, Relative), Length(1, Relative), Length(1, Relative)) : LengthBox()); 401 break; 402 } 403 setValue(styleResolver.style(), image); 404 } 405 406 static void applyValue(StyleResolver& styleResolver, CSSValue& value) 407 { 408 NinePieceImage image(getValue(styleResolver.style())); 409 switch (modifier) { 410 case Outset: 411 image.setOutset(styleResolver.styleMap()->mapNinePieceImageQuad(value)); 412 break; 413 case Repeat: 414 styleResolver.styleMap()->mapNinePieceImageRepeat(value, image); 415 break; 416 case Slice: 417 styleResolver.styleMap()->mapNinePieceImageSlice(value, image); 418 break; 419 case Width: 420 image.setBorderSlices(styleResolver.styleMap()->mapNinePieceImageQuad(value)); 421 break; 422 } 423 setValue(styleResolver.style(), image); 424 } 425 426 private: 427 static inline const NinePieceImage& getValue(RenderStyle* style) 428 { 429 return type == BorderImage ? style->borderImage() : style->maskBoxImage(); 430 } 431 432 static inline void setValue(RenderStyle* style, const NinePieceImage& value) 433 { 434 return type == BorderImage ? style->setBorderImage(value) : style->setMaskBoxImage(value); 435 } 436 }; 437 438 #define DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(type, modifier) \ 439 inline void applyInherit##type##modifier(StyleResolver& styleResolver) \ 440 { \ 441 ApplyPropertyBorderImageModifier<type, modifier>::applyInheritValue(styleResolver); \ 442 } \ 443 inline void applyInitial##type##modifier(StyleResolver& styleResolver) \ 444 { \ 445 ApplyPropertyBorderImageModifier<type, modifier>::applyInitialValue(styleResolver); \ 446 } \ 447 inline void applyValue##type##modifier(StyleResolver& styleResolver, CSSValue& value) \ 448 { \ 449 ApplyPropertyBorderImageModifier<type, modifier>::applyValue(styleResolver, value); \ 450 } 451 452 DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(BorderImage, Outset) 453 DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(BorderImage, Repeat) 454 DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(BorderImage, Slice) 455 DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(BorderImage, Width) 456 DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(WebkitMaskBoxImage, Outset) 457 DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(WebkitMaskBoxImage, Repeat) 458 DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(WebkitMaskBoxImage, Slice) 459 DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(WebkitMaskBoxImage, Width) 460 357 461 } // namespace StyleBuilderFunctions 358 462
Note:
See TracChangeset
for help on using the changeset viewer.