diff options
author | Romain Guy <romainguy@google.com> | 2012-02-24 16:48:34 -0800 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2012-02-24 16:48:34 -0800 |
commit | 325740fb444af8fc7fb0119b2e30ce322c2ae134 (patch) | |
tree | 7739e7e56c5835f8f161e8cbed17346083390176 /core/java/android/view/GLES20Canvas.java | |
parent | 34c55d30858cba1e58c38e7d8e175d25cf0b33c4 (diff) | |
download | frameworks_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.java | 28 |
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) { |