ok
This commit is contained in:
90
tmp/ex.lua
Normal file
90
tmp/ex.lua
Normal file
@@ -0,0 +1,90 @@
|
||||
local kiwi = require("kiwi")
|
||||
local Var = kiwi.Var
|
||||
|
||||
local Button = setmetatable({}, {
|
||||
__call = function(_, identifier)
|
||||
return setmetatable({
|
||||
left = Var(identifier .. " left"),
|
||||
width = Var(identifier .. " width"),
|
||||
}, {
|
||||
__tostring = function(self)
|
||||
return "Button(" .. self.left:value() .. ", " .. self.width:value() .. ")"
|
||||
end,
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
local b1 = Button("b1")
|
||||
local b2 = Button("b2")
|
||||
|
||||
local left_edge = Var("left")
|
||||
local right_edge = Var("width")
|
||||
|
||||
local STRONG = kiwi.Strength.STRONG
|
||||
|
||||
local constraints
|
||||
|
||||
for i = 1, 200 do
|
||||
q = kiwi.Term(left_edge, 2.0)
|
||||
end
|
||||
|
||||
for i = 1, 50, 1 do
|
||||
-- stylua: ignore start
|
||||
constraints = {
|
||||
left_edge :eq(0.0),
|
||||
-- two buttons are the same width
|
||||
b1.width :eq(b2.width),
|
||||
-- button1 starts 50 for the left margin
|
||||
(1.00 * b1.left) :eq(left_edge + 50),
|
||||
-- button2 ends 50 from the right margin
|
||||
right_edge :eq(b2.left + b2.width + 50),
|
||||
-- button2 starts at least 100 from the end of button1. This is the "elastic" constraint
|
||||
b2.left :ge(b1.left + b1.width + 100),
|
||||
-- button1 has a minimum width of 87
|
||||
b1.width :ge(87),
|
||||
-- button1 has a preferred width of 87
|
||||
b1.width :eq(87, STRONG),
|
||||
-- button2 has minimum width of 113
|
||||
b2.width :ge(113),
|
||||
-- button2 has a preferred width of 113
|
||||
b2.width :eq(113, STRONG),
|
||||
}
|
||||
-- stylua: ignore end
|
||||
--
|
||||
k = kiwi.Strength.create(0.0, 1.0, 0.0, 1.25)
|
||||
end
|
||||
local solver = kiwi.Solver()
|
||||
|
||||
for _, c in ipairs(constraints) do
|
||||
print(c)
|
||||
solver:add_constraint(c)
|
||||
end
|
||||
|
||||
solver:update_vars()
|
||||
|
||||
print(b1) -- Button(50, 113)
|
||||
print(b2) -- Button(263, 113)
|
||||
print(left_edge:value()) -- 0
|
||||
print(right_edge:value()) -- 426
|
||||
|
||||
solver:add_edit_var(right_edge, STRONG)
|
||||
solver:suggest_value(right_edge, 500)
|
||||
solver:update_vars()
|
||||
-- solver:dump()
|
||||
-- print(b1) -- Button(50, 113)
|
||||
-- print(b2) -- Button(337, 113)
|
||||
-- print(right_edge:value()) -- 500
|
||||
|
||||
-- print(solver:dumps())
|
||||
|
||||
-- solver = kiwi.Solver()
|
||||
|
||||
-- local trailing = Var("trailing")
|
||||
-- local leading = Var("leading")
|
||||
|
||||
-- solver:add_constraint(kiwi.new_single_constraint(trailing, 86))
|
||||
-- solver:add_constraint(kiwi.new_pair_constraint(trailing, leading, 8.0))
|
||||
-- print(solver:dumps())
|
||||
-- solver:update_vars()
|
||||
-- print(trailing:value()) -- 86
|
||||
-- print(leading:value()) -- 76
|
||||
Reference in New Issue
Block a user