Length ViewportStyleResolver::viewportLengthValue(CSSPropertyID id) const { ASSERT(id == CSSPropertyMaxHeight || id == CSSPropertyMinHeight || id == CSSPropertyMaxWidth || id == CSSPropertyMinWidth); CSSValue* value = m_propertySet->getPropertyCSSValue(id); if (!value || !value->isPrimitiveValue()) return Length(); // auto CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); if (primitiveValue->getValueID() == CSSValueInternalExtendToZoom) return Length(ExtendToZoom); ComputedStyle* documentStyle = m_document->mutableComputedStyle(); // If we have viewport units the conversion will mark the document style as having viewport units. bool documentStyleHasViewportUnits = documentStyle->hasViewportUnits(); documentStyle->setHasViewportUnits(false); CSSToLengthConversionData::FontSizes fontSizes(documentStyle, documentStyle); CSSToLengthConversionData::ViewportSize viewportSize(m_document->layoutView()); if (primitiveValue->getValueID() == CSSValueAuto) return Length(Auto); Length result = primitiveValue->convertToLength(CSSToLengthConversionData(documentStyle, fontSizes, viewportSize, 1.0f)); if (documentStyle->hasViewportUnits()) m_document->setHasViewportUnits(); documentStyle->setHasViewportUnits(documentStyleHasViewportUnits); return result; }
CSSToLengthConversionData StyleResolverState::fontSizeConversionData() const { float em = parentStyle()->specifiedFontSize(); float rem = rootElementStyle() ? rootElementStyle()->specifiedFontSize() : 1; CSSToLengthConversionData::FontSizes fontSizes(em, rem, &parentStyle()->font()); CSSToLengthConversionData::ViewportSize viewportSize(document().layoutViewItem()); return CSSToLengthConversionData(style(), fontSizes, viewportSize, 1); }
void ScriptFontImportOptions::internal_SetFontSizes(ScriptFontImportOptions* thisPtr, MonoArray* value) { ScriptArray inArray(value); Vector<UINT32> fontSizes(inArray.size()); for (UINT32 i = 0; i < inArray.size(); i++) fontSizes[i] = inArray.get<UINT32>(i); thisPtr->getFontImportOptions()->setFontSizes(fontSizes); }