From 6878f7fa585064523f89ed46b7f5f418143d557a Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Tue, 13 Aug 2024 23:38:04 +0100 Subject: [PATCH] a little clean up (make the ClickPoints.getClickPosition easier for callers to use, because fewer arguments need to be passed) --- dotscape | Bin 908216 -> 908216 bytes functional-core/app-update.sml | 54 ++++------------------------ functional-core/click-points.sml | 58 ++++++++++++++----------------- 3 files changed, 32 insertions(+), 80 deletions(-) diff --git a/dotscape b/dotscape index 8618ff12248621e56322340687fd96409e9e81fc..d4690eb5faf5332e3494a7b7256dd78caf69d063 100755 GIT binary patch delta 28076 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

=3c3^YNzlWf zc2GCy>!8;`SAqs~lB9K@twDE!c5)fV1^u23*OAQ&n$Kpq7S0RW%Ggdc zpmkJ;n)(SyE7LoGMCY|KZTT;0pNllA5LGnI{_B6qE@6P1=8F(%l(;0QMF%Y;TE3%6 zb|lH8V?p{BvY|-74GiT#iu5H-vL6N{rWM3nts9Kp z_1lu5afiJBb9Z3qO+xcsbQsESet)U0JQ(F3Lx75 zHwBQ}{}%{<{MF@B052l@C+@zw7^BU48@qcm4mn1}I#={9Hwon@t(X z7A&j4e+^ndS>XZE%l-)Tp*#0Ci->((HrJArr_i)b9>?c#D%jsF+6&thc!n1)(!$de zxXcSzXyG9WENxaRX9qNuzofusFWgxRt0LOHuuTi+E2WQlVTTreNP%OvsBM>P;pY|D z>V>PdaHs-1y>Q|e8p#V3*zJXLwXj8j(@NB~3$?I%2AS%GOSG`BQhJLQuF}Gh3jBu` zHXhW7rk))-ZB^UO(!!&a(o?-~ffiOz16#askrtkyl&t%L)?X>@^unFBu)hMky|7IS z;~**jn0BgdI|Lk}ba1`Chn03(rvConE*~3+E{CB`<6|su3+lfn$!UqGf5}ONTtk zIbOIx3-46m8D6+Z3(r^J4PLlH3y)IZlU|s8tr0Cvfdjr)MeD4EYrga(_wvFvEqqXc z^S!V`3$Ik*m0q}93+F5FK`&gbg?lM*jTcTlrja~AfzytulILpSlLtM?qr7mT7T%!1 z^SyA17M`KNJH2p~7S2)NOJ3Mmp%E=cfnzFE(XzDgr7t|mIbOIx3-46m8D6+Z3(r^J z4PLlH3y)IZlU|rrYD7y@;DAb1w9Z<%=71-;mlw8a;e!gC?}Z&&c%=fb^upy@IA4Je zdf{p<+)IILyl~=ijpP9eoOWE5JXZ^!-0w*q<%J8i@CF5*?}baW@C*gs>4mF~H|vNe zAjWSX!fUeCk|c!nB;j4zls)w|$^zVZvjXRQ;}JnMZ)$ocCEcpfSE=fBNHiW;7NPX) z?=_W+k7{W(U4f-CrSvCCLX0A^nqN)t)FgeNl3|Hrlhyp!JoWUEwkSZgQt`4&ms1D5cl56ydW@|dI4#Ep}h4}=J>K40O2_Y(VORG>9mqMi7 zRM;yxI@Ybgs@w3P0{6mqP=mi?hiO6Y;OFohjr9p0i>pOjpWuXt*)dn)is0uA%4egCFEfa`oOAyqU2!uFL-k?&-rmbR}*Hp6!EpdC_)MI@~pL zM=<%bM_k4|!2>vJ@5=o&cs8De_jFa31!o%AD=zkV@YkHz^>$Sr2*ww3dbv)05j;Bx zay(QSEF$eimBGK`(TU?Ys#{4DzX|ThEUve{34Wa6i$H1()NWVElLT99Q`b(V;NcLpxjnlN cA2;4LCqCrkW`1`*-D7B1o2!3D$nz!tA7XbS$N&HU delta 28233 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 0 then @@ -151,7 +112,7 @@ struct AppWith.undo (model, triangleStage, trianglesTl, (x3, y3)) val newTriangleVec = Triangles.toVector model - val emptyVec : Real32.real vector = Vector.fromList [] + val emptyVec: Real32.real vector = Vector.fromList [] val drawVec = TriangleStage.secondToVector (x1, y1, x2, y2, emptyVec, model) val drawMsg = @@ -178,8 +139,7 @@ struct (model, newTriangleStage, #triangles model, redoHd) val emptyVec: Real32.real vector = Vector.fromList [] - val drawVec = - TriangleStage.firstToVector (x, y, emptyVec, model) + val drawVec = TriangleStage.firstToVector (x, y, emptyVec, model) val drawMsg = DRAW_BUTTON drawVec in (model, drawMsg) @@ -214,9 +174,7 @@ struct in (model, drawMsg) end) - | [] => - (* Nothing to redo. *) - (model, NO_DRAW) + | [] => (* Nothing to redo. *) (model, NO_DRAW) fun update (model: app_type, inputMsg) = case inputMsg of diff --git a/functional-core/click-points.sml b/functional-core/click-points.sml index c697604..c02cc19 100644 --- a/functional-core/click-points.sml +++ b/functional-core/click-points.sml @@ -2,15 +2,7 @@ signature CLICK_POINTS = sig val generate: int * int -> Real32.real vector val getClickPosition: - Real32.real - * Real32.real - * Real32.real - * Real32.real - * Real32.real - * Real32.real vector - * Real32.real vector - * int - * int + Real32.real * Real32.real * Real32.real * AppType.app_type -> Real32.real vector * Real32.real * Real32.real end @@ -192,27 +184,29 @@ struct * If a square wasn't found at the clicked position, * an empty vector is returned. *) - fun getClickPosition - ( mouseX - , mouseY - , r - , g - , b - , xClickPoints - , yClickPoints - , windowWidth - , windowHeight - ) = - getHorizontalClickPos - ( xClickPoints - , yClickPoints - , 0 - , mouseX - , mouseY - , r - , g - , b - , windowWidth - , windowHeight - ) + fun getClickPosition (r, g, b, app: AppType.app_type) = + let + val + { xClickPoints + , yClickPoints + , mouseX + , mouseY + , windowWidth + , windowHeight + , ... + } = app + in + getHorizontalClickPos + ( xClickPoints + , yClickPoints + , 0 + , mouseX + , mouseY + , r + , g + , b + , windowWidth + , windowHeight + ) + end end