summaryrefslogtreecommitdiff
path: root/macros/luatex/generic/barracuda/test/test-ga-pdfliteral/002-polyline.tex
blob: 14a713dee92fb7adcf9e473fc1670f41c4ba0448 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
% !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