% !TeX program = LuaTeX \directlua{ brcd = require "barracuda" } \newbox\mybox Test 1: a simple polyline: \directlua{ local Polyline = brcd._libgeo.Polyline local p = Polyline:new() p:add_point(0, 0) p:add_point(tex.sp "32pt", 0) p:add_relpoint(tex.sp "16pt", tex.sp "16pt") local gaCanvas = brcd._gacanvas local ga = gaCanvas:new() assert(ga:encode_polyline(p)) local driver = brcd:get_driver() driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule Test 2: a staircase: \directlua{ local h = tex.sp "18pt" local b = tex.sp "36pt" local Polyline = brcd._libgeo.Polyline local p = Polyline:new() p:add_point(0, 0) for _ = 1, 5 do p:add_relpoint(0, h) p:add_relpoint(b, 0) end local gaCanvas = brcd._gacanvas local ga = gaCanvas:new() assert(ga:encode_polyline(p)) local driver = brcd:get_driver() driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule Test 3: several regular polygons: \directlua{ local Polyline = brcd._libgeo.Polyline local l = tex.sp "36pt" % side length local gaCanvas = brcd._gacanvas local ga = gaCanvas:new() ga:encode_linewidth(tex.sp "0.4pt") for n = 3, 13 do local p = Polyline:new() p:add_point(0, 0) local alpha = 2*math.pi/n % angle local a = alpha/2 % regular angles sum for _ = 1, n do local x, y = l * math.cos(a), l * math.sin(a) a = a + alpha p:add_relpoint(x, y) end assert(ga:encode_polyline(p)) end local driver = brcd:get_driver() driver:ga_to_hbox(ga, [[mybox]]) driver:save("svg", ga, "polygon") }\vrule\box\mybox\vrule \bye