Move SSD review coordinate state updates to typed Kotlin

ober

85dacf715af55115703d1309b6886c49fb940738

diff --git a/templates/ssd-review.ss b/templates/ssd-review.ss
index 7651136..c04adcb 100644
--- a/templates/ssd-review.ss
+++ b/templates/ssd-review.ss
@@ -4652,6 +4652,8 @@
                 reviewViewSetPointerActive reviewViewSetMoved
                 reviewViewSetDragStart reviewViewSetDragEnd
                 reviewViewClearDragPoints reviewViewClearInteractionDetails
+                reviewViewSetLastTouchPosition
+                reviewViewSetPointerPosition
                 mainActivitySelectGroupId mainActivityClearSession
                 mainActivityShowSession mainActivitySetAppendMode
                 mainActivitySetSsdAreaMode mainActivityClearInteractionModes
@@ -4804,6 +4806,18 @@
         (extern (reviewViewDragEndSet (view : SsdReviewView)
                                       (point : (Nullable FloatArray))) : Unit
           (kotlin-member-set dragEnd))
+        (extern (reviewViewLastXSet (view : SsdReviewView)
+                                    (x : Float32)) : Unit
+          (kotlin-member-set lastX))
+        (extern (reviewViewLastYSet (view : SsdReviewView)
+                                    (y : Float32)) : Unit
+          (kotlin-member-set lastY))
+        (extern (reviewViewPointerXSet (view : SsdReviewView)
+                                       (x : Float32)) : Unit
+          (kotlin-member-set pointerX))
+        (extern (reviewViewPointerYSet (view : SsdReviewView)
+                                       (y : Float32)) : Unit
+          (kotlin-member-set pointerY))
         (extern (mainActivityCurrentSessionSet
                   (activity : MainActivity)
                   (session : (Nullable SsdSession))) : Unit
@@ -5421,6 +5435,20 @@
             (reviewViewClearDragPoints view)
             (reviewViewSetPointerActive view #f)
             (reviewViewSetMoved view #f)))
+        (def (reviewViewSetLastTouchPosition
+               (view : SsdReviewView)
+               (x : Float32)
+               (y : Float32)) : Unit
+          (begin
+            (reviewViewLastXSet view x)
+            (reviewViewLastYSet view y)))
+        (def (reviewViewSetPointerPosition
+               (view : SsdReviewView)
+               (x : Float32)
+               (y : Float32)) : Unit
+          (begin
+            (reviewViewPointerXSet view x)
+            (reviewViewPointerYSet view y)))
         (def (mainActivitySelectGroupId (activity : MainActivity)
                                         (view : SsdReviewView)
                                         (id : (Nullable String))) : Unit
@@ -8827,12 +8855,12 @@
        "    internal var offsetX = 0f"
        "    internal var offsetY = 0f"
        "    internal var rotationDegrees = 0"
-       "    private var lastX = 0f"
-       "    private var lastY = 0f"
+       "    internal var lastX = 0f"
+       "    internal var lastY = 0f"
 	       "    internal var dragStart: FloatArray? = null"
 	       "    internal var dragEnd: FloatArray? = null"
-	       "    private var pointerX = 0f"
-	       "    private var pointerY = 0f"
+	       "    internal var pointerX = 0f"
+	       "    internal var pointerY = 0f"
 	       "    internal var pointerActive = false"
 	       "    internal var moved = false"
        ""
@@ -8878,12 +8906,10 @@
        "        if (touchShouldIgnoreMultiPointer(event.pointerCount)) return true"
        "        if (motionActionIsDown(event.actionMasked, MotionEvent.ACTION_DOWN)) {"
        "                parent.requestDisallowInterceptTouchEvent(true)"
-       "                lastX = event.x"
-       "                lastY = event.y"
+       "                reviewViewSetLastTouchPosition(this, event.x, event.y)"
 	       "                reviewViewSetMoved(this, false)"
 		       "                if (touchSelectionActive(selectMode)) {"
-	       "                    pointerX = event.x"
-	       "                    pointerY = event.y"
+	       "                    reviewViewSetPointerPosition(this, event.x, event.y)"
 	       "                    reviewViewSetPointerActive(this, true)"
 	       "                    val startPoint = selectionPoint(event)"
 	       "                    reviewViewSetDragStart(this, startPoint)"
@@ -8894,8 +8920,7 @@
        "                val dy = event.y - lastY"
        "                if (touchMoveExceeded(dx, dy)) reviewViewSetMoved(this, true)"
 		       "                if (touchSelectionActive(selectMode)) {"
-	       "                    pointerX = event.x"
-	       "                    pointerY = event.y"
+	       "                    reviewViewSetPointerPosition(this, event.x, event.y)"
 	       "                    reviewViewSetPointerActive(this, true)"
 	       "                    reviewViewSetDragEnd(this, selectionPoint(event))"
 		       "                } else if (touchPanReady(selectMode, scaler.isInProgress)) {"
@@ -8903,8 +8928,7 @@
 	       "                    clampOffsets()"
 	       "                    updateMatrix()"
 	       "                }"
-       "                lastX = event.x"
-       "                lastY = event.y"
+       "                reviewViewSetLastTouchPosition(this, event.x, event.y)"
        "                invalidate()"
        "        } else if (motionActionIsUpOrCancel(event.actionMasked, MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL)) {"
        "                if (selectionDragReadyForPoints(selectMode, dragStart, dragEnd)) {"