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
8
namespace
wren::ansi
{
9
10
namespace
r = std::ranges;
11
namespace
rv = std::ranges::views;
12
13
constexpr
auto
kAnsiEscape
=
"\033["
;
14
15
constexpr
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
20
consteval
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
25
consteval
auto
make_fg_code
(
const
std::string& colour) {
26
return
make_ansi_colour_code
({
"38"
,
"5"
, colour});
27
}
28
29
constexpr
auto
kReset
=
make_ansi_colour_code
({
"0"
});
30
constexpr
auto
kOrange
=
make_fg_code
(
"3"
);
31
constexpr
auto
kRed
=
make_fg_code
(
"1"
);
32
constexpr
auto
kGrey
=
make_fg_code
(
"7"
);
33
constexpr
auto
kBlue
=
make_fg_code
(
"4"
);
34
constexpr
auto
kGreen
=
make_fg_code
(
"2"
);
35
36
inline
auto
clear_to_end
() { std::print(
"{}"
,
make_ansi_code
({
"0J"
})); }
37
38
inline
auto
move_cursor_up
(std::size_t lines) {
39
std::print(
"{}"
,
make_ansi_code
({std::format(
"{}A"
, lines)}));
40
}
41
42
inline
auto
reset_line
() {
43
std::print(
"{}{}\r"
,
make_ansi_code
({
"1F"
}),
make_ansi_code
({
"2K"
}));
44
}
45
46
}
// namespace wren::ansi
wren::ansi
Definition
ansi.hpp:8
wren::ansi::kBlue
constexpr auto kBlue
Definition
ansi.hpp:33
wren::ansi::move_cursor_up
auto move_cursor_up(std::size_t lines)
Definition
ansi.hpp:38
wren::ansi::reset_line
auto reset_line()
Definition
ansi.hpp:42
wren::ansi::kAnsiEscape
constexpr auto kAnsiEscape
Definition
ansi.hpp:13
wren::ansi::kGrey
constexpr auto kGrey
Definition
ansi.hpp:32
wren::ansi::kReset
constexpr auto kReset
Definition
ansi.hpp:29
wren::ansi::make_ansi_code
constexpr auto make_ansi_code(const std::vector< std::string > &args)
Definition
ansi.hpp:15
wren::ansi::make_ansi_colour_code
consteval auto make_ansi_colour_code(std::vector< std::string > args)
Definition
ansi.hpp:20
wren::ansi::kGreen
constexpr auto kGreen
Definition
ansi.hpp:34
wren::ansi::clear_to_end
auto clear_to_end()
Definition
ansi.hpp:36
wren::ansi::kOrange
constexpr auto kOrange
Definition
ansi.hpp:30
wren::ansi::kRed
constexpr auto kRed
Definition
ansi.hpp:31
wren::ansi::make_fg_code
consteval auto make_fg_code(const std::string &colour)
Definition
ansi.hpp:25
wren_utils
include
wren
logging
ansi.hpp
Generated by
1.14.0