Loading core/jni/android/graphics/FontFamily.cpp +10 −9 Original line number Diff line number Diff line Loading @@ -53,9 +53,10 @@ static void FontFamily_unref(JNIEnv* env, jobject clazz, jlong familyPtr) { fontFamily->Unref(); } static jboolean addSkTypeface(minikin::FontFamily* family, SkTypeface* face, const void* fontData, size_t fontSize, int ttcIndex) { minikin::MinikinFont* minikinFont = new MinikinFontSkia(face, fontData, fontSize, ttcIndex); static jboolean addSkTypeface(minikin::FontFamily* family, sk_sp<SkTypeface> face, const void* fontData, size_t fontSize, int ttcIndex) { minikin::MinikinFont* minikinFont = new MinikinFontSkia(std::move(face), fontData, fontSize, ttcIndex); bool result = family->addFont(minikinFont); minikinFont->Unref(); return result; Loading Loading @@ -106,13 +107,13 @@ static jboolean FontFamily_addFont(JNIEnv* env, jobject clazz, jlong familyPtr, params.setCollectionIndex(ttcIndex); SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault()); SkTypeface* face = fm->createFromStream(fontData.release(), params); sk_sp<SkTypeface> face(fm->createFromStream(fontData.release(), params)); if (face == NULL) { ALOGE("addFont failed to create font"); return false; } minikin::FontFamily* fontFamily = reinterpret_cast<minikin::FontFamily*>(familyPtr); return addSkTypeface(fontFamily, face, fontPtr, (size_t)fontSize, ttcIndex); return addSkTypeface(fontFamily, std::move(face), fontPtr, (size_t)fontSize, ttcIndex); } static struct { Loading Loading @@ -172,14 +173,14 @@ static jboolean FontFamily_addFontWeightStyle(JNIEnv* env, jobject clazz, jlong params.setAxes(skiaAxes.get(), skiaAxesLength); SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault()); SkTypeface* face = fm->createFromStream(fontData.release(), params); sk_sp<SkTypeface> face(fm->createFromStream(fontData.release(), params)); if (face == NULL) { ALOGE("addFont failed to create font, invalid request"); return false; } minikin::FontFamily* fontFamily = reinterpret_cast<minikin::FontFamily*>(familyPtr); minikin::MinikinFont* minikinFont = new MinikinFontSkia(face, fontPtr, (size_t)fontSize, ttcIndex); new MinikinFontSkia(std::move(face), fontPtr, (size_t)fontSize, ttcIndex); fontFamily->addFont(minikinFont, minikin::FontStyle(weight / 100, isItalic)); minikinFont->Unref(); return true; Loading Loading @@ -216,13 +217,13 @@ static jboolean FontFamily_addFontFromAsset(JNIEnv* env, jobject, jlong familyPt std::unique_ptr<SkStreamAsset> fontData(new SkMemoryStream(std::move(data))); SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault()); SkTypeface* face = fm->createFromStream(fontData.release(), SkFontMgr::FontParameters()); sk_sp<SkTypeface> face(fm->createFromStream(fontData.release(), SkFontMgr::FontParameters())); if (face == NULL) { ALOGE("addFontFromAsset failed to create font %s", str.c_str()); return false; } minikin::FontFamily* fontFamily = reinterpret_cast<minikin::FontFamily*>(familyPtr); return addSkTypeface(fontFamily, face, buf, bufSize, /* ttcIndex */ 0); return addSkTypeface(fontFamily, std::move(face), buf, bufSize, /* ttcIndex */ 0); } /////////////////////////////////////////////////////////////////////////////// Loading core/jni/android/graphics/Paint.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ #include "SkPath.h" #include "SkRasterizer.h" #include "SkShader.h" #include "SkTypeface.h" #include "SkXfermode.h" #include "unicode/uloc.h" #include "unicode/ushape.h" Loading libs/hwui/hwui/MinikinSkia.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -22,16 +22,12 @@ namespace android { MinikinFontSkia::MinikinFontSkia(SkTypeface* typeface, const void* fontData, size_t fontSize, MinikinFontSkia::MinikinFontSkia(sk_sp<SkTypeface> typeface, const void* fontData, size_t fontSize, int ttcIndex) : minikin::MinikinFont(typeface->uniqueID()), mTypeface(typeface), mFontData(fontData), minikin::MinikinFont(typeface->uniqueID()), mTypeface(std::move(typeface)), mFontData(fontData), mFontSize(fontSize), mTtcIndex(ttcIndex) { } MinikinFontSkia::~MinikinFontSkia() { SkSafeUnref(mTypeface); } static void MinikinFontSkia_SetSkiaPaint(const minikin::MinikinFont* font, SkPaint* skPaint, const minikin::MinikinPaint& paint) { skPaint->setTextEncoding(SkPaint::kGlyphID_TextEncoding); Loading Loading @@ -87,6 +83,10 @@ const void* MinikinFontSkia::GetTable(uint32_t tag, size_t* size, } SkTypeface *MinikinFontSkia::GetSkTypeface() const { return mTypeface.get(); } sk_sp<SkTypeface> MinikinFontSkia::RefSkTypeface() const { return mTypeface; } Loading Loading @@ -121,7 +121,7 @@ void MinikinFontSkia::unpackPaintFlags(SkPaint* paint, uint32_t paintFlags) { void MinikinFontSkia::populateSkPaint(SkPaint* paint, const MinikinFont* font, minikin::FontFakery fakery) { paint->setTypeface(reinterpret_cast<const MinikinFontSkia*>(font)->GetSkTypeface()); paint->setTypeface(reinterpret_cast<const MinikinFontSkia*>(font)->RefSkTypeface()); paint->setFakeBoldText(paint->isFakeBoldText() || fakery.isFakeBold()); if (fakery.isFakeItalic()) { paint->setTextSkewX(paint->getTextSkewX() - 0.25f); Loading libs/hwui/hwui/MinikinSkia.h +4 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <cutils/compiler.h> #include <minikin/MinikinFont.h> #include <SkRefCnt.h> class SkPaint; class SkTypeface; Loading @@ -27,12 +28,9 @@ namespace android { class ANDROID_API MinikinFontSkia : public minikin::MinikinFont { public: // Note: this takes ownership of the reference (will unref on dtor) explicit MinikinFontSkia(SkTypeface *typeface, const void* fontData, size_t fontSize, explicit MinikinFontSkia(sk_sp<SkTypeface> typeface, const void* fontData, size_t fontSize, int ttcIndex); ~MinikinFontSkia(); float GetHorizontalAdvance(uint32_t glyph_id, const minikin::MinikinPaint &paint) const; Loading @@ -42,6 +40,7 @@ public: const void* GetTable(uint32_t tag, size_t* size, minikin::MinikinDestroyFunc* destroy); SkTypeface* GetSkTypeface() const; sk_sp<SkTypeface> RefSkTypeface() const; // Access to underlying raw font bytes const void* GetFontData() const; Loading @@ -55,7 +54,7 @@ public: static void populateSkPaint(SkPaint* paint, const minikin::MinikinFont* font, minikin::FontFakery fakery); private: SkTypeface* mTypeface; sk_sp<SkTypeface> mTypeface; // A raw pointer to the font data - it should be owned by some other object with // lifetime at least as long as this object. Loading libs/hwui/hwui/Typeface.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -64,12 +64,12 @@ static minikin::FontCollection *makeFontCollection() { for (size_t i = 0; i < sizeof(fns)/sizeof(fns[0]); i++) { const char *fn = fns[i]; ALOGD("makeFontCollection adding %s", fn); SkTypeface *skFace = SkTypeface::CreateFromFile(fn); sk_sp<SkTypeface> skFace = SkTypeface::MakeFromFile(fn); if (skFace != NULL) { // TODO: might be a nice optimization to get access to the underlying font // data, but would require us opening the file ourselves and passing that // to the appropriate Create method of SkTypeface. minikin::MinikinFont *font = new MinikinFontSkia(skFace, NULL, 0, 0); minikin::MinikinFont *font = new MinikinFontSkia(std::move(skFace), NULL, 0, 0); family->addFont(font); font->Unref(); } else { Loading Loading
core/jni/android/graphics/FontFamily.cpp +10 −9 Original line number Diff line number Diff line Loading @@ -53,9 +53,10 @@ static void FontFamily_unref(JNIEnv* env, jobject clazz, jlong familyPtr) { fontFamily->Unref(); } static jboolean addSkTypeface(minikin::FontFamily* family, SkTypeface* face, const void* fontData, size_t fontSize, int ttcIndex) { minikin::MinikinFont* minikinFont = new MinikinFontSkia(face, fontData, fontSize, ttcIndex); static jboolean addSkTypeface(minikin::FontFamily* family, sk_sp<SkTypeface> face, const void* fontData, size_t fontSize, int ttcIndex) { minikin::MinikinFont* minikinFont = new MinikinFontSkia(std::move(face), fontData, fontSize, ttcIndex); bool result = family->addFont(minikinFont); minikinFont->Unref(); return result; Loading Loading @@ -106,13 +107,13 @@ static jboolean FontFamily_addFont(JNIEnv* env, jobject clazz, jlong familyPtr, params.setCollectionIndex(ttcIndex); SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault()); SkTypeface* face = fm->createFromStream(fontData.release(), params); sk_sp<SkTypeface> face(fm->createFromStream(fontData.release(), params)); if (face == NULL) { ALOGE("addFont failed to create font"); return false; } minikin::FontFamily* fontFamily = reinterpret_cast<minikin::FontFamily*>(familyPtr); return addSkTypeface(fontFamily, face, fontPtr, (size_t)fontSize, ttcIndex); return addSkTypeface(fontFamily, std::move(face), fontPtr, (size_t)fontSize, ttcIndex); } static struct { Loading Loading @@ -172,14 +173,14 @@ static jboolean FontFamily_addFontWeightStyle(JNIEnv* env, jobject clazz, jlong params.setAxes(skiaAxes.get(), skiaAxesLength); SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault()); SkTypeface* face = fm->createFromStream(fontData.release(), params); sk_sp<SkTypeface> face(fm->createFromStream(fontData.release(), params)); if (face == NULL) { ALOGE("addFont failed to create font, invalid request"); return false; } minikin::FontFamily* fontFamily = reinterpret_cast<minikin::FontFamily*>(familyPtr); minikin::MinikinFont* minikinFont = new MinikinFontSkia(face, fontPtr, (size_t)fontSize, ttcIndex); new MinikinFontSkia(std::move(face), fontPtr, (size_t)fontSize, ttcIndex); fontFamily->addFont(minikinFont, minikin::FontStyle(weight / 100, isItalic)); minikinFont->Unref(); return true; Loading Loading @@ -216,13 +217,13 @@ static jboolean FontFamily_addFontFromAsset(JNIEnv* env, jobject, jlong familyPt std::unique_ptr<SkStreamAsset> fontData(new SkMemoryStream(std::move(data))); SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault()); SkTypeface* face = fm->createFromStream(fontData.release(), SkFontMgr::FontParameters()); sk_sp<SkTypeface> face(fm->createFromStream(fontData.release(), SkFontMgr::FontParameters())); if (face == NULL) { ALOGE("addFontFromAsset failed to create font %s", str.c_str()); return false; } minikin::FontFamily* fontFamily = reinterpret_cast<minikin::FontFamily*>(familyPtr); return addSkTypeface(fontFamily, face, buf, bufSize, /* ttcIndex */ 0); return addSkTypeface(fontFamily, std::move(face), buf, bufSize, /* ttcIndex */ 0); } /////////////////////////////////////////////////////////////////////////////// Loading
core/jni/android/graphics/Paint.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ #include "SkPath.h" #include "SkRasterizer.h" #include "SkShader.h" #include "SkTypeface.h" #include "SkXfermode.h" #include "unicode/uloc.h" #include "unicode/ushape.h" Loading
libs/hwui/hwui/MinikinSkia.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -22,16 +22,12 @@ namespace android { MinikinFontSkia::MinikinFontSkia(SkTypeface* typeface, const void* fontData, size_t fontSize, MinikinFontSkia::MinikinFontSkia(sk_sp<SkTypeface> typeface, const void* fontData, size_t fontSize, int ttcIndex) : minikin::MinikinFont(typeface->uniqueID()), mTypeface(typeface), mFontData(fontData), minikin::MinikinFont(typeface->uniqueID()), mTypeface(std::move(typeface)), mFontData(fontData), mFontSize(fontSize), mTtcIndex(ttcIndex) { } MinikinFontSkia::~MinikinFontSkia() { SkSafeUnref(mTypeface); } static void MinikinFontSkia_SetSkiaPaint(const minikin::MinikinFont* font, SkPaint* skPaint, const minikin::MinikinPaint& paint) { skPaint->setTextEncoding(SkPaint::kGlyphID_TextEncoding); Loading Loading @@ -87,6 +83,10 @@ const void* MinikinFontSkia::GetTable(uint32_t tag, size_t* size, } SkTypeface *MinikinFontSkia::GetSkTypeface() const { return mTypeface.get(); } sk_sp<SkTypeface> MinikinFontSkia::RefSkTypeface() const { return mTypeface; } Loading Loading @@ -121,7 +121,7 @@ void MinikinFontSkia::unpackPaintFlags(SkPaint* paint, uint32_t paintFlags) { void MinikinFontSkia::populateSkPaint(SkPaint* paint, const MinikinFont* font, minikin::FontFakery fakery) { paint->setTypeface(reinterpret_cast<const MinikinFontSkia*>(font)->GetSkTypeface()); paint->setTypeface(reinterpret_cast<const MinikinFontSkia*>(font)->RefSkTypeface()); paint->setFakeBoldText(paint->isFakeBoldText() || fakery.isFakeBold()); if (fakery.isFakeItalic()) { paint->setTextSkewX(paint->getTextSkewX() - 0.25f); Loading
libs/hwui/hwui/MinikinSkia.h +4 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <cutils/compiler.h> #include <minikin/MinikinFont.h> #include <SkRefCnt.h> class SkPaint; class SkTypeface; Loading @@ -27,12 +28,9 @@ namespace android { class ANDROID_API MinikinFontSkia : public minikin::MinikinFont { public: // Note: this takes ownership of the reference (will unref on dtor) explicit MinikinFontSkia(SkTypeface *typeface, const void* fontData, size_t fontSize, explicit MinikinFontSkia(sk_sp<SkTypeface> typeface, const void* fontData, size_t fontSize, int ttcIndex); ~MinikinFontSkia(); float GetHorizontalAdvance(uint32_t glyph_id, const minikin::MinikinPaint &paint) const; Loading @@ -42,6 +40,7 @@ public: const void* GetTable(uint32_t tag, size_t* size, minikin::MinikinDestroyFunc* destroy); SkTypeface* GetSkTypeface() const; sk_sp<SkTypeface> RefSkTypeface() const; // Access to underlying raw font bytes const void* GetFontData() const; Loading @@ -55,7 +54,7 @@ public: static void populateSkPaint(SkPaint* paint, const minikin::MinikinFont* font, minikin::FontFakery fakery); private: SkTypeface* mTypeface; sk_sp<SkTypeface> mTypeface; // A raw pointer to the font data - it should be owned by some other object with // lifetime at least as long as this object. Loading
libs/hwui/hwui/Typeface.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -64,12 +64,12 @@ static minikin::FontCollection *makeFontCollection() { for (size_t i = 0; i < sizeof(fns)/sizeof(fns[0]); i++) { const char *fn = fns[i]; ALOGD("makeFontCollection adding %s", fn); SkTypeface *skFace = SkTypeface::CreateFromFile(fn); sk_sp<SkTypeface> skFace = SkTypeface::MakeFromFile(fn); if (skFace != NULL) { // TODO: might be a nice optimization to get access to the underlying font // data, but would require us opening the file ourselves and passing that // to the appropriate Create method of SkTypeface. minikin::MinikinFont *font = new MinikinFontSkia(skFace, NULL, 0, 0); minikin::MinikinFont *font = new MinikinFontSkia(std::move(skFace), NULL, 0, 0); family->addFont(font); font->Unref(); } else { Loading