diff options
Diffstat (limited to 'Source/WebCore/css/CSSPrimitiveValue.cpp')
-rw-r--r-- | Source/WebCore/css/CSSPrimitiveValue.cpp | 69 |
1 files changed, 68 insertions, 1 deletions
diff --git a/Source/WebCore/css/CSSPrimitiveValue.cpp b/Source/WebCore/css/CSSPrimitiveValue.cpp index 592494a0e..51d535eb9 100644 --- a/Source/WebCore/css/CSSPrimitiveValue.cpp +++ b/Source/WebCore/css/CSSPrimitiveValue.cpp @@ -60,6 +60,11 @@ static inline bool isValidCSSUnitTypeForDoubleConversion(CSSPrimitiveValue::Unit case CSSPrimitiveValue:: CSS_CM: case CSSPrimitiveValue:: CSS_DEG: case CSSPrimitiveValue:: CSS_DIMENSION: +#if ENABLE(CSS_IMAGE_RESOLUTION) + case CSSPrimitiveValue:: CSS_DPPX: + case CSSPrimitiveValue:: CSS_DPI: + case CSSPrimitiveValue:: CSS_DPCM: +#endif case CSSPrimitiveValue:: CSS_EMS: case CSSPrimitiveValue:: CSS_EXS: case CSSPrimitiveValue:: CSS_GRAD: @@ -85,6 +90,11 @@ static inline bool isValidCSSUnitTypeForDoubleConversion(CSSPrimitiveValue::Unit case CSSPrimitiveValue:: CSS_COUNTER: case CSSPrimitiveValue:: CSS_COUNTER_NAME: case CSSPrimitiveValue:: CSS_DASHBOARD_REGION: +#if !ENABLE(CSS_IMAGE_RESOLUTION) + case CSSPrimitiveValue:: CSS_DPPX: + case CSSPrimitiveValue:: CSS_DPI: + case CSSPrimitiveValue:: CSS_DPCM: +#endif case CSSPrimitiveValue:: CSS_IDENT: case CSSPrimitiveValue:: CSS_PAIR: case CSSPrimitiveValue:: CSS_PARSER_HEXCOLOR: @@ -99,6 +109,9 @@ static inline bool isValidCSSUnitTypeForDoubleConversion(CSSPrimitiveValue::Unit case CSSPrimitiveValue:: CSS_UNICODE_RANGE: case CSSPrimitiveValue:: CSS_UNKNOWN: case CSSPrimitiveValue:: CSS_URI: +#if ENABLE(CSS_VARIABLES) + case CSSPrimitiveValue:: CSS_VARIABLE_NAME: +#endif return false; } @@ -137,6 +150,12 @@ static CSSPrimitiveValue::UnitCategory unitCategory(CSSPrimitiveValue::UnitTypes case CSSPrimitiveValue::CSS_VH: case CSSPrimitiveValue::CSS_VMIN: return CSSPrimitiveValue::UViewportPercentageLength; +#if ENABLE(CSS_IMAGE_RESOLUTION) + case CSSPrimitiveValue:: CSS_DPPX: + case CSSPrimitiveValue:: CSS_DPI: + case CSSPrimitiveValue:: CSS_DPCM: + return CSSPrimitiveValue::UResolution; +#endif default: return CSSPrimitiveValue::UOther; } @@ -551,12 +570,18 @@ static double conversionToCanonicalUnitsScaleFactor(unsigned short unitType) case CSSPrimitiveValue::CSS_CM: factor = cssPixelsPerInch / 2.54; // (2.54 cm/in) break; + case CSSPrimitiveValue::CSS_DPCM: + factor = 2.54 / cssPixelsPerInch; // (2.54 cm/in) + break; case CSSPrimitiveValue::CSS_MM: factor = cssPixelsPerInch / 25.4; break; case CSSPrimitiveValue::CSS_IN: factor = cssPixelsPerInch; break; + case CSSPrimitiveValue::CSS_DPI: + factor = 1 / cssPixelsPerInch; + break; case CSSPrimitiveValue::CSS_PT: factor = cssPixelsPerInch / 72.0; break; @@ -627,6 +652,10 @@ CSSPrimitiveValue::UnitTypes CSSPrimitiveValue::canonicalUnitTypeForCategory(Uni return CSS_HZ; case UViewportPercentageLength: return CSS_UNKNOWN; // Cannot convert between numbers and relative lengths. +#if ENABLE(CSS_IMAGE_RESOLUTION) + case UResolution: + return CSS_DPPX; +#endif default: return CSS_UNKNOWN; } @@ -697,6 +726,9 @@ String CSSPrimitiveValue::getStringValue(ExceptionCode& ec) const case CSS_STRING: case CSS_ATTR: case CSS_URI: +#if ENABLE(CSS_VARIABLES) + case CSS_VARIABLE_NAME: +#endif return m_value.string; case CSS_IDENT: return valueOrPropertyName(m_value.ident); @@ -714,7 +746,10 @@ String CSSPrimitiveValue::getStringValue() const case CSS_STRING: case CSS_ATTR: case CSS_URI: - return m_value.string; +#if ENABLE(CSS_VARIABLES) + case CSS_VARIABLE_NAME: +#endif + return m_value.string; case CSS_IDENT: return valueOrPropertyName(m_value.ident); default: @@ -828,6 +863,17 @@ String CSSPrimitiveValue::customCssText() const case CSS_CM: text = formatNumber(m_value.num) + "cm"; break; +#if ENABLE(CSS_IMAGE_RESOLUTION) + case CSS_DPPX: + text = formatNumber(m_value.num) + "dppx"; + break; + case CSS_DPI: + text = formatNumber(m_value.num) + "dpi"; + break; + case CSS_DPCM: + text = formatNumber(m_value.num) + "dpcm"; + break; +#endif case CSS_MM: text = formatNumber(m_value.num) + "mm"; break; @@ -1056,6 +1102,13 @@ String CSSPrimitiveValue::customCssText() const case CSS_VMIN: text = formatNumber(m_value.num) + "vmin"; break; +#if ENABLE(CSS_VARIABLES) + case CSS_VARIABLE_NAME: + text = "-webkit-var("; + text += m_value.string; + text += ")"; + break; +#endif } ASSERT(!cssTextCache().contains(this)); @@ -1064,6 +1117,15 @@ String CSSPrimitiveValue::customCssText() const return text; } +#if ENABLE(CSS_VARIABLES) +String CSSPrimitiveValue::customSerializeResolvingVariables(const HashMap<AtomicString, String>& variables) const +{ + if (m_primitiveUnitType == CSS_VARIABLE_NAME && variables.contains(m_value.string)) + return variables.get(m_value.string); + return customCssText(); +} +#endif + void CSSPrimitiveValue::addSubresourceStyleURLs(ListHashSet<KURL>& urls, const StyleSheetContents* styleSheet) const { if (m_primitiveUnitType == CSS_URI) @@ -1151,6 +1213,11 @@ PassRefPtr<CSSPrimitiveValue> CSSPrimitiveValue::cloneForCSSOM() const case CSS_VW: case CSS_VH: case CSS_VMIN: +#if ENABLE(CSS_IMAGE_RESOLUTION) + case CSS_DPPX: + case CSS_DPI: + case CSS_DPCM: +#endif result = CSSPrimitiveValue::create(m_value.num, static_cast<UnitTypes>(m_primitiveUnitType)); break; case CSS_IDENT: |