summaryrefslogtreecommitdiffstats
path: root/core/java/android/view/GLES20Canvas.java
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2012-02-24 16:48:34 -0800
committerRomain Guy <romainguy@google.com>2012-02-24 16:48:34 -0800
commit325740fb444af8fc7fb0119b2e30ce322c2ae134 (patch)
tree7739e7e56c5835f8f161e8cbed17346083390176 /core/java/android/view/GLES20Canvas.java
parent34c55d30858cba1e58c38e7d8e175d25cf0b33c4 (diff)
downloadframeworks_base-325740fb444af8fc7fb0119b2e30ce322c2ae134.zip
frameworks_base-325740fb444af8fc7fb0119b2e30ce322c2ae134.tar.gz
frameworks_base-325740fb444af8fc7fb0119b2e30ce322c2ae134.tar.bz2
Add hooks to implement Canvas.drawTextOnPath() in GL
Change-Id: I165c9e05facf5365aa6850605688e538640c7fcc
Diffstat (limited to 'core/java/android/view/GLES20Canvas.java')
-rw-r--r--core/java/android/view/GLES20Canvas.java28
1 files changed, 26 insertions, 2 deletions
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java
index f5fc708..36582af 100644
--- a/core/java/android/view/GLES20Canvas.java
+++ b/core/java/android/view/GLES20Canvas.java
@@ -1208,14 +1208,38 @@ class GLES20Canvas extends HardwareCanvas {
@Override
public void drawTextOnPath(char[] text, int index, int count, Path path, float hOffset,
float vOffset, Paint paint) {
- // TODO: Implement
+ if (index < 0 || index + count > text.length) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
+
+ int modifiers = setupModifiers(paint);
+ try {
+ nDrawTextOnPath(mRenderer, text, index, count, path.mNativePath, hOffset, vOffset,
+ paint.mBidiFlags, paint.mNativePaint);
+ } finally {
+ if (modifiers != MODIFIER_NONE) nResetModifiers(mRenderer, modifiers);
+ }
}
+ private static native void nDrawTextOnPath(int renderer, char[] text, int index, int count,
+ int path, float hOffset, float vOffset, int bidiFlags, int nativePaint);
+
@Override
public void drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint) {
- // TODO: Implement
+ if (text.length() == 0) return;
+
+ int modifiers = setupModifiers(paint);
+ try {
+ nDrawTextOnPath(mRenderer, text, 0, text.length(), path.mNativePath, hOffset, vOffset,
+ paint.mBidiFlags, paint.mNativePaint);
+ } finally {
+ if (modifiers != MODIFIER_NONE) nResetModifiers(mRenderer, modifiers);
+ }
}
+ private static native void nDrawTextOnPath(int renderer, String text, int start, int end,
+ int path, float hOffset, float vOffset, int bidiFlags, int nativePaint);
+
@Override
public void drawTextRun(char[] text, int index, int count, int contextIndex, int contextCount,
float x, float y, int dir, Paint paint) {