summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lua-bindings/diaphragm.lua10
-rw-r--r--lua-bindings/src/lib.rs44
2 files changed, 12 insertions, 42 deletions
diff --git a/lua-bindings/diaphragm.lua b/lua-bindings/diaphragm.lua
index ffb3e4b..ad8aac6 100644
--- a/lua-bindings/diaphragm.lua
+++ b/lua-bindings/diaphragm.lua
@@ -399,6 +399,14 @@ function M.constraint.same_width(elems)
399end 399end
400 400
401M.constrain = M.core.constrain 401M.constrain = M.core.constrain
402M.draw = M.core.draw 402M.draw = function(params)
403 M.core.draw(M.util.tbl_extend(params, {
404 draw = function(figure)
405 local self = M.shape({ left = 0, top = 0 })
406 M.constraint.inset(self, figure)
407 params.draw(self)
408 end,
409 }))
410end
403 411
404return M 412return M
diff --git a/lua-bindings/src/lib.rs b/lua-bindings/src/lib.rs
index 53622de..2cce0f5 100644
--- a/lua-bindings/src/lib.rs
+++ b/lua-bindings/src/lib.rs
@@ -741,25 +741,9 @@ fn draw(lua: &Lua, params: LuaTable) -> LuaResult<()> {
741 } 741 }
742 } 742 }
743 743
744 let bounds = bounds.unwrap(); 744 runtime.render(bounds.unwrap());
745
746 // TODO: it would be nicer to do in Lua
747 let bounds_top = bounds.top(runtime.solver_ctx());
748 let top_constraint = runtime
749 .solver_ctx()
750 .float_eq(bounds_top, CoreFloat::Fixed(0.0));
751 runtime.solver_ctx().constrain(top_constraint);
752
753 let bounds_left = bounds.left(runtime.solver_ctx());
754 let left_constraint = runtime
755 .solver_ctx()
756 .float_eq(bounds_left, CoreFloat::Fixed(0.0));
757 runtime.solver_ctx().constrain(left_constraint);
758
759 runtime.render(bounds);
760 }); 745 });
761 746
762 let content: LuaValue = params.get("content")?;
763 let _output: LuaTable = params.get("output")?; 747 let _output: LuaTable = params.get("output")?;
764 748
765 let figure = complex_shape(lua, ())?; 749 let figure = complex_shape(lua, ())?;
@@ -776,30 +760,8 @@ fn draw(lua: &Lua, params: LuaTable) -> LuaResult<()> {
776 .unwrap() 760 .unwrap()
777 }); 761 });
778 762
779 match content { 763 // TODO: this doesn't stop the runtime thread?
780 // TODO: this doesn't stop the runtime thread? 764 let () = params.call_function("draw", figure).unwrap();
781 LuaValue::Table(table) => table.call_method("draw", figure).unwrap(),
782
783 // TODO: switch to enum
784 // LuaValue::UserData(user_data) => {
785 // if user_data.is::<Text>() {
786 // let text = user_data
787 // .borrow::<Text>()
788 // .expect("Couldn't borrow Text user data");
789 //
790 // SENDER.with(|f| {
791 // f.borrow_mut()
792 // .as_ref()
793 // .expect("Not currently drawing")
794 // .send(Message::AddDrawable(CoreShape::Text(text.0.clone())))
795 // .expect("Could not send shape");
796 // })
797 // } else {
798 // panic!("Non-drawable passed to draw");
799 // }
800 // }
801 _ => panic!("Non-drawable passed to draw"),
802 }
803 765
804 SENDER.with(|s| { 766 SENDER.with(|s| {
805 *s.borrow_mut() = None; 767 *s.borrow_mut() = None;