#include "core/application.h" #include "core/vulkan_context_provider.h" #include "core/common/modifier_helper.h" #include "ui/widgets/containers/overlay.h" #include "ui/widgets/containers/scroll_box/scroll_box.h" #include "ui/window/render_window.h" #include "ui/tooltip/tooltip_types.h" #include "render/image/texture_manager.h" #include "render/text/font_manager.h" #include "ui/widgets/imager.h" #include "ui/widgets/text_widget.h" #include "ui/widgets/text_input/text_input.h" // 新的后效 widget 系统 #include "ui/widgets/effects/effects.h" #include "ui/widgets/custom_shader/basic_mask_widget.h" using namespace mirage; int main(int argc, char* argv[]) { application app; // 应用程序配置(Vulkan 相关) application_config config; config.app_name = "Test Thread"; config.enable_validation = true; // 主窗口配置 main_window_config window_config; window_config.title = "Test Thread"; window_config.width = 800; window_config.height = 600; window_config.vsync = true; if (!app.initialize(config, window_config)) { return -1; } // 获取上下文提供者来访问资源管理器 auto* ctx = app.get_context_provider(); uint32_t texture_id; if (auto t = ctx->get_texture_manager()->load_texture("D:\\G2uY1fJa8AAOucs.jpg")) texture_id = t.value(); else texture_id = ctx->get_texture_manager()->load_texture("D:\\screenshot-20251128-165627.png").value(); const auto text_size_i = ctx->get_texture_manager()->get_texture(texture_id)->size(); const auto tex_size = text_size_i.cast(); // 加载字体 const auto font_result = ctx->get_font_manager()->load_font(R"(C:\Windows\Fonts\msyh.ttc)"); if (!font_result.has_value()) throw std::runtime_error("加载字体失败"); const auto font_id = font_result.value(); // 设置 tooltip 默认字体 tooltip_config tooltip_cfg; tooltip_cfg.default_font_id = font_id; app.get_main_window()->set_tooltip_config(tooltip_cfg); const auto root_widget = new_widget()[ // new_widget()->font_id(font_id).text("你好,我们在此相遇").font_size(24).tooltip("测试tooltip"), // new_widget()->font_id(font_id).font_size(24), new_widget()[ new_widget()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain), // 圆形遮罩 + 模糊效果 (使用新的 blur_widget) // new_widget()[ new_widget()->set_radius(40.0f) // ] | align(alignment::center_left) ] // new_widget()[ // new_widget()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain), // // 暗角效果 (使用新的 vignette_widget) // new_widget()->set_radius(0.5f).set_softness(0.5f) // ], // new_widget()[ // new_widget()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain), // // 色差效果 (使用新的 chromatic_aberration_widget) // new_widget()->set_offset(vec2f_t{0.01f, 0.0f}) // ], // new_widget()[ // new_widget()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain), // // 噪点效果 (使用新的 noise_widget) // new_widget()->set_amount(0.2f).set_grain_size(1.0f) // ], // new_widget()[ // new_widget()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain), // // 颜色调整效果 (使用新的 color_adjust_widget) // new_widget()->set_brightness(0.1f).set_contrast(1.5f).set_saturation(1.5f).set_gamma(2.2f) // ], // new_widget()[ // new_widget()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain), // // 色调效果 (使用新的 color_tint_widget) // new_widget()->set_tint_color(color{1.0f, 0.4f, 0.4f, 0.3f}).set_blend_mode(4) // Overlay 模式 // ] ]; // 通过主窗口设置根控件 app.get_main_window()->set_root_widget(root_widget.ptr()); app.run(); }