Mercurial > dwindows
changeset 2537:cd9d2ba251d5
Android: Reimplement drawPolygon() using drawPath() instead of drawLines/Points().
Add some extra safety checks before calling into drawPolygon().
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 11 May 2021 22:44:45 +0000 |
parents | d172ab2eddb6 |
children | 1b3b40c89cd0 |
files | android/DWindows.kt android/dw.cpp |
diffstat | 2 files changed, 7 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/android/DWindows.kt Tue May 11 22:19:28 2021 +0000 +++ b/android/DWindows.kt Tue May 11 22:44:45 2021 +0000 @@ -1971,12 +1971,12 @@ fun drawPolygon(render: DWRender?, bitmap: Bitmap?, flags: Int, npoints: Int, x: IntArray, y: IntArray) { - var points = FloatArray(npoints*2) + // Create a path with all our points + val path = Path() - // Convert to a single IntArray - for (i in 0 until npoints) { - points[(i*2)] = x[i].toFloat() - points[(i*2)+1] = y[i].toFloat() + path.moveTo(x[0].toFloat(), y[0].toFloat()) + for (i in 1 until npoints) { + path.lineTo(x[i].toFloat(), y[i].toFloat()) } waitOnUiThread { @@ -2001,7 +2001,7 @@ } else { paint.style = Paint.Style.STROKE } - canvas.drawPoints(points, paint) + canvas.drawPath(path, paint) } } }
--- a/android/dw.cpp Tue May 11 22:19:28 2021 +0000 +++ b/android/dw.cpp Tue May 11 22:44:45 2021 +0000 @@ -2582,7 +2582,7 @@ { JNIEnv *env; - if((handle || pixmap) && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) + if((handle || pixmap) && npoints > 0 && x && y && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) { jintArray jx = env->NewIntArray(npoints); jintArray jy = env->NewIntArray(npoints);