Mercurial > dwindows
comparison android/DWindows.kt @ 2576:db097ec28c90
Android: Fix drawArc() FULL option and refactor to reduce calculations.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 22 May 2021 00:19:46 +0000 |
parents | 5beaaa4e9b03 |
children | a36448beb7f7 |
comparison
equal
deleted
inserted
replaced
2575:5beaaa4e9b03 | 2576:db097ec28c90 |
---|---|
3043 } else if(bitmap != null) { | 3043 } else if(bitmap != null) { |
3044 canvas = Canvas(bitmap) | 3044 canvas = Canvas(bitmap) |
3045 } | 3045 } |
3046 | 3046 |
3047 if(canvas != null) { | 3047 if(canvas != null) { |
3048 var a1: Double = Math.atan2((y1 - yorigin).toDouble(), (x1 - xorigin).toDouble()) | |
3049 var a2: Double = Math.atan2((y2 - yorigin).toDouble(), (x2 - xorigin).toDouble()) | |
3050 val dx = (xorigin - x1).toDouble() | |
3051 val dy = (yorigin - y1).toDouble() | |
3052 val r: Double = Math.sqrt(dx * dx + dy * dy) | |
3053 val left = (xorigin-r).toFloat() | |
3054 val top = (yorigin-r).toFloat() | |
3055 val rect = RectF(left, top, (left + (r*2)).toFloat(), (top + (r*2)).toFloat()) | |
3056 | |
3057 // Convert to degrees | |
3058 a1 *= 180.0 / Math.PI | |
3059 a2 *= 180.0 / Math.PI | |
3060 val sweep = Math.abs(a1 - a2) | |
3061 | |
3062 colorsSet(fgColor, bgColor) | 3048 colorsSet(fgColor, bgColor) |
3063 | 3049 |
3064 // Handle the DW_DRAW_NOAA flag | 3050 // Handle the DW_DRAW_NOAA flag |
3065 if((flags and (1 shl 2)) == 0) { | 3051 if((flags and (1 shl 2)) == 0) { |
3066 paint.flags = Paint.ANTI_ALIAS_FLAG | 3052 paint.flags = Paint.ANTI_ALIAS_FLAG |
3073 } else { | 3059 } else { |
3074 paint.style = Paint.Style.STROKE | 3060 paint.style = Paint.Style.STROKE |
3075 } | 3061 } |
3076 // Handle the DW_DRAW_FULL flag | 3062 // Handle the DW_DRAW_FULL flag |
3077 if((flags and (1 shl 1)) != 0) { | 3063 if((flags and (1 shl 1)) != 0) { |
3078 canvas.drawOval(rect, paint) | 3064 var left: Float = x1.toFloat() |
3065 var top: Float = y1.toFloat() | |
3066 var right: Float = x2.toFloat() | |
3067 var bottom: Float = y2.toFloat() | |
3068 | |
3069 if(x2 < x1) { | |
3070 left = x2.toFloat() | |
3071 right = x1.toFloat() | |
3072 } | |
3073 if(y2 < y1) { | |
3074 top = y2.toFloat() | |
3075 bottom = y1.toFloat() | |
3076 } | |
3077 | |
3078 val width: Float = Math.abs((x1-x2)).toFloat() | |
3079 val height: Float = Math.abs((y1-y2)).toFloat() | |
3080 canvas.drawOval(left, top, right, bottom, paint) | |
3079 } else { | 3081 } else { |
3082 var a1: Double = Math.atan2((y1 - yorigin).toDouble(), (x1 - xorigin).toDouble()) | |
3083 var a2: Double = Math.atan2((y2 - yorigin).toDouble(), (x2 - xorigin).toDouble()) | |
3084 val dx = (xorigin - x1).toDouble() | |
3085 val dy = (yorigin - y1).toDouble() | |
3086 val r: Double = Math.sqrt(dx * dx + dy * dy) | |
3087 val left = (xorigin-r).toFloat() | |
3088 val top = (yorigin-r).toFloat() | |
3089 val rect = RectF(left, top, (left + (r*2)).toFloat(), (top + (r*2)).toFloat()) | |
3090 | |
3091 // Convert to degrees | |
3092 a1 *= 180.0 / Math.PI | |
3093 a2 *= 180.0 / Math.PI | |
3094 val sweep = Math.abs(a1 - a2) | |
3095 | |
3080 canvas.drawArc(rect, a1.toFloat(), sweep.toFloat(), false, paint) | 3096 canvas.drawArc(rect, a1.toFloat(), sweep.toFloat(), false, paint) |
3081 } | 3097 } |
3082 } | 3098 } |
3083 } | 3099 } |
3084 } | 3100 } |