From 30f7d39ca2ed4590b5d356b1a4c024d11156a383 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Sun, 25 Dec 2022 15:46:31 +0100 Subject: WIP before core rewrite --- lua-bindings/src/lib.rs | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'lua-bindings/src') 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 @@ -use std::sync::atomic::{AtomicUsize, Ordering}; +use std::{sync::atomic::{AtomicUsize, Ordering}, cell::RefCell}; +use diaphragm_cairo_renderer::CairoRenderer; use diaphragm_core::{ solving::VariableHandle, text::{FontDescription as CoreFontDescription, FontStyle, FontWeight, Text as CoreText}, types::Float as CoreFloat, + Runtime, }; -// use diaphragm_cairo_renderer::CairoRenderer; -// use diaphragm_core::Runtime; -// use diaphragm_z3_solver::{z3, Z3Context}; +use diaphragm_z3_solver::{z3, Z3Context}; use mlua::prelude::*; static MAX_ID: AtomicUsize = AtomicUsize::new(0); +thread_local! { + static SENDER: RefCell>> = RefCell::new(None); +} + #[derive(Clone, Copy, Debug)] struct Float(CoreFloat); @@ -78,7 +82,14 @@ fn font(_: &Lua, params: LuaTable) -> LuaResult { #[derive(Clone, Debug)] struct Text(CoreText); -impl LuaUserData for Text {} +impl LuaUserData for Text { + fn add_methods<'lua, M: LuaUserDataMethods<'lua, Self>>(methods: &mut M) { + methods.add_method("draw", |_, this, _params: ()| { + println!("I'm drawing: {}", this.0.content); + Ok(()) + }) + } +} fn text(_: &Lua, params: LuaTable) -> LuaResult { let content = params.get("content")?; @@ -97,6 +108,17 @@ fn draw(_: &Lua, params: LuaTable) -> LuaResult<()> { let content: LuaTable = params.get("content")?; let output: LuaTable = params.get("output")?; + let z3_cfg = z3::Config::new(); + let z3_ctx = z3::Context::new(&z3_cfg); + let ctx = Z3Context::new(&z3_ctx); + + let cairo_renderer = CairoRenderer::new(); + + // TODO: we shouldn't need the renderer until the end + let mut runtime = Runtime::new(Box::new(ctx), Box::new(cairo_renderer)); + + let _solver = runtime.solver_ctx(); + dbg!(content, output); Ok(()) -- cgit v1.2.3