bool FontFace::setFamilyValue(const CSSValue& familyValue)
{
    AtomicString family;
    if (familyValue.isCustomIdentValue()) {
        family = AtomicString(toCSSCustomIdentValue(familyValue).value());
    } else if (toCSSPrimitiveValue(familyValue).isValueID()) {
        // We need to use the raw text for all the generic family types, since @font-face is a way of actually
        // defining what font to use for those types.
        switch (toCSSPrimitiveValue(familyValue).getValueID()) {
        case CSSValueSerif:
            family =  FontFamilyNames::webkit_serif;
            break;
        case CSSValueSansSerif:
            family =  FontFamilyNames::webkit_sans_serif;
            break;
        case CSSValueCursive:
            family =  FontFamilyNames::webkit_cursive;
            break;
        case CSSValueFantasy:
            family =  FontFamilyNames::webkit_fantasy;
            break;
        case CSSValueMonospace:
            family =  FontFamilyNames::webkit_monospace;
            break;
        case CSSValueWebkitPictograph:
            family =  FontFamilyNames::webkit_pictograph;
            break;
        default:
            return false;
        }
    }
    m_family = family;
    return true;
}
bool DeferredLegacyStyleInterpolation::interpolationRequiresStyleResolve(const CSSValue& value)
{
    // FIXME: should not require resolving styles for inherit/initial/unset.
    if (value.isCSSWideKeyword())
        return true;
    if (value.isBasicShapeCircleValue())
        return interpolationRequiresStyleResolve(toCSSBasicShapeCircleValue(value));
    if (value.isBasicShapeEllipseValue())
        return interpolationRequiresStyleResolve(toCSSBasicShapeEllipseValue(value));
    if (value.isBasicShapePolygonValue())
        return interpolationRequiresStyleResolve(toCSSBasicShapePolygonValue(value));
    if (value.isBasicShapeInsetValue())
        return interpolationRequiresStyleResolve(toCSSBasicShapeInsetValue(value));
    if (value.isColorValue())
        return false;
    if (value.isStringValue() || value.isURIValue() || value.isCustomIdentValue())
        return false;
    if (value.isPrimitiveValue())
        return interpolationRequiresStyleResolve(toCSSPrimitiveValue(value));
    if (value.isQuadValue())
        return interpolationRequiresStyleResolve(toCSSQuadValue(value));
    if (value.isValueList())
        return interpolationRequiresStyleResolve(toCSSValueList(value));
    if (value.isValuePair())
        return interpolationRequiresStyleResolve(toCSSValuePair(value));
    if (value.isImageValue())
        return interpolationRequiresStyleResolve(toCSSImageValue(value));
    if (value.isShadowValue())
        return interpolationRequiresStyleResolve(toCSSShadowValue(value));
    if (value.isSVGDocumentValue())
        return interpolationRequiresStyleResolve(toCSSSVGDocumentValue(value));
    // FIXME: consider other custom types.
    return true;
}
Example #3
0
AtomicString CSSToStyleMap::mapAnimationName(const CSSValue& value)
{
    if (value.isInitialValue())
        return CSSAnimationData::initialName();
    if (value.isCustomIdentValue())
        return AtomicString(toCSSCustomIdentValue(value).value());
    ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueNone);
    return CSSAnimationData::initialName();
}
Example #4
0
CSSTransitionData::TransitionProperty CSSToStyleMap::mapAnimationProperty(const CSSValue& value)
{
    if (value.isInitialValue())
        return CSSTransitionData::initialProperty();
    if (value.isCustomIdentValue()) {
        const CSSCustomIdentValue& customIdentValue = toCSSCustomIdentValue(value);
        if (customIdentValue.isKnownPropertyID())
            return CSSTransitionData::TransitionProperty(customIdentValue.valueAsPropertyID());
        return CSSTransitionData::TransitionProperty(customIdentValue.value());
    }
    ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueNone);
    return CSSTransitionData::TransitionProperty(CSSTransitionData::TransitionNone);
}