From bfa20be28e8bb1ffa7bef3d3de7b851400922c47 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sun, 30 Dec 2018 21:08:29 +0100 Subject: [PATCH] Break into two crates --- .gitignore | 1 + Cargo.toml | 21 +++++---------------- docs/emgui.js | 12 ++++++++---- docs/emgui_bg.wasm | Bin 186092 -> 193366 bytes emgui/Cargo.toml | 12 ++++++++++++ {src => emgui/src}/emgui.rs | 0 {src => emgui/src}/layout.rs | 0 emgui/src/lib.rs | 16 ++++++++++++++++ {src => emgui/src}/math.rs | 0 {src => emgui/src}/style.rs | 0 {src => emgui/src}/types.rs | 0 emgui_wasm/Cargo.toml | 17 +++++++++++++++++ {src => emgui_wasm/src}/app.rs | 6 +++--- {src => emgui_wasm/src}/lib.rs | 31 +++++-------------------------- 14 files changed, 67 insertions(+), 49 deletions(-) create mode 100644 emgui/Cargo.toml rename {src => emgui/src}/emgui.rs (100%) rename {src => emgui/src}/layout.rs (100%) create mode 100644 emgui/src/lib.rs rename {src => emgui/src}/math.rs (100%) rename {src => emgui/src}/style.rs (100%) rename {src => emgui/src}/types.rs (100%) create mode 100644 emgui_wasm/Cargo.toml rename {src => emgui_wasm/src}/app.rs (96%) rename {src => emgui_wasm/src}/lib.rs (63%) diff --git a/.gitignore b/.gitignore index 1d09522cd..48aed118a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.sublime* +/docs/*.d.ts /target diff --git a/Cargo.toml b/Cargo.toml index fb7cdcc1f..6879c8eae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,19 +1,8 @@ -[package] -name = "emgui" -version = "0.1.0" -authors = ["Emil Ernerfeldt "] -edition = "2018" - -[lib] -crate-type = ["cdylib", "rlib"] - -[dependencies] -lazy_static = "1" -serde = "1" -serde_derive = "1" -serde_json = "1" -wasm-bindgen = "0.2" -web-sys = { version = "0.3.5", features = ['console', 'Performance', 'Window'] } +[workspace] +members = [ + "emgui", + "emgui_wasm", +] # Optimize for small code size: [profile.dev] diff --git a/docs/emgui.js b/docs/emgui.js index 07a839c50..7ae8bf76d 100644 --- a/docs/emgui.js +++ b/docs/emgui.js @@ -13,12 +13,15 @@ return cachegetUint8Memory; } + let WASM_VECTOR_LEN = 0; + function passStringToWasm(arg) { const buf = cachedTextEncoder.encode(arg); const ptr = wasm.__wbindgen_malloc(buf.length); getUint8Memory().set(buf, ptr); - return [ptr, buf.length]; + WASM_VECTOR_LEN = buf.length; + return ptr; } let cachedTextDecoder = new TextDecoder('utf-8'); @@ -47,7 +50,8 @@ * @returns {string} */ __exports.show_gui = function(arg0) { - const [ptr0, len0] = passStringToWasm(arg0); + const ptr0 = passStringToWasm(arg0); + const len0 = WASM_VECTOR_LEN; const retptr = globalArgumentPtr(); try { wasm.show_gui(retptr, ptr0, len0); @@ -77,7 +81,7 @@ if (path_or_module instanceof WebAssembly.Module) { instantiation = WebAssembly.instantiate(path_or_module, imports) .then(instance => { - return { instance, module: module_or_path } + return { instance, module: path_or_module } }); } else { const data = fetch(path_or_module); @@ -91,7 +95,7 @@ } return instantiation.then(({instance}) => { wasm = init.wasm = instance.exports; - return; + }); }; self.wasm_bindgen = Object.assign(init, __exports); diff --git a/docs/emgui_bg.wasm b/docs/emgui_bg.wasm index 15110b682b58891b61485c79a5c1171e4e3e8845..62a3c82b66b16a05aee14fa655febf563e823990 100644 GIT binary patch delta 60451 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 Df14GE diff --git a/emgui/Cargo.toml b/emgui/Cargo.toml new file mode 100644 index 000000000..6be652f43 --- /dev/null +++ b/emgui/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "emgui" +version = "0.1.0" +authors = ["Emil Ernerfeldt "] +edition = "2018" + +[lib] + +[dependencies] +# palette = "0.4" +serde = "1" +serde_derive = "1" diff --git a/src/emgui.rs b/emgui/src/emgui.rs similarity index 100% rename from src/emgui.rs rename to emgui/src/emgui.rs diff --git a/src/layout.rs b/emgui/src/layout.rs similarity index 100% rename from src/layout.rs rename to emgui/src/layout.rs diff --git a/emgui/src/lib.rs b/emgui/src/lib.rs new file mode 100644 index 000000000..a89969470 --- /dev/null +++ b/emgui/src/lib.rs @@ -0,0 +1,16 @@ +#![deny(warnings)] + +extern crate serde; + +#[macro_use] // TODO: get rid of this +extern crate serde_derive; + +mod emgui; +mod layout; +pub mod math; +mod style; +pub mod types; + +pub use crate::{ + emgui::Emgui, layout::Layout, layout::LayoutOptions, style::Style, types::RawInput, +}; diff --git a/src/math.rs b/emgui/src/math.rs similarity index 100% rename from src/math.rs rename to emgui/src/math.rs diff --git a/src/style.rs b/emgui/src/style.rs similarity index 100% rename from src/style.rs rename to emgui/src/style.rs diff --git a/src/types.rs b/emgui/src/types.rs similarity index 100% rename from src/types.rs rename to emgui/src/types.rs diff --git a/emgui_wasm/Cargo.toml b/emgui_wasm/Cargo.toml new file mode 100644 index 000000000..5aeed7d55 --- /dev/null +++ b/emgui_wasm/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "emgui_wasm" +version = "0.1.0" +authors = ["Emil Ernerfeldt "] +edition = "2018" + +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +lazy_static = "1" +serde = "1" +serde_json = "1" +wasm-bindgen = "0.2" +# web-sys = { version = "0.3.5", features = ['console', 'Performance', 'Window'] } + +emgui = { path = "../emgui" } diff --git a/src/app.rs b/emgui_wasm/src/app.rs similarity index 96% rename from src/app.rs rename to emgui_wasm/src/app.rs index c8d37157e..f138ce78c 100644 --- a/src/app.rs +++ b/emgui_wasm/src/app.rs @@ -1,4 +1,4 @@ -use crate::{layout::Layout, math::*, types::*}; +use emgui::{math::*, types::*, Layout}; pub trait GuiSettings { fn show_gui(&mut self, gui: &mut Layout); @@ -91,7 +91,7 @@ impl GuiSettings for App { } } -impl GuiSettings for crate::layout::LayoutOptions { +impl GuiSettings for emgui::LayoutOptions { fn show_gui(&mut self, gui: &mut Layout) { if gui.button("Reset LayoutOptions").clicked { *self = Default::default(); @@ -110,7 +110,7 @@ impl GuiSettings for crate::layout::LayoutOptions { } } -impl GuiSettings for crate::style::Style { +impl GuiSettings for emgui::Style { fn show_gui(&mut self, gui: &mut Layout) { if gui.button("Reset Style").clicked { *self = Default::default(); diff --git a/src/lib.rs b/emgui_wasm/src/lib.rs similarity index 63% rename from src/lib.rs rename to emgui_wasm/src/lib.rs index 57de2a3cb..cfddc6f10 100644 --- a/src/lib.rs +++ b/emgui_wasm/src/lib.rs @@ -1,40 +1,19 @@ #![deny(warnings)] extern crate lazy_static; -extern crate serde; extern crate serde_json; extern crate wasm_bindgen; -extern crate web_sys; +// extern crate web_sys; -#[macro_use] // TODO: get rid of this -extern crate serde_derive; +extern crate emgui; use std::sync::Mutex; -use wasm_bindgen::prelude::*; +use emgui::{Emgui, RawInput}; -use crate::types::*; +use wasm_bindgen::prelude::*; pub mod app; -pub mod emgui; -pub mod layout; -pub mod math; -pub mod style; -pub mod types; - -/* -// Fast compilation, slow code: -fn foo(x: &dyn Trait); - - -// Fast code, slow compilation: -fn foo(x: &dyn T); - - -// Compiles quickly in debug, fast in release: -#[dynimp(Trait)] -fn foo(x: &Trait); -*/ #[wasm_bindgen] pub fn show_gui(raw_input_json: &str) -> String { @@ -43,7 +22,7 @@ pub fn show_gui(raw_input_json: &str) -> String { lazy_static::lazy_static! { static ref APP: Mutex = Default::default(); - static ref EMGUI: Mutex = Default::default(); + static ref EMGUI: Mutex = Default::default(); } let mut emgui = EMGUI.lock().unwrap();