Minor PolarView drawing refactoring, removed unnecessary objects

This commit is contained in:
Arty Bishop committed 2019-12-22 21:44:10 +00:00
1 parent 158fb84f5b
commit 0d5c84ef43
1 file changed
+12 -19
@@ -20,7 +20,9 @@
package com.rtbishop.lookingsat.ui package com.rtbishop.lookingsat.ui
import android.content.Context import android.content.Context
import android.graphics.* import android.graphics.Canvas
import android.graphics.Paint
import android.graphics.Path
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@@ -125,14 +127,6 @@ class RadarFragment : Fragment() {
private val center = 0f private val center = 0f
private val delay = updateFreq private val delay = updateFreq
private val bmp: Bitmap = Bitmap.createBitmap(radarSize, radarSize, Bitmap.Config.ARGB_8888)
private val mtrx: Matrix = Matrix().apply {
postTranslate(radarSize / 2f, radarSize / 2f)
}
private val cvs: Canvas = Canvas().apply {
setBitmap(bmp)
setMatrix(mtrx)
}
private val radarPaint = Paint().apply { private val radarPaint = Paint().apply {
isAntiAlias = true isAntiAlias = true
color = resources.getColor(R.color.lightOnDark, mainActivity.theme) color = resources.getColor(R.color.lightOnDark, mainActivity.theme)
@@ -162,13 +156,12 @@ class RadarFragment : Fragment() {
private var satPassY = 0f private var satPassY = 0f
override fun onDraw(canvas: Canvas) { override fun onDraw(canvas: Canvas) {
bmp.eraseColor(Color.TRANSPARENT) canvas.translate(radarSize / 2f, radarSize / 2f)
setPassText() setPassText()
drawRadarView() drawRadarView(canvas)
drawRadarText() drawRadarText(canvas)
drawPassTrajectory() drawPassTrajectory(canvas)
drawSatellite() drawSatellite(canvas)
canvas.drawBitmap(bmp, left.toFloat(), top.toFloat(), null)
} }
private fun setPassText() { private fun setPassText() {
@@ -179,7 +172,7 @@ class RadarFragment : Fragment() {
radarAltitude.text = String.format("Altitude: %.0f km", satPos.altitude) radarAltitude.text = String.format("Altitude: %.0f km", satPos.altitude)
} }
private fun drawRadarView() { private fun drawRadarView(cvs: Canvas) {
cvs.drawLine(center - radius, center, center + radius, center, radarPaint) cvs.drawLine(center - radius, center, center + radius, center, radarPaint)
cvs.drawLine(center, center - radius, center, center + radius, radarPaint) cvs.drawLine(center, center - radius, center, center + radius, radarPaint)
cvs.drawCircle(center, center, radius, radarPaint) cvs.drawCircle(center, center, radius, radarPaint)
@@ -187,7 +180,7 @@ class RadarFragment : Fragment() {
cvs.drawCircle(center, center, radius / 3, radarPaint) cvs.drawCircle(center, center, radius / 3, radarPaint)
} }
private fun drawRadarText() { private fun drawRadarText(cvs: Canvas) {
cvs.drawText("N", center - txtSize / 3, center - radius - scale * 2, txtPaint) cvs.drawText("N", center - txtSize / 3, center - radius - scale * 2, txtPaint)
cvs.drawText("E", center + radius + scale * 2, center + txtSize / 3, txtPaint) cvs.drawText("E", center + radius + scale * 2, center + txtSize / 3, txtPaint)
cvs.drawText("S", center - txtSize / 3, center + radius + txtSize, txtPaint) cvs.drawText("S", center - txtSize / 3, center + radius + txtSize, txtPaint)
@@ -197,7 +190,7 @@ class RadarFragment : Fragment() {
cvs.drawText("60°", center + scale, center - ((radius / 3) * 2) - scale * 2, txtPaint) cvs.drawText("60°", center + scale, center - ((radius / 3) * 2) - scale * 2, txtPaint)
} }
private fun drawPassTrajectory() { private fun drawPassTrajectory(cvs: Canvas) {
while (startTime.before(endTime)) { while (startTime.before(endTime)) {
satPos = satPass.predictor.getSatPos(startTime) satPos = satPass.predictor.getSatPos(startTime)
satPassX = center + sph2CartX(satPos.azimuth, satPos.elevation, radius.toDouble()) satPassX = center + sph2CartX(satPos.azimuth, satPos.elevation, radius.toDouble())
@@ -212,7 +205,7 @@ class RadarFragment : Fragment() {
cvs.drawPath(path, trackPaint) cvs.drawPath(path, trackPaint)
} }
private fun drawSatellite() { private fun drawSatellite(cvs: Canvas) {
satPos = satPass.predictor.getSatPos(Date()) satPos = satPass.predictor.getSatPos(Date())
if (satPos.elevation > 0) { if (satPos.elevation > 0) {
cvs.drawCircle( cvs.drawCircle(