Add support for drawPoint() and drawPoints().

Change-Id: I01bef50c08ec3160f8d40dc060b2cf6c2e4d7639
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java
index d841419..8621de3 100644
--- a/core/java/android/view/GLES20Canvas.java
+++ b/core/java/android/view/GLES20Canvas.java
@@ -773,20 +773,25 @@
     public void drawPoint(float x, float y, Paint paint) {
         mPoint[0] = x;
         mPoint[1] = y;
-        drawPoints(mPoint, 0, 1, paint);
-    }
-
-    @Override
-    public void drawPoints(float[] pts, int offset, int count, Paint paint) {
-        // TODO: Implement
+        drawPoints(mPoint, 0, 2, paint);
     }
 
     @Override
     public void drawPoints(float[] pts, Paint paint) {
-        drawPoints(pts, 0, pts.length / 2, paint);
+        drawPoints(pts, 0, pts.length, paint);
     }
 
     @Override
+    public void drawPoints(float[] pts, int offset, int count, Paint paint) {
+        int modifiers = setupModifiers(paint);
+        nDrawPoints(mRenderer, pts, offset, count, paint.mNativePaint);
+        if (modifiers != MODIFIER_NONE) nResetModifiers(mRenderer, modifiers);
+    }
+
+    private static native void nDrawPoints(int renderer, float[] points,
+            int offset, int count, int paint);
+
+    @Override
     public void drawPosText(char[] text, int index, int count, float[] pos, Paint paint) {
         // TODO: Implement
     }
diff --git a/core/jni/android_view_GLES20Canvas.cpp b/core/jni/android_view_GLES20Canvas.cpp
index d6d3e4f..a4931ac 100644
--- a/core/jni/android_view_GLES20Canvas.cpp
+++ b/core/jni/android_view_GLES20Canvas.cpp
@@ -366,6 +366,13 @@
     }
 }
 
+static void android_view_GLES20Canvas_drawPoints(JNIEnv* env, jobject clazz,
+        OpenGLRenderer* renderer, jfloatArray points, jint offset, jint count, SkPaint* paint) {
+    jfloat* storage = env->GetFloatArrayElements(points, NULL);
+    renderer->drawPoints(storage + offset, count, paint);
+    env->ReleaseFloatArrayElements(points, storage, 0);
+}
+
 static void android_view_GLES20Canvas_drawPath(JNIEnv* env, jobject clazz,
         OpenGLRenderer* renderer, SkPath* path, SkPaint* paint) {
     renderer->drawPath(path, paint);
@@ -374,9 +381,7 @@
 static void android_view_GLES20Canvas_drawLines(JNIEnv* env, jobject clazz,
         OpenGLRenderer* renderer, jfloatArray points, jint offset, jint count, SkPaint* paint) {
     jfloat* storage = env->GetFloatArrayElements(points, NULL);
-
     renderer->drawLines(storage + offset, count, paint);
-
     env->ReleaseFloatArrayElements(points, storage, 0);
 }
 
@@ -645,6 +650,7 @@
     { "nDrawCircle",        "(IFFFI)V",        (void*) android_view_GLES20Canvas_drawCircle },
     { "nDrawOval",          "(IFFFFI)V",       (void*) android_view_GLES20Canvas_drawOval },
     { "nDrawArc",           "(IFFFFFFZI)V",    (void*) android_view_GLES20Canvas_drawArc },
+    { "nDrawPoints",        "(I[FIII)V",       (void*) android_view_GLES20Canvas_drawPoints },
 
     { "nDrawPath",          "(III)V",          (void*) android_view_GLES20Canvas_drawPath },
     { "nDrawLines",         "(I[FIII)V",       (void*) android_view_GLES20Canvas_drawLines },