Title: [175997] trunk/Source/WebCore
Revision
175997
Author
[email protected]
Date
2014-11-11 17:51:39 -0800 (Tue, 11 Nov 2014)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (175996 => 175997)


--- trunk/Source/WebCore/ChangeLog	2014-11-12 01:29:43 UTC (rev 175996)
+++ trunk/Source/WebCore/ChangeLog	2014-11-12 01:51:39 UTC (rev 175997)
@@ -1,3 +1,31 @@
+2014-11-11  Chris Dumez  <[email protected]>
+
+        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):
+
 2014-11-11  David Kilzer  <[email protected]>
 
         Modernize $buildingForIPhone in CodeGeneratorObjC.pm

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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to