Angle update
This commit is contained in:
@@ -32,8 +32,19 @@ class PoseOverlayView @JvmOverloads constructor(
|
||||
style = Paint.Style.STROKE
|
||||
strokeWidth = PoseSkeletonRenderer.STROKE_WIDTH
|
||||
}
|
||||
private val anglePaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
|
||||
color = ContextCompat.getColor(context, R.color.white)
|
||||
style = Paint.Style.FILL
|
||||
textSize = 36f
|
||||
isFakeBoldText = true
|
||||
// Readable regardless of what's behind it (skin, clothing, wall) --
|
||||
// the skeleton paints get away without this since a line/dot has a
|
||||
// consistent look, but small text needs the contrast.
|
||||
setShadowLayer(4f, 0f, 0f, ContextCompat.getColor(context, R.color.black))
|
||||
}
|
||||
|
||||
private var pose: Pose? = null
|
||||
private var angles: PoseAngles? = null
|
||||
private var isFrontCamera = false
|
||||
|
||||
// Source image size and rotation, as last reported by the analyzer --
|
||||
@@ -48,6 +59,7 @@ class PoseOverlayView @JvmOverloads constructor(
|
||||
/** Called from the main thread with the latest analyzer result, or null to clear. */
|
||||
fun update(frame: PoseAnalyzer.PoseFrameResult?) {
|
||||
pose = frame?.pose
|
||||
angles = frame?.angles
|
||||
if (frame != null) {
|
||||
isFrontCamera = frame.isFrontCamera
|
||||
sourceWidth = frame.imageWidth
|
||||
@@ -60,6 +72,7 @@ class PoseOverlayView @JvmOverloads constructor(
|
||||
|
||||
fun clear() {
|
||||
pose = null
|
||||
angles = null
|
||||
invalidate()
|
||||
}
|
||||
|
||||
@@ -85,5 +98,6 @@ class PoseOverlayView @JvmOverloads constructor(
|
||||
super.onDraw(canvas)
|
||||
val currentPose = pose ?: return
|
||||
PoseSkeletonRenderer.draw(canvas, currentPose, transform, bonePaint, jointPaint)
|
||||
angles?.let { PoseSkeletonRenderer.drawAngleLabels(canvas, currentPose, it, transform, anglePaint) }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user