From: Brendan Hansen Date: Tue, 19 Apr 2022 03:11:50 +0000 (+0000) Subject: added canvas.mouse_down; dark scrollbars X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=c461a33ec95115a420067effc49924ced7d1618a;p=onyx-live.git added canvas.mouse_down; dark scrollbars --- diff --git a/canvas.onyx b/canvas.onyx index 3bd8768..c9c86ed 100644 --- a/canvas.onyx +++ b/canvas.onyx @@ -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" --- diff --git a/static/css/index.css b/static/css/index.css index 17f96ca..b09150c 100644 --- a/static/css/index.css +++ b/static/css/index.css @@ -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 diff --git a/static/src/canvas.js b/static/src/canvas.js index 1ecc747..e7e9915 100644 --- a/static/src/canvas.js +++ b/static/src/canvas.js @@ -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); diff --git a/static/src/index.js b/static/src/index.js index e44323c..6a6ef71 100644 --- a/static/src/index.js +++ b/static/src/index.js @@ -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'); diff --git a/static/src/worker.js b/static/src/worker.js index 6902923..f5d8b91 100644 --- a/static/src/worker.js +++ b/static/src/worker.js @@ -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);