diff options
author | Romain Guy <romainguy@google.com> | 2013-06-18 12:59:25 -0700 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2013-06-18 13:02:03 -0700 |
commit | 2d5945e88731787babce1061f44cd54f02eeefc5 (patch) | |
tree | ea2e4a98ea66e2caa6b585306017e3ca30c7f032 | |
parent | e93482f5eac3df581d57e64c2a771a96aa868585 (diff) | |
download | frameworks_base-2d5945e88731787babce1061f44cd54f02eeefc5.zip frameworks_base-2d5945e88731787babce1061f44cd54f02eeefc5.tar.gz frameworks_base-2d5945e88731787babce1061f44cd54f02eeefc5.tar.bz2 |
Take hinting into account when caching fonts
Bug #9464403
Change-Id: I26a5f0c17eb27d096717b444d3e18ad1d2b5a43c
-rw-r--r-- | libs/hwui/font/Font.cpp | 5 | ||||
-rw-r--r-- | libs/hwui/font/Font.h | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/libs/hwui/font/Font.cpp b/libs/hwui/font/Font.cpp index 011cfc1..18983d8 100644 --- a/libs/hwui/font/Font.cpp +++ b/libs/hwui/font/Font.cpp @@ -55,6 +55,7 @@ Font::FontDescription::FontDescription(const SkPaint* paint, const mat4& matrix) mStyle = paint->getStyle(); mStrokeWidth = paint->getStrokeWidth(); mAntiAliasing = paint->isAntiAlias(); + mHinting = paint->getHinting(); mLookupTransform.reset(); mLookupTransform[SkMatrix::kMScaleX] = roundf(fmaxf(1.0f, matrix[mat4::kScaleX])); mLookupTransform[SkMatrix::kMScaleY] = roundf(fmaxf(1.0f, matrix[mat4::kScaleY])); @@ -80,6 +81,7 @@ hash_t Font::FontDescription::hash() const { hash = JenkinsHashMix(hash, android::hash_type(mStyle)); hash = JenkinsHashMix(hash, android::hash_type(mStrokeWidth)); hash = JenkinsHashMix(hash, int(mAntiAliasing)); + hash = JenkinsHashMix(hash, android::hash_type(mHinting)); hash = JenkinsHashMix(hash, android::hash_type(mLookupTransform[SkMatrix::kMScaleX])); hash = JenkinsHashMix(hash, android::hash_type(mLookupTransform[SkMatrix::kMScaleY])); return JenkinsHashWhiten(hash); @@ -111,6 +113,9 @@ int Font::FontDescription::compare(const Font::FontDescription& lhs, deltaInt = int(lhs.mAntiAliasing) - int(rhs.mAntiAliasing); if (deltaInt != 0) return deltaInt; + deltaInt = int(lhs.mHinting) - int(rhs.mHinting); + if (deltaInt != 0) return deltaInt; + if (lhs.mLookupTransform[SkMatrix::kMScaleX] < rhs.mLookupTransform[SkMatrix::kMScaleX]) return -1; if (lhs.mLookupTransform[SkMatrix::kMScaleX] > diff --git a/libs/hwui/font/Font.h b/libs/hwui/font/Font.h index 52cca1c..9e7ec2d 100644 --- a/libs/hwui/font/Font.h +++ b/libs/hwui/font/Font.h @@ -69,6 +69,7 @@ public: uint8_t mStyle; float mStrokeWidth; bool mAntiAliasing; + uint8_t mHinting; SkMatrix mLookupTransform; SkMatrix mInverseLookupTransform; }; |