Modified: trunk/Source/WebCore/css/CSSPropertyNames.in (175996 => 175997)
--- trunk/Source/WebCore/css/CSSPropertyNames.in 2014-11-12 01:29:43 UTC (rev 175996)
+++ trunk/Source/WebCore/css/CSSPropertyNames.in 2014-11-12 01:51:39 UTC (rev 175997)
@@ -112,11 +112,11 @@
border-collapse [Inherited, NewStyleBuilder]
border-color
border-image
-border-image-outset
-border-image-repeat
-border-image-slice
+border-image-outset [NewStyleBuilder, Custom=All]
+border-image-repeat [NewStyleBuilder, Custom=All]
+border-image-slice [NewStyleBuilder, Custom=All]
border-image-source [NewStyleBuilder, Converter=BorderImageSource<CSSPropertyBorderImageSource>]
-border-image-width
+border-image-width [NewStyleBuilder, Custom=All]
border-left
border-left-color
border-left-style [NewStyleBuilder, TypeName=EBorderStyle, Initial=initialBorderStyle]
@@ -425,11 +425,11 @@
-webkit-marquee-style [NewStyleBuilder, TypeName=EMarqueeBehavior, NameForMethods=MarqueeBehavior]
-webkit-mask
-webkit-mask-box-image [NewStyleBuilder, Initial=initialNinePieceImage, Converter=BorderMask<CSSPropertyWebkitMaskBoxImage>]
--webkit-mask-box-image-outset
--webkit-mask-box-image-repeat
--webkit-mask-box-image-slice
+-webkit-mask-box-image-outset [NewStyleBuilder, Custom=All]
+-webkit-mask-box-image-repeat [NewStyleBuilder, Custom=All]
+-webkit-mask-box-image-slice [NewStyleBuilder, Custom=All]
-webkit-mask-box-image-source [NewStyleBuilder, Converter=BorderImageSource<CSSPropertyWebkitMaskBoxImageSource>]
--webkit-mask-box-image-width
+-webkit-mask-box-image-width [NewStyleBuilder, Custom=All]
-webkit-mask-clip
-webkit-mask-composite
-webkit-mask-image
Modified: trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp (175996 => 175997)
--- trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp 2014-11-12 01:29:43 UTC (rev 175996)
+++ trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp 2014-11-12 01:51:39 UTC (rev 175997)
@@ -794,81 +794,6 @@
}
};
-enum BorderImageType { BorderImage = 0, BorderMask };
-enum BorderImageModifierType { Outset, Repeat, Slice, Width };
-template <BorderImageType type, BorderImageModifierType modifier>
-class ApplyPropertyBorderImageModifier {
-private:
- static inline const NinePieceImage& getValue(RenderStyle* style) { return type == BorderImage ? style->borderImage() : style->maskBoxImage(); }
- static inline void setValue(RenderStyle* style, const NinePieceImage& value) { return type == BorderImage ? style->setBorderImage(value) : style->setMaskBoxImage(value); }
-public:
- static void applyInheritValue(CSSPropertyID, StyleResolver* styleResolver)
- {
- NinePieceImage image(getValue(styleResolver->style()));
- switch (modifier) {
- case Outset:
- image.copyOutsetFrom(getValue(styleResolver->parentStyle()));
- break;
- case Repeat:
- image.copyRepeatFrom(getValue(styleResolver->parentStyle()));
- break;
- case Slice:
- image.copyImageSlicesFrom(getValue(styleResolver->parentStyle()));
- break;
- case Width:
- image.copyBorderSlicesFrom(getValue(styleResolver->parentStyle()));
- break;
- }
- setValue(styleResolver->style(), image);
- }
-
- static void applyInitialValue(CSSPropertyID, StyleResolver* styleResolver)
- {
- NinePieceImage image(getValue(styleResolver->style()));
- switch (modifier) {
- case Outset:
- image.setOutset(LengthBox(0));
- break;
- case Repeat:
- image.setHorizontalRule(StretchImageRule);
- image.setVerticalRule(StretchImageRule);
- break;
- case Slice:
- // Masks have a different initial value for slices. Preserve the value of 0 for backwards compatibility.
- image.setImageSlices(type == BorderImage ? LengthBox(Length(100, Percent), Length(100, Percent), Length(100, Percent), Length(100, Percent)) : LengthBox());
- image.setFill(false);
- break;
- case Width:
- // Masks have a different initial value for widths. They use an 'auto' value rather than trying to fit to the border.
- image.setBorderSlices(type == BorderImage ? LengthBox(Length(1, Relative), Length(1, Relative), Length(1, Relative), Length(1, Relative)) : LengthBox());
- break;
- }
- setValue(styleResolver->style(), image);
- }
-
- static void applyValue(CSSPropertyID, StyleResolver* styleResolver, CSSValue* value)
- {
- NinePieceImage image(getValue(styleResolver->style()));
- switch (modifier) {
- case Outset:
- image.setOutset(styleResolver->styleMap()->mapNinePieceImageQuad(*value));
- break;
- case Repeat:
- styleResolver->styleMap()->mapNinePieceImageRepeat(*value, image);
- break;
- case Slice:
- styleResolver->styleMap()->mapNinePieceImageSlice(*value, image);
- break;
- case Width:
- image.setBorderSlices(styleResolver->styleMap()->mapNinePieceImageQuad(*value));
- break;
- }
- setValue(styleResolver->style(), image);
- }
-
- static PropertyHandler createHandler() { return PropertyHandler(&applyInheritValue, &applyInitialValue, &applyValue); }
-};
-
enum CounterBehavior {Increment = 0, Reset};
template <CounterBehavior counterBehavior>
class ApplyPropertyCounter {
@@ -1536,10 +1461,6 @@
setPropertyHandler(CSSPropertyBackgroundRepeatY, ApplyPropertyFillLayer<EFillRepeat, CSSPropertyBackgroundRepeatY, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isRepeatYSet, &FillLayer::repeatY, &FillLayer::setRepeatY, &FillLayer::clearRepeatY, &FillLayer::initialFillRepeatY, &CSSToStyleMap::mapFillRepeatY>::createHandler());
setPropertyHandler(CSSPropertyBackgroundSize, ApplyPropertyFillLayer<FillSize, CSSPropertyBackgroundSize, BackgroundFillLayer, &RenderStyle::accessBackgroundLayers, &RenderStyle::backgroundLayers, &FillLayer::isSizeSet, &FillLayer::size, &FillLayer::setSize, &FillLayer::clearSize, &FillLayer::initialFillSize, &CSSToStyleMap::mapFillSize>::createHandler());
setPropertyHandler(CSSPropertyBorderBottomColor, ApplyPropertyColor<NoInheritFromParent, &RenderStyle::borderBottomColor, &RenderStyle::setBorderBottomColor, &RenderStyle::setVisitedLinkBorderBottomColor, &RenderStyle::color>::createHandler());
- setPropertyHandler(CSSPropertyBorderImageOutset, ApplyPropertyBorderImageModifier<BorderImage, Outset>::createHandler());
- setPropertyHandler(CSSPropertyBorderImageRepeat, ApplyPropertyBorderImageModifier<BorderImage, Repeat>::createHandler());
- setPropertyHandler(CSSPropertyBorderImageSlice, ApplyPropertyBorderImageModifier<BorderImage, Slice>::createHandler());
- setPropertyHandler(CSSPropertyBorderImageWidth, ApplyPropertyBorderImageModifier<BorderImage, Width>::createHandler());
setPropertyHandler(CSSPropertyBorderLeftColor, ApplyPropertyColor<NoInheritFromParent, &RenderStyle::borderLeftColor, &RenderStyle::setBorderLeftColor, &RenderStyle::setVisitedLinkBorderLeftColor, &RenderStyle::color>::createHandler());
setPropertyHandler(CSSPropertyBorderRightColor, ApplyPropertyColor<NoInheritFromParent, &RenderStyle::borderRightColor, &RenderStyle::setBorderRightColor, &RenderStyle::setVisitedLinkBorderRightColor, &RenderStyle::color>::createHandler());
setPropertyHandler(CSSPropertyBorderTopColor, ApplyPropertyColor<NoInheritFromParent, &RenderStyle::borderTopColor, &RenderStyle::setBorderTopColor, &RenderStyle::setVisitedLinkBorderTopColor, &RenderStyle::color>::createHandler());
@@ -1592,10 +1513,6 @@
setPropertyHandler(CSSPropertyWebkitFontSmoothing, ApplyPropertyFont<FontSmoothingMode, &FontDescription::fontSmoothing, &FontDescription::setFontSmoothing, AutoSmoothing>::createHandler());
setPropertyHandler(CSSPropertyWebkitFontVariantLigatures, ApplyPropertyFontVariantLigatures::createHandler());
setPropertyHandler(CSSPropertyWebkitMarqueeRepetition, ApplyPropertyMarqueeRepetition::createHandler());
- setPropertyHandler(CSSPropertyWebkitMaskBoxImageOutset, ApplyPropertyBorderImageModifier<BorderMask, Outset>::createHandler());
- setPropertyHandler(CSSPropertyWebkitMaskBoxImageRepeat, ApplyPropertyBorderImageModifier<BorderMask, Repeat>::createHandler());
- setPropertyHandler(CSSPropertyWebkitMaskBoxImageSlice, ApplyPropertyBorderImageModifier<BorderMask, Slice>::createHandler());
- setPropertyHandler(CSSPropertyWebkitMaskBoxImageWidth, ApplyPropertyBorderImageModifier<BorderMask, Width>::createHandler());
setPropertyHandler(CSSPropertyWebkitMaskClip, ApplyPropertyFillLayer<EFillBox, CSSPropertyWebkitMaskClip, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isClipSet, &FillLayer::clip, &FillLayer::setClip, &FillLayer::clearClip, &FillLayer::initialFillClip, &CSSToStyleMap::mapFillClip>::createHandler());
setPropertyHandler(CSSPropertyWebkitMaskComposite, ApplyPropertyFillLayer<CompositeOperator, CSSPropertyWebkitMaskComposite, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isCompositeSet, &FillLayer::composite, &FillLayer::setComposite, &FillLayer::clearComposite, &FillLayer::initialFillComposite, &CSSToStyleMap::mapFillComposite>::createHandler());
setPropertyHandler(CSSPropertyWebkitMaskImage, ApplyPropertyFillLayer<StyleImage*, CSSPropertyWebkitMaskImage, MaskFillLayer, &RenderStyle::accessMaskLayers, &RenderStyle::maskLayers, &FillLayer::isImageSet, &FillLayer::image, &FillLayer::setImage, &FillLayer::clearImage, &FillLayer::initialFillImage, &CSSToStyleMap::mapFillImage>::createHandler());
Modified: trunk/Source/WebCore/css/StyleBuilderCustom.h (175996 => 175997)
--- trunk/Source/WebCore/css/StyleBuilderCustom.h 2014-11-12 01:29:43 UTC (rev 175996)
+++ trunk/Source/WebCore/css/StyleBuilderCustom.h 2014-11-12 01:51:39 UTC (rev 175997)
@@ -354,6 +354,110 @@
#endif
}
+enum BorderImageType { BorderImage, WebkitMaskBoxImage };
+enum BorderImageModifierType { Outset, Repeat, Slice, Width };
+template <BorderImageType type, BorderImageModifierType modifier>
+class ApplyPropertyBorderImageModifier {
+public:
+ static void applyInheritValue(StyleResolver& styleResolver)
+ {
+ NinePieceImage image(getValue(styleResolver.style()));
+ switch (modifier) {
+ case Outset:
+ image.copyOutsetFrom(getValue(styleResolver.parentStyle()));
+ break;
+ case Repeat:
+ image.copyRepeatFrom(getValue(styleResolver.parentStyle()));
+ break;
+ case Slice:
+ image.copyImageSlicesFrom(getValue(styleResolver.parentStyle()));
+ break;
+ case Width:
+ image.copyBorderSlicesFrom(getValue(styleResolver.parentStyle()));
+ break;
+ }
+ setValue(styleResolver.style(), image);
+ }
+
+ static void applyInitialValue(StyleResolver& styleResolver)
+ {
+ NinePieceImage image(getValue(styleResolver.style()));
+ switch (modifier) {
+ case Outset:
+ image.setOutset(LengthBox(0));
+ break;
+ case Repeat:
+ image.setHorizontalRule(StretchImageRule);
+ image.setVerticalRule(StretchImageRule);
+ break;
+ case Slice:
+ // Masks have a different initial value for slices. Preserve the value of 0 for backwards compatibility.
+ image.setImageSlices(type == BorderImage ? LengthBox(Length(100, Percent), Length(100, Percent), Length(100, Percent), Length(100, Percent)) : LengthBox());
+ image.setFill(false);
+ break;
+ case Width:
+ // Masks have a different initial value for widths. They use an 'auto' value rather than trying to fit to the border.
+ image.setBorderSlices(type == BorderImage ? LengthBox(Length(1, Relative), Length(1, Relative), Length(1, Relative), Length(1, Relative)) : LengthBox());
+ break;
+ }
+ setValue(styleResolver.style(), image);
+ }
+
+ static void applyValue(StyleResolver& styleResolver, CSSValue& value)
+ {
+ NinePieceImage image(getValue(styleResolver.style()));
+ switch (modifier) {
+ case Outset:
+ image.setOutset(styleResolver.styleMap()->mapNinePieceImageQuad(value));
+ break;
+ case Repeat:
+ styleResolver.styleMap()->mapNinePieceImageRepeat(value, image);
+ break;
+ case Slice:
+ styleResolver.styleMap()->mapNinePieceImageSlice(value, image);
+ break;
+ case Width:
+ image.setBorderSlices(styleResolver.styleMap()->mapNinePieceImageQuad(value));
+ break;
+ }
+ setValue(styleResolver.style(), image);
+ }
+
+private:
+ static inline const NinePieceImage& getValue(RenderStyle* style)
+ {
+ return type == BorderImage ? style->borderImage() : style->maskBoxImage();
+ }
+
+ static inline void setValue(RenderStyle* style, const NinePieceImage& value)
+ {
+ return type == BorderImage ? style->setBorderImage(value) : style->setMaskBoxImage(value);
+ }
+};
+
+#define DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(type, modifier) \
+inline void applyInherit##type##modifier(StyleResolver& styleResolver) \
+{ \
+ ApplyPropertyBorderImageModifier<type, modifier>::applyInheritValue(styleResolver); \
+} \
+inline void applyInitial##type##modifier(StyleResolver& styleResolver) \
+{ \
+ ApplyPropertyBorderImageModifier<type, modifier>::applyInitialValue(styleResolver); \
+} \
+inline void applyValue##type##modifier(StyleResolver& styleResolver, CSSValue& value) \
+{ \
+ ApplyPropertyBorderImageModifier<type, modifier>::applyValue(styleResolver, value); \
+}
+
+DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(BorderImage, Outset)
+DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(BorderImage, Repeat)
+DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(BorderImage, Slice)
+DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(BorderImage, Width)
+DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(WebkitMaskBoxImage, Outset)
+DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(WebkitMaskBoxImage, Repeat)
+DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(WebkitMaskBoxImage, Slice)
+DEFINE_BORDER_IMAGE_MODIFIER_HANDLER(WebkitMaskBoxImage, Width)
+
} // namespace StyleBuilderFunctions
} // namespace WebCore