78 lines
2.2 KiB
PHP
78 lines
2.2 KiB
PHP
|
<?php return [
|
||
|
|
||
|
/**
|
||
|
* Draw a box frame
|
||
|
*/
|
||
|
'drawbox' => function ($term, $column, $line, $width, $height) {
|
||
|
fprintf(STDERR, "drawbox: {%d,%d}+[%d,%d]\n", $column, $line, $width, $height);
|
||
|
$oldpos = $term->getCursorPosition();
|
||
|
|
||
|
$term->setCursor($line, $column);
|
||
|
$term->write("\u{250c}" . str_repeat("\u{2500}", $width - 2) . "\u{2510}");
|
||
|
|
||
|
$term->setCursor($line + $height, $column);
|
||
|
$term->write("\u{2514}" . str_repeat("\u{2500}", $width - 2) . "\u{2518}");
|
||
|
|
||
|
for ($l = $line + 1; $l < $line + $height; $l++) {
|
||
|
$term->setCursor($l, $column);
|
||
|
$term->write("\u{2502}");
|
||
|
$term->setCursor($l, $column + $width - 1);
|
||
|
$term->write("\u{2502}");
|
||
|
}
|
||
|
|
||
|
$term->setCursor($oldpos[0], $oldpos[1]);
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Draw a box and fill it
|
||
|
*/
|
||
|
'drawfilledbox' => function ($term, $column, $line, $width, $height) {
|
||
|
fprintf(STDERR, "drawbox: {%d,%d}+[%d,%d]\n", $column, $line, $width, $height);
|
||
|
$oldpos = $term->getCursorPosition();
|
||
|
|
||
|
$term->setCursor($line, $column);
|
||
|
$term->write("\u{250c}" . str_repeat("\u{2500}", $width - 2) . "\u{2510}");
|
||
|
|
||
|
$term->setCursor($line + $height, $column);
|
||
|
$term->write("\u{2514}" . str_repeat("\u{2500}", $width - 2) . "\u{2518}");
|
||
|
|
||
|
for ($l = $line + 1; $l < $line + $height; $l++) {
|
||
|
$term->setCursor($l, $column);
|
||
|
$term->write("\u{2502}" . str_repeat(" ", $width - 2) . "\u{2502}");
|
||
|
}
|
||
|
|
||
|
$term->setCursor($oldpos[0], $oldpos[1]);
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Draw a horizontal line
|
||
|
*/
|
||
|
'drawhline' => function ($term, $line, $fromCol, $toCol) {
|
||
|
|
||
|
$oldpos = $term->getCursorPosition();
|
||
|
|
||
|
$term->setCursor($line, $fromCol);
|
||
|
$term->write(str_repeat("\u{2500}", ($toCol-$fromCol)));
|
||
|
|
||
|
$term->setCursor($oldpos[0], $oldpos[1]);
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Draw a vertical line
|
||
|
*/
|
||
|
'drawvline' => function ($term, $column, $fromLine, $toLine) {
|
||
|
|
||
|
$oldpos = $term->getCursorPosition();
|
||
|
|
||
|
for ($l = $fromLine; $l <= $toLine; $l++) {
|
||
|
$term->setCursor($l, $column);
|
||
|
$term->write("\u{2502}");
|
||
|
}
|
||
|
|
||
|
$term->setCursor($oldpos[0], $oldpos[1]);
|
||
|
|
||
|
}
|
||
|
|
||
|
];
|