/** * @file term.hpp * @brief 端末制御ヘッダファイル。 * @copyright 20177777773 Nomura Kei * @depends * j.hpp */ #ifndef J_IO_TERM_HPP #define J_IO_TERM_HPP #include <string> #include <j.hpp> // ASCII エスケープコードによる表示 namespace j { namespace io { namespace Term { // 装飾 constexpr std::string_view CLR = "\x1b[0m"; //!< 装飾無し constexpr std::string_view BLD = "\x1b[1m"; //!< 太字 constexpr std::string_view LGT = "\x1b[2m"; //!< 細字 constexpr std::string_view ITA = "\x1b[3m"; //!< イタリック constexpr std::string_view UND = "\x1b[4m"; //!< 下線 constexpr std::string_view BLN = "\x1b[5m"; //!< 点滅 constexpr std::string_view FBL = "\x1b[6m"; //!< 高速点滅 constexpr std::string_view INV = "\x1b[7m"; //!< 反転表示 constexpr std::string_view HID = "\x1b[8m"; //!< 非表示 (コピーは可能) constexpr std::string_view CAN = "\x1b[9m"; //!< 取り消し // 文字色 namespace Color { constexpr std::string_view DEF = "\x1b[39m"; //!< デフォルト constexpr std::string_view BLK = "\x1b[30m"; //!< 黒 constexpr std::string_view RED = "\x1b[31m"; //!< 赤 constexpr std::string_view GRN = "\x1b[32m"; //!< 緑 constexpr std::string_view YEL = "\x1b[33m"; //!< 黄 constexpr std::string_view BLU = "\x1b[34m"; //!< 青 constexpr std::string_view MAG = "\x1b[35m"; //!< 紫 constexpr std::string_view CYN = "\x1b[36m"; //!< 水 constexpr std::string_view WHT = "\x1b[37m"; //!< 白 constexpr std::string_view H_BLK = "\x1b[90m"; //!< 黒(高輝度) constexpr std::string_view H_RED = "\x1b[91m"; //!< 赤(高輝度) constexpr std::string_view H_GRN = "\x1b[92m"; //!< 緑(高輝度) constexpr std::string_view H_YEL = "\x1b[93m"; //!< 黄(高輝度) constexpr std::string_view H_BLU = "\x1b[94m"; //!< 青(高輝度) constexpr std::string_view H_MAG = "\x1b[95m"; //!< 紫(高輝度) constexpr std::string_view H_CYN = "\x1b[96m"; //!< 水(高輝度) constexpr std::string_view H_WHT = "\x1b[97m"; //!< 白(高輝度) } // 背景色 namespace BgColor { constexpr std::string_view DEF = "\x1b[49m"; //!< デフォルト constexpr std::string_view BLK = "\x1b[40m"; //!< 黒 constexpr std::string_view RED = "\x1b[41m"; //!< 赤 constexpr std::string_view GRN = "\x1b[42m"; //!< 緑 constexpr std::string_view YEL = "\x1b[43m"; //!< 黄 constexpr std::string_view BLU = "\x1b[44m"; //!< 青 constexpr std::string_view MAG = "\x1b[45m"; //!< 紫 constexpr std::string_view CYN = "\x1b[46m"; //!< 水 constexpr std::string_view WHT = "\x1b[47m"; //!< 白 constexpr std::string_view H_BLK = "\x1b[100m"; //!< 黒(高輝度) constexpr std::string_view H_RED = "\x1b[101m"; //!< 赤(高輝度) constexpr std::string_view H_GRN = "\x1b[102m"; //!< 緑(高輝度) constexpr std::string_view H_YEL = "\x1b[103m"; //!< 黄(高輝度) constexpr std::string_view H_BLU = "\x1b[104m"; //!< 青(高輝度) constexpr std::string_view H_MAG = "\x1b[105m"; //!< 紫(高輝度) constexpr std::string_view H_CYN = "\x1b[106m"; //!< 水(高輝度) constexpr std::string_view H_WHT = "\x1b[107m"; //!< 白(高輝度) } // カーソル移動 namespace Cursor { constexpr std::string_view DEL_AFT = "\x1b[0J"; //!< カーソル以降を消去 constexpr std::string_view DEL_BEF = "\x1b[1J"; //!< カーソル以前を消去 constexpr std::string_view DEL = "\x1b[2J"; //!< 全体を消去 constexpr std::string_view DEL_AFT_LINE = "\x1b[0K"; //!< カーソル行のカーソル以降を消去 constexpr std::string_view DEL_BEF_LINE = "\x1b[1K"; //!< カーソル行のカーソル以前を消去 constexpr std::string_view DEL_LINE = "\x1b[2K"; //!< カーソル行を消去 std::string_view MAKE_ESC_SEQ(const char *code, int n, const char *delim = nullptr, int m = 0); inline std::string_view UP(int n) { return MAKE_ESC_SEQ("A", n); } //!< n 上に移動 inline std::string_view DOWN(int n) { return MAKE_ESC_SEQ("B", n); } //!< n 下に移動 inline std::string_view RIGHT(int n) { return MAKE_ESC_SEQ("C", n); } //!< n 右に移動 inline std::string_view LEFT(int n) { return MAKE_ESC_SEQ("D", n); } //!< n 左に移動 inline std::string_view DOWN_LINE(int n) { return MAKE_ESC_SEQ("E", n); } //!< n 行下に移動(行頭[1列目]に移動) inline std::string_view UP_LINE(int n) { return MAKE_ESC_SEQ("F", n); } //!< n 行上に移動(行頭[1列目]に移動) inline std::string_view COL(int n) { return MAKE_ESC_SEQ("G", n); } //!< n 列に移動 inline std::string_view MOVE(int n, int m) { return MAKE_ESC_SEQ("H", n, ";", m); } //!< n 行, m 列に移動 inline std::string_view SCROLL(int n) { return MAKE_ESC_SEQ("S", n); } //!< n 行分次にスクロール inline std::string_view SCROLL_R(int n) { return MAKE_ESC_SEQ("T", n); } //!< n 行分前にスクロール } } } } #endif // J_IO_TERM_HPP