wren
Vulkan-based game engine
Loading...
Searching...
No Matches
ansi.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <print>
4#include <ranges>
5#include <string>
6#include <vector>
7
8namespace wren::ansi {
9
10namespace r = std::ranges;
11namespace rv = std::ranges::views;
12
13constexpr auto kAnsiEscape = "\033[";
14
15constexpr auto make_ansi_code(const std::vector<std::string>& args) {
16 const auto argv = args | rv::join_with(';') | r::to<std::string>();
17 return kAnsiEscape + argv;
18}
19
20consteval auto make_ansi_colour_code(std::vector<std::string> args) {
21 const auto argv = args | rv::join_with(';') | r::to<std::string>();
22 return make_ansi_code({argv + "m"});
23}
24
25consteval auto make_fg_code(const std::string& colour) {
26 return make_ansi_colour_code({"38", "5", colour});
27}
28
29constexpr auto kReset = make_ansi_colour_code({"0"});
30constexpr auto kOrange = make_fg_code("3");
31constexpr auto kRed = make_fg_code("1");
32constexpr auto kGrey = make_fg_code("7");
33constexpr auto kBlue = make_fg_code("4");
34constexpr auto kGreen = make_fg_code("2");
35
36inline auto clear_to_end() { std::print("{}", make_ansi_code({"0J"})); }
37
38inline auto move_cursor_up(std::size_t lines) {
39 std::print("{}", make_ansi_code({std::format("{}A", lines)}));
40}
41
42inline auto reset_line() {
43 std::print("{}{}\r", make_ansi_code({"1F"}), make_ansi_code({"2K"}));
44}
45
46} // namespace wren::ansi
Definition ansi.hpp:8
constexpr auto kBlue
Definition ansi.hpp:33
auto move_cursor_up(std::size_t lines)
Definition ansi.hpp:38
auto reset_line()
Definition ansi.hpp:42
constexpr auto kAnsiEscape
Definition ansi.hpp:13
constexpr auto kGrey
Definition ansi.hpp:32
constexpr auto kReset
Definition ansi.hpp:29
constexpr auto make_ansi_code(const std::vector< std::string > &args)
Definition ansi.hpp:15
consteval auto make_ansi_colour_code(std::vector< std::string > args)
Definition ansi.hpp:20
constexpr auto kGreen
Definition ansi.hpp:34
auto clear_to_end()
Definition ansi.hpp:36
constexpr auto kOrange
Definition ansi.hpp:30
constexpr auto kRed
Definition ansi.hpp:31
consteval auto make_fg_code(const std::string &colour)
Definition ansi.hpp:25