Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f4f18a25 authored by Ben Wagner's avatar Ben Wagner Committed by Derek Sollenberger
Browse files

Remove use of SkFixed. Update code to use SkGlyph.fAdvance[XY] after...

Remove use of SkFixed. Update code to use SkGlyph.fAdvance[XY] after https://codereview.chromium.org/1737693006.

(cherry picked from commit 6db72075318e030562a1b61e47f125e91c1fb945)

Change-Id: Ib8bdf9df3efab39c7e7681cee3075e223a948b2d
parent 4cb7bb53
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -17,8 +17,6 @@
#ifndef ANDROID_HWUI_CACHED_GLYPH_INFO_H
#define ANDROID_HWUI_CACHED_GLYPH_INFO_H

#include <SkFixed.h>

namespace android {
namespace uirenderer {

@@ -41,14 +39,14 @@ struct CachedGlyphInfo {
    float mBitmapMaxV;
    // Minimize how much we call freetype
    uint32_t mGlyphIndex;
    uint32_t mAdvanceX;
    uint32_t mAdvanceY;
    float mAdvanceX;
    float mAdvanceY;
    // Values below contain a glyph's origin in the bitmap
    int32_t mBitmapLeft;
    int32_t mBitmapTop;
    // Auto-kerning
    SkFixed mLsbDelta;
    SkFixed mRsbDelta;
    // Auto-kerning; represents a 2.6 fixed-point value with range [-1, 1].
    int8_t mLsbDelta;
    int8_t mRsbDelta;
    CacheTexture* mCacheTexture;
};

+3 −3
Original line number Diff line number Diff line
@@ -304,7 +304,7 @@ void Font::render(const SkPaint* paint, const glyph_t* glyphs, int numGlyphs,
    }

    int glyphsCount = 0;
    SkFixed prevRsbDelta = 0;
    int prevRsbDelta = 0;

    float penX = 0.0f;

@@ -332,14 +332,14 @@ void Font::render(const SkPaint* paint, const glyph_t* glyphs, int numGlyphs,
        }

        CachedGlyphInfo* cachedGlyph = getCachedGlyph(paint, glyph);
        penX += SkFixedToFloat(AUTO_KERN(prevRsbDelta, cachedGlyph->mLsbDelta));
        penX += AUTO_KERN(prevRsbDelta, cachedGlyph->mLsbDelta);
        prevRsbDelta = cachedGlyph->mRsbDelta;

        if (cachedGlyph->mIsValid && cachedGlyph->mCacheTexture) {
            drawCachedGlyph(cachedGlyph, penX, hOffset, vOffset, measure, &position, &tangent);
        }

        penX += SkFixedToFloat(cachedGlyph->mAdvanceX);
        penX += cachedGlyph->mAdvanceX;

        glyphsCount++;
    }
+3 −1
Original line number Diff line number Diff line
@@ -44,6 +44,8 @@ typedef uint16_t glyph_t;
#define GET_METRICS(cache, glyph) cache->getGlyphIDMetrics(glyph)
#define IS_END_OF_STRING(glyph) false

#define AUTO_KERN(prev, next) (((next) - (prev) + 32) >> 6 << 16)
// prev, next are assumed to be signed x.6 fixed-point numbers with range
// [-1, 1]. Result is an integral float.
#define AUTO_KERN(prev, next) static_cast<float>(((next) - (prev) + 32) >> 6)

#endif // ANDROID_HWUI_FONT_UTIL_H