From cf617785a457030a9b3aad4802d07a72b7e4b7de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Cuervo?= Date: Fri, 3 May 2024 14:02:11 -0400 Subject: Add rotation slider to the web editor --- virtual-programs/web/new-program-web-editor.folk | 27 +++++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'virtual-programs') diff --git a/virtual-programs/web/new-program-web-editor.folk b/virtual-programs/web/new-program-web-editor.folk index f972cfc7..bd4fd0d6 100644 --- a/virtual-programs/web/new-program-web-editor.folk +++ b/virtual-programs/web/new-program-web-editor.folk @@ -1,7 +1,9 @@ Wish the web server handles route "/new" with handler { html { - + + + @@ -14,6 +16,9 @@ Wish the web server handles route "/new" with handler { + + + angle: 0°


 	
@@ -26,11 +31,14 @@ Wish the web server handles route "/new" with handler {
 	// Query the element
 	const ele = document.getElementById('dragme');
 	const codeEle = document.getElementById("code");
+	const angleEle = document.getElementById("regionAngleRange");
+	
 
 	// Handle the mousedown event
 	// that's triggered when user drags the element
 	const mouseDownHandler = function (e) {
 	  if (e.target == codeEle) return;
+	  if (e.target == angleEle) return;
 
 	  // Get the current mouse position
 	  x = e.clientX;
@@ -91,6 +99,7 @@ Wish the web server handles route "/new" with handler {
 
 	let ws;
 	let send;
+	let regionAngle = 0;
 	function wsConnect() {
 	  ws = new WebSocket(window.location.origin.replace("http", "ws") + "/ws");
 	  send = function(s) { ws.send(s); }
@@ -133,13 +142,15 @@ Wish the web server handles route "/new" with handler {
 	    set top [expr {int(double(${(top + (top/window.innerHeight) * h)}) * (double($Display::HEIGHT) / ${window.innerHeight}))}]
 	    set left [expr {int(double(${(left + (left/window.innerWidth) * w)}) * (double($Display::WIDTH) / ${window.innerWidth}))}]
 	    proc handleConfigure {program x y w h} {
-		set vertices [list [list [expr {$x+$w}] $y] \
-				   [list $x $y] \
-				   [list $x [expr {$y+$h}]] \
-				   [list [expr {$x+$w}] [expr {$y+$h}]]]
-		set edges [list [list 0 1] [list 1 2] [list 2 3] [list 3 0]]
-		Retract web claims $program has region /something/
-		Assert web claims $program has region [region create $vertices $edges]
+			set vertices [list [list [expr {$x+$w}] $y] \
+					[list $x $y] \
+					[list $x [expr {$y+$h}]] \
+					[list [expr {$x+$w}] [expr {$y+$h}]]]
+			set edges [list [list 0 1] [list 1 2] [list 2 3] [list 3 0]]
+			Retract web claims $program has region /something/
+			set basicRegion [region create $vertices $edges]
+			set rotatedRegion [region rotate $basicRegion ${regionAngle * (3.1415 / 180)}]
+			Assert web claims $program has region $rotatedRegion
 	    }
 	    handleConfigure {${program}} $left $top {${w}} {${h}}
 	    if {$::isLaptop} { Step }
-- 
cgit v1.2.3