Merge example_web into egui_demo_lib
This commit is contained in:
parent
375e317547
commit
defad4ed51
38 changed files with 441 additions and 1334 deletions
15
Cargo.lock
generated
15
Cargo.lock
generated
|
@ -702,6 +702,10 @@ dependencies = [
|
||||||
"criterion",
|
"criterion",
|
||||||
"egui",
|
"egui",
|
||||||
"epi",
|
"epi",
|
||||||
|
"image",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"syntect",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -758,17 +762,6 @@ dependencies = [
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "example_web"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"eframe",
|
|
||||||
"image",
|
|
||||||
"serde",
|
|
||||||
"serde_json",
|
|
||||||
"syntect",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fancy-regex"
|
name = "fancy-regex"
|
||||||
version = "0.3.5"
|
version = "0.3.5"
|
||||||
|
|
|
@ -6,7 +6,6 @@ members = [
|
||||||
"egui_web",
|
"egui_web",
|
||||||
"egui",
|
"egui",
|
||||||
"epi",
|
"epi",
|
||||||
"example_web",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
CRATE_NAME="example_web"
|
|
||||||
|
|
||||||
# This is required to enable the web_sys clipboard API which egui_web uses
|
|
||||||
# https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Clipboard.html
|
|
||||||
# https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html
|
|
||||||
export RUSTFLAGS=--cfg=web_sys_unstable_apis
|
|
||||||
|
|
||||||
# Clear output from old stuff:
|
|
||||||
rm -f docs/${CRATE_NAME}_bg.wasm
|
|
||||||
|
|
||||||
echo "Building rust…"
|
|
||||||
BUILD=release
|
|
||||||
cargo build --release -p ${CRATE_NAME} --lib --target wasm32-unknown-unknown
|
|
||||||
|
|
||||||
echo "Generating JS bindings for wasm…"
|
|
||||||
TARGET_NAME="${CRATE_NAME}.wasm"
|
|
||||||
wasm-bindgen "target/wasm32-unknown-unknown/$BUILD/$TARGET_NAME" \
|
|
||||||
--out-dir docs --no-modules --no-typescript
|
|
||||||
|
|
||||||
echo "Finished: docs/${CRATE_NAME}.wasm"
|
|
||||||
|
|
||||||
open http://localhost:8888/example.html
|
|
1
check.sh
1
check.sh
|
@ -9,7 +9,6 @@ cargo test --workspace --doc
|
||||||
|
|
||||||
cargo check -p egui_web --lib --target wasm32-unknown-unknown
|
cargo check -p egui_web --lib --target wasm32-unknown-unknown
|
||||||
cargo check -p egui_demo_app --lib --target wasm32-unknown-unknown
|
cargo check -p egui_demo_app --lib --target wasm32-unknown-unknown
|
||||||
cargo check -p example_web --lib --target wasm32-unknown-unknown
|
|
||||||
|
|
||||||
# For finding bloat:
|
# For finding bloat:
|
||||||
# cargo bloat --release --bin demo_glium -n 200 | rg egui
|
# cargo bloat --release --bin demo_glium -n 200 | rg egui
|
||||||
|
|
|
@ -68,6 +68,61 @@ function getInt32Memory0() {
|
||||||
return cachegetInt32Memory0;
|
return cachegetInt32Memory0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let WASM_VECTOR_LEN = 0;
|
||||||
|
|
||||||
|
let cachedTextEncoder = new TextEncoder('utf-8');
|
||||||
|
|
||||||
|
const encodeString = (typeof cachedTextEncoder.encodeInto === 'function'
|
||||||
|
? function (arg, view) {
|
||||||
|
return cachedTextEncoder.encodeInto(arg, view);
|
||||||
|
}
|
||||||
|
: function (arg, view) {
|
||||||
|
const buf = cachedTextEncoder.encode(arg);
|
||||||
|
view.set(buf);
|
||||||
|
return {
|
||||||
|
read: arg.length,
|
||||||
|
written: buf.length
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
function passStringToWasm0(arg, malloc, realloc) {
|
||||||
|
|
||||||
|
if (realloc === undefined) {
|
||||||
|
const buf = cachedTextEncoder.encode(arg);
|
||||||
|
const ptr = malloc(buf.length);
|
||||||
|
getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);
|
||||||
|
WASM_VECTOR_LEN = buf.length;
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
let len = arg.length;
|
||||||
|
let ptr = malloc(len);
|
||||||
|
|
||||||
|
const mem = getUint8Memory0();
|
||||||
|
|
||||||
|
let offset = 0;
|
||||||
|
|
||||||
|
for (; offset < len; offset++) {
|
||||||
|
const code = arg.charCodeAt(offset);
|
||||||
|
if (code > 0x7F) break;
|
||||||
|
mem[ptr + offset] = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (offset !== len) {
|
||||||
|
if (offset !== 0) {
|
||||||
|
arg = arg.slice(offset);
|
||||||
|
}
|
||||||
|
ptr = realloc(ptr, len, len = offset + arg.length * 3);
|
||||||
|
const view = getUint8Memory0().subarray(ptr + offset, ptr + len);
|
||||||
|
const ret = encodeString(arg, view);
|
||||||
|
|
||||||
|
offset += ret.written;
|
||||||
|
}
|
||||||
|
|
||||||
|
WASM_VECTOR_LEN = offset;
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
function debugString(val) {
|
function debugString(val) {
|
||||||
// primitive types
|
// primitive types
|
||||||
const type = typeof val;
|
const type = typeof val;
|
||||||
|
@ -133,61 +188,6 @@ function debugString(val) {
|
||||||
return className;
|
return className;
|
||||||
}
|
}
|
||||||
|
|
||||||
let WASM_VECTOR_LEN = 0;
|
|
||||||
|
|
||||||
let cachedTextEncoder = new TextEncoder('utf-8');
|
|
||||||
|
|
||||||
const encodeString = (typeof cachedTextEncoder.encodeInto === 'function'
|
|
||||||
? function (arg, view) {
|
|
||||||
return cachedTextEncoder.encodeInto(arg, view);
|
|
||||||
}
|
|
||||||
: function (arg, view) {
|
|
||||||
const buf = cachedTextEncoder.encode(arg);
|
|
||||||
view.set(buf);
|
|
||||||
return {
|
|
||||||
read: arg.length,
|
|
||||||
written: buf.length
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
function passStringToWasm0(arg, malloc, realloc) {
|
|
||||||
|
|
||||||
if (realloc === undefined) {
|
|
||||||
const buf = cachedTextEncoder.encode(arg);
|
|
||||||
const ptr = malloc(buf.length);
|
|
||||||
getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);
|
|
||||||
WASM_VECTOR_LEN = buf.length;
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
let len = arg.length;
|
|
||||||
let ptr = malloc(len);
|
|
||||||
|
|
||||||
const mem = getUint8Memory0();
|
|
||||||
|
|
||||||
let offset = 0;
|
|
||||||
|
|
||||||
for (; offset < len; offset++) {
|
|
||||||
const code = arg.charCodeAt(offset);
|
|
||||||
if (code > 0x7F) break;
|
|
||||||
mem[ptr + offset] = code;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (offset !== len) {
|
|
||||||
if (offset !== 0) {
|
|
||||||
arg = arg.slice(offset);
|
|
||||||
}
|
|
||||||
ptr = realloc(ptr, len, len = offset + arg.length * 3);
|
|
||||||
const view = getUint8Memory0().subarray(ptr + offset, ptr + len);
|
|
||||||
const ret = encodeString(arg, view);
|
|
||||||
|
|
||||||
offset += ret.written;
|
|
||||||
}
|
|
||||||
|
|
||||||
WASM_VECTOR_LEN = offset;
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
function makeMutClosure(arg0, arg1, dtor, f) {
|
function makeMutClosure(arg0, arg1, dtor, f) {
|
||||||
const state = { a: arg0, b: arg1, cnt: 1, dtor };
|
const state = { a: arg0, b: arg1, cnt: 1, dtor };
|
||||||
const real = (...args) => {
|
const real = (...args) => {
|
||||||
|
@ -212,35 +212,35 @@ function makeMutClosure(arg0, arg1, dtor, f) {
|
||||||
|
|
||||||
return real;
|
return real;
|
||||||
}
|
}
|
||||||
function __wbg_adapter_24(arg0, arg1) {
|
function __wbg_adapter_26(arg0, arg1) {
|
||||||
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__he4adf11b347d06cc(arg0, arg1);
|
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__he4adf11b347d06cc(arg0, arg1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function __wbg_adapter_27(arg0, arg1) {
|
function __wbg_adapter_29(arg0, arg1) {
|
||||||
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h320442d72495657f(arg0, arg1);
|
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h320442d72495657f(arg0, arg1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function __wbg_adapter_30(arg0, arg1, arg2) {
|
function __wbg_adapter_32(arg0, arg1, arg2) {
|
||||||
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h350fcf1db3baf9d9(arg0, arg1, addHeapObject(arg2));
|
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2118079e16ce18f6(arg0, arg1, addHeapObject(arg2));
|
||||||
}
|
}
|
||||||
|
|
||||||
function __wbg_adapter_33(arg0, arg1, arg2) {
|
function __wbg_adapter_35(arg0, arg1, arg2) {
|
||||||
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h350fcf1db3baf9d9(arg0, arg1, addHeapObject(arg2));
|
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2118079e16ce18f6(arg0, arg1, addHeapObject(arg2));
|
||||||
}
|
}
|
||||||
|
|
||||||
function __wbg_adapter_36(arg0, arg1, arg2) {
|
function __wbg_adapter_38(arg0, arg1, arg2) {
|
||||||
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h350fcf1db3baf9d9(arg0, arg1, addHeapObject(arg2));
|
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2118079e16ce18f6(arg0, arg1, addHeapObject(arg2));
|
||||||
}
|
}
|
||||||
|
|
||||||
function __wbg_adapter_39(arg0, arg1, arg2) {
|
function __wbg_adapter_41(arg0, arg1, arg2) {
|
||||||
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h350fcf1db3baf9d9(arg0, arg1, addHeapObject(arg2));
|
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2118079e16ce18f6(arg0, arg1, addHeapObject(arg2));
|
||||||
}
|
}
|
||||||
|
|
||||||
function __wbg_adapter_42(arg0, arg1, arg2) {
|
function __wbg_adapter_44(arg0, arg1, arg2) {
|
||||||
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h350fcf1db3baf9d9(arg0, arg1, addHeapObject(arg2));
|
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2118079e16ce18f6(arg0, arg1, addHeapObject(arg2));
|
||||||
}
|
}
|
||||||
|
|
||||||
function __wbg_adapter_45(arg0, arg1, arg2) {
|
function __wbg_adapter_47(arg0, arg1, arg2) {
|
||||||
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h95a2558ec93d24e8(arg0, arg1, addHeapObject(arg2));
|
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h95a2558ec93d24e8(arg0, arg1, addHeapObject(arg2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,6 +377,10 @@ async function init(input) {
|
||||||
var ret = getObject(arg0).requestAnimationFrame(getObject(arg1));
|
var ret = getObject(arg0).requestAnimationFrame(getObject(arg1));
|
||||||
return ret;
|
return ret;
|
||||||
});
|
});
|
||||||
|
imports.wbg.__wbg_fetch_f532e04b8fe49aa0 = function(arg0, arg1) {
|
||||||
|
var ret = getObject(arg0).fetch(getObject(arg1));
|
||||||
|
return addHeapObject(ret);
|
||||||
|
};
|
||||||
imports.wbg.__wbg_setInterval_a7f9e1aa48a6feb8 = handleError(function(arg0, arg1, arg2) {
|
imports.wbg.__wbg_setInterval_a7f9e1aa48a6feb8 = handleError(function(arg0, arg1, arg2) {
|
||||||
var ret = getObject(arg0).setInterval(getObject(arg1), arg2);
|
var ret = getObject(arg0).setInterval(getObject(arg1), arg2);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -389,30 +393,24 @@ async function init(input) {
|
||||||
var ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2));
|
var ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2));
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
||||||
};
|
};
|
||||||
imports.wbg.__wbindgen_object_clone_ref = function(arg0) {
|
imports.wbg.__wbg_clientX_3a14a1583294607f = function(arg0) {
|
||||||
var ret = getObject(arg0);
|
var ret = getObject(arg0).clientX;
|
||||||
return addHeapObject(ret);
|
return ret;
|
||||||
};
|
};
|
||||||
imports.wbg.__wbg_setProperty_46b9bd1b0fad730b = handleError(function(arg0, arg1, arg2, arg3, arg4) {
|
imports.wbg.__wbg_clientY_4b4a322b80551002 = function(arg0) {
|
||||||
getObject(arg0).setProperty(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
|
var ret = getObject(arg0).clientY;
|
||||||
});
|
return ret;
|
||||||
imports.wbg.__wbg_addEventListener_6a37bc32387cb66d = handleError(function(arg0, arg1, arg2, arg3) {
|
};
|
||||||
getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));
|
imports.wbg.__wbg_get_f7c7868f719f98ec = handleError(function(arg0, arg1, arg2, arg3) {
|
||||||
});
|
var ret = getObject(arg1).get(getStringFromWasm0(arg2, arg3));
|
||||||
imports.wbg.__wbg_getItem_400dba7536e6a1d8 = handleError(function(arg0, arg1, arg2, arg3) {
|
|
||||||
var ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3));
|
|
||||||
var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||||
var len0 = WASM_VECTOR_LEN;
|
var len0 = WASM_VECTOR_LEN;
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
||||||
});
|
});
|
||||||
imports.wbg.__wbg_setItem_57767b71f09c3545 = handleError(function(arg0, arg1, arg2, arg3, arg4) {
|
imports.wbg.__wbg_set_76c6c83392bce553 = handleError(function(arg0, arg1, arg2, arg3, arg4) {
|
||||||
getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
|
getObject(arg0).set(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
|
||||||
});
|
});
|
||||||
imports.wbg.__wbg_writeText_f3dba2a1b4785c80 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = getObject(arg0).writeText(getStringFromWasm0(arg1, arg2));
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_deltaX_5fac4f36a42e6ec9 = function(arg0) {
|
imports.wbg.__wbg_deltaX_5fac4f36a42e6ec9 = function(arg0) {
|
||||||
var ret = getObject(arg0).deltaX;
|
var ret = getObject(arg0).deltaX;
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -421,10 +419,75 @@ async function init(input) {
|
||||||
var ret = getObject(arg0).deltaY;
|
var ret = getObject(arg0).deltaY;
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
imports.wbg.__wbg_instanceof_Response_f52c65c389890639 = function(arg0) {
|
||||||
|
var ret = getObject(arg0) instanceof Response;
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
imports.wbg.__wbg_url_87c62d9fe8f97de1 = function(arg0, arg1) {
|
||||||
|
var ret = getObject(arg1).url;
|
||||||
|
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||||
|
var len0 = WASM_VECTOR_LEN;
|
||||||
|
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
||||||
|
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
||||||
|
};
|
||||||
|
imports.wbg.__wbg_status_f3cb2b4d20a23f59 = function(arg0) {
|
||||||
|
var ret = getObject(arg0).status;
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
imports.wbg.__wbg_ok_c20643e0a45dc5a0 = function(arg0) {
|
||||||
|
var ret = getObject(arg0).ok;
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
imports.wbg.__wbg_statusText_76ce672b84096caf = function(arg0, arg1) {
|
||||||
|
var ret = getObject(arg1).statusText;
|
||||||
|
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||||
|
var len0 = WASM_VECTOR_LEN;
|
||||||
|
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
||||||
|
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
||||||
|
};
|
||||||
|
imports.wbg.__wbg_headers_6fafb2c7669a8ac5 = function(arg0) {
|
||||||
|
var ret = getObject(arg0).headers;
|
||||||
|
return addHeapObject(ret);
|
||||||
|
};
|
||||||
|
imports.wbg.__wbg_arrayBuffer_0ba17dfaad804b6f = handleError(function(arg0) {
|
||||||
|
var ret = getObject(arg0).arrayBuffer();
|
||||||
|
return addHeapObject(ret);
|
||||||
|
});
|
||||||
|
imports.wbg.__wbg_writeText_f3dba2a1b4785c80 = function(arg0, arg1, arg2) {
|
||||||
|
var ret = getObject(arg0).writeText(getStringFromWasm0(arg1, arg2));
|
||||||
|
return addHeapObject(ret);
|
||||||
|
};
|
||||||
imports.wbg.__wbg_now_7628760b7b640632 = function(arg0) {
|
imports.wbg.__wbg_now_7628760b7b640632 = function(arg0) {
|
||||||
var ret = getObject(arg0).now();
|
var ret = getObject(arg0).now();
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
imports.wbg.__wbg_pageX_7d397506a4ad73f2 = function(arg0) {
|
||||||
|
var ret = getObject(arg0).pageX;
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
imports.wbg.__wbg_pageY_83f6542b172abf6f = function(arg0) {
|
||||||
|
var ret = getObject(arg0).pageY;
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
imports.wbg.__wbg_headers_5f70b64960218e2f = function(arg0) {
|
||||||
|
var ret = getObject(arg0).headers;
|
||||||
|
return addHeapObject(ret);
|
||||||
|
};
|
||||||
|
imports.wbg.__wbg_newwithstrandinit_11debb554792e043 = handleError(function(arg0, arg1, arg2) {
|
||||||
|
var ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));
|
||||||
|
return addHeapObject(ret);
|
||||||
|
});
|
||||||
|
imports.wbg.__wbg_get_3315e8e7e59a2c40 = function(arg0, arg1) {
|
||||||
|
var ret = getObject(arg0)[arg1 >>> 0];
|
||||||
|
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
||||||
|
};
|
||||||
|
imports.wbg.__wbg_getData_10c8cb329803d2b8 = handleError(function(arg0, arg1, arg2, arg3) {
|
||||||
|
var ret = getObject(arg1).getData(getStringFromWasm0(arg2, arg3));
|
||||||
|
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||||
|
var len0 = WASM_VECTOR_LEN;
|
||||||
|
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
||||||
|
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
||||||
|
});
|
||||||
imports.wbg.__wbg_instanceof_HtmlCanvasElement_7bd3ee7838f11fc3 = function(arg0) {
|
imports.wbg.__wbg_instanceof_HtmlCanvasElement_7bd3ee7838f11fc3 = function(arg0) {
|
||||||
var ret = getObject(arg0) instanceof HTMLCanvasElement;
|
var ret = getObject(arg0) instanceof HTMLCanvasElement;
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -447,25 +510,6 @@ async function init(input) {
|
||||||
var ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2));
|
var ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2));
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
||||||
});
|
});
|
||||||
imports.wbg.__wbg_pageX_7d397506a4ad73f2 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).pageX;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_pageY_83f6542b172abf6f = function(arg0) {
|
|
||||||
var ret = getObject(arg0).pageY;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_clipboardData_503a7e4407c6231c = function(arg0) {
|
|
||||||
var ret = getObject(arg0).clipboardData;
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getData_10c8cb329803d2b8 = handleError(function(arg0, arg1, arg2, arg3) {
|
|
||||||
var ret = getObject(arg1).getData(getStringFromWasm0(arg2, arg3));
|
|
||||||
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
||||||
var len0 = WASM_VECTOR_LEN;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_keyCode_47f9e9228bc483bf = function(arg0) {
|
imports.wbg.__wbg_keyCode_47f9e9228bc483bf = function(arg0) {
|
||||||
var ret = getObject(arg0).keyCode;
|
var ret = getObject(arg0).keyCode;
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -497,10 +541,6 @@ async function init(input) {
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
||||||
};
|
};
|
||||||
imports.wbg.__wbg_get_3315e8e7e59a2c40 = function(arg0, arg1) {
|
|
||||||
var ret = getObject(arg0)[arg1 >>> 0];
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getBoundingClientRect_505844bd8eb35668 = function(arg0) {
|
imports.wbg.__wbg_getBoundingClientRect_505844bd8eb35668 = function(arg0) {
|
||||||
var ret = getObject(arg0).getBoundingClientRect();
|
var ret = getObject(arg0).getBoundingClientRect();
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
|
@ -656,6 +696,30 @@ async function init(input) {
|
||||||
var ret = getObject(arg0).clipboard;
|
var ret = getObject(arg0).clipboard;
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
};
|
};
|
||||||
|
imports.wbg.__wbindgen_object_clone_ref = function(arg0) {
|
||||||
|
var ret = getObject(arg0);
|
||||||
|
return addHeapObject(ret);
|
||||||
|
};
|
||||||
|
imports.wbg.__wbg_clipboardData_503a7e4407c6231c = function(arg0) {
|
||||||
|
var ret = getObject(arg0).clipboardData;
|
||||||
|
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
||||||
|
};
|
||||||
|
imports.wbg.__wbg_getItem_400dba7536e6a1d8 = handleError(function(arg0, arg1, arg2, arg3) {
|
||||||
|
var ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3));
|
||||||
|
var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||||
|
var len0 = WASM_VECTOR_LEN;
|
||||||
|
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
||||||
|
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
||||||
|
});
|
||||||
|
imports.wbg.__wbg_setItem_57767b71f09c3545 = handleError(function(arg0, arg1, arg2, arg3, arg4) {
|
||||||
|
getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
|
||||||
|
});
|
||||||
|
imports.wbg.__wbg_setProperty_46b9bd1b0fad730b = handleError(function(arg0, arg1, arg2, arg3, arg4) {
|
||||||
|
getObject(arg0).setProperty(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
|
||||||
|
});
|
||||||
|
imports.wbg.__wbg_addEventListener_6a37bc32387cb66d = handleError(function(arg0, arg1, arg2, arg3) {
|
||||||
|
getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));
|
||||||
|
});
|
||||||
imports.wbg.__wbg_hash_6e2c452e02822d19 = handleError(function(arg0, arg1) {
|
imports.wbg.__wbg_hash_6e2c452e02822d19 = handleError(function(arg0, arg1) {
|
||||||
var ret = getObject(arg1).hash;
|
var ret = getObject(arg1).hash;
|
||||||
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||||
|
@ -663,14 +727,6 @@ async function init(input) {
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
||||||
});
|
});
|
||||||
imports.wbg.__wbg_clientX_3a14a1583294607f = function(arg0) {
|
|
||||||
var ret = getObject(arg0).clientX;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_clientY_4b4a322b80551002 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).clientY;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_call_951bd0c6d815d6f1 = handleError(function(arg0, arg1) {
|
imports.wbg.__wbg_call_951bd0c6d815d6f1 = handleError(function(arg0, arg1) {
|
||||||
var ret = getObject(arg0).call(getObject(arg1));
|
var ret = getObject(arg0).call(getObject(arg1));
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
|
@ -699,6 +755,10 @@ async function init(input) {
|
||||||
var ret = new Date();
|
var ret = new Date();
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
};
|
};
|
||||||
|
imports.wbg.__wbg_new_ba07d0daa0e4677e = function() {
|
||||||
|
var ret = new Object();
|
||||||
|
return addHeapObject(ret);
|
||||||
|
};
|
||||||
imports.wbg.__wbg_resolve_6e61e640925a0db9 = function(arg0) {
|
imports.wbg.__wbg_resolve_6e61e640925a0db9 = function(arg0) {
|
||||||
var ret = Promise.resolve(getObject(arg0));
|
var ret = Promise.resolve(getObject(arg0));
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
|
@ -743,6 +803,13 @@ async function init(input) {
|
||||||
var ret = new Uint8Array(getObject(arg0));
|
var ret = new Uint8Array(getObject(arg0));
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
};
|
};
|
||||||
|
imports.wbg.__wbg_set_b91afac9fd216d99 = function(arg0, arg1, arg2) {
|
||||||
|
getObject(arg0).set(getObject(arg1), arg2 >>> 0);
|
||||||
|
};
|
||||||
|
imports.wbg.__wbg_length_c645e7c02233b440 = function(arg0) {
|
||||||
|
var ret = getObject(arg0).length;
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
imports.wbg.__wbg_new_2863e4d532e8dfb4 = function(arg0) {
|
imports.wbg.__wbg_new_2863e4d532e8dfb4 = function(arg0) {
|
||||||
var ret = new Float32Array(getObject(arg0));
|
var ret = new Float32Array(getObject(arg0));
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
|
@ -763,12 +830,24 @@ async function init(input) {
|
||||||
var ret = getObject(arg0) instanceof WebAssembly.Memory;
|
var ret = getObject(arg0) instanceof WebAssembly.Memory;
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
imports.wbg.__wbg_set_9bdd413385146137 = handleError(function(arg0, arg1, arg2) {
|
||||||
|
var ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));
|
||||||
|
return ret;
|
||||||
|
});
|
||||||
imports.wbg.__wbindgen_number_get = function(arg0, arg1) {
|
imports.wbg.__wbindgen_number_get = function(arg0, arg1) {
|
||||||
const obj = getObject(arg1);
|
const obj = getObject(arg1);
|
||||||
var ret = typeof(obj) === 'number' ? obj : undefined;
|
var ret = typeof(obj) === 'number' ? obj : undefined;
|
||||||
getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;
|
getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);
|
getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);
|
||||||
};
|
};
|
||||||
|
imports.wbg.__wbindgen_string_get = function(arg0, arg1) {
|
||||||
|
const obj = getObject(arg1);
|
||||||
|
var ret = typeof(obj) === 'string' ? obj : undefined;
|
||||||
|
var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||||
|
var len0 = WASM_VECTOR_LEN;
|
||||||
|
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
||||||
|
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
||||||
|
};
|
||||||
imports.wbg.__wbindgen_boolean_get = function(arg0) {
|
imports.wbg.__wbindgen_boolean_get = function(arg0) {
|
||||||
const v = getObject(arg0);
|
const v = getObject(arg0);
|
||||||
var ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;
|
var ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;
|
||||||
|
@ -791,36 +870,36 @@ async function init(input) {
|
||||||
var ret = wasm.memory;
|
var ret = wasm.memory;
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
};
|
};
|
||||||
imports.wbg.__wbindgen_closure_wrapper633 = function(arg0, arg1, arg2) {
|
imports.wbg.__wbindgen_closure_wrapper2178 = function(arg0, arg1, arg2) {
|
||||||
var ret = makeMutClosure(arg0, arg1, 110, __wbg_adapter_24);
|
var ret = makeMutClosure(arg0, arg1, 536, __wbg_adapter_26);
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
};
|
};
|
||||||
imports.wbg.__wbindgen_closure_wrapper634 = function(arg0, arg1, arg2) {
|
imports.wbg.__wbindgen_closure_wrapper2179 = function(arg0, arg1, arg2) {
|
||||||
var ret = makeMutClosure(arg0, arg1, 110, __wbg_adapter_27);
|
var ret = makeMutClosure(arg0, arg1, 536, __wbg_adapter_29);
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
};
|
};
|
||||||
imports.wbg.__wbindgen_closure_wrapper637 = function(arg0, arg1, arg2) {
|
imports.wbg.__wbindgen_closure_wrapper2182 = function(arg0, arg1, arg2) {
|
||||||
var ret = makeMutClosure(arg0, arg1, 110, __wbg_adapter_30);
|
var ret = makeMutClosure(arg0, arg1, 536, __wbg_adapter_32);
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
};
|
};
|
||||||
imports.wbg.__wbindgen_closure_wrapper639 = function(arg0, arg1, arg2) {
|
imports.wbg.__wbindgen_closure_wrapper2184 = function(arg0, arg1, arg2) {
|
||||||
var ret = makeMutClosure(arg0, arg1, 110, __wbg_adapter_33);
|
var ret = makeMutClosure(arg0, arg1, 536, __wbg_adapter_35);
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
};
|
};
|
||||||
imports.wbg.__wbindgen_closure_wrapper641 = function(arg0, arg1, arg2) {
|
imports.wbg.__wbindgen_closure_wrapper2186 = function(arg0, arg1, arg2) {
|
||||||
var ret = makeMutClosure(arg0, arg1, 110, __wbg_adapter_36);
|
var ret = makeMutClosure(arg0, arg1, 536, __wbg_adapter_38);
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
};
|
};
|
||||||
imports.wbg.__wbindgen_closure_wrapper643 = function(arg0, arg1, arg2) {
|
imports.wbg.__wbindgen_closure_wrapper2188 = function(arg0, arg1, arg2) {
|
||||||
var ret = makeMutClosure(arg0, arg1, 110, __wbg_adapter_39);
|
var ret = makeMutClosure(arg0, arg1, 536, __wbg_adapter_41);
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
};
|
};
|
||||||
imports.wbg.__wbindgen_closure_wrapper645 = function(arg0, arg1, arg2) {
|
imports.wbg.__wbindgen_closure_wrapper2190 = function(arg0, arg1, arg2) {
|
||||||
var ret = makeMutClosure(arg0, arg1, 110, __wbg_adapter_42);
|
var ret = makeMutClosure(arg0, arg1, 536, __wbg_adapter_44);
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
};
|
};
|
||||||
imports.wbg.__wbindgen_closure_wrapper1422 = function(arg0, arg1, arg2) {
|
imports.wbg.__wbindgen_closure_wrapper3036 = function(arg0, arg1, arg2) {
|
||||||
var ret = makeMutClosure(arg0, arg1, 179, __wbg_adapter_45);
|
var ret = makeMutClosure(arg0, arg1, 608, __wbg_adapter_47);
|
||||||
return addHeapObject(ret);
|
return addHeapObject(ret);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -2,74 +2,11 @@
|
||||||
<html>
|
<html>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
|
||||||
<!-- Disable zooming: -->
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
|
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>Egui Example App</title>
|
<meta http-equiv="refresh" content="0; url = /index.html#http" />
|
||||||
<style>
|
|
||||||
html {
|
|
||||||
/* Remove touch delay: */
|
|
||||||
touch-action: manipulation;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background: #202020;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Allow canvas to fill entire web page: */
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
overflow: hidden;
|
|
||||||
margin: 0 !important;
|
|
||||||
padding: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Center canvas vertically and horizontally: */
|
|
||||||
canvas {
|
|
||||||
margin-right: auto;
|
|
||||||
margin-left: auto;
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<!-- The WASM code will resize this dynamically -->
|
|
||||||
<canvas id="the_canvas_id"></canvas>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// The `--no-modules`-generated JS from `wasm-bindgen` attempts to use
|
|
||||||
// `WebAssembly.instantiateStreaming` to instantiate the wasm module,
|
|
||||||
// but this doesn't work with `file://` urls. This example is frequently
|
|
||||||
// viewed by simply opening `index.html` in a browser (with a `file://`
|
|
||||||
// url), so it would fail if we were to call this function!
|
|
||||||
//
|
|
||||||
// Work around this for now by deleting the function to ensure that the
|
|
||||||
// `no_modules.js` script doesn't have access to it. You won't need this
|
|
||||||
// hack when deploying over HTTP.
|
|
||||||
delete WebAssembly.instantiateStreaming;
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<!-- this is the JS generated by the `wasm-bindgen` CLI tool -->
|
|
||||||
<script src="example_web.js"></script>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// We'll defer our execution until the wasm is ready to go.
|
|
||||||
// Here we tell bindgen the path to the wasm file so it can start
|
|
||||||
// initialization and return to us a promise when it's done.
|
|
||||||
wasm_bindgen("./example_web_bg.wasm")
|
|
||||||
.then(on_wasm_loaded)["catch"](console.error);
|
|
||||||
|
|
||||||
function on_wasm_loaded() {
|
|
||||||
// This call installs a bunch of callbacks and then returns.
|
|
||||||
wasm_bindgen.start("the_canvas_id");
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,920 +0,0 @@
|
||||||
let wasm_bindgen;
|
|
||||||
(function() {
|
|
||||||
const __exports = {};
|
|
||||||
let wasm;
|
|
||||||
|
|
||||||
const heap = new Array(32).fill(undefined);
|
|
||||||
|
|
||||||
heap.push(undefined, null, true, false);
|
|
||||||
|
|
||||||
function getObject(idx) { return heap[idx]; }
|
|
||||||
|
|
||||||
let heap_next = heap.length;
|
|
||||||
|
|
||||||
function dropObject(idx) {
|
|
||||||
if (idx < 36) return;
|
|
||||||
heap[idx] = heap_next;
|
|
||||||
heap_next = idx;
|
|
||||||
}
|
|
||||||
|
|
||||||
function takeObject(idx) {
|
|
||||||
const ret = getObject(idx);
|
|
||||||
dropObject(idx);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
|
|
||||||
|
|
||||||
cachedTextDecoder.decode();
|
|
||||||
|
|
||||||
let cachegetUint8Memory0 = null;
|
|
||||||
function getUint8Memory0() {
|
|
||||||
if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {
|
|
||||||
cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);
|
|
||||||
}
|
|
||||||
return cachegetUint8Memory0;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getStringFromWasm0(ptr, len) {
|
|
||||||
return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));
|
|
||||||
}
|
|
||||||
|
|
||||||
function addHeapObject(obj) {
|
|
||||||
if (heap_next === heap.length) heap.push(heap.length + 1);
|
|
||||||
const idx = heap_next;
|
|
||||||
heap_next = heap[idx];
|
|
||||||
|
|
||||||
heap[idx] = obj;
|
|
||||||
return idx;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isLikeNone(x) {
|
|
||||||
return x === undefined || x === null;
|
|
||||||
}
|
|
||||||
|
|
||||||
let cachegetFloat64Memory0 = null;
|
|
||||||
function getFloat64Memory0() {
|
|
||||||
if (cachegetFloat64Memory0 === null || cachegetFloat64Memory0.buffer !== wasm.memory.buffer) {
|
|
||||||
cachegetFloat64Memory0 = new Float64Array(wasm.memory.buffer);
|
|
||||||
}
|
|
||||||
return cachegetFloat64Memory0;
|
|
||||||
}
|
|
||||||
|
|
||||||
let cachegetInt32Memory0 = null;
|
|
||||||
function getInt32Memory0() {
|
|
||||||
if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {
|
|
||||||
cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);
|
|
||||||
}
|
|
||||||
return cachegetInt32Memory0;
|
|
||||||
}
|
|
||||||
|
|
||||||
let WASM_VECTOR_LEN = 0;
|
|
||||||
|
|
||||||
let cachedTextEncoder = new TextEncoder('utf-8');
|
|
||||||
|
|
||||||
const encodeString = (typeof cachedTextEncoder.encodeInto === 'function'
|
|
||||||
? function (arg, view) {
|
|
||||||
return cachedTextEncoder.encodeInto(arg, view);
|
|
||||||
}
|
|
||||||
: function (arg, view) {
|
|
||||||
const buf = cachedTextEncoder.encode(arg);
|
|
||||||
view.set(buf);
|
|
||||||
return {
|
|
||||||
read: arg.length,
|
|
||||||
written: buf.length
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
function passStringToWasm0(arg, malloc, realloc) {
|
|
||||||
|
|
||||||
if (realloc === undefined) {
|
|
||||||
const buf = cachedTextEncoder.encode(arg);
|
|
||||||
const ptr = malloc(buf.length);
|
|
||||||
getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);
|
|
||||||
WASM_VECTOR_LEN = buf.length;
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
let len = arg.length;
|
|
||||||
let ptr = malloc(len);
|
|
||||||
|
|
||||||
const mem = getUint8Memory0();
|
|
||||||
|
|
||||||
let offset = 0;
|
|
||||||
|
|
||||||
for (; offset < len; offset++) {
|
|
||||||
const code = arg.charCodeAt(offset);
|
|
||||||
if (code > 0x7F) break;
|
|
||||||
mem[ptr + offset] = code;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (offset !== len) {
|
|
||||||
if (offset !== 0) {
|
|
||||||
arg = arg.slice(offset);
|
|
||||||
}
|
|
||||||
ptr = realloc(ptr, len, len = offset + arg.length * 3);
|
|
||||||
const view = getUint8Memory0().subarray(ptr + offset, ptr + len);
|
|
||||||
const ret = encodeString(arg, view);
|
|
||||||
|
|
||||||
offset += ret.written;
|
|
||||||
}
|
|
||||||
|
|
||||||
WASM_VECTOR_LEN = offset;
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
function debugString(val) {
|
|
||||||
// primitive types
|
|
||||||
const type = typeof val;
|
|
||||||
if (type == 'number' || type == 'boolean' || val == null) {
|
|
||||||
return `${val}`;
|
|
||||||
}
|
|
||||||
if (type == 'string') {
|
|
||||||
return `"${val}"`;
|
|
||||||
}
|
|
||||||
if (type == 'symbol') {
|
|
||||||
const description = val.description;
|
|
||||||
if (description == null) {
|
|
||||||
return 'Symbol';
|
|
||||||
} else {
|
|
||||||
return `Symbol(${description})`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (type == 'function') {
|
|
||||||
const name = val.name;
|
|
||||||
if (typeof name == 'string' && name.length > 0) {
|
|
||||||
return `Function(${name})`;
|
|
||||||
} else {
|
|
||||||
return 'Function';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// objects
|
|
||||||
if (Array.isArray(val)) {
|
|
||||||
const length = val.length;
|
|
||||||
let debug = '[';
|
|
||||||
if (length > 0) {
|
|
||||||
debug += debugString(val[0]);
|
|
||||||
}
|
|
||||||
for(let i = 1; i < length; i++) {
|
|
||||||
debug += ', ' + debugString(val[i]);
|
|
||||||
}
|
|
||||||
debug += ']';
|
|
||||||
return debug;
|
|
||||||
}
|
|
||||||
// Test for built-in
|
|
||||||
const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val));
|
|
||||||
let className;
|
|
||||||
if (builtInMatches.length > 1) {
|
|
||||||
className = builtInMatches[1];
|
|
||||||
} else {
|
|
||||||
// Failed to match the standard '[object ClassName]'
|
|
||||||
return toString.call(val);
|
|
||||||
}
|
|
||||||
if (className == 'Object') {
|
|
||||||
// we're a user defined class or Object
|
|
||||||
// JSON.stringify avoids problems with cycles, and is generally much
|
|
||||||
// easier than looping through ownProperties of `val`.
|
|
||||||
try {
|
|
||||||
return 'Object(' + JSON.stringify(val) + ')';
|
|
||||||
} catch (_) {
|
|
||||||
return 'Object';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// errors
|
|
||||||
if (val instanceof Error) {
|
|
||||||
return `${val.name}: ${val.message}\n${val.stack}`;
|
|
||||||
}
|
|
||||||
// TODO we could test for more things here, like `Set`s and `Map`s.
|
|
||||||
return className;
|
|
||||||
}
|
|
||||||
|
|
||||||
function makeMutClosure(arg0, arg1, dtor, f) {
|
|
||||||
const state = { a: arg0, b: arg1, cnt: 1, dtor };
|
|
||||||
const real = (...args) => {
|
|
||||||
// First up with a closure we increment the internal reference
|
|
||||||
// count. This ensures that the Rust closure environment won't
|
|
||||||
// be deallocated while we're invoking it.
|
|
||||||
state.cnt++;
|
|
||||||
const a = state.a;
|
|
||||||
state.a = 0;
|
|
||||||
try {
|
|
||||||
return f(a, state.b, ...args);
|
|
||||||
} finally {
|
|
||||||
if (--state.cnt === 0) {
|
|
||||||
wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
state.a = a;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
real.original = state;
|
|
||||||
|
|
||||||
return real;
|
|
||||||
}
|
|
||||||
function __wbg_adapter_26(arg0, arg1) {
|
|
||||||
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__ha6040ef78a20dc3d(arg0, arg1);
|
|
||||||
}
|
|
||||||
|
|
||||||
function __wbg_adapter_29(arg0, arg1) {
|
|
||||||
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hb636d883df42a5fe(arg0, arg1);
|
|
||||||
}
|
|
||||||
|
|
||||||
function __wbg_adapter_32(arg0, arg1, arg2) {
|
|
||||||
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h09606316665c66a3(arg0, arg1, addHeapObject(arg2));
|
|
||||||
}
|
|
||||||
|
|
||||||
function __wbg_adapter_35(arg0, arg1, arg2) {
|
|
||||||
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h09606316665c66a3(arg0, arg1, addHeapObject(arg2));
|
|
||||||
}
|
|
||||||
|
|
||||||
function __wbg_adapter_38(arg0, arg1, arg2) {
|
|
||||||
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h09606316665c66a3(arg0, arg1, addHeapObject(arg2));
|
|
||||||
}
|
|
||||||
|
|
||||||
function __wbg_adapter_41(arg0, arg1, arg2) {
|
|
||||||
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h09606316665c66a3(arg0, arg1, addHeapObject(arg2));
|
|
||||||
}
|
|
||||||
|
|
||||||
function __wbg_adapter_44(arg0, arg1, arg2) {
|
|
||||||
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h09606316665c66a3(arg0, arg1, addHeapObject(arg2));
|
|
||||||
}
|
|
||||||
|
|
||||||
function __wbg_adapter_47(arg0, arg1, arg2) {
|
|
||||||
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h12005363cbd858d6(arg0, arg1, addHeapObject(arg2));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the entry-point for all the web-assembly.
|
|
||||||
* This is called once from the HTML.
|
|
||||||
* It loads the app, installs some callbacks, then returns.
|
|
||||||
* You can add more callbacks like this if you want to call in to your code.
|
|
||||||
* @param {string} canvas_id
|
|
||||||
*/
|
|
||||||
__exports.start = function(canvas_id) {
|
|
||||||
var ptr0 = passStringToWasm0(canvas_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
||||||
var len0 = WASM_VECTOR_LEN;
|
|
||||||
wasm.start(ptr0, len0);
|
|
||||||
};
|
|
||||||
|
|
||||||
function handleError(f) {
|
|
||||||
return function () {
|
|
||||||
try {
|
|
||||||
return f.apply(this, arguments);
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
wasm.__wbindgen_exn_store(addHeapObject(e));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function getArrayU8FromWasm0(ptr, len) {
|
|
||||||
return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);
|
|
||||||
}
|
|
||||||
|
|
||||||
async function load(module, imports) {
|
|
||||||
if (typeof Response === 'function' && module instanceof Response) {
|
|
||||||
|
|
||||||
if (typeof WebAssembly.instantiateStreaming === 'function') {
|
|
||||||
try {
|
|
||||||
return await WebAssembly.instantiateStreaming(module, imports);
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
if (module.headers.get('Content-Type') != 'application/wasm') {
|
|
||||||
console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const bytes = await module.arrayBuffer();
|
|
||||||
return await WebAssembly.instantiate(bytes, imports);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
const instance = await WebAssembly.instantiate(module, imports);
|
|
||||||
|
|
||||||
if (instance instanceof WebAssembly.Instance) {
|
|
||||||
return { instance, module };
|
|
||||||
|
|
||||||
} else {
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function init(input) {
|
|
||||||
if (typeof input === 'undefined') {
|
|
||||||
let src;
|
|
||||||
if (typeof document === 'undefined') {
|
|
||||||
src = location.href;
|
|
||||||
} else {
|
|
||||||
src = document.currentScript.src;
|
|
||||||
}
|
|
||||||
input = src.replace(/\.js$/, '_bg.wasm');
|
|
||||||
}
|
|
||||||
const imports = {};
|
|
||||||
imports.wbg = {};
|
|
||||||
imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
|
|
||||||
takeObject(arg0);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_cb_drop = function(arg0) {
|
|
||||||
const obj = takeObject(arg0).original;
|
|
||||||
if (obj.cnt-- == 1) {
|
|
||||||
obj.a = 0;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
var ret = false;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_string_new = function(arg0, arg1) {
|
|
||||||
var ret = getStringFromWasm0(arg0, arg1);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_instanceof_Window_49f532f06a9786ee = function(arg0) {
|
|
||||||
var ret = getObject(arg0) instanceof Window;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_document_c0366b39e4f4c89a = function(arg0) {
|
|
||||||
var ret = getObject(arg0).document;
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_location_c1e50a6e4c53d45c = function(arg0) {
|
|
||||||
var ret = getObject(arg0).location;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_navigator_95ba9cd684cf90aa = function(arg0) {
|
|
||||||
var ret = getObject(arg0).navigator;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_innerWidth_cea04a991524ea87 = handleError(function(arg0) {
|
|
||||||
var ret = getObject(arg0).innerWidth;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_innerHeight_83651dca462998d1 = handleError(function(arg0) {
|
|
||||||
var ret = getObject(arg0).innerHeight;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_devicePixelRatio_268c49438a600d53 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).devicePixelRatio;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_performance_87e4f3b6f966469f = function(arg0) {
|
|
||||||
var ret = getObject(arg0).performance;
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_localStorage_a6fd83fc300473fc = handleError(function(arg0) {
|
|
||||||
var ret = getObject(arg0).localStorage;
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_open_f355af0fd051a9d8 = handleError(function(arg0, arg1, arg2, arg3, arg4) {
|
|
||||||
var ret = getObject(arg0).open(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_requestAnimationFrame_ef0e2294dc8b1088 = handleError(function(arg0, arg1) {
|
|
||||||
var ret = getObject(arg0).requestAnimationFrame(getObject(arg1));
|
|
||||||
return ret;
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_fetch_f532e04b8fe49aa0 = function(arg0, arg1) {
|
|
||||||
var ret = getObject(arg0).fetch(getObject(arg1));
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_setInterval_a7f9e1aa48a6feb8 = handleError(function(arg0, arg1, arg2) {
|
|
||||||
var ret = getObject(arg0).setInterval(getObject(arg1), arg2);
|
|
||||||
return ret;
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_body_c8cb19d760637268 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).body;
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getElementById_15aef17a620252b4 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2));
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_object_clone_ref = function(arg0) {
|
|
||||||
var ret = getObject(arg0);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_setProperty_46b9bd1b0fad730b = handleError(function(arg0, arg1, arg2, arg3, arg4) {
|
|
||||||
getObject(arg0).setProperty(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_addEventListener_6a37bc32387cb66d = handleError(function(arg0, arg1, arg2, arg3) {
|
|
||||||
getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_getItem_400dba7536e6a1d8 = handleError(function(arg0, arg1, arg2, arg3) {
|
|
||||||
var ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3));
|
|
||||||
var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
||||||
var len0 = WASM_VECTOR_LEN;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_setItem_57767b71f09c3545 = handleError(function(arg0, arg1, arg2, arg3, arg4) {
|
|
||||||
getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_writeText_f3dba2a1b4785c80 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = getObject(arg0).writeText(getStringFromWasm0(arg1, arg2));
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_get_f7c7868f719f98ec = handleError(function(arg0, arg1, arg2, arg3) {
|
|
||||||
var ret = getObject(arg1).get(getStringFromWasm0(arg2, arg3));
|
|
||||||
var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
||||||
var len0 = WASM_VECTOR_LEN;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_set_76c6c83392bce553 = handleError(function(arg0, arg1, arg2, arg3, arg4) {
|
|
||||||
getObject(arg0).set(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_deltaX_5fac4f36a42e6ec9 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).deltaX;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_deltaY_2722120e563d3160 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).deltaY;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_instanceof_Response_f52c65c389890639 = function(arg0) {
|
|
||||||
var ret = getObject(arg0) instanceof Response;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_url_87c62d9fe8f97de1 = function(arg0, arg1) {
|
|
||||||
var ret = getObject(arg1).url;
|
|
||||||
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
||||||
var len0 = WASM_VECTOR_LEN;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_status_f3cb2b4d20a23f59 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).status;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_ok_c20643e0a45dc5a0 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).ok;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_statusText_76ce672b84096caf = function(arg0, arg1) {
|
|
||||||
var ret = getObject(arg1).statusText;
|
|
||||||
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
||||||
var len0 = WASM_VECTOR_LEN;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_headers_6fafb2c7669a8ac5 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).headers;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_arrayBuffer_0ba17dfaad804b6f = handleError(function(arg0) {
|
|
||||||
var ret = getObject(arg0).arrayBuffer();
|
|
||||||
return addHeapObject(ret);
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_now_7628760b7b640632 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).now();
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_headers_5f70b64960218e2f = function(arg0) {
|
|
||||||
var ret = getObject(arg0).headers;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_newwithstrandinit_11debb554792e043 = handleError(function(arg0, arg1, arg2) {
|
|
||||||
var ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));
|
|
||||||
return addHeapObject(ret);
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_instanceof_HtmlCanvasElement_7bd3ee7838f11fc3 = function(arg0) {
|
|
||||||
var ret = getObject(arg0) instanceof HTMLCanvasElement;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_width_0efa4604d41c58c5 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).width;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_setwidth_1d0e975feecff3ef = function(arg0, arg1) {
|
|
||||||
getObject(arg0).width = arg1 >>> 0;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_height_aa24e3fef658c4a8 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).height;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_setheight_7758ee3ff5c65474 = function(arg0, arg1) {
|
|
||||||
getObject(arg0).height = arg1 >>> 0;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getContext_3db9399e6dc524ff = handleError(function(arg0, arg1, arg2) {
|
|
||||||
var ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2));
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_pageX_7d397506a4ad73f2 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).pageX;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_pageY_83f6542b172abf6f = function(arg0) {
|
|
||||||
var ret = getObject(arg0).pageY;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_clipboardData_503a7e4407c6231c = function(arg0) {
|
|
||||||
var ret = getObject(arg0).clipboardData;
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getData_10c8cb329803d2b8 = handleError(function(arg0, arg1, arg2, arg3) {
|
|
||||||
var ret = getObject(arg1).getData(getStringFromWasm0(arg2, arg3));
|
|
||||||
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
||||||
var len0 = WASM_VECTOR_LEN;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_keyCode_47f9e9228bc483bf = function(arg0) {
|
|
||||||
var ret = getObject(arg0).keyCode;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_altKey_8a59e1cf32636010 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).altKey;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_ctrlKey_17377b46ca5a072d = function(arg0) {
|
|
||||||
var ret = getObject(arg0).ctrlKey;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_shiftKey_09be9a7e6cad7a99 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).shiftKey;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_metaKey_a707288e6c45a0e0 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).metaKey;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_isComposing_15a35cffb04ab10f = function(arg0) {
|
|
||||||
var ret = getObject(arg0).isComposing;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_key_d9b602f48baca7bc = function(arg0, arg1) {
|
|
||||||
var ret = getObject(arg1).key;
|
|
||||||
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
||||||
var len0 = WASM_VECTOR_LEN;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_get_3315e8e7e59a2c40 = function(arg0, arg1) {
|
|
||||||
var ret = getObject(arg0)[arg1 >>> 0];
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getBoundingClientRect_505844bd8eb35668 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).getBoundingClientRect();
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_instanceof_WebGlRenderingContext_ef4e51c6e4133d85 = function(arg0) {
|
|
||||||
var ret = getObject(arg0) instanceof WebGLRenderingContext;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_bufferData_dc5899657e9f1803 = function(arg0, arg1, arg2, arg3) {
|
|
||||||
getObject(arg0).bufferData(arg1 >>> 0, getObject(arg2), arg3 >>> 0);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_texImage2D_a4011abffe0229fb = handleError(function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) {
|
|
||||||
getObject(arg0).texImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, arg9 === 0 ? undefined : getArrayU8FromWasm0(arg9, arg10));
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_activeTexture_a51ec6273de88bc6 = function(arg0, arg1) {
|
|
||||||
getObject(arg0).activeTexture(arg1 >>> 0);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_attachShader_0dd248f6ab98fcf2 = function(arg0, arg1, arg2) {
|
|
||||||
getObject(arg0).attachShader(getObject(arg1), getObject(arg2));
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_bindBuffer_1ceb83e9674e812a = function(arg0, arg1, arg2) {
|
|
||||||
getObject(arg0).bindBuffer(arg1 >>> 0, getObject(arg2));
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_bindTexture_6121e6db3f879582 = function(arg0, arg1, arg2) {
|
|
||||||
getObject(arg0).bindTexture(arg1 >>> 0, getObject(arg2));
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_blendFunc_34a6bb31770822c5 = function(arg0, arg1, arg2) {
|
|
||||||
getObject(arg0).blendFunc(arg1 >>> 0, arg2 >>> 0);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_clear_f6b2dd48aeed2752 = function(arg0, arg1) {
|
|
||||||
getObject(arg0).clear(arg1 >>> 0);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_clearColor_89f7819aa9f80129 = function(arg0, arg1, arg2, arg3, arg4) {
|
|
||||||
getObject(arg0).clearColor(arg1, arg2, arg3, arg4);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_compileShader_28bdbafe4445d24b = function(arg0, arg1) {
|
|
||||||
getObject(arg0).compileShader(getObject(arg1));
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_createBuffer_acedc3831832a280 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).createBuffer();
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_createProgram_7e2f44b7b74694d4 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).createProgram();
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_createShader_64c474f1d1d0c1f8 = function(arg0, arg1) {
|
|
||||||
var ret = getObject(arg0).createShader(arg1 >>> 0);
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_createTexture_0a156dab1efc3499 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).createTexture();
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_disable_5b9c6f74d5efd3a5 = function(arg0, arg1) {
|
|
||||||
getObject(arg0).disable(arg1 >>> 0);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_drawElements_3eb5ba8a511ce0f0 = function(arg0, arg1, arg2, arg3, arg4) {
|
|
||||||
getObject(arg0).drawElements(arg1 >>> 0, arg2, arg3 >>> 0, arg4);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_enable_87f39f6396535e1f = function(arg0, arg1) {
|
|
||||||
getObject(arg0).enable(arg1 >>> 0);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_enableVertexAttribArray_f29c8dde9c8c5cf5 = function(arg0, arg1) {
|
|
||||||
getObject(arg0).enableVertexAttribArray(arg1 >>> 0);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getAttribLocation_ba61f837da80e249 = function(arg0, arg1, arg2, arg3) {
|
|
||||||
var ret = getObject(arg0).getAttribLocation(getObject(arg1), getStringFromWasm0(arg2, arg3));
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getProgramInfoLog_aacf06c959070653 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = getObject(arg1).getProgramInfoLog(getObject(arg2));
|
|
||||||
var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
||||||
var len0 = WASM_VECTOR_LEN;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getProgramParameter_a89bf14502c109f7 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = getObject(arg0).getProgramParameter(getObject(arg1), arg2 >>> 0);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getShaderInfoLog_1eb885f2468e2429 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = getObject(arg1).getShaderInfoLog(getObject(arg2));
|
|
||||||
var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
||||||
var len0 = WASM_VECTOR_LEN;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getShaderParameter_99510442d33c6589 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = getObject(arg0).getShaderParameter(getObject(arg1), arg2 >>> 0);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getUniformLocation_ca853de4f2f9270d = function(arg0, arg1, arg2, arg3) {
|
|
||||||
var ret = getObject(arg0).getUniformLocation(getObject(arg1), getStringFromWasm0(arg2, arg3));
|
|
||||||
return isLikeNone(ret) ? 0 : addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_linkProgram_46a36cb158f10676 = function(arg0, arg1) {
|
|
||||||
getObject(arg0).linkProgram(getObject(arg1));
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_scissor_59172d697cc43dc8 = function(arg0, arg1, arg2, arg3, arg4) {
|
|
||||||
getObject(arg0).scissor(arg1, arg2, arg3, arg4);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_shaderSource_700ae72fca39850d = function(arg0, arg1, arg2, arg3) {
|
|
||||||
getObject(arg0).shaderSource(getObject(arg1), getStringFromWasm0(arg2, arg3));
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_texParameteri_e45f3977eb998137 = function(arg0, arg1, arg2, arg3) {
|
|
||||||
getObject(arg0).texParameteri(arg1 >>> 0, arg2 >>> 0, arg3);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_uniform1i_e76b668973ae0655 = function(arg0, arg1, arg2) {
|
|
||||||
getObject(arg0).uniform1i(getObject(arg1), arg2);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_uniform2f_6298542797865c61 = function(arg0, arg1, arg2, arg3) {
|
|
||||||
getObject(arg0).uniform2f(getObject(arg1), arg2, arg3);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_useProgram_d63a57db0571e803 = function(arg0, arg1) {
|
|
||||||
getObject(arg0).useProgram(getObject(arg1));
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_vertexAttribPointer_b4b829a4f5a3778e = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
|
|
||||||
getObject(arg0).vertexAttribPointer(arg1 >>> 0, arg2, arg3 >>> 0, arg4 !== 0, arg5, arg6);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_viewport_54305c74f5668b33 = function(arg0, arg1, arg2, arg3, arg4) {
|
|
||||||
getObject(arg0).viewport(arg1, arg2, arg3, arg4);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_error_e325755affc8634b = function(arg0) {
|
|
||||||
console.error(getObject(arg0));
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_warn_9e92ccdc67085e1b = function(arg0) {
|
|
||||||
console.warn(getObject(arg0));
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_style_9b773f0fc441eddc = function(arg0) {
|
|
||||||
var ret = getObject(arg0).style;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_preventDefault_9aab6c264e5df3ee = function(arg0) {
|
|
||||||
getObject(arg0).preventDefault();
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_stopPropagation_697200010cec9b7e = function(arg0) {
|
|
||||||
getObject(arg0).stopPropagation();
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_touches_3d22a22deb0f5409 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).touches;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_top_80a2533bf82e7a3e = function(arg0) {
|
|
||||||
var ret = getObject(arg0).top;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_left_479514b443c100f4 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).left;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_clipboard_a2f55b432ef7d0b0 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).clipboard;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_hash_6e2c452e02822d19 = handleError(function(arg0, arg1) {
|
|
||||||
var ret = getObject(arg1).hash;
|
|
||||||
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
||||||
var len0 = WASM_VECTOR_LEN;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_clientX_3a14a1583294607f = function(arg0) {
|
|
||||||
var ret = getObject(arg0).clientX;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_clientY_4b4a322b80551002 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).clientY;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_call_951bd0c6d815d6f1 = handleError(function(arg0, arg1) {
|
|
||||||
var ret = getObject(arg0).call(getObject(arg1));
|
|
||||||
return addHeapObject(ret);
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_newnoargs_7c6bd521992b4022 = function(arg0, arg1) {
|
|
||||||
var ret = new Function(getStringFromWasm0(arg0, arg1));
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getHours_3dd5c65c39f8b9b6 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).getHours();
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getMilliseconds_6a8f7d8a5dae61b1 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).getMilliseconds();
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getMinutes_37175b451da6ea22 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).getMinutes();
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_getSeconds_cea5a5592039b5ba = function(arg0) {
|
|
||||||
var ret = getObject(arg0).getSeconds();
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_new0_abd359df4aeb5b55 = function() {
|
|
||||||
var ret = new Date();
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_new_ba07d0daa0e4677e = function() {
|
|
||||||
var ret = new Object();
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_resolve_6e61e640925a0db9 = function(arg0) {
|
|
||||||
var ret = Promise.resolve(getObject(arg0));
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_then_dd3785597974798a = function(arg0, arg1) {
|
|
||||||
var ret = getObject(arg0).then(getObject(arg1));
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_then_0f957e0f4c3e537a = function(arg0, arg1, arg2) {
|
|
||||||
var ret = getObject(arg0).then(getObject(arg1), getObject(arg2));
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_self_6baf3a3aa7b63415 = handleError(function() {
|
|
||||||
var ret = self.self;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_window_63fc4027b66c265b = handleError(function() {
|
|
||||||
var ret = window.window;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_globalThis_513fb247e8e4e6d2 = handleError(function() {
|
|
||||||
var ret = globalThis.globalThis;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
});
|
|
||||||
imports.wbg.__wbg_global_b87245cd886d7113 = handleError(function() {
|
|
||||||
var ret = global.global;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
});
|
|
||||||
imports.wbg.__wbindgen_is_undefined = function(arg0) {
|
|
||||||
var ret = getObject(arg0) === undefined;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_buffer_3f12a1c608c6d04e = function(arg0) {
|
|
||||||
var ret = getObject(arg0).buffer;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_new_b43247aed67bdcb6 = function(arg0) {
|
|
||||||
var ret = new Int16Array(getObject(arg0));
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_new_c6c0228e6d22a2f9 = function(arg0) {
|
|
||||||
var ret = new Uint8Array(getObject(arg0));
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_set_b91afac9fd216d99 = function(arg0, arg1, arg2) {
|
|
||||||
getObject(arg0).set(getObject(arg1), arg2 >>> 0);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_length_c645e7c02233b440 = function(arg0) {
|
|
||||||
var ret = getObject(arg0).length;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_new_2863e4d532e8dfb4 = function(arg0) {
|
|
||||||
var ret = new Float32Array(getObject(arg0));
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_subarray_099195a64c29d8a3 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_subarray_02e2fcfa6b285cb2 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_subarray_f5deb93e9cb33975 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_instanceof_Memory_fdb0928d3f70cd49 = function(arg0) {
|
|
||||||
var ret = getObject(arg0) instanceof WebAssembly.Memory;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbg_set_9bdd413385146137 = handleError(function(arg0, arg1, arg2) {
|
|
||||||
var ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));
|
|
||||||
return ret;
|
|
||||||
});
|
|
||||||
imports.wbg.__wbindgen_number_get = function(arg0, arg1) {
|
|
||||||
const obj = getObject(arg1);
|
|
||||||
var ret = typeof(obj) === 'number' ? obj : undefined;
|
|
||||||
getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_string_get = function(arg0, arg1) {
|
|
||||||
const obj = getObject(arg1);
|
|
||||||
var ret = typeof(obj) === 'string' ? obj : undefined;
|
|
||||||
var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
||||||
var len0 = WASM_VECTOR_LEN;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_boolean_get = function(arg0) {
|
|
||||||
const v = getObject(arg0);
|
|
||||||
var ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {
|
|
||||||
var ret = debugString(getObject(arg1));
|
|
||||||
var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
||||||
var len0 = WASM_VECTOR_LEN;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 1] = len0;
|
|
||||||
getInt32Memory0()[arg0 / 4 + 0] = ptr0;
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_throw = function(arg0, arg1) {
|
|
||||||
throw new Error(getStringFromWasm0(arg0, arg1));
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_rethrow = function(arg0) {
|
|
||||||
throw takeObject(arg0);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_memory = function() {
|
|
||||||
var ret = wasm.memory;
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_closure_wrapper1679 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = makeMutClosure(arg0, arg1, 450, __wbg_adapter_26);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_closure_wrapper1680 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = makeMutClosure(arg0, arg1, 450, __wbg_adapter_29);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_closure_wrapper1682 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = makeMutClosure(arg0, arg1, 450, __wbg_adapter_32);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_closure_wrapper1684 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = makeMutClosure(arg0, arg1, 450, __wbg_adapter_35);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_closure_wrapper1686 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = makeMutClosure(arg0, arg1, 450, __wbg_adapter_38);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_closure_wrapper1688 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = makeMutClosure(arg0, arg1, 450, __wbg_adapter_41);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_closure_wrapper1691 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = makeMutClosure(arg0, arg1, 450, __wbg_adapter_44);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
imports.wbg.__wbindgen_closure_wrapper2574 = function(arg0, arg1, arg2) {
|
|
||||||
var ret = makeMutClosure(arg0, arg1, 530, __wbg_adapter_47);
|
|
||||||
return addHeapObject(ret);
|
|
||||||
};
|
|
||||||
|
|
||||||
if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {
|
|
||||||
input = fetch(input);
|
|
||||||
}
|
|
||||||
|
|
||||||
const { instance, module } = await load(await input, imports);
|
|
||||||
|
|
||||||
wasm = instance.exports;
|
|
||||||
init.__wbindgen_wasm_module = module;
|
|
||||||
|
|
||||||
return wasm;
|
|
||||||
}
|
|
||||||
|
|
||||||
wasm_bindgen = Object.assign(init, __exports);
|
|
||||||
|
|
||||||
})();
|
|
Binary file not shown.
|
@ -12,6 +12,6 @@ use eframe::wasm_bindgen::{self, prelude::*};
|
||||||
#[cfg(target_arch = "wasm32")]
|
#[cfg(target_arch = "wasm32")]
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
pub fn start(canvas_id: &str) -> Result<(), wasm_bindgen::JsValue> {
|
pub fn start(canvas_id: &str) -> Result<(), wasm_bindgen::JsValue> {
|
||||||
let app = egui_demo_lib::DemoApp::default();
|
let app = egui_demo_lib::WrapApp::default();
|
||||||
eframe::start_web(canvas_id, Box::new(app))
|
eframe::start_web(canvas_id, Box::new(app))
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,6 @@
|
||||||
|
|
||||||
// When compiling natively:
|
// When compiling natively:
|
||||||
fn main() {
|
fn main() {
|
||||||
let app = egui_demo_lib::DemoApp::default();
|
let app = egui_demo_lib::WrapApp::default();
|
||||||
eframe::run_native(Box::new(app));
|
eframe::run_native(Box::new(app));
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,12 @@ include = [ "**/*.rs", "Cargo.toml"]
|
||||||
[dependencies]
|
[dependencies]
|
||||||
egui = { version = "0.6.0", path = "../egui" }
|
egui = { version = "0.6.0", path = "../egui" }
|
||||||
epi = { version = "0.6.0", path = "../epi" }
|
epi = { version = "0.6.0", path = "../epi" }
|
||||||
|
serde = "1"
|
||||||
|
serde_json = "1"
|
||||||
|
|
||||||
|
# Http fetch app:
|
||||||
|
image = { version = "0.23", default_features = false, features = ["jpeg", "png"] }
|
||||||
|
syntect = { version = "4", default_features = false, features = ["default-fancy"] }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
criterion = { version = "0.3", default-features = false }
|
criterion = { version = "0.3", default-features = false }
|
||||||
|
|
|
@ -173,21 +173,20 @@ impl FrameHistory {
|
||||||
///
|
///
|
||||||
/// Implements `epi::App` so it can be used with
|
/// Implements `epi::App` so it can be used with
|
||||||
/// [`egui_glium`](https://crates.io/crates/egui_glium) and [`egui_web`](https://crates.io/crates/egui_web).
|
/// [`egui_glium`](https://crates.io/crates/egui_glium) and [`egui_web`](https://crates.io/crates/egui_web).
|
||||||
#[derive(Default)]
|
#[derive(Default, serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[serde(default)]
|
||||||
#[cfg_attr(feature = "serde", serde(default))]
|
|
||||||
pub struct DemoApp {
|
pub struct DemoApp {
|
||||||
demo_windows: crate::DemoWindows,
|
demo_windows: super::DemoWindows,
|
||||||
|
|
||||||
backend_window_open: bool,
|
backend_window_open: bool,
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", serde(skip))] // go back to `Reactive` mode each time we start
|
#[serde(skip)] // go back to `Reactive` mode each time we start
|
||||||
run_mode: RunMode,
|
run_mode: RunMode,
|
||||||
|
|
||||||
/// current slider value for current gui scale (backend demo only)
|
/// current slider value for current gui scale (backend demo only)
|
||||||
pixels_per_point: Option<f32>,
|
pixels_per_point: Option<f32>,
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", serde(skip))]
|
#[serde(skip)]
|
||||||
frame_history: FrameHistory,
|
frame_history: FrameHistory,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,12 +285,10 @@ impl epi::App for DemoApp {
|
||||||
"Egui Demo"
|
"Egui Demo"
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "serde_json")]
|
|
||||||
fn load(&mut self, storage: &dyn epi::Storage) {
|
fn load(&mut self, storage: &dyn epi::Storage) {
|
||||||
*self = epi::get_value(storage, epi::APP_KEY).unwrap_or_default()
|
*self = epi::get_value(storage, epi::APP_KEY).unwrap_or_default()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "serde_json")]
|
|
||||||
fn save(&mut self, storage: &mut dyn epi::Storage) {
|
fn save(&mut self, storage: &mut dyn epi::Storage) {
|
||||||
epi::set_value(storage, epi::APP_KEY, self);
|
epi::set_value(storage, epi::APP_KEY, self);
|
||||||
}
|
}
|
||||||
|
@ -308,12 +305,12 @@ impl epi::App for DemoApp {
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
|
||||||
let link = if web_location_hash == "clock" {
|
let link = if web_location_hash == "clock" {
|
||||||
Some(crate::DemoLink::Clock)
|
Some(super::DemoLink::Clock)
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
|
||||||
let demo_environment = crate::DemoEnvironment {
|
let demo_environment = super::DemoEnvironment {
|
||||||
seconds_since_midnight: frame.info().seconds_since_midnight,
|
seconds_since_midnight: frame.info().seconds_since_midnight,
|
||||||
link,
|
link,
|
||||||
};
|
};
|
|
@ -1,7 +1,7 @@
|
||||||
use egui::{containers::*, *};
|
use egui::{containers::*, *};
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", serde(default))]
|
#[serde(default)]
|
||||||
pub struct DancingStrings {}
|
pub struct DancingStrings {}
|
||||||
|
|
||||||
impl Default for DancingStrings {
|
impl Default for DancingStrings {
|
||||||
|
@ -10,13 +10,13 @@ impl Default for DancingStrings {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl crate::Demo for DancingStrings {
|
impl super::Demo for DancingStrings {
|
||||||
fn name(&self) -> &str {
|
fn name(&self) -> &str {
|
||||||
"♫ Dancing Strings"
|
"♫ Dancing Strings"
|
||||||
}
|
}
|
||||||
|
|
||||||
fn show(&mut self, ctx: &CtxRef, open: &mut bool) {
|
fn show(&mut self, ctx: &CtxRef, open: &mut bool) {
|
||||||
use crate::View;
|
use super::View;
|
||||||
Window::new(self.name())
|
Window::new(self.name())
|
||||||
.open(open)
|
.open(open)
|
||||||
.default_size(vec2(512.0, 256.0))
|
.default_size(vec2(512.0, 256.0))
|
||||||
|
@ -25,7 +25,7 @@ impl crate::Demo for DancingStrings {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl crate::View for DancingStrings {
|
impl super::View for DancingStrings {
|
||||||
fn ui(&mut self, ui: &mut Ui) {
|
fn ui(&mut self, ui: &mut Ui) {
|
||||||
Frame::dark_canvas(ui.style()).show(ui, |ui| {
|
Frame::dark_canvas(ui.style()).show(ui, |ui| {
|
||||||
ui.ctx().request_repaint();
|
ui.ctx().request_repaint();
|
|
@ -1,9 +1,9 @@
|
||||||
use crate::*;
|
use super::*;
|
||||||
use egui::{color::*, *};
|
use egui::{color::*, *};
|
||||||
|
|
||||||
/// Showcase some ui code
|
/// Showcase some ui code
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", serde(default))]
|
#[serde(default)]
|
||||||
pub struct DemoWindow {
|
pub struct DemoWindow {
|
||||||
num_columns: usize,
|
num_columns: usize,
|
||||||
|
|
||||||
|
@ -106,8 +106,8 @@ impl DemoWindow {
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", serde(default))]
|
#[serde(default)]
|
||||||
struct ColorWidgets {
|
struct ColorWidgets {
|
||||||
srgba_unmul: [u8; 4],
|
srgba_unmul: [u8; 4],
|
||||||
srgba_premul: [u8; 4],
|
srgba_premul: [u8; 4],
|
||||||
|
@ -178,8 +178,8 @@ impl ColorWidgets {
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", serde(default))]
|
#[serde(default)]
|
||||||
struct BoxPainting {
|
struct BoxPainting {
|
||||||
size: Vec2,
|
size: Vec2,
|
||||||
corner_radius: f32,
|
corner_radius: f32,
|
||||||
|
@ -222,8 +222,8 @@ impl BoxPainting {
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", serde(default))]
|
#[serde(default)]
|
||||||
struct LayoutDemo {
|
struct LayoutDemo {
|
||||||
// Identical to contents of `egui::Layout`
|
// Identical to contents of `egui::Layout`
|
||||||
main_dir: Direction,
|
main_dir: Direction,
|
||||||
|
@ -365,8 +365,7 @@ enum Action {
|
||||||
Delete,
|
Delete,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Default)]
|
#[derive(Clone, Default, serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
|
||||||
struct Tree(Vec<Tree>);
|
struct Tree(Vec<Tree>);
|
||||||
|
|
||||||
impl Tree {
|
impl Tree {
|
|
@ -20,22 +20,22 @@ pub struct DemoEnvironment {
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", serde(default))]
|
#[serde(default)]
|
||||||
struct Demos {
|
struct Demos {
|
||||||
/// open, view
|
/// open, view
|
||||||
#[cfg_attr(feature = "serde", serde(skip))] // TODO: serialize the `open` state.
|
#[serde(skip)] // TODO: serialize the `open` state.
|
||||||
demos: Vec<(bool, Box<dyn crate::Demo>)>,
|
demos: Vec<(bool, Box<dyn super::Demo>)>,
|
||||||
}
|
}
|
||||||
impl Default for Demos {
|
impl Default for Demos {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
demos: vec![
|
demos: vec![
|
||||||
(false, Box::new(crate::FontBook::default())),
|
(false, Box::new(super::FontBook::default())),
|
||||||
(false, Box::new(crate::Painting::default())),
|
(false, Box::new(super::Painting::default())),
|
||||||
(false, Box::new(crate::DancingStrings::default())),
|
(false, Box::new(super::DancingStrings::default())),
|
||||||
(false, Box::new(crate::DragAndDropDemo::default())),
|
(false, Box::new(super::DragAndDropDemo::default())),
|
||||||
(false, Box::new(crate::Tests::default())),
|
(false, Box::new(super::Tests::default())),
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,23 +57,22 @@ impl Demos {
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
/// A menu bar in which you can select different demo windows to show.
|
/// A menu bar in which you can select different demo windows to show.
|
||||||
#[derive(Default)]
|
#[derive(Default, serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[serde(default)]
|
||||||
#[cfg_attr(feature = "serde", serde(default))]
|
|
||||||
pub struct DemoWindows {
|
pub struct DemoWindows {
|
||||||
open_windows: OpenWindows,
|
open_windows: OpenWindows,
|
||||||
|
|
||||||
demo_window: crate::DemoWindow,
|
demo_window: super::DemoWindow,
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", serde(skip))]
|
#[serde(skip)]
|
||||||
color_test: crate::ColorTest,
|
color_test: super::ColorTest,
|
||||||
|
|
||||||
fractal_clock: crate::FractalClock,
|
fractal_clock: super::FractalClock,
|
||||||
|
|
||||||
/// open, title, view
|
/// open, title, view
|
||||||
demos: Demos,
|
demos: Demos,
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", serde(skip))]
|
#[serde(skip)]
|
||||||
previous_link: Option<DemoLink>,
|
previous_link: Option<DemoLink>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,7 +256,7 @@ impl DemoWindows {
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
struct OpenWindows {
|
struct OpenWindows {
|
||||||
demo: bool,
|
demo: bool,
|
||||||
fractal_clock: bool,
|
fractal_clock: bool,
|
|
@ -89,13 +89,13 @@ impl Default for DragAndDropDemo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl crate::Demo for DragAndDropDemo {
|
impl super::Demo for DragAndDropDemo {
|
||||||
fn name(&self) -> &str {
|
fn name(&self) -> &str {
|
||||||
"✋ Drag and Drop"
|
"✋ Drag and Drop"
|
||||||
}
|
}
|
||||||
|
|
||||||
fn show(&mut self, ctx: &CtxRef, open: &mut bool) {
|
fn show(&mut self, ctx: &CtxRef, open: &mut bool) {
|
||||||
use crate::View;
|
use super::View;
|
||||||
Window::new(self.name())
|
Window::new(self.name())
|
||||||
.open(open)
|
.open(open)
|
||||||
.default_size(vec2(256.0, 256.0))
|
.default_size(vec2(256.0, 256.0))
|
||||||
|
@ -105,7 +105,7 @@ impl crate::Demo for DragAndDropDemo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl crate::View for DragAndDropDemo {
|
impl super::View for DragAndDropDemo {
|
||||||
fn ui(&mut self, ui: &mut Ui) {
|
fn ui(&mut self, ui: &mut Ui) {
|
||||||
ui.label("This is a proof-of-concept of drag-and-drop in Egui");
|
ui.label("This is a proof-of-concept of drag-and-drop in Egui");
|
||||||
ui.label("Drag items between columns.");
|
ui.label("Drag items between columns.");
|
|
@ -39,23 +39,23 @@ impl FontBook {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl crate::Demo for FontBook {
|
impl super::Demo for FontBook {
|
||||||
fn name(&self) -> &str {
|
fn name(&self) -> &str {
|
||||||
"🔤 Font Book"
|
"🔤 Font Book"
|
||||||
}
|
}
|
||||||
|
|
||||||
fn show(&mut self, ctx: &egui::CtxRef, open: &mut bool) {
|
fn show(&mut self, ctx: &egui::CtxRef, open: &mut bool) {
|
||||||
egui::Window::new(self.name()).open(open).show(ctx, |ui| {
|
egui::Window::new(self.name()).open(open).show(ctx, |ui| {
|
||||||
use crate::View;
|
use super::View;
|
||||||
self.ui(ui);
|
self.ui(ui);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl crate::View for FontBook {
|
impl super::View for FontBook {
|
||||||
fn ui(&mut self, ui: &mut egui::Ui) {
|
fn ui(&mut self, ui: &mut egui::Ui) {
|
||||||
use crate::font_contents_emoji::FULL_EMOJI_LIST;
|
use super::font_contents_emoji::FULL_EMOJI_LIST;
|
||||||
use crate::font_contents_ubuntu::UBUNTU_FONT_CHARACTERS;
|
use super::font_contents_ubuntu::UBUNTU_FONT_CHARACTERS;
|
||||||
|
|
||||||
ui.label(format!(
|
ui.label(format!(
|
||||||
"Egui supports {} standard characters and {} emojis.\nClick on a character to copy it.",
|
"Egui supports {} standard characters and {} emojis.\nClick on a character to copy it.",
|
|
@ -2,6 +2,7 @@
|
||||||
///
|
///
|
||||||
/// Also viewable at <http://jslegers.github.io/emoji-icon-font/>
|
/// Also viewable at <http://jslegers.github.io/emoji-icon-font/>
|
||||||
/// Source: <https://github.com/jslegers/emoji-icon-font>
|
/// Source: <https://github.com/jslegers/emoji-icon-font>
|
||||||
|
#[allow(unused)]
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
pub const EMOJI_ICON_FONT_LIST: &[(u32, char, &str)] = &[
|
pub const EMOJI_ICON_FONT_LIST: &[(u32, char, &str)] = &[
|
||||||
(0xA9, '©', "copyright"),
|
(0xA9, '©', "copyright"),
|
||||||
|
@ -652,6 +653,7 @@ pub const EMOJI_ICON_FONT_LIST: &[(u32, char, &str)] = &[
|
||||||
(0x1F6E1, '🛡', "shield"),
|
(0x1F6E1, '🛡', "shield"),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
#[allow(unused)]
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
pub const NOTO_EMOJI_LIST: &[(u32, char, &str)] = &[
|
pub const NOTO_EMOJI_LIST: &[(u32, char, &str)] = &[
|
||||||
(0xA9, '©', "copyright sign"),
|
(0xA9, '©', "copyright sign"),
|
|
@ -1,8 +1,8 @@
|
||||||
use egui::{containers::*, widgets::*, *};
|
use egui::{containers::*, widgets::*, *};
|
||||||
use std::f32::consts::TAU;
|
use std::f32::consts::TAU;
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", serde(default))]
|
#[serde(default)]
|
||||||
pub struct FractalClock {
|
pub struct FractalClock {
|
||||||
paused: bool,
|
paused: bool,
|
||||||
time: f64,
|
time: f64,
|
43
egui_demo_lib/src/apps/demo/mod.rs
Normal file
43
egui_demo_lib/src/apps/demo/mod.rs
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
//! Demo-code for showing how Egui is used.
|
||||||
|
//!
|
||||||
|
//! The demo-code is also used in benchmarks and tests.
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
mod app;
|
||||||
|
mod color_test;
|
||||||
|
mod dancing_strings;
|
||||||
|
pub mod demo_window;
|
||||||
|
mod demo_windows;
|
||||||
|
mod drag_and_drop;
|
||||||
|
mod font_book;
|
||||||
|
pub mod font_contents_emoji;
|
||||||
|
pub mod font_contents_ubuntu;
|
||||||
|
mod fractal_clock;
|
||||||
|
mod painting;
|
||||||
|
mod scrolls;
|
||||||
|
mod sliders;
|
||||||
|
mod tests;
|
||||||
|
pub mod toggle_switch;
|
||||||
|
mod widgets;
|
||||||
|
|
||||||
|
pub use {
|
||||||
|
app::*, color_test::ColorTest, dancing_strings::DancingStrings, demo_window::DemoWindow,
|
||||||
|
demo_windows::*, drag_and_drop::*, font_book::FontBook, fractal_clock::FractalClock,
|
||||||
|
painting::Painting, scrolls::Scrolls, sliders::Sliders, tests::Tests, widgets::Widgets,
|
||||||
|
};
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// Something to view in the demo windows
|
||||||
|
pub trait View {
|
||||||
|
fn ui(&mut self, ui: &mut egui::Ui);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Something to view
|
||||||
|
pub trait Demo {
|
||||||
|
fn name(&self) -> &str;
|
||||||
|
|
||||||
|
/// Show windows, etc
|
||||||
|
fn show(&mut self, ctx: &egui::CtxRef, open: &mut bool);
|
||||||
|
}
|
|
@ -1,8 +1,7 @@
|
||||||
use crate::*;
|
|
||||||
use egui::*;
|
use egui::*;
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", serde(default))]
|
#[serde(default)]
|
||||||
pub struct Painting {
|
pub struct Painting {
|
||||||
lines: Vec<Vec<Vec2>>,
|
lines: Vec<Vec<Vec2>>,
|
||||||
stroke: Stroke,
|
stroke: Stroke,
|
||||||
|
@ -59,12 +58,13 @@ impl Painting {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl crate::Demo for Painting {
|
impl super::Demo for Painting {
|
||||||
fn name(&self) -> &str {
|
fn name(&self) -> &str {
|
||||||
"🖊 Painting"
|
"🖊 Painting"
|
||||||
}
|
}
|
||||||
|
|
||||||
fn show(&mut self, ctx: &CtxRef, open: &mut bool) {
|
fn show(&mut self, ctx: &CtxRef, open: &mut bool) {
|
||||||
|
use super::View;
|
||||||
Window::new(self.name())
|
Window::new(self.name())
|
||||||
.open(open)
|
.open(open)
|
||||||
.default_size(vec2(512.0, 512.0))
|
.default_size(vec2(512.0, 512.0))
|
||||||
|
@ -73,7 +73,7 @@ impl crate::Demo for Painting {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl crate::View for Painting {
|
impl super::View for Painting {
|
||||||
fn ui(&mut self, ui: &mut Ui) {
|
fn ui(&mut self, ui: &mut Ui) {
|
||||||
ui.add(crate::__egui_github_link_file!("(source code)"));
|
ui.add(crate::__egui_github_link_file!("(source code)"));
|
||||||
self.ui_control(ui);
|
self.ui_control(ui);
|
|
@ -1,8 +1,7 @@
|
||||||
use crate::LOREM_IPSUM_LONG;
|
|
||||||
use egui::{color::*, *};
|
use egui::{color::*, *};
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", serde(default))]
|
#[serde(default)]
|
||||||
pub struct Scrolls {
|
pub struct Scrolls {
|
||||||
track_item: usize,
|
track_item: usize,
|
||||||
tracking: bool,
|
tracking: bool,
|
||||||
|
@ -22,8 +21,8 @@ impl Default for Scrolls {
|
||||||
impl Scrolls {
|
impl Scrolls {
|
||||||
pub fn ui(&mut self, ui: &mut Ui) {
|
pub fn ui(&mut self, ui: &mut Ui) {
|
||||||
ScrollArea::from_max_height(200.0).show(ui, |ui| {
|
ScrollArea::from_max_height(200.0).show(ui, |ui| {
|
||||||
ui.label(LOREM_IPSUM_LONG);
|
ui.label(crate::LOREM_IPSUM_LONG);
|
||||||
ui.label(LOREM_IPSUM_LONG);
|
ui.label(crate::LOREM_IPSUM_LONG);
|
||||||
});
|
});
|
||||||
|
|
||||||
ui.separator();
|
ui.separator();
|
|
@ -2,8 +2,8 @@ use egui::*;
|
||||||
use std::f64::INFINITY;
|
use std::f64::INFINITY;
|
||||||
|
|
||||||
/// Showcase sliders
|
/// Showcase sliders
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", serde(default))]
|
#[serde(default)]
|
||||||
pub struct Sliders {
|
pub struct Sliders {
|
||||||
pub min: f64,
|
pub min: f64,
|
||||||
pub max: f64,
|
pub max: f64,
|
|
@ -1,20 +1,20 @@
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct Tests {}
|
pub struct Tests {}
|
||||||
|
|
||||||
impl crate::Demo for Tests {
|
impl super::Demo for Tests {
|
||||||
fn name(&self) -> &str {
|
fn name(&self) -> &str {
|
||||||
"📋 Tests"
|
"📋 Tests"
|
||||||
}
|
}
|
||||||
|
|
||||||
fn show(&mut self, ctx: &egui::CtxRef, open: &mut bool) {
|
fn show(&mut self, ctx: &egui::CtxRef, open: &mut bool) {
|
||||||
egui::Window::new(self.name()).open(open).show(ctx, |ui| {
|
egui::Window::new(self.name()).open(open).show(ctx, |ui| {
|
||||||
use crate::View;
|
use super::View;
|
||||||
self.ui(ui);
|
self.ui(ui);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl crate::View for Tests {
|
impl super::View for Tests {
|
||||||
fn ui(&mut self, ui: &mut egui::Ui) {
|
fn ui(&mut self, ui: &mut egui::Ui) {
|
||||||
ui.heading("Name collision example");
|
ui.heading("Name collision example");
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
use egui::{color::*, *};
|
use egui::{color::*, *};
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
|
||||||
enum Enum {
|
enum Enum {
|
||||||
First,
|
First,
|
||||||
Second,
|
Second,
|
||||||
|
@ -14,13 +13,13 @@ impl Default for Enum {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
#[cfg_attr(feature = "serde", serde(default))]
|
#[serde(default)]
|
||||||
pub struct Widgets {
|
pub struct Widgets {
|
||||||
button_enabled: bool,
|
button_enabled: bool,
|
||||||
count: usize,
|
count: usize,
|
||||||
radio: Enum,
|
radio: Enum,
|
||||||
sliders: crate::Sliders,
|
sliders: super::Sliders,
|
||||||
angle: f32,
|
angle: f32,
|
||||||
color: Srgba,
|
color: Srgba,
|
||||||
single_line_text_input: String,
|
single_line_text_input: String,
|
||||||
|
@ -154,6 +153,6 @@ impl Widgets {
|
||||||
ui.text_edit_multiline(&mut self.multiline_text_input);
|
ui.text_edit_multiline(&mut self.multiline_text_input);
|
||||||
|
|
||||||
ui.separator();
|
ui.separator();
|
||||||
crate::toggle_switch::demo(ui, &mut self.toggle_switch);
|
super::toggle_switch::demo(ui, &mut self.toggle_switch);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,3 @@
|
||||||
use eframe::{egui, epi};
|
|
||||||
use epi::http::Response;
|
use epi::http::Response;
|
||||||
use std::sync::mpsc::Receiver;
|
use std::sync::mpsc::Receiver;
|
||||||
|
|
||||||
|
@ -31,14 +30,21 @@ impl Resource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct ExampleApp {
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
|
pub struct HttpApp {
|
||||||
url: String,
|
url: String,
|
||||||
|
|
||||||
|
#[serde(skip)]
|
||||||
in_progress: Option<Receiver<Result<Response, String>>>,
|
in_progress: Option<Receiver<Result<Response, String>>>,
|
||||||
|
|
||||||
|
#[serde(skip)]
|
||||||
result: Option<Result<Resource, String>>,
|
result: Option<Result<Resource, String>>,
|
||||||
|
|
||||||
|
#[serde(skip)]
|
||||||
tex_mngr: TexMngr,
|
tex_mngr: TexMngr,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for ExampleApp {
|
impl Default for HttpApp {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
url: "https://raw.githubusercontent.com/emilk/egui/master/README.md".to_owned(),
|
url: "https://raw.githubusercontent.com/emilk/egui/master/README.md".to_owned(),
|
||||||
|
@ -49,9 +55,9 @@ impl Default for ExampleApp {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl epi::App for ExampleApp {
|
impl epi::App for HttpApp {
|
||||||
fn name(&self) -> &str {
|
fn name(&self) -> &str {
|
||||||
"Egui Fetch Example"
|
"HTTP Fetch"
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Called each time the UI needs repainting, which may be many times per second.
|
/// Called each time the UI needs repainting, which may be many times per second.
|
||||||
|
@ -171,7 +177,7 @@ fn ui_resouce(
|
||||||
|
|
||||||
egui::ScrollArea::auto_sized().show(ui, |ui| {
|
egui::ScrollArea::auto_sized().show(ui, |ui| {
|
||||||
if let Some(image) = image {
|
if let Some(image) = image {
|
||||||
if let Some(texture_id) = tex_mngr.texture(frame, &response.url, &image) {
|
if let Some(texture_id) = tex_mngr.texture(frame, &response.url, image) {
|
||||||
let size = egui::Vec2::new(image.size.0 as f32, image.size.1 as f32);
|
let size = egui::Vec2::new(image.size.0 as f32, image.size.1 as f32);
|
||||||
ui.image(texture_id, size);
|
ui.image(texture_id, size);
|
||||||
}
|
}
|
||||||
|
@ -199,7 +205,7 @@ fn syntax_highlighting(response: &Response) -> Option<ColoredText> {
|
||||||
struct ColoredText(Vec<Vec<(syntect::highlighting::Style, String)>>);
|
struct ColoredText(Vec<Vec<(syntect::highlighting::Style, String)>>);
|
||||||
|
|
||||||
impl ColoredText {
|
impl ColoredText {
|
||||||
/// e.g. `text_with_extension("fn foo() {}", "rs")
|
/// e.g. `text_with_extension("fn foo() {}", "rs")`
|
||||||
pub fn text_with_extension(text: &str, extension: &str) -> Option<ColoredText> {
|
pub fn text_with_extension(text: &str, extension: &str) -> Option<ColoredText> {
|
||||||
use syntect::easy::HighlightLines;
|
use syntect::easy::HighlightLines;
|
||||||
use syntect::highlighting::ThemeSet;
|
use syntect::highlighting::ThemeSet;
|
||||||
|
@ -213,7 +219,7 @@ impl ColoredText {
|
||||||
|
|
||||||
let mut h = HighlightLines::new(syntax, &ts.themes["base16-mocha.dark"]);
|
let mut h = HighlightLines::new(syntax, &ts.themes["base16-mocha.dark"]);
|
||||||
|
|
||||||
let lines = LinesWithEndings::from(&text)
|
let lines = LinesWithEndings::from(text)
|
||||||
.map(|line| {
|
.map(|line| {
|
||||||
h.highlight(line, &ps)
|
h.highlight(line, &ps)
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
@ -275,7 +281,7 @@ struct Image {
|
||||||
impl Image {
|
impl Image {
|
||||||
fn decode(bytes: &[u8]) -> Option<Image> {
|
fn decode(bytes: &[u8]) -> Option<Image> {
|
||||||
use image::GenericImageView;
|
use image::GenericImageView;
|
||||||
let image = image::load_from_memory(&bytes).ok()?;
|
let image = image::load_from_memory(bytes).ok()?;
|
||||||
let image_buffer = image.to_rgba8();
|
let image_buffer = image.to_rgba8();
|
||||||
let size = (image.width() as usize, image.height() as usize);
|
let size = (image.width() as usize, image.height() as usize);
|
||||||
let pixels = image_buffer.into_vec();
|
let pixels = image_buffer.into_vec();
|
7
egui_demo_lib/src/apps/mod.rs
Normal file
7
egui_demo_lib/src/apps/mod.rs
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
mod demo;
|
||||||
|
mod http_app;
|
||||||
|
|
||||||
|
pub use demo::DemoApp;
|
||||||
|
pub use http_app::HttpApp;
|
||||||
|
|
||||||
|
pub use demo::DemoWindows; // used for tests
|
|
@ -45,51 +45,11 @@
|
||||||
unused_doc_comments,
|
unused_doc_comments,
|
||||||
)]
|
)]
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
mod apps;
|
||||||
|
mod wrap_app;
|
||||||
|
|
||||||
mod app;
|
pub use apps::DemoWindows; // used for tests
|
||||||
mod color_test;
|
pub use wrap_app::WrapApp;
|
||||||
mod dancing_strings;
|
|
||||||
pub mod demo_window;
|
|
||||||
mod demo_windows;
|
|
||||||
mod drag_and_drop;
|
|
||||||
mod font_book;
|
|
||||||
pub mod font_contents_emoji;
|
|
||||||
pub mod font_contents_ubuntu;
|
|
||||||
mod fractal_clock;
|
|
||||||
mod painting;
|
|
||||||
mod scrolls;
|
|
||||||
mod sliders;
|
|
||||||
mod tests;
|
|
||||||
pub mod toggle_switch;
|
|
||||||
mod widgets;
|
|
||||||
|
|
||||||
pub use {
|
|
||||||
app::*, color_test::ColorTest, dancing_strings::DancingStrings, demo_window::DemoWindow,
|
|
||||||
demo_windows::*, drag_and_drop::*, font_book::FontBook, fractal_clock::FractalClock,
|
|
||||||
painting::Painting, scrolls::Scrolls, sliders::Sliders, tests::Tests, widgets::Widgets,
|
|
||||||
};
|
|
||||||
|
|
||||||
pub const LOREM_IPSUM: &str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
|
|
||||||
|
|
||||||
pub const LOREM_IPSUM_LONG: &str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
||||||
|
|
||||||
Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque. Aliquam faucibus, elit ut dictum aliquet, felis nisl adipiscing sapien, sed malesuada diam lacus eget erat. Cras mollis scelerisque nunc. Nullam arcu. Aliquam consequat. Curabitur augue lorem, dapibus quis, laoreet et, pretium ac, nisi. Aenean magna nisl, mollis quis, molestie eu, feugiat in, orci. In hac habitasse platea dictumst.";
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/// Something to view in the demo windows
|
|
||||||
pub trait View {
|
|
||||||
fn ui(&mut self, ui: &mut egui::Ui);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Something to view
|
|
||||||
pub trait Demo {
|
|
||||||
fn name(&self) -> &str;
|
|
||||||
|
|
||||||
/// Show windows, etc
|
|
||||||
fn show(&mut self, ctx: &egui::CtxRef, open: &mut bool);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -119,6 +79,14 @@ macro_rules! __egui_github_link_file_line {
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
pub const LOREM_IPSUM: &str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
|
||||||
|
|
||||||
|
pub const LOREM_IPSUM_LONG: &str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||||
|
|
||||||
|
Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque. Aliquam faucibus, elit ut dictum aliquet, felis nisl adipiscing sapien, sed malesuada diam lacus eget erat. Cras mollis scelerisque nunc. Nullam arcu. Aliquam consequat. Curabitur augue lorem, dapibus quis, laoreet et, pretium ac, nisi. Aenean magna nisl, mollis quis, molestie eu, feugiat in, orci. In hac habitasse platea dictumst.";
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_egui_e2e() {
|
fn test_egui_e2e() {
|
||||||
let mut demo_windows = crate::DemoWindows::default();
|
let mut demo_windows = crate::DemoWindows::default();
|
||||||
|
|
67
egui_demo_lib/src/wrap_app.rs
Normal file
67
egui_demo_lib/src/wrap_app.rs
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
/// Wraps many demo/test apps into one
|
||||||
|
#[derive(Default, serde::Deserialize, serde::Serialize)]
|
||||||
|
#[serde(default)]
|
||||||
|
pub struct WrapApp {
|
||||||
|
selectable_demo_name: String,
|
||||||
|
|
||||||
|
demo: crate::apps::DemoApp,
|
||||||
|
http: crate::apps::HttpApp,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl epi::App for WrapApp {
|
||||||
|
fn name(&self) -> &str {
|
||||||
|
"Egui Demo Apps"
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load(&mut self, storage: &dyn epi::Storage) {
|
||||||
|
*self = epi::get_value(storage, epi::APP_KEY).unwrap_or_default()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn save(&mut self, storage: &mut dyn epi::Storage) {
|
||||||
|
epi::set_value(storage, epi::APP_KEY, self);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn ui(&mut self, ctx: &egui::CtxRef, frame: &mut epi::Frame<'_>) {
|
||||||
|
let web_location_hash = frame
|
||||||
|
.info()
|
||||||
|
.web_info
|
||||||
|
.as_ref()
|
||||||
|
.map(|info| info.web_location_hash.clone())
|
||||||
|
.unwrap_or_default();
|
||||||
|
|
||||||
|
if web_location_hash == "#clock" {
|
||||||
|
// TODO
|
||||||
|
} else if web_location_hash == "#http" {
|
||||||
|
self.selectable_demo_name = self.http.name().to_owned();
|
||||||
|
}
|
||||||
|
|
||||||
|
egui::TopPanel::top("wrap_app").show(ctx, |ui| {
|
||||||
|
ui.horizontal(|ui| {
|
||||||
|
ui.label(format!("web_location_hash: {:?}", web_location_hash));
|
||||||
|
ui.label("Demo Apps:");
|
||||||
|
ui.selectable_value(
|
||||||
|
&mut self.selectable_demo_name,
|
||||||
|
self.demo.name().to_owned(),
|
||||||
|
self.demo.name(),
|
||||||
|
);
|
||||||
|
ui.selectable_value(
|
||||||
|
&mut self.selectable_demo_name,
|
||||||
|
self.http.name().to_owned(),
|
||||||
|
self.http.name(),
|
||||||
|
);
|
||||||
|
|
||||||
|
ui.with_layout(egui::Layout::right_to_left(), |ui| {
|
||||||
|
egui::warn_if_debug_build(ui);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
if self.selectable_demo_name == self.demo.name() {
|
||||||
|
self.demo.ui(ctx, frame);
|
||||||
|
} else if self.selectable_demo_name == self.http.name() {
|
||||||
|
self.http.ui(ctx, frame);
|
||||||
|
} else {
|
||||||
|
self.selectable_demo_name = self.demo.name().to_owned();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -157,7 +157,8 @@ impl<'a> Frame<'a> {
|
||||||
/// Information about the web environment
|
/// Information about the web environment
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct WebInfo {
|
pub struct WebInfo {
|
||||||
/// e.g. "#fragment" part of "www.example.com/index.html#fragment"
|
/// e.g. "#fragment" part of "www.example.com/index.html#fragment".
|
||||||
|
/// Note that the leading `#` is included in the string.
|
||||||
pub web_location_hash: String,
|
pub web_location_hash: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,7 +243,7 @@ pub fn get_value<T: serde::de::DeserializeOwned>(storage: &dyn Storage, key: &st
|
||||||
/// Serialize the given value as JSON and store with the given key.
|
/// Serialize the given value as JSON and store with the given key.
|
||||||
#[cfg(feature = "serde_json")]
|
#[cfg(feature = "serde_json")]
|
||||||
pub fn set_value<T: serde::Serialize>(storage: &mut dyn Storage, key: &str, value: &T) {
|
pub fn set_value<T: serde::Serialize>(storage: &mut dyn Storage, key: &str, value: &T) {
|
||||||
storage.set_string(key, serde_json::to_string(value).unwrap());
|
storage.set_string(key, serde_json::to_string_pretty(value).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// [`Storage`] key used for app
|
/// [`Storage`] key used for app
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
[package]
|
|
||||||
name = "example_web"
|
|
||||||
version = "0.1.0"
|
|
||||||
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
|
|
||||||
license = "MIT OR Apache-2.0"
|
|
||||||
edition = "2018"
|
|
||||||
|
|
||||||
[lib]
|
|
||||||
crate-type = ["cdylib", "rlib"]
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
eframe = { path = "../eframe" }
|
|
||||||
image = { version = "0.23", default_features = false, features = ["jpeg", "png"] }
|
|
||||||
serde = { version = "1", features = ["derive"] }
|
|
||||||
serde_json = "1"
|
|
||||||
syntect = { version = "4", default_features = false, features = ["default-fancy"] }
|
|
|
@ -1,3 +0,0 @@
|
||||||
# egui_web fetch example
|
|
||||||
|
|
||||||
This is an example of how to write a web-app which use the fetch API.
|
|
|
@ -1,20 +0,0 @@
|
||||||
#![forbid(unsafe_code)]
|
|
||||||
#![cfg_attr(not(debug_assertions), deny(warnings))] // Forbid warnings in release builds
|
|
||||||
#![warn(clippy::all)]
|
|
||||||
|
|
||||||
mod example_app;
|
|
||||||
pub use example_app::ExampleApp;
|
|
||||||
|
|
||||||
#[cfg(target_arch = "wasm32")]
|
|
||||||
use eframe::wasm_bindgen::{self, prelude::*};
|
|
||||||
|
|
||||||
/// This is the entry-point for all the web-assembly.
|
|
||||||
/// This is called once from the HTML.
|
|
||||||
/// It loads the app, installs some callbacks, then returns.
|
|
||||||
/// You can add more callbacks like this if you want to call in to your code.
|
|
||||||
#[cfg(target_arch = "wasm32")]
|
|
||||||
#[wasm_bindgen]
|
|
||||||
pub fn start(canvas_id: &str) -> Result<(), wasm_bindgen::JsValue> {
|
|
||||||
let app = example_app::ExampleApp::default();
|
|
||||||
eframe::start_web(canvas_id, Box::new(app))
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
#![forbid(unsafe_code)]
|
|
||||||
#![cfg_attr(not(debug_assertions), deny(warnings))] // Forbid warnings in release builds
|
|
||||||
#![warn(clippy::all)]
|
|
||||||
|
|
||||||
// When compiling natively:
|
|
||||||
fn main() {
|
|
||||||
let app = example_web::ExampleApp::default();
|
|
||||||
eframe::run_native(Box::new(app));
|
|
||||||
}
|
|
Loading…
Reference in a new issue