summaryrefslogtreecommitdiffstats
path: root/lua-bindings/src/lib.rs
diff options
context:
space:
mode:
authorMinijackson <minijackson@riseup.net>2022-12-25 15:46:31 +0100
committerMinijackson <minijackson@riseup.net>2022-12-25 15:46:31 +0100
commit30f7d39ca2ed4590b5d356b1a4c024d11156a383 (patch)
tree115d8af6f02ec6d42e0a794ac57c391f3d10d6f7 /lua-bindings/src/lib.rs
parent92a02c34628343153b33602eae00cef46e28d191 (diff)
downloaddiaphragm-30f7d39ca2ed4590b5d356b1a4c024d11156a383.tar.gz
diaphragm-30f7d39ca2ed4590b5d356b1a4c024d11156a383.zip
WIP before core rewrite
Diffstat (limited to 'lua-bindings/src/lib.rs')
-rw-r--r--lua-bindings/src/lib.rs32
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 @@
1use std::sync::atomic::{AtomicUsize, Ordering}; 1use std::{sync::atomic::{AtomicUsize, Ordering}, cell::RefCell};
2 2
3use diaphragm_cairo_renderer::CairoRenderer;
3use diaphragm_core::{ 4use 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; 10use diaphragm_z3_solver::{z3, Z3Context};
9// use diaphragm_core::Runtime;
10// use diaphragm_z3_solver::{z3, Z3Context};
11use mlua::prelude::*; 11use mlua::prelude::*;
12 12
13static MAX_ID: AtomicUsize = AtomicUsize::new(0); 13static MAX_ID: AtomicUsize = AtomicUsize::new(0);
14 14
15thread_local! {
16 static SENDER: RefCell<Option<Runtime<'static>>> = RefCell::new(None);
17}
18
15#[derive(Clone, Copy, Debug)] 19#[derive(Clone, Copy, Debug)]
16struct Float(CoreFloat); 20struct 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)]
80struct Text(CoreText); 84struct Text(CoreText);
81impl LuaUserData for Text {} 85impl 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
83fn text(_: &Lua, params: LuaTable) -> LuaResult<Text> { 94fn 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(())