Loading core/jni/Android.mk +4 −4 Original line number Diff line number Diff line Loading @@ -17,6 +17,10 @@ endif LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES # When built as part of the system image we can enable certian non-NDK compliant # Skia optimizations. LOCAL_CFLAGS += -DSK_BUILD_FOR_ANDROID_FRAMEWORK LOCAL_SRC_FILES:= \ AndroidRuntime.cpp \ Time.cpp \ Loading Loading @@ -159,10 +163,6 @@ LOCAL_C_INCLUDES += \ $(call include-path-for, libhardware)/hardware \ $(call include-path-for, libhardware_legacy)/hardware_legacy \ $(TOP)/frameworks/av/include \ external/skia/include/core \ external/skia/include/effects \ external/skia/include/images \ external/skia/include/ports \ external/skia/src/core \ external/skia/src/images \ external/skia/include/utils \ Loading core/jni/android/graphics/Paint.cpp +8 −1 Original line number Diff line number Diff line Loading @@ -58,6 +58,10 @@ static JMetricsID gFontMetricsInt_fieldID; static void defaultSettingsForAndroid(SkPaint* paint) { // GlyphID encoding is required because we are using Harfbuzz shaping paint->setTextEncoding(SkPaint::kGlyphID_TextEncoding); SkPaintOptionsAndroid paintOpts = paint->getPaintOptionsAndroid(); paintOpts.setUseFontFallbacks(true); paint->setPaintOptionsAndroid(paintOpts); } class SkPaintGlue { Loading Loading @@ -300,7 +304,10 @@ public: ScopedUtfChars localeChars(env, locale); char langTag[ULOC_FULLNAME_CAPACITY]; toLanguageTag(langTag, ULOC_FULLNAME_CAPACITY, localeChars.c_str()); obj->setLanguage(SkLanguage(langTag)); SkPaintOptionsAndroid paintOpts = obj->getPaintOptionsAndroid(); paintOpts.setLanguage(langTag); obj->setPaintOptionsAndroid(paintOpts); } static jfloat getTextSize(JNIEnv* env, jobject paint) { Loading core/jni/android/graphics/TextLayoutCache.cpp +8 −13 Original line number Diff line number Diff line Loading @@ -218,7 +218,8 @@ void TextLayoutCache::dumpCacheStats() { */ TextLayoutCacheKey::TextLayoutCacheKey(): start(0), count(0), contextCount(0), dirFlags(0), typeface(NULL), textSize(0), textSkewX(0), textScaleX(0), flags(0), hinting(SkPaint::kNo_Hinting), variant(SkPaint::kDefault_Variant), language() { hinting(SkPaint::kNo_Hinting) { paintOpts.setUseFontFallbacks(true); } TextLayoutCacheKey::TextLayoutCacheKey(const SkPaint* paint, const UChar* text, Loading @@ -232,8 +233,7 @@ TextLayoutCacheKey::TextLayoutCacheKey(const SkPaint* paint, const UChar* text, textScaleX = paint->getTextScaleX(); flags = paint->getFlags(); hinting = paint->getHinting(); variant = paint->getFontVariant(); language = paint->getLanguage(); paintOpts = paint->getPaintOptionsAndroid(); } TextLayoutCacheKey::TextLayoutCacheKey(const TextLayoutCacheKey& other) : Loading @@ -248,8 +248,7 @@ TextLayoutCacheKey::TextLayoutCacheKey(const TextLayoutCacheKey& other) : textScaleX(other.textScaleX), flags(other.flags), hinting(other.hinting), variant(other.variant), language(other.language) { paintOpts(other.paintOpts) { } int TextLayoutCacheKey::compare(const TextLayoutCacheKey& lhs, const TextLayoutCacheKey& rhs) { Loading Loading @@ -283,11 +282,8 @@ int TextLayoutCacheKey::compare(const TextLayoutCacheKey& lhs, const TextLayoutC deltaInt = lhs.dirFlags - rhs.dirFlags; if (deltaInt) return (deltaInt); deltaInt = lhs.variant - rhs.variant; if (deltaInt) return (deltaInt); if (lhs.language < rhs.language) return -1; if (lhs.language > rhs.language) return +1; if (lhs.paintOpts != rhs.paintOpts) return memcmp(&lhs.paintOpts, &rhs.paintOpts, sizeof(SkPaintOptionsAndroid)); return memcmp(lhs.getText(), rhs.getText(), lhs.contextCount * sizeof(UChar)); } Loading @@ -306,7 +302,7 @@ hash_t TextLayoutCacheKey::hash() const { hash = JenkinsHashMix(hash, hash_type(textScaleX)); hash = JenkinsHashMix(hash, flags); hash = JenkinsHashMix(hash, hinting); hash = JenkinsHashMix(hash, variant); hash = JenkinsHashMix(hash, paintOpts.getFontVariant()); // Note: leaving out language is not problematic, as equality comparisons // are still valid - the only bad thing that could happen is collisions. hash = JenkinsHashMixShorts(hash, getText(), contextCount); Loading Loading @@ -698,8 +694,7 @@ void TextLayoutShaper::computeRunValues(const SkPaint* paint, const UChar* conte mShapingPaint.setTextScaleX(paint->getTextScaleX()); mShapingPaint.setFlags(paint->getFlags()); mShapingPaint.setHinting(paint->getHinting()); mShapingPaint.setFontVariant(paint->getFontVariant()); mShapingPaint.setLanguage(paint->getLanguage()); mShapingPaint.setPaintOptionsAndroid(paint->getPaintOptionsAndroid()); // Split the BiDi run into Script runs. Harfbuzz will populate the pos, length and script // into the shaperItem Loading core/jni/android/graphics/TextLayoutCache.h +1 −3 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ #include <utils/Singleton.h> #include <SkAutoKern.h> #include <SkLanguage.h> #include <SkPaint.h> #include <SkTemplates.h> #include <SkTypeface.h> Loading Loading @@ -104,8 +103,7 @@ private: SkScalar textScaleX; uint32_t flags; SkPaint::Hinting hinting; SkPaint::FontVariant variant; SkLanguage language; SkPaintOptionsAndroid paintOpts; }; // TextLayoutCacheKey Loading Loading
core/jni/Android.mk +4 −4 Original line number Diff line number Diff line Loading @@ -17,6 +17,10 @@ endif LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES # When built as part of the system image we can enable certian non-NDK compliant # Skia optimizations. LOCAL_CFLAGS += -DSK_BUILD_FOR_ANDROID_FRAMEWORK LOCAL_SRC_FILES:= \ AndroidRuntime.cpp \ Time.cpp \ Loading Loading @@ -159,10 +163,6 @@ LOCAL_C_INCLUDES += \ $(call include-path-for, libhardware)/hardware \ $(call include-path-for, libhardware_legacy)/hardware_legacy \ $(TOP)/frameworks/av/include \ external/skia/include/core \ external/skia/include/effects \ external/skia/include/images \ external/skia/include/ports \ external/skia/src/core \ external/skia/src/images \ external/skia/include/utils \ Loading
core/jni/android/graphics/Paint.cpp +8 −1 Original line number Diff line number Diff line Loading @@ -58,6 +58,10 @@ static JMetricsID gFontMetricsInt_fieldID; static void defaultSettingsForAndroid(SkPaint* paint) { // GlyphID encoding is required because we are using Harfbuzz shaping paint->setTextEncoding(SkPaint::kGlyphID_TextEncoding); SkPaintOptionsAndroid paintOpts = paint->getPaintOptionsAndroid(); paintOpts.setUseFontFallbacks(true); paint->setPaintOptionsAndroid(paintOpts); } class SkPaintGlue { Loading Loading @@ -300,7 +304,10 @@ public: ScopedUtfChars localeChars(env, locale); char langTag[ULOC_FULLNAME_CAPACITY]; toLanguageTag(langTag, ULOC_FULLNAME_CAPACITY, localeChars.c_str()); obj->setLanguage(SkLanguage(langTag)); SkPaintOptionsAndroid paintOpts = obj->getPaintOptionsAndroid(); paintOpts.setLanguage(langTag); obj->setPaintOptionsAndroid(paintOpts); } static jfloat getTextSize(JNIEnv* env, jobject paint) { Loading
core/jni/android/graphics/TextLayoutCache.cpp +8 −13 Original line number Diff line number Diff line Loading @@ -218,7 +218,8 @@ void TextLayoutCache::dumpCacheStats() { */ TextLayoutCacheKey::TextLayoutCacheKey(): start(0), count(0), contextCount(0), dirFlags(0), typeface(NULL), textSize(0), textSkewX(0), textScaleX(0), flags(0), hinting(SkPaint::kNo_Hinting), variant(SkPaint::kDefault_Variant), language() { hinting(SkPaint::kNo_Hinting) { paintOpts.setUseFontFallbacks(true); } TextLayoutCacheKey::TextLayoutCacheKey(const SkPaint* paint, const UChar* text, Loading @@ -232,8 +233,7 @@ TextLayoutCacheKey::TextLayoutCacheKey(const SkPaint* paint, const UChar* text, textScaleX = paint->getTextScaleX(); flags = paint->getFlags(); hinting = paint->getHinting(); variant = paint->getFontVariant(); language = paint->getLanguage(); paintOpts = paint->getPaintOptionsAndroid(); } TextLayoutCacheKey::TextLayoutCacheKey(const TextLayoutCacheKey& other) : Loading @@ -248,8 +248,7 @@ TextLayoutCacheKey::TextLayoutCacheKey(const TextLayoutCacheKey& other) : textScaleX(other.textScaleX), flags(other.flags), hinting(other.hinting), variant(other.variant), language(other.language) { paintOpts(other.paintOpts) { } int TextLayoutCacheKey::compare(const TextLayoutCacheKey& lhs, const TextLayoutCacheKey& rhs) { Loading Loading @@ -283,11 +282,8 @@ int TextLayoutCacheKey::compare(const TextLayoutCacheKey& lhs, const TextLayoutC deltaInt = lhs.dirFlags - rhs.dirFlags; if (deltaInt) return (deltaInt); deltaInt = lhs.variant - rhs.variant; if (deltaInt) return (deltaInt); if (lhs.language < rhs.language) return -1; if (lhs.language > rhs.language) return +1; if (lhs.paintOpts != rhs.paintOpts) return memcmp(&lhs.paintOpts, &rhs.paintOpts, sizeof(SkPaintOptionsAndroid)); return memcmp(lhs.getText(), rhs.getText(), lhs.contextCount * sizeof(UChar)); } Loading @@ -306,7 +302,7 @@ hash_t TextLayoutCacheKey::hash() const { hash = JenkinsHashMix(hash, hash_type(textScaleX)); hash = JenkinsHashMix(hash, flags); hash = JenkinsHashMix(hash, hinting); hash = JenkinsHashMix(hash, variant); hash = JenkinsHashMix(hash, paintOpts.getFontVariant()); // Note: leaving out language is not problematic, as equality comparisons // are still valid - the only bad thing that could happen is collisions. hash = JenkinsHashMixShorts(hash, getText(), contextCount); Loading Loading @@ -698,8 +694,7 @@ void TextLayoutShaper::computeRunValues(const SkPaint* paint, const UChar* conte mShapingPaint.setTextScaleX(paint->getTextScaleX()); mShapingPaint.setFlags(paint->getFlags()); mShapingPaint.setHinting(paint->getHinting()); mShapingPaint.setFontVariant(paint->getFontVariant()); mShapingPaint.setLanguage(paint->getLanguage()); mShapingPaint.setPaintOptionsAndroid(paint->getPaintOptionsAndroid()); // Split the BiDi run into Script runs. Harfbuzz will populate the pos, length and script // into the shaperItem Loading
core/jni/android/graphics/TextLayoutCache.h +1 −3 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ #include <utils/Singleton.h> #include <SkAutoKern.h> #include <SkLanguage.h> #include <SkPaint.h> #include <SkTemplates.h> #include <SkTypeface.h> Loading Loading @@ -104,8 +103,7 @@ private: SkScalar textScaleX; uint32_t flags; SkPaint::Hinting hinting; SkPaint::FontVariant variant; SkLanguage language; SkPaintOptionsAndroid paintOpts; }; // TextLayoutCacheKey Loading