97 lines
2.1 KiB
PHP
97 lines
2.1 KiB
PHP
|
<?php declare(strict_types=1);
|
||
|
|
||
|
namespace Aviat\Kilo;
|
||
|
|
||
|
/**
|
||
|
* ANSI
|
||
|
*/
|
||
|
class ANSI {
|
||
|
// ------------------------------------------------------------------------
|
||
|
// General ANSI standard escape sequences
|
||
|
// ------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Clear the terminal window
|
||
|
*/
|
||
|
public const CLEAR_SCREEN = "\e[2J";
|
||
|
|
||
|
/**
|
||
|
* Clear the terminal line
|
||
|
*/
|
||
|
public const CLEAR_LINE = "\e[K";
|
||
|
|
||
|
// ------------------------------------------------------------------------
|
||
|
// Text formatting escape sequences
|
||
|
// ------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Removes text attributes, such as bold, underline, blink, inverted colors
|
||
|
*/
|
||
|
public const RESET_TEXT = "\e[0m";
|
||
|
|
||
|
public const BOLD_TEXT = "\e[1m";
|
||
|
|
||
|
public const UNDERLINE_TEXT = "\e[4m";
|
||
|
|
||
|
/**
|
||
|
* Move the cursor to position 0,0 which is the top left
|
||
|
*/
|
||
|
public const RESET_CURSOR = "\e[H";
|
||
|
|
||
|
// ------------------------------------------------------------------------
|
||
|
// VT-series escapes, not really ANSI standard
|
||
|
// ------------------------------------------------------------------------
|
||
|
|
||
|
public const HIDE_CURSOR = "\e[?25l";
|
||
|
public const SHOW_CURSOR = "\e[?25h";
|
||
|
|
||
|
/**
|
||
|
* Generate the ascii sequence for basic text color
|
||
|
*
|
||
|
* @param int $color
|
||
|
* @return string
|
||
|
*/
|
||
|
public static function color(int $color): string
|
||
|
{
|
||
|
return sprintf("\e[%dm", $color);
|
||
|
}
|
||
|
|
||
|
public static function rgbColor(int $r, int $g, int $b): string
|
||
|
{
|
||
|
return sprintf("\e[38;2;%d;%d;%bm", $r, $g, $b);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Move the cursor the specified position
|
||
|
*
|
||
|
* @param int $line
|
||
|
* @param int $column
|
||
|
* @return string
|
||
|
*/
|
||
|
public static function moveCursor(int $line, int $column): string
|
||
|
{
|
||
|
return sprintf("\e[%d;%dH", $line, $column);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Scroll the specified number of lines up
|
||
|
*
|
||
|
* @param int $lines
|
||
|
* @return string
|
||
|
*/
|
||
|
public static function scrollUp(int $lines): string
|
||
|
{
|
||
|
return sprintf("\e[%dS", $lines);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Scroll the specified number of lines down
|
||
|
*
|
||
|
* @param int $lines
|
||
|
* @return string
|
||
|
*/
|
||
|
public static function scrollDown(int $lines): string
|
||
|
{
|
||
|
return sprintf("\e[%dT", $lines);
|
||
|
}
|
||
|
}
|