mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-07 16:18:52 +00:00
Add utilities for Rects
This commit is contained in:
Vendored
+38
-2
@@ -6,11 +6,10 @@ foreign import dom_lib "odin_dom"
|
|||||||
@(default_calling_convention="contextless")
|
@(default_calling_convention="contextless")
|
||||||
foreign dom_lib {
|
foreign dom_lib {
|
||||||
get_element_value_f64 :: proc(id: string) -> f64 ---
|
get_element_value_f64 :: proc(id: string) -> f64 ---
|
||||||
get_element_min_max :: proc(id: string) -> (min, max: f64) ---
|
|
||||||
set_element_value :: proc(id: string, value: f64) ---
|
set_element_value :: proc(id: string, value: f64) ---
|
||||||
}
|
}
|
||||||
|
|
||||||
get_element_value_string :: proc(id: string, buf: []byte) -> string {
|
get_element_value_string :: proc "contextless" (id: string, buf: []byte) -> string {
|
||||||
@(default_calling_convention="contextless")
|
@(default_calling_convention="contextless")
|
||||||
foreign dom_lib {
|
foreign dom_lib {
|
||||||
@(link_name="get_element_value_string")
|
@(link_name="get_element_value_string")
|
||||||
@@ -20,3 +19,40 @@ get_element_value_string :: proc(id: string, buf: []byte) -> string {
|
|||||||
return string(buf[:n])
|
return string(buf[:n])
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
get_element_min_max :: proc "contextless" (id: string) -> (min, max: f64) {
|
||||||
|
@(default_calling_convention="contextless")
|
||||||
|
foreign dom_lib {
|
||||||
|
@(link_name="get_element_min_max")
|
||||||
|
_get_element_min_max :: proc(min_max: ^[2]f64, id: string) ---
|
||||||
|
}
|
||||||
|
min_max: [2]f64
|
||||||
|
_get_element_min_max(&min_max, id)
|
||||||
|
return min_max[0], min_max[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Rect :: struct {
|
||||||
|
x, y, width, height: f64,
|
||||||
|
}
|
||||||
|
|
||||||
|
get_bounding_client_rect :: proc "contextless" (id: string) -> (rect: Rect) {
|
||||||
|
@(default_calling_convention="contextless")
|
||||||
|
foreign dom_lib {
|
||||||
|
@(link_name="get_bounding_client_rect")
|
||||||
|
_get_bounding_client_rect :: proc(rect: ^Rect, id: string) ---
|
||||||
|
}
|
||||||
|
_get_bounding_client_rect(&rect, id)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
get_window_rect :: proc "contextless" () -> (rect: Rect) {
|
||||||
|
@(default_calling_convention="contextless")
|
||||||
|
foreign dom_lib {
|
||||||
|
@(link_name="get_window_rect")
|
||||||
|
_get_window_rect :: proc(rect: ^Rect) ---
|
||||||
|
}
|
||||||
|
_get_window_rect(&rect)
|
||||||
|
return
|
||||||
|
}
|
||||||
Vendored
+21
@@ -1549,6 +1549,27 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) {
|
|||||||
element.value = value;
|
element.value = value;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
get_bounding_client_rect: (rect_ptr, id_ptr, id_len) => {
|
||||||
|
let id = wasmMemoryInterface.loadString(id_ptr, id_len);
|
||||||
|
let element = document.getElementById(id);
|
||||||
|
if (element) {
|
||||||
|
let values = wasmMemoryInterface.loadF64Array(rect_ptr, 4);
|
||||||
|
let rect = element.getBoundingClientRect();
|
||||||
|
values[0] = rect.left;
|
||||||
|
values[1] = rect.top;
|
||||||
|
values[2] = rect.right - rect.left;
|
||||||
|
values[3] = rect.bottom - rect.top;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
get_window_rect: (rect_ptr) => {
|
||||||
|
let values = wasmMemoryInterface.loadF64Array(rect_ptr, 4);
|
||||||
|
values[0] = window.screenX;
|
||||||
|
values[1] = window.screenY;
|
||||||
|
values[2] = window.screen.width;
|
||||||
|
values[3] = window.screen.height;
|
||||||
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
"webgl": webglContext.getWebGL1Interface(),
|
"webgl": webglContext.getWebGL1Interface(),
|
||||||
|
|||||||
Reference in New Issue
Block a user