Bug 1341724 - Part 1: stylo: Refactor nsRuleNode::GetMetricsFor; r=heycam

MozReview-Commit-ID: G709Er7GXwe
This commit is contained in:
Manish Goregaokar 2017-04-07 15:49:44 -07:00
Родитель 633a064655
Коммит 0f5f58cb55
2 изменённых файлов: 40 добавлений и 12 удалений

Просмотреть файл

@ -369,22 +369,18 @@ static inline nscoord ScaleViewportCoordTrunc(const nsCSSValue& aValue,
aViewportSize / 100.0f);
}
/* static */
already_AddRefed<nsFontMetrics>
GetMetricsFor(nsPresContext* aPresContext,
nsStyleContext* aStyleContext,
const nsStyleFont* aStyleFont,
nscoord aFontSize, // overrides value from aStyleFont
bool aUseUserFontSet)
nsRuleNode::GetMetricsFor(nsPresContext* aPresContext,
bool aIsVertical,
const nsStyleFont* aStyleFont,
nscoord aFontSize,
bool aUseUserFontSet)
{
nsFont font = aStyleFont->mFont;
font.size = aFontSize;
gfxFont::Orientation orientation = gfxFont::eHorizontal;
if (aStyleContext) {
WritingMode wm(aStyleContext);
if (wm.IsVertical() && !wm.IsSideways()) {
orientation = gfxFont::eVertical;
}
}
gfxFont::Orientation orientation
= aIsVertical ? gfxFont::eVertical : gfxFont::eHorizontal;
nsFontMetrics::Params params;
params.language = aStyleFont->mLanguage;
params.explicitLanguage = aStyleFont->mExplicitLanguage;
@ -395,6 +391,25 @@ GetMetricsFor(nsPresContext* aPresContext,
return aPresContext->DeviceContext()->GetMetricsFor(font, params);
}
/* static */
already_AddRefed<nsFontMetrics>
nsRuleNode::GetMetricsFor(nsPresContext* aPresContext,
nsStyleContext* aStyleContext,
const nsStyleFont* aStyleFont,
nscoord aFontSize, // overrides value from aStyleFont
bool aUseUserFontSet)
{
bool isVertical = false;
if (aStyleContext) {
WritingMode wm(aStyleContext);
if (wm.IsVertical() && !wm.IsSideways()) {
isVertical = true;
}
}
return nsRuleNode::GetMetricsFor(aPresContext, isVertical, aStyleFont,
aFontSize, aUseUserFontSet);
}
static nsSize CalcViewportUnitsScale(nsPresContext* aPresContext)
{

Просмотреть файл

@ -22,6 +22,7 @@
class nsCSSPropertyIDSet;
class nsCSSValue;
class nsFontMetrics;
class nsIStyleRule;
class nsStyleContext;
class nsStyleCoord;
@ -797,6 +798,18 @@ public:
bool aConvertListItem = false);
static void EnsureInlineDisplay(mozilla::StyleDisplay& display);
static already_AddRefed<nsFontMetrics> GetMetricsFor(nsPresContext* aPresContext,
bool aIsVertical,
const nsStyleFont* aStyleFont,
nscoord aFontSize,
bool aUseUserFontSet);
static already_AddRefed<nsFontMetrics> GetMetricsFor(nsPresContext* aPresContext,
nsStyleContext* aStyleContext,
const nsStyleFont* aStyleFont,
nscoord aFontSize,
bool aUseUserFontSet);
// Transition never returns null; on out of memory it'll just return |this|.
nsRuleNode* Transition(nsIStyleRule* aRule, mozilla::SheetType aLevel,
bool aIsImportantRule);