Loading core/jni/android/graphics/Paint.cpp +38 −38 Original line number Diff line number Diff line Loading @@ -383,7 +383,8 @@ public: return descent - ascent + leading; } static jfloat measureText_CII(JNIEnv* env, jobject jpaint, jcharArray text, int index, int count) { static jfloat measureText_CIII(JNIEnv* env, jobject jpaint, jcharArray text, int index, int count, jint bidiFlags) { NPE_CHECK_RETURN_ZERO(env, jpaint); NPE_CHECK_RETURN_ZERO(env, text); Loading @@ -401,13 +402,14 @@ public: jfloat result = 0; TextLayout::getTextRunAdvances(paint, textArray, index, count, textLength, paint->getFlags(), NULL /* dont need all advances */, &result); bidiFlags, NULL /* dont need all advances */, &result); env->ReleaseCharArrayElements(text, const_cast<jchar*>(textArray), JNI_ABORT); return result; } static jfloat measureText_StringII(JNIEnv* env, jobject jpaint, jstring text, int start, int end) { static jfloat measureText_StringIII(JNIEnv* env, jobject jpaint, jstring text, int start, int end, jint bidiFlags) { NPE_CHECK_RETURN_ZERO(env, jpaint); NPE_CHECK_RETURN_ZERO(env, text); Loading @@ -426,13 +428,13 @@ public: jfloat width = 0; TextLayout::getTextRunAdvances(paint, textArray, start, count, textLength, paint->getFlags(), NULL /* dont need all advances */, &width); bidiFlags, NULL /* dont need all advances */, &width); env->ReleaseStringChars(text, textArray); return width; } static jfloat measureText_String(JNIEnv* env, jobject jpaint, jstring text) { static jfloat measureText_StringI(JNIEnv* env, jobject jpaint, jstring text, jint bidiFlags) { NPE_CHECK_RETURN_ZERO(env, jpaint); NPE_CHECK_RETURN_ZERO(env, text); Loading @@ -446,13 +448,14 @@ public: jfloat width = 0; TextLayout::getTextRunAdvances(paint, textArray, 0, textLength, textLength, paint->getFlags(), NULL /* dont need all advances */, &width); bidiFlags, NULL /* dont need all advances */, &width); env->ReleaseStringChars(text, textArray); return width; } static int dotextwidths(JNIEnv* env, SkPaint* paint, const jchar text[], int count, jfloatArray widths) { static int dotextwidths(JNIEnv* env, SkPaint* paint, const jchar text[], int count, jfloatArray widths, jint bidiFlags) { NPE_CHECK_RETURN_ZERO(env, paint); NPE_CHECK_RETURN_ZERO(env, text); Loading @@ -473,23 +476,24 @@ public: jfloat* widthsArray = autoWidths.ptr(); TextLayout::getTextRunAdvances(paint, text, 0, count, count, paint->getFlags(), widthsArray, NULL /* dont need totalAdvance */); bidiFlags, widthsArray, NULL /* dont need totalAdvance */); return count; } static int getTextWidths___CII_F(JNIEnv* env, jobject clazz, SkPaint* paint, jcharArray text, int index, int count, jfloatArray widths) { static int getTextWidths___CIII_F(JNIEnv* env, jobject clazz, SkPaint* paint, jcharArray text, int index, int count, jint bidiFlags, jfloatArray widths) { const jchar* textArray = env->GetCharArrayElements(text, NULL); count = dotextwidths(env, paint, textArray + index, count, widths); count = dotextwidths(env, paint, textArray + index, count, widths, bidiFlags); env->ReleaseCharArrayElements(text, const_cast<jchar*>(textArray), JNI_ABORT); return count; } static int getTextWidths__StringII_F(JNIEnv* env, jobject clazz, SkPaint* paint, jstring text, int start, int end, jfloatArray widths) { static int getTextWidths__StringIII_F(JNIEnv* env, jobject clazz, SkPaint* paint, jstring text, int start, int end, jint bidiFlags, jfloatArray widths) { const jchar* textArray = env->GetStringChars(text, NULL); int count = dotextwidths(env, paint, textArray + start, end - start, widths); int count = dotextwidths(env, paint, textArray + start, end - start, widths, bidiFlags); env->ReleaseStringChars(text, textArray); return count; } Loading Loading @@ -685,10 +689,10 @@ public: } static int breakText(JNIEnv* env, SkPaint& paint, const jchar text[], int count, float maxWidth, jfloatArray jmeasured, int count, float maxWidth, jint bidiFlags, jfloatArray jmeasured, SkPaint::TextBufferDirection tbd) { sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(&paint, text, 0, count, count, paint.getFlags()); text, 0, count, count, bidiFlags); if (value == NULL) { return 0; } Loading @@ -706,7 +710,7 @@ public: } static int breakTextC(JNIEnv* env, jobject jpaint, jcharArray jtext, int index, int count, float maxWidth, jfloatArray jmeasuredWidth) { int index, int count, float maxWidth, jint bidiFlags, jfloatArray jmeasuredWidth) { NPE_CHECK_RETURN_ZERO(env, jpaint); NPE_CHECK_RETURN_ZERO(env, jtext); Loading @@ -727,14 +731,14 @@ public: SkPaint* paint = GraphicsJNI::getNativePaint(env, jpaint); const jchar* text = env->GetCharArrayElements(jtext, NULL); count = breakText(env, *paint, text + index, count, maxWidth, jmeasuredWidth, tbd); bidiFlags, jmeasuredWidth, tbd); env->ReleaseCharArrayElements(jtext, const_cast<jchar*>(text), JNI_ABORT); return count; } static int breakTextS(JNIEnv* env, jobject jpaint, jstring jtext, bool forwards, float maxWidth, jfloatArray jmeasuredWidth) { bool forwards, float maxWidth, jint bidiFlags, jfloatArray jmeasuredWidth) { NPE_CHECK_RETURN_ZERO(env, jpaint); NPE_CHECK_RETURN_ZERO(env, jtext); Loading @@ -745,22 +749,20 @@ public: SkPaint* paint = GraphicsJNI::getNativePaint(env, jpaint); int count = env->GetStringLength(jtext); const jchar* text = env->GetStringChars(jtext, NULL); count = breakText(env, *paint, text, count, maxWidth, jmeasuredWidth, tbd); count = breakText(env, *paint, text, count, maxWidth, bidiFlags, jmeasuredWidth, tbd); env->ReleaseStringChars(jtext, text); return count; } static void doTextBounds(JNIEnv* env, const jchar* text, int count, jobject bounds, const SkPaint& paint) { jobject bounds, const SkPaint& paint, jint bidiFlags) { SkRect r; r.set(0,0,0,0); SkIRect ir; sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(&paint, text, 0, count, count, paint.getFlags()); text, 0, count, count, bidiFlags); if (value == NULL) { return; } Loading @@ -770,18 +772,16 @@ public: } static void getStringBounds(JNIEnv* env, jobject, const SkPaint* paint, jstring text, int start, int end, jobject bounds) { jstring text, int start, int end, jint bidiFlags, jobject bounds) { const jchar* textArray = env->GetStringChars(text, NULL); doTextBounds(env, textArray + start, end - start, bounds, *paint); doTextBounds(env, textArray + start, end - start, bounds, *paint, bidiFlags); env->ReleaseStringChars(text, textArray); } static void getCharArrayBounds(JNIEnv* env, jobject, const SkPaint* paint, jcharArray text, int index, int count, jobject bounds) { jcharArray text, int index, int count, jint bidiFlags, jobject bounds) { const jchar* textArray = env->GetCharArrayElements(text, NULL); doTextBounds(env, textArray + index, count, bounds, *paint); doTextBounds(env, textArray + index, count, bounds, *paint, bidiFlags); env->ReleaseCharArrayElements(text, const_cast<jchar*>(textArray), JNI_ABORT); } Loading Loading @@ -841,13 +841,13 @@ static JNINativeMethod methods[] = { {"descent","()F", (void*) SkPaintGlue::descent}, {"getFontMetrics", "(Landroid/graphics/Paint$FontMetrics;)F", (void*)SkPaintGlue::getFontMetrics}, {"getFontMetricsInt", "(Landroid/graphics/Paint$FontMetricsInt;)I", (void*)SkPaintGlue::getFontMetricsInt}, {"native_measureText","([CII)F", (void*) SkPaintGlue::measureText_CII}, {"native_measureText","(Ljava/lang/String;)F", (void*) SkPaintGlue::measureText_String}, {"native_measureText","(Ljava/lang/String;II)F", (void*) SkPaintGlue::measureText_StringII}, {"native_breakText","([CIIF[F)I", (void*) SkPaintGlue::breakTextC}, {"native_breakText","(Ljava/lang/String;ZF[F)I", (void*) SkPaintGlue::breakTextS}, {"native_getTextWidths","(I[CII[F)I", (void*) SkPaintGlue::getTextWidths___CII_F}, {"native_getTextWidths","(ILjava/lang/String;II[F)I", (void*) SkPaintGlue::getTextWidths__StringII_F}, {"native_measureText","([CIII)F", (void*) SkPaintGlue::measureText_CIII}, {"native_measureText","(Ljava/lang/String;I)F", (void*) SkPaintGlue::measureText_StringI}, {"native_measureText","(Ljava/lang/String;III)F", (void*) SkPaintGlue::measureText_StringIII}, {"native_breakText","([CIIFI[F)I", (void*) SkPaintGlue::breakTextC}, {"native_breakText","(Ljava/lang/String;ZFI[F)I", (void*) SkPaintGlue::breakTextS}, {"native_getTextWidths","(I[CIII[F)I", (void*) SkPaintGlue::getTextWidths___CIII_F}, {"native_getTextWidths","(ILjava/lang/String;III[F)I", (void*) SkPaintGlue::getTextWidths__StringIII_F}, {"native_getTextRunAdvances","(I[CIIIII[FI)F", (void*) SkPaintGlue::getTextRunAdvances___CIIIII_FI}, {"native_getTextRunAdvances","(ILjava/lang/String;IIIII[FI)F", Loading @@ -861,9 +861,9 @@ static JNINativeMethod methods[] = { (void*) SkPaintGlue::getTextRunCursor__String}, {"native_getTextPath","(II[CIIFFI)V", (void*) SkPaintGlue::getTextPath___C}, {"native_getTextPath","(IILjava/lang/String;IIFFI)V", (void*) SkPaintGlue::getTextPath__String}, {"nativeGetStringBounds", "(ILjava/lang/String;IILandroid/graphics/Rect;)V", {"nativeGetStringBounds", "(ILjava/lang/String;IIILandroid/graphics/Rect;)V", (void*) SkPaintGlue::getStringBounds }, {"nativeGetCharArrayBounds", "(I[CIILandroid/graphics/Rect;)V", {"nativeGetCharArrayBounds", "(I[CIIILandroid/graphics/Rect;)V", (void*) SkPaintGlue::getCharArrayBounds }, {"nSetShadowLayer", "(FFFI)V", (void*)SkPaintGlue::setShadowLayer} }; Loading graphics/java/android/graphics/Paint.java +25 −25 Original line number Diff line number Diff line Loading @@ -1295,17 +1295,17 @@ public class Paint { return 0f; } if (!mHasCompatScaling) { return (float) Math.ceil(native_measureText(text, index, count)); return (float) Math.ceil(native_measureText(text, index, count, mBidiFlags)); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); float w = native_measureText(text, index, count); float w = native_measureText(text, index, count, mBidiFlags); setTextSize(oldSize); return (float) Math.ceil(w*mInvCompatScaling); } private native float native_measureText(char[] text, int index, int count); private native float native_measureText(char[] text, int index, int count, int bidiFlags); /** * Return the width of the text. Loading @@ -1327,17 +1327,17 @@ public class Paint { return 0f; } if (!mHasCompatScaling) { return (float) Math.ceil(native_measureText(text, start, end)); return (float) Math.ceil(native_measureText(text, start, end, mBidiFlags)); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); float w = native_measureText(text, start, end); float w = native_measureText(text, start, end, mBidiFlags); setTextSize(oldSize); return (float) Math.ceil(w*mInvCompatScaling); } private native float native_measureText(String text, int start, int end); private native float native_measureText(String text, int start, int end, int bidiFlags); /** * Return the width of the text. Loading @@ -1355,16 +1355,16 @@ public class Paint { } if (!mHasCompatScaling) { return (float) Math.ceil(native_measureText(text)); return (float) Math.ceil(native_measureText(text, mBidiFlags)); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); float w = native_measureText(text); float w = native_measureText(text, mBidiFlags); setTextSize(oldSize); return (float) Math.ceil(w*mInvCompatScaling); } private native float native_measureText(String text); private native float native_measureText(String text, int bidiFlags); /** * Return the width of the text. Loading Loading @@ -1431,12 +1431,12 @@ public class Paint { return 0; } if (!mHasCompatScaling) { return native_breakText(text, index, count, maxWidth, measuredWidth); return native_breakText(text, index, count, maxWidth, mBidiFlags, measuredWidth); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); int res = native_breakText(text, index, count, maxWidth*mCompatScaling, int res = native_breakText(text, index, count, maxWidth*mCompatScaling, mBidiFlags, measuredWidth); setTextSize(oldSize); if (measuredWidth != null) measuredWidth[0] *= mInvCompatScaling; Loading @@ -1444,7 +1444,7 @@ public class Paint { } private native int native_breakText(char[] text, int index, int count, float maxWidth, float[] measuredWidth); float maxWidth, int bidiFlags, float[] measuredWidth); /** * Measure the text, stopping early if the measured width exceeds maxWidth. Loading Loading @@ -1521,12 +1521,12 @@ public class Paint { return 0; } if (!mHasCompatScaling) { return native_breakText(text, measureForwards, maxWidth, measuredWidth); return native_breakText(text, measureForwards, maxWidth, mBidiFlags, measuredWidth); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); int res = native_breakText(text, measureForwards, maxWidth*mCompatScaling, int res = native_breakText(text, measureForwards, maxWidth*mCompatScaling, mBidiFlags, measuredWidth); setTextSize(oldSize); if (measuredWidth != null) measuredWidth[0] *= mInvCompatScaling; Loading @@ -1534,7 +1534,7 @@ public class Paint { } private native int native_breakText(String text, boolean measureForwards, float maxWidth, float[] measuredWidth); float maxWidth, int bidiFlags, float[] measuredWidth); /** * Return the advance widths for the characters in the string. Loading @@ -1560,12 +1560,12 @@ public class Paint { return 0; } if (!mHasCompatScaling) { return native_getTextWidths(mNativePaint, text, index, count, widths); return native_getTextWidths(mNativePaint, text, index, count, mBidiFlags, widths); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); int res = native_getTextWidths(mNativePaint, text, index, count, widths); int res = native_getTextWidths(mNativePaint, text, index, count, mBidiFlags, widths); setTextSize(oldSize); for (int i=0; i<res; i++) { widths[i] *= mInvCompatScaling; Loading Loading @@ -1642,12 +1642,12 @@ public class Paint { return 0; } if (!mHasCompatScaling) { return native_getTextWidths(mNativePaint, text, start, end, widths); return native_getTextWidths(mNativePaint, text, start, end, mBidiFlags, widths); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); int res = native_getTextWidths(mNativePaint, text, start, end, widths); int res = native_getTextWidths(mNativePaint, text, start, end, mBidiFlags, widths); setTextSize(oldSize); for (int i=0; i<res; i++) { widths[i] *= mInvCompatScaling; Loading Loading @@ -2073,7 +2073,7 @@ public class Paint { if (bounds == null) { throw new NullPointerException("need bounds Rect"); } nativeGetStringBounds(mNativePaint, text, start, end, bounds); nativeGetStringBounds(mNativePaint, text, start, end, mBidiFlags, bounds); } /** Loading @@ -2093,7 +2093,7 @@ public class Paint { if (bounds == null) { throw new NullPointerException("need bounds Rect"); } nativeGetCharArrayBounds(mNativePaint, text, index, count, bounds); nativeGetCharArrayBounds(mNativePaint, text, index, count, mBidiFlags, bounds); } @Override Loading Loading @@ -2140,9 +2140,9 @@ public class Paint { String locale); private static native int native_getTextWidths(int native_object, char[] text, int index, int count, float[] widths); char[] text, int index, int count, int bidiFlags, float[] widths); private static native int native_getTextWidths(int native_object, String text, int start, int end, float[] widths); String text, int start, int end, int bidiFlags, float[] widths); private static native int native_getTextGlyphs(int native_object, String text, int start, int end, int contextStart, int contextEnd, Loading @@ -2165,8 +2165,8 @@ public class Paint { private static native void native_getTextPath(int native_object, int bidiFlags, String text, int start, int end, float x, float y, int path); private static native void nativeGetStringBounds(int nativePaint, String text, int start, int end, Rect bounds); String text, int start, int end, int bidiFlags, Rect bounds); private static native void nativeGetCharArrayBounds(int nativePaint, char[] text, int index, int count, Rect bounds); char[] text, int index, int count, int bidiFlags, Rect bounds); private static native void finalizer(int nativePaint); } Loading
core/jni/android/graphics/Paint.cpp +38 −38 Original line number Diff line number Diff line Loading @@ -383,7 +383,8 @@ public: return descent - ascent + leading; } static jfloat measureText_CII(JNIEnv* env, jobject jpaint, jcharArray text, int index, int count) { static jfloat measureText_CIII(JNIEnv* env, jobject jpaint, jcharArray text, int index, int count, jint bidiFlags) { NPE_CHECK_RETURN_ZERO(env, jpaint); NPE_CHECK_RETURN_ZERO(env, text); Loading @@ -401,13 +402,14 @@ public: jfloat result = 0; TextLayout::getTextRunAdvances(paint, textArray, index, count, textLength, paint->getFlags(), NULL /* dont need all advances */, &result); bidiFlags, NULL /* dont need all advances */, &result); env->ReleaseCharArrayElements(text, const_cast<jchar*>(textArray), JNI_ABORT); return result; } static jfloat measureText_StringII(JNIEnv* env, jobject jpaint, jstring text, int start, int end) { static jfloat measureText_StringIII(JNIEnv* env, jobject jpaint, jstring text, int start, int end, jint bidiFlags) { NPE_CHECK_RETURN_ZERO(env, jpaint); NPE_CHECK_RETURN_ZERO(env, text); Loading @@ -426,13 +428,13 @@ public: jfloat width = 0; TextLayout::getTextRunAdvances(paint, textArray, start, count, textLength, paint->getFlags(), NULL /* dont need all advances */, &width); bidiFlags, NULL /* dont need all advances */, &width); env->ReleaseStringChars(text, textArray); return width; } static jfloat measureText_String(JNIEnv* env, jobject jpaint, jstring text) { static jfloat measureText_StringI(JNIEnv* env, jobject jpaint, jstring text, jint bidiFlags) { NPE_CHECK_RETURN_ZERO(env, jpaint); NPE_CHECK_RETURN_ZERO(env, text); Loading @@ -446,13 +448,14 @@ public: jfloat width = 0; TextLayout::getTextRunAdvances(paint, textArray, 0, textLength, textLength, paint->getFlags(), NULL /* dont need all advances */, &width); bidiFlags, NULL /* dont need all advances */, &width); env->ReleaseStringChars(text, textArray); return width; } static int dotextwidths(JNIEnv* env, SkPaint* paint, const jchar text[], int count, jfloatArray widths) { static int dotextwidths(JNIEnv* env, SkPaint* paint, const jchar text[], int count, jfloatArray widths, jint bidiFlags) { NPE_CHECK_RETURN_ZERO(env, paint); NPE_CHECK_RETURN_ZERO(env, text); Loading @@ -473,23 +476,24 @@ public: jfloat* widthsArray = autoWidths.ptr(); TextLayout::getTextRunAdvances(paint, text, 0, count, count, paint->getFlags(), widthsArray, NULL /* dont need totalAdvance */); bidiFlags, widthsArray, NULL /* dont need totalAdvance */); return count; } static int getTextWidths___CII_F(JNIEnv* env, jobject clazz, SkPaint* paint, jcharArray text, int index, int count, jfloatArray widths) { static int getTextWidths___CIII_F(JNIEnv* env, jobject clazz, SkPaint* paint, jcharArray text, int index, int count, jint bidiFlags, jfloatArray widths) { const jchar* textArray = env->GetCharArrayElements(text, NULL); count = dotextwidths(env, paint, textArray + index, count, widths); count = dotextwidths(env, paint, textArray + index, count, widths, bidiFlags); env->ReleaseCharArrayElements(text, const_cast<jchar*>(textArray), JNI_ABORT); return count; } static int getTextWidths__StringII_F(JNIEnv* env, jobject clazz, SkPaint* paint, jstring text, int start, int end, jfloatArray widths) { static int getTextWidths__StringIII_F(JNIEnv* env, jobject clazz, SkPaint* paint, jstring text, int start, int end, jint bidiFlags, jfloatArray widths) { const jchar* textArray = env->GetStringChars(text, NULL); int count = dotextwidths(env, paint, textArray + start, end - start, widths); int count = dotextwidths(env, paint, textArray + start, end - start, widths, bidiFlags); env->ReleaseStringChars(text, textArray); return count; } Loading Loading @@ -685,10 +689,10 @@ public: } static int breakText(JNIEnv* env, SkPaint& paint, const jchar text[], int count, float maxWidth, jfloatArray jmeasured, int count, float maxWidth, jint bidiFlags, jfloatArray jmeasured, SkPaint::TextBufferDirection tbd) { sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(&paint, text, 0, count, count, paint.getFlags()); text, 0, count, count, bidiFlags); if (value == NULL) { return 0; } Loading @@ -706,7 +710,7 @@ public: } static int breakTextC(JNIEnv* env, jobject jpaint, jcharArray jtext, int index, int count, float maxWidth, jfloatArray jmeasuredWidth) { int index, int count, float maxWidth, jint bidiFlags, jfloatArray jmeasuredWidth) { NPE_CHECK_RETURN_ZERO(env, jpaint); NPE_CHECK_RETURN_ZERO(env, jtext); Loading @@ -727,14 +731,14 @@ public: SkPaint* paint = GraphicsJNI::getNativePaint(env, jpaint); const jchar* text = env->GetCharArrayElements(jtext, NULL); count = breakText(env, *paint, text + index, count, maxWidth, jmeasuredWidth, tbd); bidiFlags, jmeasuredWidth, tbd); env->ReleaseCharArrayElements(jtext, const_cast<jchar*>(text), JNI_ABORT); return count; } static int breakTextS(JNIEnv* env, jobject jpaint, jstring jtext, bool forwards, float maxWidth, jfloatArray jmeasuredWidth) { bool forwards, float maxWidth, jint bidiFlags, jfloatArray jmeasuredWidth) { NPE_CHECK_RETURN_ZERO(env, jpaint); NPE_CHECK_RETURN_ZERO(env, jtext); Loading @@ -745,22 +749,20 @@ public: SkPaint* paint = GraphicsJNI::getNativePaint(env, jpaint); int count = env->GetStringLength(jtext); const jchar* text = env->GetStringChars(jtext, NULL); count = breakText(env, *paint, text, count, maxWidth, jmeasuredWidth, tbd); count = breakText(env, *paint, text, count, maxWidth, bidiFlags, jmeasuredWidth, tbd); env->ReleaseStringChars(jtext, text); return count; } static void doTextBounds(JNIEnv* env, const jchar* text, int count, jobject bounds, const SkPaint& paint) { jobject bounds, const SkPaint& paint, jint bidiFlags) { SkRect r; r.set(0,0,0,0); SkIRect ir; sp<TextLayoutValue> value = TextLayoutEngine::getInstance().getValue(&paint, text, 0, count, count, paint.getFlags()); text, 0, count, count, bidiFlags); if (value == NULL) { return; } Loading @@ -770,18 +772,16 @@ public: } static void getStringBounds(JNIEnv* env, jobject, const SkPaint* paint, jstring text, int start, int end, jobject bounds) { jstring text, int start, int end, jint bidiFlags, jobject bounds) { const jchar* textArray = env->GetStringChars(text, NULL); doTextBounds(env, textArray + start, end - start, bounds, *paint); doTextBounds(env, textArray + start, end - start, bounds, *paint, bidiFlags); env->ReleaseStringChars(text, textArray); } static void getCharArrayBounds(JNIEnv* env, jobject, const SkPaint* paint, jcharArray text, int index, int count, jobject bounds) { jcharArray text, int index, int count, jint bidiFlags, jobject bounds) { const jchar* textArray = env->GetCharArrayElements(text, NULL); doTextBounds(env, textArray + index, count, bounds, *paint); doTextBounds(env, textArray + index, count, bounds, *paint, bidiFlags); env->ReleaseCharArrayElements(text, const_cast<jchar*>(textArray), JNI_ABORT); } Loading Loading @@ -841,13 +841,13 @@ static JNINativeMethod methods[] = { {"descent","()F", (void*) SkPaintGlue::descent}, {"getFontMetrics", "(Landroid/graphics/Paint$FontMetrics;)F", (void*)SkPaintGlue::getFontMetrics}, {"getFontMetricsInt", "(Landroid/graphics/Paint$FontMetricsInt;)I", (void*)SkPaintGlue::getFontMetricsInt}, {"native_measureText","([CII)F", (void*) SkPaintGlue::measureText_CII}, {"native_measureText","(Ljava/lang/String;)F", (void*) SkPaintGlue::measureText_String}, {"native_measureText","(Ljava/lang/String;II)F", (void*) SkPaintGlue::measureText_StringII}, {"native_breakText","([CIIF[F)I", (void*) SkPaintGlue::breakTextC}, {"native_breakText","(Ljava/lang/String;ZF[F)I", (void*) SkPaintGlue::breakTextS}, {"native_getTextWidths","(I[CII[F)I", (void*) SkPaintGlue::getTextWidths___CII_F}, {"native_getTextWidths","(ILjava/lang/String;II[F)I", (void*) SkPaintGlue::getTextWidths__StringII_F}, {"native_measureText","([CIII)F", (void*) SkPaintGlue::measureText_CIII}, {"native_measureText","(Ljava/lang/String;I)F", (void*) SkPaintGlue::measureText_StringI}, {"native_measureText","(Ljava/lang/String;III)F", (void*) SkPaintGlue::measureText_StringIII}, {"native_breakText","([CIIFI[F)I", (void*) SkPaintGlue::breakTextC}, {"native_breakText","(Ljava/lang/String;ZFI[F)I", (void*) SkPaintGlue::breakTextS}, {"native_getTextWidths","(I[CIII[F)I", (void*) SkPaintGlue::getTextWidths___CIII_F}, {"native_getTextWidths","(ILjava/lang/String;III[F)I", (void*) SkPaintGlue::getTextWidths__StringIII_F}, {"native_getTextRunAdvances","(I[CIIIII[FI)F", (void*) SkPaintGlue::getTextRunAdvances___CIIIII_FI}, {"native_getTextRunAdvances","(ILjava/lang/String;IIIII[FI)F", Loading @@ -861,9 +861,9 @@ static JNINativeMethod methods[] = { (void*) SkPaintGlue::getTextRunCursor__String}, {"native_getTextPath","(II[CIIFFI)V", (void*) SkPaintGlue::getTextPath___C}, {"native_getTextPath","(IILjava/lang/String;IIFFI)V", (void*) SkPaintGlue::getTextPath__String}, {"nativeGetStringBounds", "(ILjava/lang/String;IILandroid/graphics/Rect;)V", {"nativeGetStringBounds", "(ILjava/lang/String;IIILandroid/graphics/Rect;)V", (void*) SkPaintGlue::getStringBounds }, {"nativeGetCharArrayBounds", "(I[CIILandroid/graphics/Rect;)V", {"nativeGetCharArrayBounds", "(I[CIIILandroid/graphics/Rect;)V", (void*) SkPaintGlue::getCharArrayBounds }, {"nSetShadowLayer", "(FFFI)V", (void*)SkPaintGlue::setShadowLayer} }; Loading
graphics/java/android/graphics/Paint.java +25 −25 Original line number Diff line number Diff line Loading @@ -1295,17 +1295,17 @@ public class Paint { return 0f; } if (!mHasCompatScaling) { return (float) Math.ceil(native_measureText(text, index, count)); return (float) Math.ceil(native_measureText(text, index, count, mBidiFlags)); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); float w = native_measureText(text, index, count); float w = native_measureText(text, index, count, mBidiFlags); setTextSize(oldSize); return (float) Math.ceil(w*mInvCompatScaling); } private native float native_measureText(char[] text, int index, int count); private native float native_measureText(char[] text, int index, int count, int bidiFlags); /** * Return the width of the text. Loading @@ -1327,17 +1327,17 @@ public class Paint { return 0f; } if (!mHasCompatScaling) { return (float) Math.ceil(native_measureText(text, start, end)); return (float) Math.ceil(native_measureText(text, start, end, mBidiFlags)); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); float w = native_measureText(text, start, end); float w = native_measureText(text, start, end, mBidiFlags); setTextSize(oldSize); return (float) Math.ceil(w*mInvCompatScaling); } private native float native_measureText(String text, int start, int end); private native float native_measureText(String text, int start, int end, int bidiFlags); /** * Return the width of the text. Loading @@ -1355,16 +1355,16 @@ public class Paint { } if (!mHasCompatScaling) { return (float) Math.ceil(native_measureText(text)); return (float) Math.ceil(native_measureText(text, mBidiFlags)); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); float w = native_measureText(text); float w = native_measureText(text, mBidiFlags); setTextSize(oldSize); return (float) Math.ceil(w*mInvCompatScaling); } private native float native_measureText(String text); private native float native_measureText(String text, int bidiFlags); /** * Return the width of the text. Loading Loading @@ -1431,12 +1431,12 @@ public class Paint { return 0; } if (!mHasCompatScaling) { return native_breakText(text, index, count, maxWidth, measuredWidth); return native_breakText(text, index, count, maxWidth, mBidiFlags, measuredWidth); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); int res = native_breakText(text, index, count, maxWidth*mCompatScaling, int res = native_breakText(text, index, count, maxWidth*mCompatScaling, mBidiFlags, measuredWidth); setTextSize(oldSize); if (measuredWidth != null) measuredWidth[0] *= mInvCompatScaling; Loading @@ -1444,7 +1444,7 @@ public class Paint { } private native int native_breakText(char[] text, int index, int count, float maxWidth, float[] measuredWidth); float maxWidth, int bidiFlags, float[] measuredWidth); /** * Measure the text, stopping early if the measured width exceeds maxWidth. Loading Loading @@ -1521,12 +1521,12 @@ public class Paint { return 0; } if (!mHasCompatScaling) { return native_breakText(text, measureForwards, maxWidth, measuredWidth); return native_breakText(text, measureForwards, maxWidth, mBidiFlags, measuredWidth); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); int res = native_breakText(text, measureForwards, maxWidth*mCompatScaling, int res = native_breakText(text, measureForwards, maxWidth*mCompatScaling, mBidiFlags, measuredWidth); setTextSize(oldSize); if (measuredWidth != null) measuredWidth[0] *= mInvCompatScaling; Loading @@ -1534,7 +1534,7 @@ public class Paint { } private native int native_breakText(String text, boolean measureForwards, float maxWidth, float[] measuredWidth); float maxWidth, int bidiFlags, float[] measuredWidth); /** * Return the advance widths for the characters in the string. Loading @@ -1560,12 +1560,12 @@ public class Paint { return 0; } if (!mHasCompatScaling) { return native_getTextWidths(mNativePaint, text, index, count, widths); return native_getTextWidths(mNativePaint, text, index, count, mBidiFlags, widths); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); int res = native_getTextWidths(mNativePaint, text, index, count, widths); int res = native_getTextWidths(mNativePaint, text, index, count, mBidiFlags, widths); setTextSize(oldSize); for (int i=0; i<res; i++) { widths[i] *= mInvCompatScaling; Loading Loading @@ -1642,12 +1642,12 @@ public class Paint { return 0; } if (!mHasCompatScaling) { return native_getTextWidths(mNativePaint, text, start, end, widths); return native_getTextWidths(mNativePaint, text, start, end, mBidiFlags, widths); } final float oldSize = getTextSize(); setTextSize(oldSize*mCompatScaling); int res = native_getTextWidths(mNativePaint, text, start, end, widths); int res = native_getTextWidths(mNativePaint, text, start, end, mBidiFlags, widths); setTextSize(oldSize); for (int i=0; i<res; i++) { widths[i] *= mInvCompatScaling; Loading Loading @@ -2073,7 +2073,7 @@ public class Paint { if (bounds == null) { throw new NullPointerException("need bounds Rect"); } nativeGetStringBounds(mNativePaint, text, start, end, bounds); nativeGetStringBounds(mNativePaint, text, start, end, mBidiFlags, bounds); } /** Loading @@ -2093,7 +2093,7 @@ public class Paint { if (bounds == null) { throw new NullPointerException("need bounds Rect"); } nativeGetCharArrayBounds(mNativePaint, text, index, count, bounds); nativeGetCharArrayBounds(mNativePaint, text, index, count, mBidiFlags, bounds); } @Override Loading Loading @@ -2140,9 +2140,9 @@ public class Paint { String locale); private static native int native_getTextWidths(int native_object, char[] text, int index, int count, float[] widths); char[] text, int index, int count, int bidiFlags, float[] widths); private static native int native_getTextWidths(int native_object, String text, int start, int end, float[] widths); String text, int start, int end, int bidiFlags, float[] widths); private static native int native_getTextGlyphs(int native_object, String text, int start, int end, int contextStart, int contextEnd, Loading @@ -2165,8 +2165,8 @@ public class Paint { private static native void native_getTextPath(int native_object, int bidiFlags, String text, int start, int end, float x, float y, int path); private static native void nativeGetStringBounds(int nativePaint, String text, int start, int end, Rect bounds); String text, int start, int end, int bidiFlags, Rect bounds); private static native void nativeGetCharArrayBounds(int nativePaint, char[] text, int index, int count, Rect bounds); char[] text, int index, int count, int bidiFlags, Rect bounds); private static native void finalizer(int nativePaint); }