From 7fbcc0492fca03857e3c45064f4aa040af817d55 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Wed, 4 Aug 2010 15:40:07 -0700 Subject: Add support for paths. Rendering is implementing by rasterizing the paths into A8 textures. This cna be extremely inefficient if the path changes often. Change-Id: I609343f304ae38e0d319359403ee73b9b5b3c93a --- core/java/android/view/GLES20Canvas.java | 7 +++++-- core/jni/android_view_GLES20Canvas.cpp | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'core') diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java index 63a0c4c..8e1338d 100644 --- a/core/java/android/view/GLES20Canvas.java +++ b/core/java/android/view/GLES20Canvas.java @@ -350,7 +350,6 @@ class GLES20Canvas extends Canvas { @Override public void setDrawFilter(DrawFilter filter) { - // TODO: Implement PaintDrawFilter mFilter = filter; } @@ -522,9 +521,13 @@ class GLES20Canvas extends Canvas { @Override public void drawPath(Path path, Paint paint) { - throw new UnsupportedOperationException(); + boolean hasModifier = setupModifiers(paint); + nDrawPath(mRenderer, path.mNativePath, paint.mNativePaint); + if (hasModifier) nResetModifiers(mRenderer); } + private native void nDrawPath(int renderer, int path, int paint); + @Override public void drawPicture(Picture picture) { throw new UnsupportedOperationException(); diff --git a/core/jni/android_view_GLES20Canvas.cpp b/core/jni/android_view_GLES20Canvas.cpp index 142e194..9fd2b86 100644 --- a/core/jni/android_view_GLES20Canvas.cpp +++ b/core/jni/android_view_GLES20Canvas.cpp @@ -228,6 +228,11 @@ static void android_view_GLES20Canvas_drawRect(JNIEnv* env, jobject canvas, renderer->drawRect(left, top, right, bottom, paint); } +static void android_view_GLES20Canvas_drawPath(JNIEnv* env, jobject canvas, + OpenGLRenderer* renderer, SkPath* path, SkPaint* paint) { + renderer->drawPath(path, paint); +} + // ---------------------------------------------------------------------------- // Shaders and color filters // ---------------------------------------------------------------------------- @@ -317,6 +322,7 @@ static JNINativeMethod gMethods[] = { { "nDrawPatch", "(II[BFFFFI)V", (void*) android_view_GLES20Canvas_drawPatch }, { "nDrawColor", "(III)V", (void*) android_view_GLES20Canvas_drawColor }, { "nDrawRect", "(IFFFFI)V", (void*) android_view_GLES20Canvas_drawRect }, + { "nDrawPath", "(III)V", (void*) android_view_GLES20Canvas_drawPath }, { "nResetModifiers", "(I)V", (void*) android_view_GLES20Canvas_resetModifiers }, { "nSetupShader", "(II)V", (void*) android_view_GLES20Canvas_setupShader }, -- cgit v1.1