Commit 6f235f08 authored by Daniel Bratell's avatar Daniel Bratell Committed by Commit Bot

Unduplicate SkiaScalarToHarfBuzzPosition

There were two implementation of SkiaScalarToHarfBuzzPosition and
in jumbo builds they collided. This patch merges them.

Bug: 
Change-Id: Ibea7aeffbfdf77eb3fd088949f912eb41e56c462
Reviewed-on: https://chromium-review.googlesource.com/570428
Commit-Queue: Emil A Eklund <eae@chromium.org>
Reviewed-by: default avatarEmil A Eklund <eae@chromium.org>
Cr-Commit-Position: refs/heads/master@{#486856}
parent 661ee909
......@@ -96,12 +96,6 @@ HarfBuzzFace::~HarfBuzzFace() {
FontGlobalContext::GetHarfBuzzFontCache().erase(unique_id_);
}
static hb_position_t SkiaScalarToHarfBuzzPosition(SkScalar value) {
// We treat HarfBuzz hb_position_t as 16.16 fixed-point.
static constexpr int kHbPosition1 = 1 << 16;
return clampTo<int>(value * kHbPosition1);
}
static hb_bool_t HarfBuzzGetGlyph(hb_font_t* hb_font,
void* font_data,
hb_codepoint_t unicode,
......@@ -149,8 +143,8 @@ static hb_bool_t HarfBuzzGetGlyphVerticalOrigin(hb_font_t* hb_font,
Glyph the_glyph = glyph;
vertical_data->GetVerticalTranslationsForGlyphs(
hb_font_data->simple_font_data_, &the_glyph, 1, result);
*x = SkiaScalarToHarfBuzzPosition(-result[0]);
*y = SkiaScalarToHarfBuzzPosition(-result[1]);
*x = SkiaTextMetrics::SkiaScalarToHarfBuzzPosition(-result[0]);
*y = SkiaTextMetrics::SkiaScalarToHarfBuzzPosition(-result[1]);
return true;
}
......@@ -163,13 +157,14 @@ static hb_position_t HarfBuzzGetGlyphVerticalAdvance(hb_font_t* hb_font,
const OpenTypeVerticalData* vertical_data =
hb_font_data->simple_font_data_->VerticalData();
if (!vertical_data)
return SkiaScalarToHarfBuzzPosition(
return SkiaTextMetrics::SkiaScalarToHarfBuzzPosition(
hb_font_data->simple_font_data_->GetFontMetrics().Height());
Glyph the_glyph = glyph;
float advance_height =
-vertical_data->AdvanceHeight(hb_font_data->simple_font_data_, the_glyph);
return SkiaScalarToHarfBuzzPosition(SkFloatToScalar(advance_height));
return SkiaTextMetrics::SkiaScalarToHarfBuzzPosition(
SkFloatToScalar(advance_height));
}
static hb_position_t HarfBuzzGetGlyphHorizontalKerning(
......@@ -194,8 +189,8 @@ static hb_position_t HarfBuzzGetGlyphHorizontalKerning(
if (typeface->getKerningPairAdjustments(glyphs, 2, kerning_adjustments)) {
SkScalar upm = SkIntToScalar(typeface->getUnitsPerEm());
SkScalar size = hb_font_data->paint_.getTextSize();
return SkiaScalarToHarfBuzzPosition(SkIntToScalar(kerning_adjustments[0]) *
size / upm);
return SkiaTextMetrics::SkiaScalarToHarfBuzzPosition(
SkIntToScalar(kerning_adjustments[0]) * size / upm);
}
return 0;
......@@ -343,7 +338,8 @@ hb_font_t* HarfBuzzFace::GetScaledFont(
harf_buzz_font_data_->UpdateSimpleFontData(platform_data_);
DCHECK(harf_buzz_font_data_->simple_font_data_);
int scale = SkiaScalarToHarfBuzzPosition(platform_data_->size());
int scale =
SkiaTextMetrics::SkiaScalarToHarfBuzzPosition(platform_data_->size());
hb_font_set_scale(unscaled_font_, scale, scale);
SkTypeface* typeface = harf_buzz_font_data_->paint_.getTypeface();
......
......@@ -11,12 +11,6 @@
namespace blink {
static hb_position_t SkiaScalarToHarfBuzzPosition(SkScalar value) {
// We treat HarfBuzz hb_position_t as 16.16 fixed-point.
static const int kHbPosition1 = 1 << 16;
return clampTo<int>(value * kHbPosition1);
}
SkiaTextMetrics::SkiaTextMetrics(const SkPaint* paint) : paint_(paint) {
CHECK(paint_->getTextEncoding() == SkPaint::kGlyphID_TextEncoding);
}
......@@ -88,4 +82,10 @@ float SkiaTextMetrics::GetSkiaWidthForGlyph(Glyph glyph) {
return SkScalarToFloat(sk_width);
}
hb_position_t SkiaTextMetrics::SkiaScalarToHarfBuzzPosition(SkScalar value) {
// We treat HarfBuzz hb_position_t as 16.16 fixed-point.
static const int kHbPosition1 = 1 << 16;
return clampTo<int>(value * kHbPosition1);
}
} // namespace blink
......@@ -22,6 +22,8 @@ class SkiaTextMetrics final {
void GetSkiaBoundsForGlyph(Glyph, SkRect* bounds);
float GetSkiaWidthForGlyph(Glyph);
static hb_position_t SkiaScalarToHarfBuzzPosition(SkScalar value);
private:
const SkPaint* paint_;
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment