Hi folks,
Is it possible to draw a cubic Bezier curve via Lua script with app.useTool
? I’m having trouble working out how I might order a points array to give to the curve. In part this is because I’m not acclimated to working with the tool manually either . The curve tool might use a different type of curve altogether, but here’s what I’m familiar with:
In a format like this SVG example,
<svg width="190" height="160" xmlns="http://www.w3.org/2000/svg">
<path d="M 10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80" stroke="black" fill="transparent"/>
</svg>
the M
moves the sub-path to the initial anchor point x and y, then C
is followed by three coordinates which stand for the first control point, second control point and second anchor point. (The S
command is a reflection of the curve, not really needed for this example; I’m only concerned with the left side of the curve at the moment.)
Here’s some Lua code as it stands
local pts = {
-- Horizontal line.
-- Point(10, 80), -- anchor point 0
-- Point(40, 10), -- control point 0
-- Point(65, 10), -- control point 1
-- Point(95, 80) -- anchor point 1
-- Diagonal line.
Point(10, 80), -- anchor point 0
Point(95, 80), -- anchor point 1
Point(40, 10), -- control point 0
Point(65, 10) -- control point 1
}
local dlg = Dialog { title = "Curve Test" }
dlg:button {
id = "ok",
text = "OK",
focus = true,
onclick = function()
local args = dlg.data
if args.ok then
app.useTool {
tool = "curve",
points = pts
}
app.refresh()
end
end
}
dlg:show { wait = false }
I realize there are work-arounds, such evaluating a range of points from a step in [0, 1] then connecting line segments. I was curious, though, if this tool could be used.
Thanks for any insights y’all might have!
Best,
Jeremy