diff options
Diffstat (limited to 'lua-bindings/src')
-rw-r--r-- | lua-bindings/src/lib.rs | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/lua-bindings/src/lib.rs b/lua-bindings/src/lib.rs index 6628ee2..fcf307b 100644 --- a/lua-bindings/src/lib.rs +++ b/lua-bindings/src/lib.rs | |||
@@ -1,17 +1,21 @@ | |||
1 | use std::sync::atomic::{AtomicUsize, Ordering}; | 1 | use std::{sync::atomic::{AtomicUsize, Ordering}, cell::RefCell}; |
2 | 2 | ||
3 | use diaphragm_cairo_renderer::CairoRenderer; | ||
3 | use diaphragm_core::{ | 4 | use diaphragm_core::{ |
4 | solving::VariableHandle, | 5 | solving::VariableHandle, |
5 | text::{FontDescription as CoreFontDescription, FontStyle, FontWeight, Text as CoreText}, | 6 | text::{FontDescription as CoreFontDescription, FontStyle, FontWeight, Text as CoreText}, |
6 | types::Float as CoreFloat, | 7 | types::Float as CoreFloat, |
8 | Runtime, | ||
7 | }; | 9 | }; |
8 | // use diaphragm_cairo_renderer::CairoRenderer; | 10 | use diaphragm_z3_solver::{z3, Z3Context}; |
9 | // use diaphragm_core::Runtime; | ||
10 | // use diaphragm_z3_solver::{z3, Z3Context}; | ||
11 | use mlua::prelude::*; | 11 | use mlua::prelude::*; |
12 | 12 | ||
13 | static MAX_ID: AtomicUsize = AtomicUsize::new(0); | 13 | static MAX_ID: AtomicUsize = AtomicUsize::new(0); |
14 | 14 | ||
15 | thread_local! { | ||
16 | static SENDER: RefCell<Option<Runtime<'static>>> = RefCell::new(None); | ||
17 | } | ||
18 | |||
15 | #[derive(Clone, Copy, Debug)] | 19 | #[derive(Clone, Copy, Debug)] |
16 | struct Float(CoreFloat); | 20 | struct Float(CoreFloat); |
17 | 21 | ||
@@ -78,7 +82,14 @@ fn font(_: &Lua, params: LuaTable) -> LuaResult<FontDescription> { | |||
78 | 82 | ||
79 | #[derive(Clone, Debug)] | 83 | #[derive(Clone, Debug)] |
80 | struct Text(CoreText); | 84 | struct Text(CoreText); |
81 | impl LuaUserData for Text {} | 85 | impl LuaUserData for Text { |
86 | fn add_methods<'lua, M: LuaUserDataMethods<'lua, Self>>(methods: &mut M) { | ||
87 | methods.add_method("draw", |_, this, _params: ()| { | ||
88 | println!("I'm drawing: {}", this.0.content); | ||
89 | Ok(()) | ||
90 | }) | ||
91 | } | ||
92 | } | ||
82 | 93 | ||
83 | fn text(_: &Lua, params: LuaTable) -> LuaResult<Text> { | 94 | fn text(_: &Lua, params: LuaTable) -> LuaResult<Text> { |
84 | let content = params.get("content")?; | 95 | let content = params.get("content")?; |
@@ -97,6 +108,17 @@ fn draw(_: &Lua, params: LuaTable) -> LuaResult<()> { | |||
97 | let content: LuaTable = params.get("content")?; | 108 | let content: LuaTable = params.get("content")?; |
98 | let output: LuaTable = params.get("output")?; | 109 | let output: LuaTable = params.get("output")?; |
99 | 110 | ||
111 | let z3_cfg = z3::Config::new(); | ||
112 | let z3_ctx = z3::Context::new(&z3_cfg); | ||
113 | let ctx = Z3Context::new(&z3_ctx); | ||
114 | |||
115 | let cairo_renderer = CairoRenderer::new(); | ||
116 | |||
117 | // TODO: we shouldn't need the renderer until the end | ||
118 | let mut runtime = Runtime::new(Box::new(ctx), Box::new(cairo_renderer)); | ||
119 | |||
120 | let _solver = runtime.solver_ctx(); | ||
121 | |||
100 | dbg!(content, output); | 122 | dbg!(content, output); |
101 | 123 | ||
102 | Ok(()) | 124 | Ok(()) |