<?php
declare(strict_types=1);
$test->ffi->tb_init();
$w = $test->ffi->tb_width();
$h = $test->ffi->tb_height();
$bg = $test->defines['TB_BLACK'];
$red = $test->defines['TB_RED'];
$green = $test->defines['TB_GREEN'];
$blue = $test->defines['TB_BLUE'];
$y = 0;
$version_str = $test->ffi->tb_version();
$has_version = is_string($version_str) && strlen($version_str) > 0;
$test->ffi->tb_printf(0, $y++, 0, 0, "has_version=%s", $has_version ? 'y' : 'n');
$test->ffi->tb_printf(0, $y++, $red, $bg, "width=%d", $w);
$test->ffi->tb_printf(0, $y++, $green, $bg, "height=%d", $h);
foreach (['TB_BOLD', 'TB_UNDERLINE', 'TB_ITALIC', 'TB_REVERSE'] as $attr) {
$test->ffi->tb_printf(0, $y++, $blue | $test->defines[$attr], $bg, "attr=%s", $attr);
}
$test->xvkbd('\Ca'); // Ctrl-A
$event = $test->ffi->new('struct tb_event');
$rv = $test->ffi->tb_peek_event(FFI::addr($event), 1000);
$out_w = $test->ffi->new('size_t');
$test->ffi->tb_printf_ex(0, $y++, $blue, $bg, FFI::addr($out_w), "event rv=%d type=%d mod=%d key=%d ch=%d w=%d h=%d x=%d y=%d",
$rv,
$event->type,
$event->mod,
$event->key,
$event->ch,
$event->w,
$event->h,
$event->x,
$event->y
);
$test->ffi->tb_printf(0, $y++, 0, 0, "out_w=%d", $out_w->cdata);
$test->ffi->tb_present();
$test->screencap();