Changeset 92243 in webkit


Ignore:
Timestamp:
Aug 2, 2011 4:15:27 PM (13 years ago)
Author:
macpherson@chromium.org
Message:

Implement CSSPropertyWebkitTextCombine, CSSPropertyWebkitTextEmphasisPosition and CSSPropertyWebkitTextEmphasisStyle in CSSStyleApplyProperty.
https://bugs.webkit.org/show_bug.cgi?id=65517

Reviewed by Dimitri Glazkov.

No new tests. Just refactoring and moving code around.

  • css/CSSStyleApplyProperty.cpp:

Added class ApplyPropertyTextEmphasisStyle to handle the special TextEmphasisStyle logic.
(WebCore::ApplyPropertyTextEmphasisStyle::applyInheritValue):
(WebCore::ApplyPropertyTextEmphasisStyle::applyInitialValue):
(WebCore::ApplyPropertyTextEmphasisStyle::applyValue):
(WebCore::CSSStyleApplyProperty::CSSStyleApplyProperty):
Added initializations for CSSPropertyWebkitTextCombine, CSSPropertyWebkitTextEmphasisPosition, CSSPropertyWebkitTextEmphasisStyle.

  • css/CSSStyleSelector.cpp:

(WebCore::CSSStyleSelector::applyProperty):
Remove existing implementations.

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r92242 r92243  
     12011-08-02  Luke Macpherson   <macpherson@chromium.org>
     2
     3        Implement CSSPropertyWebkitTextCombine, CSSPropertyWebkitTextEmphasisPosition and CSSPropertyWebkitTextEmphasisStyle in CSSStyleApplyProperty.
     4        https://bugs.webkit.org/show_bug.cgi?id=65517
     5
     6        Reviewed by Dimitri Glazkov.
     7
     8        No new tests. Just refactoring and moving code around.
     9
     10        * css/CSSStyleApplyProperty.cpp:
     11        Added class ApplyPropertyTextEmphasisStyle to handle the special TextEmphasisStyle logic.
     12        (WebCore::ApplyPropertyTextEmphasisStyle::applyInheritValue):
     13        (WebCore::ApplyPropertyTextEmphasisStyle::applyInitialValue):
     14        (WebCore::ApplyPropertyTextEmphasisStyle::applyValue):
     15        (WebCore::CSSStyleApplyProperty::CSSStyleApplyProperty):
     16        Added initializations for CSSPropertyWebkitTextCombine, CSSPropertyWebkitTextEmphasisPosition, CSSPropertyWebkitTextEmphasisStyle.
     17        * css/CSSStyleSelector.cpp:
     18        (WebCore::CSSStyleSelector::applyProperty):
     19        Remove existing implementations.
     20
    1212011-08-02  Mark Pilgrim  <pilgrim@chromium.org>
    222
  • trunk/Source/WebCore/css/CSSStyleApplyProperty.cpp

    r91969 r92243  
    686686};
    687687
     688class ApplyPropertyTextEmphasisStyle : public ApplyPropertyBase {
     689private:
     690    virtual void applyInheritValue(CSSStyleSelector* selector) const
     691    {
     692        selector->style()->setTextEmphasisFill(selector->parentStyle()->textEmphasisFill());
     693        selector->style()->setTextEmphasisMark(selector->parentStyle()->textEmphasisMark());
     694        selector->style()->setTextEmphasisCustomMark(selector->parentStyle()->textEmphasisCustomMark());
     695    }
     696
     697    virtual void applyInitialValue(CSSStyleSelector* selector) const
     698    {
     699        selector->style()->setTextEmphasisFill(RenderStyle::initialTextEmphasisFill());
     700        selector->style()->setTextEmphasisMark(RenderStyle::initialTextEmphasisMark());
     701        selector->style()->setTextEmphasisCustomMark(RenderStyle::initialTextEmphasisCustomMark());
     702    }
     703
     704    virtual void applyValue(CSSStyleSelector* selector, CSSValue* value) const
     705    {
     706        if (value->isValueList()) {
     707            CSSValueList* list = static_cast<CSSValueList*>(value);
     708            ASSERT(list->length() == 2);
     709            if (list->length() != 2)
     710                return;
     711            for (unsigned i = 0; i < 2; ++i) {
     712                CSSValue* item = list->itemWithoutBoundsCheck(i);
     713                if (!item->isPrimitiveValue())
     714                    continue;
     715
     716                CSSPrimitiveValue* value = static_cast<CSSPrimitiveValue*>(item);
     717                if (value->getIdent() == CSSValueFilled || value->getIdent() == CSSValueOpen)
     718                    selector->style()->setTextEmphasisFill(*value);
     719                else
     720                    selector->style()->setTextEmphasisMark(*value);
     721            }
     722            selector->style()->setTextEmphasisCustomMark(nullAtom);
     723            return;
     724        }
     725
     726        if (!value->isPrimitiveValue())
     727            return;
     728        CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value);
     729
     730        if (primitiveValue->primitiveType() == CSSPrimitiveValue::CSS_STRING) {
     731            selector->style()->setTextEmphasisFill(TextEmphasisFillFilled);
     732            selector->style()->setTextEmphasisMark(TextEmphasisMarkCustom);
     733            selector->style()->setTextEmphasisCustomMark(primitiveValue->getStringValue());
     734            return;
     735        }
     736
     737        selector->style()->setTextEmphasisCustomMark(nullAtom);
     738
     739        if (primitiveValue->getIdent() == CSSValueFilled || primitiveValue->getIdent() == CSSValueOpen) {
     740            selector->style()->setTextEmphasisFill(*primitiveValue);
     741            selector->style()->setTextEmphasisMark(TextEmphasisMarkAuto);
     742        } else {
     743            selector->style()->setTextEmphasisFill(TextEmphasisFillFilled);
     744            selector->style()->setTextEmphasisMark(*primitiveValue);
     745        }
     746
     747    }
     748};
     749
    688750const CSSStyleApplyProperty& CSSStyleApplyProperty::sharedCSSStyleApplyProperty()
    689751{
     
    869931    setPropertyHandler(CSSPropertyWebkitColumnGap, new ApplyPropertyAuto<float, ComputeLength, CSSValueNormal>(&RenderStyle::columnGap, &RenderStyle::setColumnGap, &RenderStyle::hasNormalColumnGap, &RenderStyle::setHasNormalColumnGap));
    870932    setPropertyHandler(CSSPropertyWebkitColumnWidth, new ApplyPropertyAuto<float, ComputeLength>(&RenderStyle::columnWidth, &RenderStyle::setColumnWidth, &RenderStyle::hasAutoColumnWidth, &RenderStyle::setHasAutoColumnWidth));
     933
     934    setPropertyHandler(CSSPropertyWebkitTextCombine, new ApplyPropertyDefault<TextCombine>(&RenderStyle::textCombine, &RenderStyle::setTextCombine, &RenderStyle::initialTextCombine));
     935    setPropertyHandler(CSSPropertyWebkitTextEmphasisPosition, new ApplyPropertyDefault<TextEmphasisPosition>(&RenderStyle::textEmphasisPosition, &RenderStyle::setTextEmphasisPosition, &RenderStyle::initialTextEmphasisPosition));
     936    setPropertyHandler(CSSPropertyWebkitTextEmphasisStyle, new ApplyPropertyTextEmphasisStyle());
     937
    871938    setPropertyHandler(CSSPropertyZIndex, new ApplyPropertyAuto<int>(&RenderStyle::zIndex, &RenderStyle::setZIndex, &RenderStyle::hasAutoZIndex, &RenderStyle::setHasAutoZIndex));
    872939}
  • trunk/Source/WebCore/css/CSSStyleSelector.cpp

    r92195 r92243  
    50605060    }
    50615061
    5062     case CSSPropertyWebkitTextCombine:
    5063         HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE(textCombine, TextCombine)
    5064         return;
    5065 
    5066     case CSSPropertyWebkitTextEmphasisPosition:
    5067         HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE(textEmphasisPosition, TextEmphasisPosition)
    5068         return;
    5069 
    5070     case CSSPropertyWebkitTextEmphasisStyle:
    5071         HANDLE_INHERIT_AND_INITIAL(textEmphasisFill, TextEmphasisFill)
    5072         HANDLE_INHERIT_AND_INITIAL(textEmphasisMark, TextEmphasisMark)
    5073         HANDLE_INHERIT_AND_INITIAL(textEmphasisCustomMark, TextEmphasisCustomMark)
    5074         if (isInherit || isInitial)
    5075             return;
    5076 
    5077         if (value->isValueList()) {
    5078             CSSValueList* list = static_cast<CSSValueList*>(value);
    5079             ASSERT(list->length() == 2);
    5080             if (list->length() != 2)
    5081                 return;
    5082             for (unsigned i = 0; i < 2; ++i) {
    5083                 CSSValue* item = list->itemWithoutBoundsCheck(i);
    5084                 if (!item->isPrimitiveValue())
    5085                     continue;
    5086 
    5087                 CSSPrimitiveValue* value = static_cast<CSSPrimitiveValue*>(item);
    5088                 if (value->getIdent() == CSSValueFilled || value->getIdent() == CSSValueOpen)
    5089                     m_style->setTextEmphasisFill(*value);
    5090                 else
    5091                     m_style->setTextEmphasisMark(*value);
    5092             }
    5093             m_style->setTextEmphasisCustomMark(nullAtom);
    5094             return;
    5095         }
    5096 
    5097         if (!primitiveValue)
    5098             return;
    5099 
    5100         if (primitiveValue->primitiveType() == CSSPrimitiveValue::CSS_STRING) {
    5101             m_style->setTextEmphasisFill(TextEmphasisFillFilled);
    5102             m_style->setTextEmphasisMark(TextEmphasisMarkCustom);
    5103             m_style->setTextEmphasisCustomMark(primitiveValue->getStringValue());
    5104             return;
    5105         }
    5106 
    5107         m_style->setTextEmphasisCustomMark(nullAtom);
    5108 
    5109         if (primitiveValue->getIdent() == CSSValueFilled || primitiveValue->getIdent() == CSSValueOpen) {
    5110             m_style->setTextEmphasisFill(*primitiveValue);
    5111             m_style->setTextEmphasisMark(TextEmphasisMarkAuto);
    5112         } else {
    5113             m_style->setTextEmphasisFill(TextEmphasisFillFilled);
    5114             m_style->setTextEmphasisMark(*primitiveValue);
    5115         }
    5116 
    5117         return;
    51185062    case CSSPropertyWebkitLineBoxContain: {
    51195063        HANDLE_INHERIT_AND_INITIAL(lineBoxContain, LineBoxContain)
     
    52595203    case CSSPropertyWebkitColumnGap:
    52605204    case CSSPropertyWebkitColumnWidth:
     5205    case CSSPropertyWebkitTextCombine:
     5206    case CSSPropertyWebkitTextEmphasisPosition:
     5207    case CSSPropertyWebkitTextEmphasisStyle:
    52615208    case CSSPropertyZIndex:
    52625209        ASSERT_NOT_REACHED();
Note: See TracChangeset for help on using the changeset viewer.