Loading core/jni/android/graphics/MinikinUtils.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,15 @@ void MinikinUtils::doLayout(Layout* layout, const Paint* paint, int bidiFlags, layout->doLayout(buf, start, count, bufSize, bidiFlags, minikinStyle, minikinPaint); } float MinikinUtils::measureText(const Paint* paint, int bidiFlags, TypefaceImpl* typeface, const uint16_t* buf, size_t start, size_t count, size_t bufSize, float *advances) { FontCollection *font; MinikinPaint minikinPaint; FontStyle minikinStyle = prepareMinikinPaint(&minikinPaint, &font, paint, typeface); return Layout::measureText(buf, start, count, bufSize, bidiFlags, minikinStyle, minikinPaint, font, advances); } bool MinikinUtils::hasVariationSelector(TypefaceImpl* typeface, uint32_t codepoint, uint32_t vs) { const TypefaceImpl* resolvedFace = TypefaceImpl_resolveDefault(typeface); return resolvedFace->fFontCollection->hasVariationSelector(codepoint, vs); Loading core/jni/android/graphics/MinikinUtils.h +3 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,9 @@ public: TypefaceImpl* typeface, const uint16_t* buf, size_t start, size_t count, size_t bufSize); static float measureText(const Paint* paint, int bidiFlags, TypefaceImpl* typeface, const uint16_t* buf, size_t start, size_t count, size_t bufSize, float *advances); static bool hasVariationSelector(TypefaceImpl* typeface, uint32_t codepoint, uint32_t vs); static float xOffsetForTextAlign(Paint* paint, const Layout& layout); Loading core/jni/android/graphics/Paint.cpp +8 −8 Original line number Diff line number Diff line Loading @@ -493,16 +493,16 @@ namespace PaintGlue { return 0; } } Layout layout; MinikinUtils::doLayout(&layout, paint, bidiFlags, typeface, text, start, count, contextCount); if (advances != NULL) { std::unique_ptr<jfloat> advancesArray(new jfloat[count]); layout.getAdvances(advancesArray.get()); std::unique_ptr<jfloat[]> advancesArray; if (advances) { advancesArray.reset(new jfloat[count]); } const float advance = MinikinUtils::measureText(paint, bidiFlags, typeface, text, start, count, contextCount, advancesArray.get()); if (advances) { env->SetFloatArrayRegion(advances, advancesIndex, count, advancesArray.get()); } return layout.getAdvance(); return advance; } static jfloat getTextAdvances___CIIIII_FI(JNIEnv* env, jobject clazz, jlong paintHandle, Loading Loading
core/jni/android/graphics/MinikinUtils.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,15 @@ void MinikinUtils::doLayout(Layout* layout, const Paint* paint, int bidiFlags, layout->doLayout(buf, start, count, bufSize, bidiFlags, minikinStyle, minikinPaint); } float MinikinUtils::measureText(const Paint* paint, int bidiFlags, TypefaceImpl* typeface, const uint16_t* buf, size_t start, size_t count, size_t bufSize, float *advances) { FontCollection *font; MinikinPaint minikinPaint; FontStyle minikinStyle = prepareMinikinPaint(&minikinPaint, &font, paint, typeface); return Layout::measureText(buf, start, count, bufSize, bidiFlags, minikinStyle, minikinPaint, font, advances); } bool MinikinUtils::hasVariationSelector(TypefaceImpl* typeface, uint32_t codepoint, uint32_t vs) { const TypefaceImpl* resolvedFace = TypefaceImpl_resolveDefault(typeface); return resolvedFace->fFontCollection->hasVariationSelector(codepoint, vs); Loading
core/jni/android/graphics/MinikinUtils.h +3 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,9 @@ public: TypefaceImpl* typeface, const uint16_t* buf, size_t start, size_t count, size_t bufSize); static float measureText(const Paint* paint, int bidiFlags, TypefaceImpl* typeface, const uint16_t* buf, size_t start, size_t count, size_t bufSize, float *advances); static bool hasVariationSelector(TypefaceImpl* typeface, uint32_t codepoint, uint32_t vs); static float xOffsetForTextAlign(Paint* paint, const Layout& layout); Loading
core/jni/android/graphics/Paint.cpp +8 −8 Original line number Diff line number Diff line Loading @@ -493,16 +493,16 @@ namespace PaintGlue { return 0; } } Layout layout; MinikinUtils::doLayout(&layout, paint, bidiFlags, typeface, text, start, count, contextCount); if (advances != NULL) { std::unique_ptr<jfloat> advancesArray(new jfloat[count]); layout.getAdvances(advancesArray.get()); std::unique_ptr<jfloat[]> advancesArray; if (advances) { advancesArray.reset(new jfloat[count]); } const float advance = MinikinUtils::measureText(paint, bidiFlags, typeface, text, start, count, contextCount, advancesArray.get()); if (advances) { env->SetFloatArrayRegion(advances, advancesIndex, count, advancesArray.get()); } return layout.getAdvance(); return advance; } static jfloat getTextAdvances___CIIIII_FI(JNIEnv* env, jobject clazz, jlong paintHandle, Loading