diff options
Diffstat (limited to 'macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.tex')
-rw-r--r-- | macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.tex | 222 |
1 files changed, 89 insertions, 133 deletions
diff --git a/macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.tex b/macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.tex index c51fa3dfb0..a40ba4ec8b 100644 --- a/macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.tex +++ b/macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.tex @@ -1,7 +1,7 @@ % !TeX program = LuaTeX % test for ga-canvas pdfliteral driver % -% Copyright (C) 2020 Roberto Giacomelli +% Copyright (C) 2019-2022 Roberto Giacomelli % see LICENSE.txt file ---ga--- is a binary format as an istruction set similar to @@ -28,35 +28,36 @@ the PDF output file. \newbox\mybox \directlua{ - driver = require [[lib-driver.brcd-driver]] % global Lua variables + brcd = require "barracuda" + driver = brcd:get_driver() % global Lua variables pt = tex.sp [[1pt]] % 1pt = 65536sp } Let's start drawing an horizontal line 100pt long: \directlua{ - local ga = {_data = {33, 0*pt, 100*pt, 0*pt}} + local ga = {33, 0*pt, 100*pt, 0*pt} driver:ga_to_hbox(ga, [[mybox]]) }\box\mybox or two different parallel lines 24pt long: \directlua{ - local ga = {_data = {33, 0*pt, 24*pt, 0*pt, 33, 0*pt, 24*pt, 5*pt}} + local ga = {33, 0*pt, 24*pt, 0*pt, 33, 0*pt, 24*pt, 5*pt} driver:ga_to_hbox(ga, [[mybox]]) }\box\mybox and again two horizontal lines 10pt thick, touching a corner: \directlua{ - local ga = {_data = { + local ga = { 1, 10*pt, 33, -24*pt, 0*pt, -5*pt, 33, 0*pt, 24*pt, 5*pt, - }} + } driver:ga_to_hbox(ga, [[mybox]]) }\box\mybox Several vertical lines with its horizontal limits: \directlua{ - local ga = { _data = { + local ga = { 34, -20*pt, 20*pt, 0*pt, 34, -15*pt, 15*pt, 5*pt, 34, -10*pt, 10*pt, 10*pt, @@ -69,16 +70,16 @@ Several vertical lines with its horizontal limits: 1, .05*pt, 33, 0*pt, 40*pt, -20*pt, 33, 0*pt, 40*pt, 20*pt, - }} + } driver:ga_to_hbox(ga, [[mybox]]) }\box\mybox Finally a little rectangle: \directlua{ - local ga = {_data = { + local ga = { 1, 5*pt, 48, 0*pt, 0*pt, 15*pt, 10*pt, - }} + } driver:ga_to_hbox(ga, [[mybox]]) }\box\mybox @@ -86,7 +87,7 @@ Finally a little rectangle: Test number 1: a vbar 2pt width, 20pt height: \directlua{ % vbar: <36> y1 y2 <nbars> x1 w1 x2 w2 ... xn wn - local ga = {_data = {36, 0, 20*pt, 1, 0.0, 2*pt}} + local ga = {36, 0, 20*pt, 1, 0.0, 2*pt} driver:ga_to_hbox(ga, [[mybox]]) }\box\mybox @@ -98,7 +99,7 @@ Test number 2: ten vbars in a row equally spaced by 10pt: ga[i*2 + 5] = 5*pt + i*20*pt ga[i*2 + 6] = 10*pt end - driver:ga_to_hbox({_data = ga}, [[mybox]]) + driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule \bigskip @@ -117,7 +118,7 @@ Test number 3: two series of vbars 10pt and 5pt large: ga[i*2 + 29] = 15*pt + i*20*pt ga[i*2 + 30] = 5*pt end - driver:ga_to_hbox({_data = ga}, [[mybox]]) + driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule \bigskip @@ -132,7 +133,7 @@ Test number 4: a bunch of thin vertical bars (25): ga[i*2 + 5] = 1*pt + i*4*pt ga[i*2 + 6] = 2*pt end - driver:ga_to_hbox({_data = ga}, [[mybox]]) + driver:ga_to_hbox(ga, [[mybox]]) }\vrule A\box\mybox A\vrule \bigskip @@ -155,7 +156,7 @@ Test number 5: two rows of a bunch of thin bars: ga[i*2 + 59] = 3*pt + i*4*pt ga[i*2 + 60] = 2*pt end - driver:ga_to_hbox({_data = ga}, [[mybox]]) + driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule \bigskip @@ -181,7 +182,7 @@ Test number 6: staircase of Vbars (manually data definition): 25*pt, % x 10*pt, % w } - driver:ga_to_hbox({_data = ga}, [[mybox]]) + driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule \bigskip @@ -219,7 +220,7 @@ Test number 7: vbars with spaced text, in three different rows: ga[52] = 71 % G ga[53] = 72 % H ga[54] = 0 - driver:ga_to_hbox({_data = ga}, [[mybox]]) + driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule \bigskip @@ -271,7 +272,7 @@ Test number 8: spaced text (checking the correct vertical alignment): ga[66] = 55 % 7 ga[67] = 56 % 8 ga[68] = 0 - driver:ga_to_hbox({_data = ga}, [[mybox]]) + driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule \bigskip @@ -323,7 +324,7 @@ Test number 9: spaced text, check correct vertical alignment: ga[66] = 55 % 7 ga[67] = 56 % 8 ga[68] = 0 - driver:ga_to_hbox({_data = ga}, [[mybox]]) + driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule \bigskip @@ -356,11 +357,11 @@ Test number 10: two centered texts aligned to the baseline: ga[23] = 56 % 8 ga[24] = 57 % 9 ga[25] = 0 - driver:ga_to_hbox({_data = ga}, [[mybox]]) + driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule \bigskip -So far, we have manually build data for ga stream. Next we are going to +So far, we have manually build data for ga stream. For now on, we are going to use the ga-canvas library. \bigskip @@ -368,26 +369,22 @@ In fact, all the previous tests are rebuild with the ga-canvas library. Test 1: a vbar 2pt width, 20pt height: \directlua{ - gacanvas = require "lib-geo.brcd-gacanvas" - local ga = gacanvas:new() - local vbar = {_yline = {0.0, 2*pt}} - local err = ga:encode_Vbar(vbar, 0.0, 0.0, 20*pt) % x, w - assert(not err, err) + local ga = brcd:new_canvas() + local vbar = {0.0, 2*pt} + assert(ga:encode_vbar(vbar, 0.0, 0.0, 20*pt)) % x, w driver:ga_to_hbox(ga, [[mybox]]) }\box\mybox \bigskip Test 2: ten vbars equally spaced by 10pt: \directlua{ - local ga = gacanvas:new() - local data = {} + local ga = brcd:new_canvas() + local bars = {} for i = 0, 9 do - data[i*2 + 1] = 5*pt + i*20*pt % x - data[i*2 + 2] = 10*pt % w + bars[i*2 + 1] = 5*pt + i*20*pt % x + bars[i*2 + 2] = 10*pt % w end - local bars = {_yline = data} - local err = ga:encode_Vbar(bars, 0.0, 0.0, 10*pt) - assert(not err, err) + assert(ga:encode_vbar(bars, 0.0, 0.0, 10*pt)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule @@ -404,11 +401,9 @@ Test 3: two series of vbars 10pt and 5pt large: b2[i*2 + 1] = i*20*pt b2[i*2 + 2] = 5*pt end - local ga = gacanvas:new() - local err = ga:encode_Vbar({_yline=b1}, 0.0, 0.0, 10*pt) - assert(not err, err) - err = ga:encode_Vbar({_yline=b2}, 10.0*pt, 2.5*pt, 7.5*pt) - assert(not err, err) + local ga = brcd:new_canvas() + assert(ga:encode_vbar(b1, 0.0, 0.0, 10*pt)) + assert(ga:encode_vbar(b2, 10.0*pt, 2.5*pt, 7.5*pt)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule @@ -420,9 +415,8 @@ Test 4: a bunch of thin bars: b[i*2 + 1] = 1*pt + i*4*pt b[i*2 + 2] = 2*pt end - local ga = gacanvas:new() - local err = ga:encode_Vbar({_yline=b}, 0.0, 5*pt, 25*pt) - assert(not err, err) + local ga = brcd:new_canvas() + assert(ga:encode_vbar(b, 0.0, 5*pt, 25*pt)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule{ }\box\mybox{ }\vrule @@ -434,42 +428,34 @@ Test 5: two levels of a bunch of thin bars: b[i*2 + 1] = i*4*pt b[i*2 + 2] = 2*pt end - local b = {_yline=b} - local ga = gacanvas:new() - local err = ga:encode_Vbar(b, 0.0, 5*pt, 25*pt) - assert(not err, err) - err = ga:encode_Vbar(b, 2*pt, 25*pt, 45*pt, b) + local ga = brcd:new_canvas() + assert(ga:encode_vbar(b, 0.0, 5*pt, 25*pt)) + assert(ga:encode_vbar(b, 2*pt, 25*pt, 45*pt, b)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule \bigskip Test number 6: staircase of bars (manual insertion of data): \directlua{ - local b = {_yline={0.0, 10*pt}} - local ga = gacanvas:new() - local err = ga:encode_Vbar(b, 0.0, 0.0, 20*pt) - assert(not err, err) - err = ga:encode_Vbar(b, 10*pt, 20*pt, 40*pt) - assert(not err, err) - err = ga:encode_Vbar(b, 20*pt, 40*pt, 60*pt) - assert(not err, err) + local b = {0.0, 10*pt} + local ga = brcd:new_canvas() + assert(ga:encode_vbar(b, 0.0, 0.0, 20*pt)) + assert(ga:encode_vbar(b, 10*pt, 20*pt, 40*pt)) + assert(ga:encode_vbar(b, 20*pt, 40*pt, 60*pt)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule \bigskip Test number 7: vbars with spaced text, all in three rows: \directlua{ - local b = {} + local vb = {} for i = 0,7 do - b[i*2+1] = i*10*pt - b[i*2+2] = 5*pt + vb[i*2+1] = i*10*pt + vb[i*2+2] = 5*pt end - local vb = {_yline=b} - local ga = gacanvas:new() - local err = ga:encode_Vbar(vb, 0.0, 0.0, 20*pt) - assert(not err, err) - local err = ga:encode_Vbar(vb, 0.0, 30*pt, 50*pt) - assert(not err, err) + local ga = brcd:new_canvas() + assert(ga:encode_vbar(vb, 0.0, 0.0, 20*pt)) + assert(ga:encode_vbar(vb, 0.0, 30*pt, 50*pt)) local txt = {codepoint = { 65, % A 66, % B @@ -480,8 +466,7 @@ Test number 7: vbars with spaced text, all in three rows: 71, % G 72, % H }} - err = ga:encode_Text_xspaced(txt, 0.0, 10*pt, 25*pt, 0.5) - assert(not err, err) + assert(ga:encode_Text_xspaced(txt, 0.0, 10*pt, 25*pt, 0.5)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule @@ -493,12 +478,9 @@ Test 8: spaced text, check correct vertical alignment: b[i*2+1] = i*10*pt b[i*2+2] = 2*pt end - b = {_yline=b} - local ga = gacanvas:new() - local err = ga:encode_Vbar(b, 0.0, 0.0, 20*pt) - assert(not err, err) - local err = ga:encode_Vbar(b, 0.0, 40*pt, 60*pt) - assert(not err, err) + local ga = brcd:new_canvas() + assert(ga:encode_vbar(b, 0.0, 0.0, 20*pt)) + assert(ga:encode_vbar(b, 0.0, 40*pt, 60*pt)) local c = { codepoint = { 65, % A 66, % B @@ -509,8 +491,7 @@ Test 8: spaced text, check correct vertical alignment: 71, % G 72, % H }} - err = ga:encode_Text_xspaced(c, 0.0, 10*pt, 30*pt, 0.0) - assert(not err, err) + assert(ga:encode_Text_xspaced(c, 0.0, 10*pt, 30*pt, 0.0)) local n = { codepoint = { 49, % 1 50, % 2 @@ -521,8 +502,7 @@ Test 8: spaced text, check correct vertical alignment: 55, % 7 56, % 8 }} - err = ga:encode_Text_xspaced(n, 0.0, 10*pt, 30*pt, 1.0) - assert(not err, err) + assert(ga:encode_Text_xspaced(n, 0.0, 10*pt, 30*pt, 1.0)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule @@ -534,12 +514,9 @@ Test number 9: spaced text, check correct vertical alignment: b[i*2+1] = i*10*pt b[i*2+2] = 8*pt end - b = {_yline = b} - local ga = gacanvas:new() - local err = ga:encode_Vbar(b, 0.0, 0.0, 20*pt) - assert(not err, err) - local err = ga:encode_Vbar(b, 0.0, 40*pt, 60*pt) - assert(not err, err) + local ga = brcd:new_canvas() + assert(ga:encode_vbar(b, 0.0, 0.0, 20*pt)) + assert(ga:encode_vbar(b, 0.0, 40*pt, 60*pt)) local c = { codepoint = { 65, % A 66, % B @@ -550,8 +527,7 @@ Test number 9: spaced text, check correct vertical alignment: 71, % G 72, % H }} - err = ga:encode_Text_xspaced(c, 0.0, 10*pt, 20*pt, 0.0) - assert(not err, err) + assert(ga:encode_Text_xspaced(c, 0.0, 10*pt, 20*pt, 0.0)) local n = { codepoint = { 49, % 1 50, % 2 @@ -562,8 +538,7 @@ Test number 9: spaced text, check correct vertical alignment: 55, % 7 56, % 8 }} - err = ga:encode_Text_xspaced(n, 0.0, 10*pt, 40*pt, 1.0) - assert(not err, err) + assert(ga:encode_Text_xspaced(n, 0.0, 10*pt, 40*pt, 1.0)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule{ }\box\mybox{ }\vrule @@ -582,16 +557,14 @@ Test number 10: two centered texts and baseline aligned: 56, % 8 57, % 9 }} - local ga = gacanvas:new() - local err = ga:encode_Text(n, 0, 0, 0.5, 0) - assert(not err, err) + local ga = brcd:new_canvas() + assert(ga:encode_Text(n, 0, 0, 0.5, 0)) local a = { codepoint = { 65, % A string.byte("Q"), % Q 67, % C }} - err = ga:encode_Text(a, 0, 0, 0.5, 1) - assert(not err, err) + assert(ga:encode_Text(a, 0, 0, 0.5, 1)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule @@ -610,16 +583,14 @@ Test number 11: two centered texts aligned: 56, % 8 57, % 9 }} - local ga = gacanvas:new() - local err = ga:encode_Text(n, 0, 0, 0.5, 1) - assert(not err, err) + local ga = brcd:new_canvas() + assert(ga:encode_Text(n, 0, 0, 0.5, 1)) local a = { codepoint = { 65, % A string.byte("Q"), % Q 67, % C }} - err = ga:encode_Text(a, 0, 0, 0.5, 0) - assert(not err, err) + assert(ga:encode_Text(a, 0, 0, 0.5, 0)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule @@ -639,9 +610,8 @@ Test number 12: text\_xwidth opcode: 56, % 8 57, % 9 }} - local ga = gacanvas:new() - local err = ga:encode_Text_xwidth(n, 0, tex.sp "5cm", 0, 0) - assert(not err, err) + local ga = brcd:new_canvas() + assert(ga:encode_Text_xwidth(n, 0, tex.sp "5cm", 0, 0)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule @@ -664,20 +634,14 @@ Test number 13: text\_xwidth with different size: 56, % 8 57, % 9 }} - local ga = gacanvas:new() - % (txt, x1, x2, ypos, ay) --> err - local err = ga:encode_Text_xwidth(n, tex.sp "0mm", tex.sp "50mm", 0, 0) - assert(not err, err) - local err = ga:encode_Text_xwidth(n, tex.sp "5mm", tex.sp "45mm", tex.sp "3mm", 0) - assert(not err, err) - local err = ga:encode_Text_xwidth(n, tex.sp "10mm", tex.sp "40mm", tex.sp "6mm", 0) - assert(not err, err) - local err = ga:encode_Text_xwidth(n, tex.sp "15mm", tex.sp "35mm", tex.sp "9mm", 0) - assert(not err, err) - local err = ga:encode_Text_xwidth(n, tex.sp "20mm", tex.sp "30mm", tex.sp "12mm", 0) - assert(not err, err) - local err = ga:encode_Text_xwidth(n, tex.sp "24mm", tex.sp "26mm", tex.sp "15mm", 0) - assert(not err, err) + local ga = brcd:new_canvas() + % (txt, x1, x2, ypos, ay) --> ok, err + assert(ga:encode_Text_xwidth(n, tex.sp "0mm", tex.sp "50mm", 0, 0)) + assert(ga:encode_Text_xwidth(n, tex.sp "5mm", tex.sp "45mm", tex.sp "3mm", 0)) + assert(ga:encode_Text_xwidth(n, tex.sp "10mm", tex.sp "40mm", tex.sp "6mm", 0)) + assert(ga:encode_Text_xwidth(n, tex.sp "15mm", tex.sp "35mm", tex.sp "9mm", 0)) + assert(ga:encode_Text_xwidth(n, tex.sp "20mm", tex.sp "30mm", tex.sp "12mm", 0)) + assert(ga:encode_Text_xwidth(n, tex.sp "24mm", tex.sp "26mm", tex.sp "15mm", 0)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule @@ -691,16 +655,12 @@ Test number 14: place bars and text as text\_xwidth: b[i*2 + 1] = i*12*pt b[i*2 + 2] = 0.4*pt end - b = {_yline = b} local n = {codepoint = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,}} - local ga = gacanvas:new() - % (vbar, x0, y1, y2) --> err - local err = ga:encode_Vbar(b, 0.0, 0*pt, 25*pt) - local err = ga:encode_Vbar(b, 0.0, 32*pt, 42*pt) - assert(not err, err) - % (txt, x1, x2, ypos, ay) --> err - local err = ga:encode_Text_xwidth(n, 0*pt, 108*pt, 25*pt, 0) - assert(not err, err) + local ga = brcd:new_canvas() + % (vbar, x0, y1, y2) --> ok, err + assert(ga:encode_vbar(b, 0.0, 0*pt, 25*pt)) + % (txt, x1, x2, ypos, ay) --> ok, err + assert(ga:encode_Text_xwidth(n, 0*pt, 108*pt, 25*pt, 0)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule @@ -711,17 +671,14 @@ Test number 14: place bars and text as text\_xwidth: b[i*2 + 1] = i*12*pt b[i*2 + 2] = 0.2*pt end - b = {_yline = b} local n = { 48, 49, 50, 51, string.byte([[x]]), 53, 54, 55, 56,} n = {codepoint = n} - local ga = gacanvas:new() + local ga = brcd:new_canvas() % x0, y1, y2, bars - local err = ga:encode_Vbar(b, 0.0, 0*pt, 25*pt) - local err = ga:encode_Vbar(b, 0.0, 32*pt, 42*pt) - assert(not err, err) - % (txt, x1, x2, ypos, ay) --> err - local err = ga:encode_Text_xwidth(n, 0*pt, 96*pt, 25*pt, 0) - assert(not err, err) + assert(ga:encode_vbar(b, 0.0, 0*pt, 25*pt)) + assert(ga:encode_vbar(b, 0.0, 32*pt, 42*pt)) + % (txt, x1, x2, ypos, ay) --> ok, err + assert(ga:encode_Text_xwidth(n, 0*pt, 96*pt, 25*pt, 0)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule @@ -730,10 +687,9 @@ Test number 15: place text\_xwidth when text is only two chars long: \directlua{ local n = {codepoint = { 48, 56,}} % 0 and 8 - local ga = gacanvas:new() - % (txt, x1, x2, ypos, ay) --> err - local err = ga:encode_Text_xwidth(n, 0*pt, 32*pt, 25*pt, 0) - assert(not err, err) + local ga = brcd:new_canvas() + % (txt, x1, x2, ypos, ay) --> ok, err + assert(ga:encode_Text_xwidth(n, 0*pt, 32*pt, 25*pt, 0)) driver:ga_to_hbox(ga, [[mybox]]) }\vrule\box\mybox\vrule |