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

Unified Diff: Source/core/css/MediaValues.cpp

Issue 227043007: CSS Length calculation with MediaValues (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@sizes_parser3
Patch Set: Fix debug compile issue Created 6 years, 8 months 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
« no previous file with comments | « Source/core/css/MediaValues.h ('k') | Source/core/html/parser/HTMLDocumentParser.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/MediaValues.cpp
diff --git a/Source/core/css/MediaValues.cpp b/Source/core/css/MediaValues.cpp
index 533562476a437a2e3061d531d862e209ba970495..0732f946b42adad31ecfc4ed35a83d12a3499758 100644
--- a/Source/core/css/MediaValues.cpp
+++ b/Source/core/css/MediaValues.cpp
@@ -85,6 +85,26 @@ static int calculateDefaultFontSize(RenderStyle* style)
return style->fontDescription().specifiedSize();
}
+static int calculateComputedFontSize(RenderStyle* style)
+{
+ return style->fontDescription().computedSize();
+}
+
+static bool calculateHasXHeight(RenderStyle* style)
+{
+ return style->fontMetrics().hasXHeight();
+}
+
+static double calculateXHeight(RenderStyle* style)
+{
+ return style->fontMetrics().xHeight();
+}
+
+static double calculateZeroWidth(RenderStyle* style)
+{
+ return style->fontMetrics().zeroWidth();
+}
+
static bool calculateScanMediaType(LocalFrame* frame)
{
ASSERT(frame && frame->view());
@@ -113,6 +133,12 @@ static bool calculateThreeDEnabled(LocalFrame* frame)
return threeDEnabled;
}
+static float calculateEffectiveZoom(RenderStyle* style)
+{
+ ASSERT(style);
+ return style->effectiveZoom();
+}
+
static MediaValues::PointerDeviceType calculateLeastCapablePrimaryPointerDeviceType(LocalFrame* frame)
{
ASSERT(frame && frame->settings());
@@ -139,11 +165,16 @@ PassRefPtr<MediaValues> MediaValues::create(MediaValuesMode mode,
int monochromeBitsPerComponent,
PointerDeviceType pointer,
int defaultFontSize,
+ int computedFontSize,
+ bool hasXHeight,
+ double xHeight,
+ double zeroWidth,
bool threeDEnabled,
bool scanMediaType,
bool screenMediaType,
bool printMediaType,
- bool strictMode)
+ bool strictMode,
+ float effectiveZoom)
{
ASSERT(mode == CachingMode);
RefPtr<MediaValues> mediaValues = adoptRef(new MediaValues(0, nullptr, mode));
@@ -156,11 +187,16 @@ PassRefPtr<MediaValues> MediaValues::create(MediaValuesMode mode,
mediaValues->m_monochromeBitsPerComponent = monochromeBitsPerComponent;
mediaValues->m_pointer = pointer;
mediaValues->m_defaultFontSize = defaultFontSize;
+ mediaValues->m_computedFontSize = computedFontSize;
+ mediaValues->m_hasXHeight = hasXHeight;
+ mediaValues->m_xHeight = xHeight;
+ mediaValues->m_zeroWidth = zeroWidth;
mediaValues->m_threeDEnabled = threeDEnabled;
mediaValues->m_scanMediaType = scanMediaType;
mediaValues->m_screenMediaType = screenMediaType;
mediaValues->m_printMediaType = printMediaType;
mediaValues->m_strictMode = strictMode;
+ mediaValues->m_effectiveZoom = effectiveZoom;
return mediaValues;
}
@@ -172,19 +208,24 @@ PassRefPtr<MediaValues> MediaValues::create(LocalFrame* frame, RenderStyle* styl
mediaValues = adoptRef(new MediaValues(frame, style, mode));
if (mode == CachingMode) {
mediaValues->m_viewportWidth = calculateViewportWidth(frame, style);
- mediaValues->m_viewportHeight = calculateViewportHeight(frame, style),
- mediaValues->m_deviceWidth = calculateDeviceWidth(frame),
- mediaValues->m_deviceHeight = calculateDeviceHeight(frame),
- mediaValues->m_devicePixelRatio = calculateDevicePixelRatio(frame),
- mediaValues->m_colorBitsPerComponent = calculateColorBitsPerComponent(frame),
- mediaValues->m_monochromeBitsPerComponent = calculateMonochromeBitsPerComponent(frame),
- mediaValues->m_pointer = calculateLeastCapablePrimaryPointerDeviceType(frame),
- mediaValues->m_defaultFontSize = calculateDefaultFontSize(style),
- mediaValues->m_threeDEnabled = calculateThreeDEnabled(frame),
- mediaValues->m_scanMediaType = calculateScanMediaType(frame),
- mediaValues->m_screenMediaType = calculateScreenMediaType(frame),
- mediaValues->m_printMediaType = calculatePrintMediaType(frame),
+ mediaValues->m_viewportHeight = calculateViewportHeight(frame, style);
+ mediaValues->m_deviceWidth = calculateDeviceWidth(frame);
+ mediaValues->m_deviceHeight = calculateDeviceHeight(frame);
+ mediaValues->m_devicePixelRatio = calculateDevicePixelRatio(frame);
+ mediaValues->m_colorBitsPerComponent = calculateColorBitsPerComponent(frame);
+ mediaValues->m_monochromeBitsPerComponent = calculateMonochromeBitsPerComponent(frame);
+ mediaValues->m_pointer = calculateLeastCapablePrimaryPointerDeviceType(frame);
+ mediaValues->m_defaultFontSize = calculateDefaultFontSize(style);
+ mediaValues->m_computedFontSize = calculateComputedFontSize(style);
+ mediaValues->m_hasXHeight = calculateHasXHeight(style);
+ mediaValues->m_xHeight = calculateXHeight(style);
+ mediaValues->m_zeroWidth = calculateZeroWidth(style);
+ mediaValues->m_threeDEnabled = calculateThreeDEnabled(frame);
+ mediaValues->m_scanMediaType = calculateScanMediaType(frame);
+ mediaValues->m_screenMediaType = calculateScreenMediaType(frame);
+ mediaValues->m_printMediaType = calculatePrintMediaType(frame);
mediaValues->m_strictMode = calculateStrictMode(frame);
+ mediaValues->m_effectiveZoom = calculateEffectiveZoom(style);
mediaValues->m_style.clear();
mediaValues->m_frame = 0;
@@ -193,10 +234,9 @@ PassRefPtr<MediaValues> MediaValues::create(LocalFrame* frame, RenderStyle* styl
return mediaValues;
}
-PassRefPtr<MediaValues> MediaValues::create(Document* document, MediaValuesMode mode)
+PassRefPtr<MediaValues> MediaValues::create(const Document& document, MediaValuesMode mode)
{
- ASSERT(document);
- Document* executingDocument = document->import() ? document->import()->master() : document;
+ const Document* executingDocument = document.import() ? document.import()->master() : &document;
ASSERT(executingDocument->frame());
ASSERT(executingDocument->renderer());
ASSERT(executingDocument->renderer()->style());
@@ -219,11 +259,16 @@ PassRefPtr<MediaValues> MediaValues::copy() const
mediaValues->m_monochromeBitsPerComponent = m_monochromeBitsPerComponent;
mediaValues->m_pointer = m_pointer;
mediaValues->m_defaultFontSize = m_defaultFontSize;
+ mediaValues->m_computedFontSize = m_computedFontSize;
+ mediaValues->m_hasXHeight = m_hasXHeight;
+ mediaValues->m_xHeight = m_xHeight;
+ mediaValues->m_zeroWidth = m_zeroWidth;
mediaValues->m_threeDEnabled = m_threeDEnabled;
mediaValues->m_scanMediaType = m_scanMediaType;
mediaValues->m_screenMediaType = m_screenMediaType;
mediaValues->m_printMediaType = m_printMediaType;
mediaValues->m_strictMode = m_strictMode;
+ mediaValues->m_effectiveZoom = m_effectiveZoom;
return mediaValues;
}
@@ -296,6 +341,13 @@ int MediaValues::defaultFontSize() const
return m_defaultFontSize;
}
+int MediaValues::computedFontSize() const
+{
+ if (m_mode == DynamicMode)
+ return calculateComputedFontSize(m_style.get());
+ return m_computedFontSize;
+}
+
bool MediaValues::threeDEnabled() const
{
if (m_mode == DynamicMode)
@@ -331,6 +383,13 @@ bool MediaValues::strictMode() const
return m_strictMode;
}
+float MediaValues::effectiveZoom() const
+{
+ if (m_mode == DynamicMode)
+ return calculateEffectiveZoom(m_style.get());
+ return m_effectiveZoom;
+}
+
Document* MediaValues::document() const
{
if (!m_frame)
@@ -338,4 +397,79 @@ Document* MediaValues::document() const
return m_frame->document();
}
+float MediaValues::zoom() const
+{
+ return m_effectiveZoom;
+}
+
+bool MediaValues::computingFontSize() const
+{
+ // MediaValues is used to computeLength from the MediaQueryEvaluator with the assumption that fonts are computed
+ return true;
+}
+
+double MediaValues::fontSpecifiedSize() const
+{
+ return m_defaultFontSize;
+}
+
+double MediaValues::fontComputedSize() const
+{
+ return m_computedFontSize;
+
+}
+
+double MediaValues::rootFontSpecifiedSize() const
+{
+ return m_defaultFontSize;
+}
+
+double MediaValues::rootFontComputedSize() const
+{
+ return m_computedFontSize;
+}
+
+bool MediaValues::hasXHeight() const
+{
+ return m_hasXHeight;
+}
+
+double MediaValues::xHeight() const
+{
+ return m_xHeight;
+}
+
+double MediaValues::zeroWidth() const
+{
+ return m_zeroWidth;
+}
+
+bool MediaValues::hasRoot() const
+{
+ // MediaValues is used to computeLength from the MediaQueryEvaluator with the assumption
+ // that root is present (and equal to the initial style)
+ return true;
+}
+
+
+double MediaValues::viewportWidthPercent() const
+{
+ return (double)m_viewportWidth / 100.0;
+}
+
+double MediaValues::viewportHeightPercent() const
+{
+ return (double)m_viewportHeight / 100.0;
+}
+
+double MediaValues::viewportMinPercent() const
+{
+ return (double)(std::min(m_viewportWidth, m_viewportHeight)) / 100.0;
+}
+
+double MediaValues::viewportMaxPercent() const
+{
+ return (double)(std::max(m_viewportWidth, m_viewportHeight)) / 100.0;
+}
+
} // namespace
« no previous file with comments | « Source/core/css/MediaValues.h ('k') | Source/core/html/parser/HTMLDocumentParser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698