Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(577)

Unified Diff: Source/core/css/resolver/StyleBuilderConverter.cpp

Issue 748073002: Use a StyleBuilderConverter function for line-height. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/css/resolver/StyleBuilderConverter.cpp
diff --git a/Source/core/css/resolver/StyleBuilderConverter.cpp b/Source/core/css/resolver/StyleBuilderConverter.cpp
index 180d77d15d4805b8fa222458722b697ecf39fac2..a34d0016bef87406ce41c3c539ff3917cce34da3 100644
--- a/Source/core/css/resolver/StyleBuilderConverter.cpp
+++ b/Source/core/css/resolver/StyleBuilderConverter.cpp
@@ -572,6 +572,33 @@ LineBoxContain StyleBuilderConverter::convertLineBoxContain(StyleResolverState&,
return toCSSLineBoxContainValue(value)->value();
}
+static CSSToLengthConversionData lineHeightToLengthConversionData(StyleResolverState& state)
+{
+ float multiplier = state.style()->effectiveZoom();
+ if (LocalFrame* frame = state.document().frame())
+ multiplier *= frame->textZoomFactor();
+ return state.cssToLengthConversionData().copyWithAdjustedZoom(multiplier);
+}
+
+Length StyleBuilderConverter::convertLineHeight(StyleResolverState& state, CSSValue* value)
+{
+ CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
+
+ if (primitiveValue->isLength())
+ return primitiveValue->computeLength<Length>(lineHeightToLengthConversionData(state));
+ if (primitiveValue->isPercentage())
+ return Length((state.style()->computedFontSize() * primitiveValue->getIntValue()) / 100.0, Fixed);
+ if (primitiveValue->isNumber())
+ return Length(primitiveValue->getDoubleValue() * 100.0, Percent);
+ if (primitiveValue->isCalculated()) {
+ Length zoomedLength = Length(primitiveValue->cssCalcValue()->toCalcValue(lineHeightToLengthConversionData(state)));
+ return Length(valueForLength(zoomedLength, state.style()->fontSize()), Fixed);
+ }
+
+ ASSERT(primitiveValue->getValueID() == CSSValueNormal);
+ return RenderStyle::initialLineHeight();
+}
+
float StyleBuilderConverter::convertNumberOrPercentage(StyleResolverState& state, CSSValue* value)
{
CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);

Powered by Google App Engine
This is Rietveld 408576698