Changeset 85069 in webkit


Ignore:
Timestamp:
Apr 27, 2011 11:44:00 AM (13 years ago)
Author:
Nikolas Zimmermann
Message:

2011-04-27 Nikolas Zimmermann <nzimmermann@rim.com>

Reviewed by Antti Koivisto.

Cleanup CSSStyleApplyProperty.cpp
https://bugs.webkit.org/show_bug.cgi?id=59623

As first step remove ApplyPropertyColorBase, merge it with ApplyPropertyColor, there's no need for two seperated classes.
Use typedefs instead of repating the function pointer declarations in a few places.

  • css/CSSStyleApplyProperty.cpp: (WebCore::ApplyPropertyDefault::ApplyPropertyDefault): (WebCore::ApplyPropertyColor::ApplyPropertyColor): (WebCore::ApplyPropertyColor::applyInheritValue): (WebCore::ApplyPropertyColor::applyInitialValue): (WebCore::ApplyPropertyColor::applyValue): (WebCore::CSSStyleApplyProperty::CSSStyleApplyProperty):
Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r85067 r85069  
     12011-04-27  Nikolas Zimmermann  <nzimmermann@rim.com>
     2
     3        Reviewed by Antti Koivisto.
     4
     5        Cleanup CSSStyleApplyProperty.cpp
     6        https://bugs.webkit.org/show_bug.cgi?id=59623
     7
     8        As first step remove ApplyPropertyColorBase, merge it with ApplyPropertyColor, there's no need for two seperated classes.
     9        Use typedefs instead of repating the function pointer declarations in a few places.
     10
     11        * css/CSSStyleApplyProperty.cpp:
     12        (WebCore::ApplyPropertyDefault::ApplyPropertyDefault):
     13        (WebCore::ApplyPropertyColor::ApplyPropertyColor):
     14        (WebCore::ApplyPropertyColor::applyInheritValue):
     15        (WebCore::ApplyPropertyColor::applyInitialValue):
     16        (WebCore::ApplyPropertyColor::applyValue):
     17        (WebCore::CSSStyleApplyProperty::CSSStyleApplyProperty):
     18
    1192011-04-27  Dan Bernstein  <mitz@apple.com>
    220
  • trunk/Source/WebCore/css/CSSStyleApplyProperty.cpp

    r84887 r85069  
    8585class ApplyPropertyDefault : public ApplyPropertyBase {
    8686public:
    87     ApplyPropertyDefault(T (RenderStyle::*getter)() const, void (RenderStyle::*setter)(T), T (*initial)())
     87    typedef T (RenderStyle::*GetterFunction)() const;
     88    typedef void (RenderStyle::*SetterFunction)(T);
     89    typedef T (*InitialFunction)();
     90
     91    ApplyPropertyDefault(GetterFunction getter, SetterFunction setter, InitialFunction initial)
    8892        : m_getter(getter)
    8993        , m_setter(setter)
     
    109113
    110114protected:
    111     T (RenderStyle::*m_getter)() const;
    112     void (RenderStyle::*m_setter)(T);
    113     T (*m_initial)();
     115    GetterFunction m_getter;
     116    SetterFunction m_setter;
     117    InitialFunction m_initial;
    114118};
    115119
    116120// CSSPropertyColor
    117 class ApplyPropertyColorBase : public ApplyPropertyBase {
    118 public:
    119     ApplyPropertyColorBase(const Color& (RenderStyle::*getter)() const, const Color& (RenderStyle::*defaultValue)() const, void (RenderStyle::*setter)(const Color&))
     121class ApplyPropertyColor : public ApplyPropertyBase {
     122public:
     123    typedef const Color& (RenderStyle::*GetterFunction)() const;
     124    typedef void (RenderStyle::*SetterFunction)(const Color&);
     125    typedef const Color& (RenderStyle::*DefaultFunction)() const;
     126    typedef Color (*InitialFunction)();
     127
     128    ApplyPropertyColor(GetterFunction getter, SetterFunction setter, DefaultFunction defaultFunction, InitialFunction initialFunction = 0)
    120129        : m_getter(getter)
    121         , m_defaultValue(defaultValue)
    122130        , m_setter(setter)
    123     {
    124     }
     131        , m_default(defaultFunction)
     132        , m_initial(initialFunction)
     133    {
     134    }
     135
    125136    virtual void applyInheritValue(CSSStyleSelector* selector) const
    126137    {
    127138        const Color& color = (selector->parentStyle()->*m_getter)();
    128         if (m_defaultValue && !color.isValid())
    129             (selector->style()->*m_setter)((selector->parentStyle()->*m_defaultValue)());
     139        if (m_default && !color.isValid())
     140            (selector->style()->*m_setter)((selector->parentStyle()->*m_default)());
    130141        else
    131142            (selector->style()->*m_setter)(color);
    132143    }
     144
    133145    virtual void applyInitialValue(CSSStyleSelector* selector) const
    134146    {
    135         Color color;
    136         (selector->style()->*m_setter)(color);
    137     }
    138     virtual void applyValue(CSSStyleSelector* selector, CSSValue* value) const
    139     {
    140         if (value->isPrimitiveValue())
    141             (selector->style()->*m_setter)(selector->getColorFromPrimitiveValue(static_cast<CSSPrimitiveValue*>(value)));
    142     }
    143 protected:
    144     const Color& (RenderStyle::*m_getter)() const;
    145     const Color& (RenderStyle::*m_defaultValue)() const;
    146     void (RenderStyle::*m_setter)(const Color&);
    147 };
    148 
    149 class ApplyPropertyColor : public ApplyPropertyColorBase {
    150 public:
    151     ApplyPropertyColor(const Color& (RenderStyle::*getter)() const, void (RenderStyle::*setter)(const Color&), Color (*initialValue)())
    152         : ApplyPropertyColorBase(getter, 0, setter)
    153         , m_initialValue(initialValue)
    154     {
    155     }
    156 
    157     virtual void applyInitialValue(CSSStyleSelector* selector) const
    158     {
    159         (selector->style()->*m_setter)(m_initialValue());
     147        (selector->style()->*m_setter)(m_initial ? m_initial() : Color());
    160148    }
    161149
     
    164152        if (!value->isPrimitiveValue())
    165153            return;
    166 
    167         if ((static_cast<CSSPrimitiveValue*>(value))->getIdent() == CSSValueCurrentcolor)
     154        CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
     155        if (m_initial && primitiveValue->getIdent() == CSSValueCurrentcolor)
    168156            applyInheritValue(selector);
    169157        else
    170             ApplyPropertyColorBase::applyValue(selector, value);
    171     }
    172 protected:
    173     Color (*m_initialValue)();
     158            (selector->style()->*m_setter)(selector->getColorFromPrimitiveValue(primitiveValue));
     159    }
     160
     161private:
     162    GetterFunction m_getter;
     163    SetterFunction m_setter;
     164    DefaultFunction m_default;
     165    InitialFunction m_initial;
    174166};
    175167
     
    295287       m_propertyMap[i] = 0;
    296288
    297     setPropertyValue(CSSPropertyColor, new ApplyPropertyColor(&RenderStyle::color, &RenderStyle::setColor, RenderStyle::initialColor));
     289    setPropertyValue(CSSPropertyColor, new ApplyPropertyColor(&RenderStyle::color, &RenderStyle::setColor, 0, RenderStyle::initialColor));
    298290    setPropertyValue(CSSPropertyDirection, new ApplyPropertyDirection(&RenderStyle::direction, &RenderStyle::setDirection, RenderStyle::initialDirection));
    299291
     
    356348    setPropertyValue(CSSPropertyWebkitMaskRepeat, new ApplyPropertyExpandingSuppressValue(propertyValue(CSSPropertyBackgroundRepeatX), propertyValue(CSSPropertyBackgroundRepeatY)));
    357349
    358     setPropertyValue(CSSPropertyBackgroundColor, new ApplyPropertyColorBase(&RenderStyle::backgroundColor, 0, &RenderStyle::setBackgroundColor));
    359     setPropertyValue(CSSPropertyBorderBottomColor, new ApplyPropertyColorBase(&RenderStyle::borderBottomColor, &RenderStyle::color, &RenderStyle::setBorderBottomColor));
    360     setPropertyValue(CSSPropertyBorderLeftColor, new ApplyPropertyColorBase(&RenderStyle::borderLeftColor, &RenderStyle::color, &RenderStyle::setBorderLeftColor));
    361     setPropertyValue(CSSPropertyBorderRightColor, new ApplyPropertyColorBase(&RenderStyle::borderRightColor, &RenderStyle::color, &RenderStyle::setBorderRightColor));
    362     setPropertyValue(CSSPropertyBorderTopColor, new ApplyPropertyColorBase(&RenderStyle::borderTopColor, &RenderStyle::color, &RenderStyle::setBorderTopColor));
     350    setPropertyValue(CSSPropertyBackgroundColor, new ApplyPropertyColor(&RenderStyle::backgroundColor, &RenderStyle::setBackgroundColor, 0));
     351    setPropertyValue(CSSPropertyBorderBottomColor, new ApplyPropertyColor(&RenderStyle::borderBottomColor, &RenderStyle::setBorderBottomColor, &RenderStyle::color));
     352    setPropertyValue(CSSPropertyBorderLeftColor, new ApplyPropertyColor(&RenderStyle::borderLeftColor, &RenderStyle::setBorderLeftColor, &RenderStyle::color));
     353    setPropertyValue(CSSPropertyBorderRightColor, new ApplyPropertyColor(&RenderStyle::borderRightColor, &RenderStyle::setBorderRightColor, &RenderStyle::color));
     354    setPropertyValue(CSSPropertyBorderTopColor, new ApplyPropertyColor(&RenderStyle::borderTopColor, &RenderStyle::setBorderTopColor, &RenderStyle::color));
    363355
    364356    setPropertyValue(CSSPropertyBorderTopStyle, new ApplyPropertyDefault<EBorderStyle>(&RenderStyle::borderTopStyle, &RenderStyle::setBorderTopStyle, &RenderStyle::initialBorderStyle));
     
    367359    setPropertyValue(CSSPropertyBorderLeftStyle, new ApplyPropertyDefault<EBorderStyle>(&RenderStyle::borderLeftStyle, &RenderStyle::setBorderLeftStyle, &RenderStyle::initialBorderStyle));
    368360
    369     setPropertyValue(CSSPropertyOutlineColor, new ApplyPropertyColorBase(&RenderStyle::outlineColor, &RenderStyle::color, &RenderStyle::setOutlineColor));
     361    setPropertyValue(CSSPropertyOutlineColor, new ApplyPropertyColor(&RenderStyle::outlineColor, &RenderStyle::setOutlineColor, &RenderStyle::color));
    370362
    371363    setPropertyValue(CSSPropertyOverflowX, new ApplyPropertyDefault<EOverflow>(&RenderStyle::overflowX, &RenderStyle::setOverflowX, &RenderStyle::initialOverflowX));
     
    373365    setPropertyValue(CSSPropertyOverflow, new ApplyPropertyExpanding(propertyValue(CSSPropertyOverflowX), propertyValue(CSSPropertyOverflowY)));
    374366
    375     setPropertyValue(CSSPropertyWebkitColumnRuleColor, new ApplyPropertyColorBase(&RenderStyle::columnRuleColor, &RenderStyle::color, &RenderStyle::setColumnRuleColor));
    376     setPropertyValue(CSSPropertyWebkitTextEmphasisColor, new ApplyPropertyColorBase(&RenderStyle::textEmphasisColor, &RenderStyle::color, &RenderStyle::setTextEmphasisColor));
    377     setPropertyValue(CSSPropertyWebkitTextFillColor, new ApplyPropertyColorBase(&RenderStyle::textFillColor, &RenderStyle::color, &RenderStyle::setTextFillColor));
    378     setPropertyValue(CSSPropertyWebkitTextStrokeColor, new ApplyPropertyColorBase(&RenderStyle::textStrokeColor, &RenderStyle::color, &RenderStyle::setTextStrokeColor));
     367    setPropertyValue(CSSPropertyWebkitColumnRuleColor, new ApplyPropertyColor(&RenderStyle::columnRuleColor, &RenderStyle::setColumnRuleColor, &RenderStyle::color));
     368    setPropertyValue(CSSPropertyWebkitTextEmphasisColor, new ApplyPropertyColor(&RenderStyle::textEmphasisColor, &RenderStyle::setTextEmphasisColor, &RenderStyle::color));
     369    setPropertyValue(CSSPropertyWebkitTextFillColor, new ApplyPropertyColor(&RenderStyle::textFillColor, &RenderStyle::setTextFillColor, &RenderStyle::color));
     370    setPropertyValue(CSSPropertyWebkitTextStrokeColor, new ApplyPropertyColor(&RenderStyle::textStrokeColor, &RenderStyle::setTextStrokeColor, &RenderStyle::color));
    379371}
    380372
Note: See TracChangeset for help on using the changeset viewer.