added canvas.mouse_down; dark scrollbars
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 19 Apr 2022 03:11:50 +0000 (03:11 +0000)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 19 Apr 2022 03:11:50 +0000 (03:11 +0000)
canvas.onyx
static/css/index.css
static/src/canvas.js
static/src/index.js
static/src/worker.js

index 3bd87680d560c18914a0f1dd4d69766ca2115a68..c9c86edbcbeae94537cc29b532b8fa43e56dbeae 100644 (file)
@@ -61,6 +61,9 @@ mouse_position :: () -> (f32, f32) {
     return mx, my;
 }
 
+// This one just tells you if the mouse is down or not.
+mouse_down :: () -> bool #foreign "canvas" "mouse_down" ---
+
 // This one waits for a click event to happen, and returns the position
 // on the canvas where the click occurs.
 mouse_click_internal :: (out_x, out_y: ^f32) -> void #foreign "canvas" "mouse_get_click" ---
index 17f96ca63dad9afe24387cf5704bbf61a262b866..b09150cdfd98475850488a74db1e80c83f080c0f 100644 (file)
@@ -262,4 +262,17 @@ select:hover {
     padding: 2px 6px;
     height: 100%;
     line-height: var(--tab-line-height);
+}
+
+::-webkit-scrollbar {
+    width: 0.75em;
+}
+
+::-webkit-scrollbar-track {
+    box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
+}
+
+::-webkit-scrollbar-thumb {
+    background-color: var(--active-color);
+    outline: 1px solid: var(--background-color);
 }
\ No newline at end of file
index 1ecc7470a0b311c3564e87b273a00ee81a0c4569..e7e9915bd3f624e3f91f6ffd83ece5e3aaa0425a 100644 (file)
@@ -16,6 +16,16 @@ function canvas_register_handlers() {
         Atomics.store(canvas_data, 4, my);
     });
 
+    canvas_element.addEventListener("mousedown", (e) => {
+        let canvas_data = new Int32Array(canvas_shared_buffer);
+        Atomics.store(canvas_data, 6, 1);
+    });
+
+    canvas_element.addEventListener("mouseup", (e) => {
+        let canvas_data = new Int32Array(canvas_shared_buffer);
+        Atomics.store(canvas_data, 6, 0);
+    });
+
     canvas_element.addEventListener("click", (e) => {
         let canvas_data = new Int32Array(canvas_shared_buffer);
         let box = canvas_element.getBoundingClientRect();
@@ -38,6 +48,8 @@ function update_canvas_data() {
     canvas_element.width  = box.width;
     canvas_element.height = box.height;
 
+    canvas_op_buffer = [];
+
     Atomics.store(canvas_data, 0, box.width);
     Atomics.store(canvas_data, 1, box.height);
     Atomics.store(canvas_data, 2, 1);
@@ -45,7 +57,7 @@ function update_canvas_data() {
 }
 
 function canvas_buffer_flush() {
-    canvas_op_buffer.sort((a, b) => a[0] - b[0]);
+    // canvas_op_buffer.sort((a, b) => a[0] - b[0]);
 
     for (let op of canvas_op_buffer) {
         canvas_process(op);
index e44323cc3e575be9d018470dbd5890378963244d..6a6ef71d471da23ffe11a2791e333513e1669337 100644 (file)
@@ -4,7 +4,7 @@ let editor_theme = "chrome";
 let ui_theme = "dark";
 
 let input_shared_buffer  = new SharedArrayBuffer(1024 * Uint8Array.BYTES_PER_ELEMENT);
-let canvas_shared_buffer = new SharedArrayBuffer(6 * Int32Array.BYTES_PER_ELEMENT);
+let canvas_shared_buffer = new SharedArrayBuffer(7 * Int32Array.BYTES_PER_ELEMENT);
 
 async function clear_output() {
     let elem = document.getElementById('code-result');
index 69029231cd88cf23628f2a27049d0160c908699d..f5d8b915a3cb7672bc45e2c5ab111fb095007a7e 100644 (file)
@@ -166,6 +166,15 @@ let import_obj = {
             data.setFloat32(outy, Atomics.load(canvas_data, 4), true);
         },
 
+        mouse_down() {
+            let canvas_data = new Int32Array(canvas_data_buffer);
+            if (Atomics.load(canvas_data, 6) > 0) {
+                return 1;
+            } else {
+                return 0;
+            }
+        },
+
         mouse_get_click(outx, outy) {
             let data = new DataView(wasm_memory.buffer);
             let canvas_data = new Int32Array(canvas_data_buffer);