Mercurial > dwindows
diff android/DWindows.kt @ 2572:bbe693293be5
Android: New color handling system, save the color in the C API and pass
it into the Java/Kotlin API directly so the threads won't contaminate.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Fri, 21 May 2021 00:39:13 +0000 |
parents | b536b7b21682 |
children | ea75e295025b |
line wrap: on
line diff
--- a/android/DWindows.kt Thu May 20 23:33:12 2021 +0000 +++ b/android/DWindows.kt Fri May 21 00:39:13 2021 +0000 @@ -2830,7 +2830,7 @@ return retval } - fun drawPoint(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int) + fun drawPoint(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, fgColor: Int, bgColor: Int) { waitOnUiThread { var canvas: Canvas? = null @@ -2842,12 +2842,13 @@ } if(canvas != null) { + colorsSet(fgColor, bgColor) canvas.drawPoint(x.toFloat(), y.toFloat(), Paint()) } } } - fun drawLine(render: DWRender?, bitmap: Bitmap?, x1: Int, y1: Int, x2: Int, y2: Int) + fun drawLine(render: DWRender?, bitmap: Bitmap?, x1: Int, y1: Int, x2: Int, y2: Int, fgColor: Int, bgColor: Int) { waitOnUiThread { var canvas: Canvas? = null @@ -2859,6 +2860,7 @@ } if(canvas != null) { + colorsSet(fgColor, bgColor) paint.flags = 0 paint.style = Paint.Style.STROKE canvas.drawLine(x1.toFloat(), y1.toFloat(), x2.toFloat(), y2.toFloat(), paint) @@ -2905,7 +2907,8 @@ return dimensions } - fun drawText(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, text:String, typeface: Typeface?, fontsize: Int, window: View?) + fun drawText(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, text:String, typeface: Typeface?, + fontsize: Int, window: View?, fgColor: Int, bgColor: Int) { waitOnUiThread { var canvas: Canvas? = null @@ -2938,6 +2941,7 @@ } if(canvas != null) { + colorsSet(fgColor, bgColor) // Save the old color for later... var rect = Rect() val oldcolor = paint.color @@ -2961,7 +2965,7 @@ } } - fun drawRect(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, width: Int, height: Int) + fun drawRect(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, width: Int, height: Int, fgColor: Int, bgColor: Int) { waitOnUiThread { var canvas: Canvas? = null @@ -2973,6 +2977,7 @@ } if(canvas != null) { + colorsSet(fgColor, bgColor) paint.flags = 0 paint.style = Paint.Style.FILL_AND_STROKE canvas.drawRect(x.toFloat(), y.toFloat(), x.toFloat() + width.toFloat(), y.toFloat() + height.toFloat(), paint) @@ -2980,7 +2985,8 @@ } } - fun drawPolygon(render: DWRender?, bitmap: Bitmap?, flags: Int, npoints: Int, x: IntArray, y: IntArray) + fun drawPolygon(render: DWRender?, bitmap: Bitmap?, flags: Int, npoints: Int, + x: IntArray, y: IntArray, fgColor: Int, bgColor: Int) { // Create a path with all our points val path = Path() @@ -3000,6 +3006,7 @@ } if(canvas != null) { + colorsSet(fgColor, bgColor) // Handle the DW_DRAW_NOAA flag if((flags and (1 shl 2)) == 0) { paint.flags = Paint.ANTI_ALIAS_FLAG @@ -3018,7 +3025,7 @@ } fun drawArc(render: DWRender?, bitmap: Bitmap?, flags: Int, xorigin: Int, yorigin: Int, - x1: Int, y1: Int, x2: Int, y2: Int) + x1: Int, y1: Int, x2: Int, y2: Int, fgColor: Int, bgColor: Int) { waitOnUiThread { var canvas: Canvas? = null @@ -3039,11 +3046,13 @@ val top = (yorigin-r).toFloat() val rect = RectF(left, top, (left + (r*2)).toFloat(), (top + (r*2)).toFloat()) - /* Convert to degrees */ + // Convert to degrees a1 *= 180.0 / Math.PI a2 *= 180.0 / Math.PI val sweep = Math.abs(a1 - a2) + colorsSet(fgColor, bgColor) + // Handle the DW_DRAW_NOAA flag if((flags and (1 shl 2)) == 0) { paint.flags = Paint.ANTI_ALIAS_FLAG @@ -3086,6 +3095,19 @@ } } + fun colorsSet(fgColor: Int, bgColor: Int) + { + val fgRed: Int = (fgColor and 0x000000FF) + val fgGreen: Int = (fgColor and 0x0000FF00) shr 8 + val fgBlue: Int = (fgColor and 0x00FF0000) shr 16 + val bgRed: Int = (bgColor and 0x000000FF) + val bgGreen: Int = (bgColor and 0x0000FF00) shr 8 + val bgBlue: Int = (bgColor and 0x00FF0000) shr 16 + + paint.color = Color.rgb(fgRed, fgGreen, fgBlue) + this.bgcolor = Color.rgb(bgRed, bgGreen, bgBlue) + } + fun timerConnect(interval: Long, sigfunc: Long, data: Long): Timer { // creating timer task, timer