⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 175997 in webkit


Ignore:
Timestamp:
Nov 11, 2014, 5:51:39 PM (12 years ago)
Author:
Chris Dumez
Message:

Move 'border-image-*' / '-webkit-mask-box-image-*' CSS properties to the new StyleBuilder
https://bugs.webkit.org/show_bug.cgi?id=138594

Reviewed by Antti Koivisto.

Move 'border-image-*' / '-webkit-mask-box-image-*' CSS properties from
DeprecatedStyleBuilder to the new StyleBuilder using custom code.

No new tests, no behavior change.

  • css/CSSPropertyNames.in:
  • css/DeprecatedStyleBuilder.cpp:

(WebCore::DeprecatedStyleBuilder::DeprecatedStyleBuilder):
(WebCore::ApplyPropertyBorderImageModifier::getValue): Deleted.
(WebCore::ApplyPropertyBorderImageModifier::setValue): Deleted.
(WebCore::ApplyPropertyBorderImageModifier::applyInheritValue): Deleted.
(WebCore::ApplyPropertyBorderImageModifier::applyInitialValue): Deleted.
(WebCore::ApplyPropertyBorderImageModifier::applyValue): Deleted.
(WebCore::ApplyPropertyBorderImageModifier::createHandler): Deleted.

  • css/StyleBuilderCustom.h:

(WebCore::StyleBuilderFunctions::ApplyPropertyBorderImageModifier::applyInheritValue):
(WebCore::StyleBuilderFunctions::ApplyPropertyBorderImageModifier::applyInitialValue):
(WebCore::StyleBuilderFunctions::ApplyPropertyBorderImageModifier::applyValue):
(WebCore::StyleBuilderFunctions::ApplyPropertyBorderImageModifier::getValue):
(WebCore::StyleBuilderFunctions::ApplyPropertyBorderImageModifier::setValue):

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r175995 r175997  
     12014-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
    1292014-11-11  David Kilzer  <ddkilzer@apple.com>
    230
  • trunk/Source/WebCore/css/CSSPropertyNames.in

    r175932 r175997  
    113113border-color
    114114border-image
    115 border-image-outset
    116 border-image-repeat
    117 border-image-slice
     115border-image-outset [NewStyleBuilder, Custom=All]
     116border-image-repeat [NewStyleBuilder, Custom=All]
     117border-image-slice [NewStyleBuilder, Custom=All]
    118118border-image-source [NewStyleBuilder, Converter=BorderImageSource<CSSPropertyBorderImageSource>]
    119 border-image-width
     119border-image-width [NewStyleBuilder, Custom=All]
    120120border-left
    121121border-left-color
     
    426426-webkit-mask
    427427-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]
    431431-webkit-mask-box-image-source [NewStyleBuilder, Converter=BorderImageSource<CSSPropertyWebkitMaskBoxImageSource>]
    432 -webkit-mask-box-image-width
     432-webkit-mask-box-image-width [NewStyleBuilder, Custom=All]
    433433-webkit-mask-clip
    434434-webkit-mask-composite
  • trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp

    r175932 r175997  
    795795};
    796796
    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 
    872797enum CounterBehavior {Increment = 0, Reset};
    873798template <CounterBehavior counterBehavior>
     
    15371462    setPropertyHandler(CSSPropertyBackgroundSize, ApplyPropertyFillLayer<FillSize, CSSPropertyBackgroundSize, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isSizeSet, &FillLayer::size, &FillLayer::setSize, &FillLayer::clearSize, &FillLayer::initialFillSize, &CSSToStyleMap::mapFillSize>::createHandler());
    15381463    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());
    15431464    setPropertyHandler(CSSPropertyBorderLeftColor, ApplyPropertyColor<NoInheritFromParent, &RenderStyle::borderLeftColor, &RenderStyle::setBorderLeftColor, &RenderStyle::setVisitedLinkBorderLeftColor, &RenderStyle::color>::createHandler());
    15441465    setPropertyHandler(CSSPropertyBorderRightColor, ApplyPropertyColor<NoInheritFromParent, &RenderStyle::borderRightColor, &RenderStyle::setBorderRightColor, &RenderStyle::setVisitedLinkBorderRightColor, &RenderStyle::color>::createHandler());
     
    15931514    setPropertyHandler(CSSPropertyWebkitFontVariantLigatures, ApplyPropertyFontVariantLigatures::createHandler());
    15941515    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());
    15991516    setPropertyHandler(CSSPropertyWebkitMaskClip, ApplyPropertyFillLayer<EFillBox, CSSPropertyWebkitMaskClip, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isClipSet, &FillLayer::clip, &FillLayer::setClip, &FillLayer::clearClip, &FillLayer::initialFillClip, &CSSToStyleMap::mapFillClip>::createHandler());
    16001517    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  
    355355}
    356356
     357enum BorderImageType { BorderImage, WebkitMaskBoxImage };
     358enum BorderImageModifierType { Outset, Repeat, Slice, Width };
     359template <BorderImageType type, BorderImageModifierType modifier>
     360class ApplyPropertyBorderImageModifier {
     361public:
     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
     426private:
     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) \
     439inline void applyInherit##type##modifier(StyleResolver& styleResolver) \
     440{ \
     441    ApplyPropertyBorderImageModifier<type, modifier>::applyInheritValue(styleResolver); \
     442} \
     443inline void applyInitial##type##modifier(StyleResolver& styleResolver) \
     444{ \
     445    ApplyPropertyBorderImageModifier<type, modifier>::applyInitialValue(styleResolver); \
     446} \
     447inline void applyValue##type##modifier(StyleResolver& styleResolver, CSSValue& value) \
     448{ \
     449    ApplyPropertyBorderImageModifier<type, modifier>::applyValue(styleResolver, value); \
     450}
     451
     452DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(BorderImage, Outset)
     453DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(BorderImage, Repeat)
     454DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(BorderImage, Slice)
     455DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(BorderImage, Width)
     456DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(WebkitMaskBoxImage, Outset)
     457DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(WebkitMaskBoxImage, Repeat)
     458DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(WebkitMaskBoxImage, Slice)
     459DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(WebkitMaskBoxImage, Width)
     460
    357461} // namespace StyleBuilderFunctions
    358462
Note: See TracChangeset for help on using the changeset viewer.