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

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

Issue 714163002: Remove RenderStyle member from FontBuilder. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Ensure font is created before taking animation snapshot. 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/FontBuilder.cpp
diff --git a/Source/core/css/resolver/FontBuilder.cpp b/Source/core/css/resolver/FontBuilder.cpp
index a0cc60f30b974333e9b440d58ec892fdcb5ed2ae..cd475ba7e6c2836987a3e362bab5bed7bb7382e4 100644
--- a/Source/core/css/resolver/FontBuilder.cpp
+++ b/Source/core/css/resolver/FontBuilder.cpp
@@ -42,17 +42,15 @@ class FontDescriptionChangeScope {
public:
FontDescriptionChangeScope(FontBuilder* fontBuilder)
: m_fontBuilder(fontBuilder)
- , m_fontDescription(fontBuilder->m_style->fontDescription())
+ , m_fontDescription(fontBuilder->fontDescription())
{
}
- void reset() { m_fontDescription = FontDescription(); }
- void set(const FontDescription& fontDescription) { m_fontDescription = fontDescription; }
- FontDescription& fontDescription() { return m_fontDescription; }
-
~FontDescriptionChangeScope()
{
- m_fontBuilder->didChangeFontParameters(m_fontBuilder->m_style->setFontDescription(m_fontDescription));
+ if (m_fontBuilder->fontDirty())
+ return;
+ m_fontBuilder->didChangeFontParameters(m_fontBuilder->fontDescription() != m_fontDescription);
}
private:
@@ -62,7 +60,6 @@ private:
FontBuilder::FontBuilder(const Document& document)
: m_document(document)
- , m_style(nullptr)
, m_fontDirty(false)
{
ASSERT(document.frame());
@@ -76,16 +73,16 @@ void FontBuilder::setInitial(float effectiveZoom)
FontDescriptionChangeScope scope(this);
- scope.reset();
- setFamilyDescription(scope.fontDescription(), FontBuilder::initialFamilyDescription());
- setSize(scope.fontDescription(), FontBuilder::initialSize());
+ m_fontDescription = FontDescription();
+ setFamilyDescription(m_fontDescription, FontBuilder::initialFamilyDescription());
+ setSize(m_fontDescription, FontBuilder::initialSize());
}
void FontBuilder::inheritFrom(const FontDescription& fontDescription)
{
FontDescriptionChangeScope scope(this);
- scope.set(fontDescription);
+ m_fontDescription = fontDescription;
}
void FontBuilder::didChangeFontParameters(bool changed)
@@ -136,85 +133,85 @@ void FontBuilder::setFamilyDescription(const FontDescription::FamilyDescription&
{
FontDescriptionChangeScope scope(this);
- setFamilyDescription(scope.fontDescription(), familyDescription);
+ setFamilyDescription(m_fontDescription, familyDescription);
}
void FontBuilder::setWeight(FontWeight fontWeight)
{
FontDescriptionChangeScope scope(this);
- scope.fontDescription().setWeight(fontWeight);
+ m_fontDescription.setWeight(fontWeight);
}
void FontBuilder::setSize(const FontDescription::Size& size)
{
FontDescriptionChangeScope scope(this);
- setSize(scope.fontDescription(), size);
+ setSize(m_fontDescription, size);
}
void FontBuilder::setStretch(FontStretch fontStretch)
{
FontDescriptionChangeScope scope(this);
- scope.fontDescription().setStretch(fontStretch);
+ m_fontDescription.setStretch(fontStretch);
}
void FontBuilder::setScript(const String& locale)
{
FontDescriptionChangeScope scope(this);
- scope.fontDescription().setLocale(locale);
- scope.fontDescription().setScript(localeToScriptCodeForFontSelection(locale));
+ m_fontDescription.setLocale(locale);
+ m_fontDescription.setScript(localeToScriptCodeForFontSelection(locale));
}
void FontBuilder::setStyle(FontStyle italic)
{
FontDescriptionChangeScope scope(this);
- scope.fontDescription().setStyle(italic);
+ m_fontDescription.setStyle(italic);
}
void FontBuilder::setVariant(FontVariant smallCaps)
{
FontDescriptionChangeScope scope(this);
- scope.fontDescription().setVariant(smallCaps);
+ m_fontDescription.setVariant(smallCaps);
}
void FontBuilder::setVariantLigatures(const FontDescription::VariantLigatures& ligatures)
{
FontDescriptionChangeScope scope(this);
- scope.fontDescription().setVariantLigatures(ligatures);
+ m_fontDescription.setVariantLigatures(ligatures);
}
void FontBuilder::setTextRendering(TextRenderingMode textRenderingMode)
{
FontDescriptionChangeScope scope(this);
- scope.fontDescription().setTextRendering(textRenderingMode);
+ m_fontDescription.setTextRendering(textRenderingMode);
}
void FontBuilder::setKerning(FontDescription::Kerning kerning)
{
FontDescriptionChangeScope scope(this);
- scope.fontDescription().setKerning(kerning);
+ m_fontDescription.setKerning(kerning);
}
void FontBuilder::setFontSmoothing(FontSmoothingMode foontSmoothingMode)
{
FontDescriptionChangeScope scope(this);
- scope.fontDescription().setFontSmoothing(foontSmoothingMode);
+ m_fontDescription.setFontSmoothing(foontSmoothingMode);
}
void FontBuilder::setFeatureSettings(PassRefPtr<FontFeatureSettings> settings)
{
FontDescriptionChangeScope scope(this);
- scope.fontDescription().setFeatureSettings(settings);
+ m_fontDescription.setFeatureSettings(settings);
}
void FontBuilder::setFamilyDescription(FontDescription& fontDescription, const FontDescription::FamilyDescription& familyDescription)
@@ -306,26 +303,26 @@ void FontBuilder::checkForOrientationChange(RenderStyle* style)
FontDescriptionChangeScope scope(this);
- if (scope.fontDescription().orientation() == fontOrientation && scope.fontDescription().nonCJKGlyphOrientation() == glyphOrientation)
+ if (m_fontDescription.orientation() == fontOrientation && m_fontDescription.nonCJKGlyphOrientation() == glyphOrientation)
return;
- scope.fontDescription().setNonCJKGlyphOrientation(glyphOrientation);
- scope.fontDescription().setOrientation(fontOrientation);
+ m_fontDescription.setNonCJKGlyphOrientation(glyphOrientation);
+ m_fontDescription.setOrientation(fontOrientation);
}
void FontBuilder::checkForGenericFamilyChange(RenderStyle* style, const RenderStyle* parentStyle)
{
FontDescriptionChangeScope scope(this);
- if (scope.fontDescription().isAbsoluteSize() || !parentStyle)
+ if (m_fontDescription.isAbsoluteSize() || !parentStyle)
return;
const FontDescription& parentFontDescription = parentStyle->fontDescription();
- if (scope.fontDescription().fixedPitchFontType() == parentFontDescription.fixedPitchFontType())
+ if (m_fontDescription.fixedPitchFontType() == parentFontDescription.fixedPitchFontType())
return;
// For now, lump all families but monospace together.
- if (scope.fontDescription().genericFamily() != FontDescription::MonospaceFamily
+ if (m_fontDescription.genericFamily() != FontDescription::MonospaceFamily
&& parentFontDescription.genericFamily() != FontDescription::MonospaceFamily)
return;
@@ -334,26 +331,26 @@ void FontBuilder::checkForGenericFamilyChange(RenderStyle* style, const RenderSt
// If the font uses a keyword size, then we refetch from the table rather than
// multiplying by our scale factor.
float size;
- if (scope.fontDescription().keywordSize()) {
- size = FontSize::fontSizeForKeyword(&m_document, scope.fontDescription().keywordSize(), scope.fontDescription().fixedPitchFontType());
+ if (m_fontDescription.keywordSize()) {
+ size = FontSize::fontSizeForKeyword(&m_document, m_fontDescription.keywordSize(), m_fontDescription.fixedPitchFontType());
} else {
Settings* settings = m_document.settings();
float fixedScaleFactor = (settings && settings->defaultFixedFontSize() && settings->defaultFontSize())
? static_cast<float>(settings->defaultFixedFontSize()) / settings->defaultFontSize()
: 1;
size = parentFontDescription.fixedPitchFontType() == FixedPitchFont ?
- scope.fontDescription().specifiedSize() / fixedScaleFactor :
- scope.fontDescription().specifiedSize() * fixedScaleFactor;
+ m_fontDescription.specifiedSize() / fixedScaleFactor :
+ m_fontDescription.specifiedSize() * fixedScaleFactor;
}
- scope.fontDescription().setSpecifiedSize(size);
- updateComputedSize(scope.fontDescription(), style);
+ m_fontDescription.setSpecifiedSize(size);
+ updateComputedSize(m_fontDescription, style);
}
void FontBuilder::updateComputedSize(RenderStyle* style, const RenderStyle* parentStyle)
{
FontDescriptionChangeScope scope(this);
- updateComputedSize(scope.fontDescription(), style);
+ updateComputedSize(m_fontDescription, style);
}
void FontBuilder::updateComputedSize(FontDescription& fontDescription, RenderStyle* style)
@@ -365,8 +362,7 @@ void FontBuilder::updateComputedSize(FontDescription& fontDescription, RenderSty
fontDescription.setComputedSize(computedSize);
}
-// FIXME: style param should come first
-void FontBuilder::createFont(PassRefPtrWillBeRawPtr<FontSelector> fontSelector, const RenderStyle* parentStyle, RenderStyle* style)
+void FontBuilder::createFont(PassRefPtrWillBeRawPtr<FontSelector> fontSelector, RenderStyle* style, const RenderStyle* parentStyle)
{
if (!m_fontDirty)
return;
@@ -374,6 +370,7 @@ void FontBuilder::createFont(PassRefPtrWillBeRawPtr<FontSelector> fontSelector,
updateComputedSize(style, parentStyle);
checkForGenericFamilyChange(style, parentStyle);
checkForOrientationChange(style);
+ style->setFontDescription(m_fontDescription);
style->font().update(fontSelector);
m_fontDirty = false;
}

Powered by Google App Engine
This is Rietveld 408576698