Files
mirage/example/test_thread/main.cpp

93 lines
3.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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<float>();
// 加载字体
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<scroll_box>()[
new_widget<text_widget>()->font_id(font_id).text("你好,我们在此相遇").font_size(24).tooltip("测试tooltip"),
new_widget<text_input>()->font_id(font_id).font_size(24),
new_widget<overlay>()[
new_widget<imager>()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain),
// 圆形遮罩
new_widget<mask>()[
// 模糊效果 (blur)
new_widget<post_process>()->blur(40.0f)
]->circle() | align(alignment::center_left)
],
new_widget<overlay>()[
new_widget<imager>()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain),
new_widget<post_process>()->vignette()
],
new_widget<overlay>()[
new_widget<imager>()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain),
new_widget<post_process>()->chromatic_aberration(10, 1)
],
new_widget<overlay>()[
new_widget<imager>()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain),
new_widget<post_process>()->noise(20.0f, 1.f, true)
],
new_widget<overlay>()[
new_widget<imager>()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain),
new_widget<post_process>()->color_adjust(0.1f, 1.5f, 1.5f, 2.2f)
],
new_widget<overlay>()[
new_widget<imager>()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain),
new_widget<post_process>()->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();
}