From 80e1a68843c1b789edc94eaea713449804cbe1d5 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Fri, 20 Sep 2024 09:07:54 +0100 Subject: [PATCH] change ClickPoints.getMousePosition function to return indices to the click points array rather than the click points themselves; this will help adding functionality to use arrows for selecting click points later --- dotscape | Bin 1048952 -> 1048952 bytes functional-core/app/app-update.sml | 21 +++++++++++++++------ functional-core/app/click-points.sml | 9 ++++----- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/dotscape b/dotscape index cace00eea3b2917ba9fe9931d48217ac9b30ea37..43a368b5b390a5bdaf089b15ced7ec80b19f2286 100755 GIT binary patch delta 11430 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 ZZ`zOx!=jhZS$6-EmHIax7&7F?{{zWA!ZQE> delta 11464 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 sUbZFcFWUycJt6*^g - ClickPoints.getDrawDot (xpos, ypos, 1.0, 0.0, 0.0, model) + SOME (hIdx, vIdx) => + let + val xpos = Vector.sub (#xClickPoints model, hIdx) + val ypos = Vector.sub (#yClickPoints model, vIdx) + in + ClickPoints.getDrawDot (xpos, ypos, 1.0, 0.0, 0.0, model) + end | NONE => Vector.fromList [] val drawVec = TriangleStage.toVector (model, drawVec) - + val drawMsg = DRAW_DOT drawVec in (model, DRAW drawMsg) @@ -29,11 +34,15 @@ struct fun mouseLeftClick (model: app_type) = case ClickPoints.getClickPositionFromMouse model of - SOME (xpos, ypos) => + SOME (hIdx, vIdx) => let + val {windowWidth, windowHeight, xClickPoints, yClickPoints, ...} = + model + + val xpos = Vector.sub (xClickPoints, hIdx) + val ypos = Vector.sub (yClickPoints, vIdx) val dotVec = ClickPoints.getDrawDot (xpos, ypos, 0.0, 0.0, 1.0, model) - - val {windowWidth, windowHeight, ...} = model + val halfWidth = Real32.fromInt (windowWidth div 2) val halfHeight = Real32.fromInt (windowHeight div 2) val hpos = diff --git a/functional-core/app/click-points.sml b/functional-core/app/click-points.sml index 924ae13..dd77aa7 100644 --- a/functional-core/app/click-points.sml +++ b/functional-core/app/click-points.sml @@ -1,8 +1,7 @@ signature CLICK_POINTS = sig val generate: int * int -> Real32.real vector - val getClickPositionFromMouse: AppType.app_type - -> (Real32.real * Real32.real) option + val getClickPositionFromMouse: AppType.app_type -> (int * int) option val getDrawDot: Real32.real * Real32.real @@ -46,14 +45,14 @@ struct if mousePos < curPos - range orelse mousePos > curPos + range then getClickPos (clickPoints, mousePos, idx + 1) else - SOME (Vector.sub (clickPoints, idx)) + SOME idx end fun getClickPositionFromMouse (app: AppType.app_type) = case getClickPos (#xClickPoints app, #mouseX app, 0) of - SOME xPos => + SOME hIdx => (case getClickPos (#yClickPoints app, #mouseY app, 0) of - SOME yPos => SOME (xPos, yPos) + SOME vIdx => SOME (hIdx, vIdx) | NONE => NONE) | NONE => NONE