зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1341724 - Part 1: stylo: Refactor nsRuleNode::GetMetricsFor; r=heycam
MozReview-Commit-ID: G709Er7GXwe
This commit is contained in:
Родитель
633a064655
Коммит
0f5f58cb55
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче