消除警告,规范日志输出

This commit is contained in:
Nanako 2025-04-21 23:57:16 +08:00
parent 546c40a18b
commit 12b6d058df
4 changed files with 36 additions and 34 deletions

View File

@ -13,17 +13,17 @@
void test_color() {
const char* test_cases[] = {
"#FFF", // hex rgb
"#ff0000", // hex RRGGBB
"#00ff0080", // hex RRGGBBAA
"#1234", // hex RGBA
"rgb(255,0,0)", // rgb int
"rgba(0,255,0,128)",// rgba int
"rgba(0, 0, 255, 255)", // rgba int with spaces
"rgb(1.0, 0.0, 0.0)", // rgb float
"rgba(0.0, 1.0, 0.0, 0.5)",// rgba float
" rgb(0.0, 0.0, 1.0) ", // rgb float with spaces
"rgba(1, 0.5, 0, 1.0)", // rgba mixed - should parse as float
"#FFF", // hex rgb
"#ff0000", // hex RRGGBB
"#00ff0080", // hex RRGGBBAA
"#1234", // hex RGBA
"rgb(255,0,0)", // rgb int
"rgba(0,255,0,128)", // rgba int
"rgba(0, 0, 255, 255)", // rgba int with spaces
"rgb(1.0, 0.0, 0.0)", // rgb float
"rgba(0.0, 1.0, 0.0, 0.5)", // rgba float
" rgb(0.0, 0.0, 1.0) ", // rgb float with spaces
"rgba(1, 0.5, 0, 1.0)", // rgba mixed - should parse as float
"invalid",
"#12345",
"rgb(300,0,0)",
@ -31,14 +31,13 @@ void test_color() {
"rgba(100,100,100)" // missing alpha
};
for (const char* test_str : test_cases) {
for (const char* test_str: test_cases) {
std::optional<linear_color> color = linear_color::from_string(test_str);
std::println(std::cout, "Parsing '{}': ", test_str);
if (color) {
std::println(std::cout, "Success -> r:{}, g:{}, b:{}, a:{}", color->r, color->g, color->b, color->a);
} else {
std::println(std::cerr, "Failed to parse color string: {}", test_str);
}
else { std::println(std::cerr, "Failed to parse color string: {}", test_str); }
}
}
@ -70,22 +69,22 @@ int main(int argc, char* argv[]) {
[
mslot(mv_box)
.horizontal_alignment(horizontal_alignment_t::left)
+mnew(mbutton)
+ mnew(mbutton)
[
mslot(mbutton)
.margin({ 10 })
.visibility(visibility_t::visible)
[
mnew(mtext_block,
.text(config_info_str)
.font_size(24)
)
.text(config_info_str)
.font_size(24)
)
]
],
mslot(mv_box)
.horizontal_alignment(horizontal_alignment_t::right)
+mnew(mbutton)
+ mnew(mbutton)
[
mslot(mbutton)
.margin({ 10 })
@ -94,7 +93,7 @@ int main(int argc, char* argv[]) {
mnew(mtext_block,
.text(U"Hello, World!")
.font_size(24)
)
)
]
]
]

View File

@ -18,34 +18,34 @@ void mirage_log(const char* tag, uint32_t log_level, uint32_t log_ite
const char* file_str = filename_or_null ? filename_or_null : "(unknown)";
/* 根据log_level确定日志级别字符串和输出流 */
const char* level_str;
FILE* output_stream;
const char* level_str;
std::ostream* output_stream;
switch (log_level) {
case 0:
level_str = "PANIC";
output_stream = stderr;
output_stream = &std::cerr;
break;
case 1:
level_str = "ERROR";
output_stream = stderr;
output_stream = &std::cerr;
break;
case 2:
level_str = "WARNING";
output_stream = stderr;
output_stream = &std::cerr;
break;
case 3:
level_str = "INFO";
output_stream = stdout;
output_stream = &std::cout;
break;
default:
level_str = "UNKNOWN";
output_stream = stderr; // 默认使用stderr
output_stream = &std::cerr; // 默认使用stderr
break;
}
/* 打印格式化的日志消息到相应的流 */
fprintf(output_stream, "[%s][%s][ID:%u][%s:%u] %s\n", tag_str, level_str, log_item_id, file_str, line_nr, msg_str);
std::println(*output_stream, "sokol_gfx: [{}][{}][ID:{}][{}:{}] {}", tag_str, level_str, log_item_id, file_str, line_nr, msg_str);
/* 在此实现中未使用user_data */
(void) user_data;
@ -59,7 +59,7 @@ void mirage_app::init() {
last_time = get_current_time();
if (!mirage_style::get().load_config("default_style.toml")) {
fprintf(stderr, "mirage: 无法加载样式配置\n");
std::println(std::cerr, "mirage: 无法加载样式配置");
}
render_context = mirage_create_render_context();
render_context->init();
@ -73,10 +73,9 @@ void mirage_app::init() {
render_context->end_init();
}
// 初始化用时
fprintf(stderr, "mirage: 初始化耗时 %lld ms\n", std::chrono::duration_cast<std::chrono::milliseconds>(duration).count());
std::println(std::cout, "mirage: 初始化耗时 {} ms", std::chrono::duration_cast<std::chrono::milliseconds>(duration).count());
}
void mirage_app::run() {
while (!platform_window::get_windows().empty()) {
delta_time = get_current_time() - last_time;

View File

@ -7,7 +7,7 @@ bool config_t::load_config(const std::filesystem::path& in_filename) {
tbl = toml::parse_file(in_filename.string());
}
catch (const toml::parse_error& err) {
std::println(std::cerr, "{}", err.what());
std::println(std::cerr, "mirage: {}", err.what());
return false;
}
return true;

View File

@ -115,7 +115,9 @@ std::optional<linear_color> parse_hex_color(const std::string& in_str) {
std::optional<linear_color> parse_rgb_rgba_color(const std::string& in_str) {
std::string lower_str = in_str;
// 转换为小写以便检查 "rgb(" 和 "rgba("
std::ranges::transform(lower_str, lower_str.begin(), ::tolower);
std::ranges::transform(lower_str, lower_str.begin(), [](const char c) {
return static_cast<char>(tolower(c));
});
const auto open_paren = lower_str.find('(');
const auto close_paren = lower_str.find(')');
@ -226,7 +228,9 @@ std::optional<linear_color> linear_color::from_string(const std::string& in_str)
}
std::string lower_trimmed_str = trimmed_str;
std::ranges::transform(lower_trimmed_str, lower_trimmed_str.begin(), ::tolower);
std::ranges::transform(lower_trimmed_str, lower_trimmed_str.begin(), [](const char c) {
return static_cast<char>(tolower(c));
});
// **委托给 RGB/RGBA 解析器**
if (lower_trimmed_str.rfind("rgb", 0) == 0) {