#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/mask.h" #include "ui/widgets/post_process.h" #include "ui/widgets/text_widget.h" #include "ui/widgets/text_input/text_input.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(); // auto texture_id = ctx->get_texture_manager()->load_texture("D:\\G2uY1fJa8AAOucs.jpg").value(); const auto 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), // 圆形遮罩 new_widget()[ // 模糊效果 (blur) new_widget()->blur(40.0f) ]->circle() | align(alignment::center_left) ], new_widget()[ new_widget()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain), new_widget()->vignette() ], new_widget()[ new_widget()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain), new_widget()->chromatic_aberration(10, 1) ], new_widget()[ new_widget()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain), new_widget()->noise(20.0f, 1.f, true) ], new_widget()[ new_widget()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain), new_widget()->color_adjust(0.1f, 1.5f, 1.5f, 2.2f) ], new_widget()[ new_widget()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain), new_widget()->color_tint(color::from_rgba(255, 100, 100, 255), 0.3f, blend_mode::overlay) ] ]; // 通过主窗口设置根控件 app.get_main_window()->set_root_widget(root_widget.ptr()); app.run(); }