文件结构调整, CMakeLists添加注释

This commit is contained in:
Nanako 2024-03-24 01:50:33 +08:00
parent 231b140a1d
commit 3043d3dba9
4 changed files with 80 additions and 63 deletions

View File

@ -14,18 +14,27 @@ set(BUILD_TESTING OFF CACHE BOOL "hikogui Build tests" FORCE)
# hikogui
add_subdirectory(third_party/hikogui)
#
set(ALL_FILES "")
retrieve_files(${CMAKE_CURRENT_SOURCE_DIR}/src ALL_FILES)
add_executable(${PROJECT_NAME} ${ALL_FILES})
#
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
#
target_link_libraries(${PROJECT_NAME} core hikogui)
target_include_directories(${PROJECT_NAME} PUBLIC core hikogui)
################################### Vulkan ###################################
# VulkanSDK
find_package(Vulkan REQUIRED)
# shader
set(vulkan_arona_shader_sources
${CMAKE_CURRENT_SOURCE_DIR}/resources/waveform_cs.comp)
# shader
set(vulkan_arona_compiled_shader_files "")
foreach(shader_file ${vulkan_arona_shader_sources})
set(input_file "${shader_file}")
@ -40,15 +49,14 @@ foreach(shader_file ${vulkan_arona_shader_sources})
set(vulkan_arona_compiled_shader_files ${vulkan_arona_compiled_shader_files} "${output_file}")
endforeach()
#
add_custom_target(vulkan_arona_shaders ALL DEPENDS ${vulkan_arona_compiled_shader_files})
#
add_dependencies(${PROJECT_NAME} vulkan_arona_shaders)
#
target_resources(${PROJECT_NAME} ${vulkan_arona_compiled_shader_files})
################################### Vulkan ###################################
#-------------------------------------------------------------------
# Installation Rules: hikogui_demo
#-------------------------------------------------------------------
install(
TARGETS ${PROJECT_NAME} DESTINATION
RESOURCE DESTINATION ../bin/resources)

View File

@ -0,0 +1,64 @@
#pragma once
#include "application/application.h"
#include "hikogui/hikogui.hpp"
using namespace hi;
class arona_application : public application {
public:
~arona_application() override = default;
void tick(float delta_time) override {
}
void init(const char* runtime_dir) override {
application::init(runtime_dir);
set_application_name("Toggle example");
set_application_vendor("HikoGUI");
set_application_version({1, 0, 0});
init_window();
}
void shutdown() override {
application::shutdown();
}
void init_window() {
// get_plugin_host_manager().create_instrument_plugin_host(R"(F:\VST\VST64\Serum_x64.dll)");
// 创建一个窗口
auto widget = std::make_unique<window_widget>(txt("Toggle example"));
// 在窗口中放入一个标签控件(A1表示控件地址, 可能能够通过标签控件的地址来获取控件对象)
widget->content().emplace<label_widget>("A1", txt("toggle:"));
// 创建一个整数观察者
observer<int> value = 0;
// 在窗口中放入一个带标签的开关控件(B1表示控件地址)
auto& tb = widget->content().emplace<toggle_with_label_widget>("B1", value, 1, 2);
tb.attributes.on_label = txt("on");
tb.attributes.off_label = txt("off");
tb.attributes.other_label = txt("other");
// 将窗口指针保存到成员变量中
window_ = std::make_unique<gui_window>(std::move(widget));
close_cb = window_->closing.subscribe([this]() {
on_window_closing();
}, callback_flags::main);
}
protected:
void on_window_closing() {
window_.reset();
shutdown();
}
private:
std::unique_ptr<gui_window> window_;
callback<> close_cb;
};
inline arona_application* get_application() {
return static_cast<arona_application*>(g_application);
}

View File

@ -1,65 +1,10 @@
#include "application/application.h"
#include "audio/plugin_host/plugin_host_manager.h"
#include "hikogui/crt.hpp"
#include "hikogui/hikogui.hpp"
#include "arona_application.h"
using namespace hi;
class arona_application : public application {
public:
~arona_application() override = default;
void tick(float delta_time) override {
}
void init(const char* runtime_dir) override {
application::init(runtime_dir);
set_application_name("Toggle example");
set_application_vendor("HikoGUI");
set_application_version({1, 0, 0});
init_window();
}
void shutdown() override {
application::shutdown();
}
void init_window() {
// get_plugin_host_manager().create_instrument_plugin_host(R"(F:\VST\VST64\Serum_x64.dll)");
// 创建一个窗口
auto widget = std::make_unique<window_widget>(txt("Toggle example"));
// 在窗口中放入一个标签控件(A1表示控件地址, 可能能够通过标签控件的地址来获取控件对象)
widget->content().emplace<label_widget>("A1", txt("toggle:"));
// 创建一个整数观察者
observer<int> value = 0;
// 在窗口中放入一个带标签的开关控件(B1表示控件地址)
auto& tb = widget->content().emplace<toggle_with_label_widget>("B1", value, 1, 2);
tb.attributes.on_label = txt("on");
tb.attributes.off_label = txt("off");
tb.attributes.other_label = txt("other");
// 将窗口指针保存到成员变量中
window_ = std::make_unique<gui_window>(std::move(widget));
close_cb = window_->closing.subscribe([this]() {
on_window_closing();
}, callback_flags::main);
}
protected:
void on_window_closing() {
window_.reset();
shutdown();
}
private:
std::unique_ptr<gui_window> window_;
callback<> close_cb;
};
int hi_main(int argc, char* argv[]) {
arona_application arona;
arona.init(nullptr);

@ -1 +1 @@
Subproject commit 5b02f82f07f800d8fe8ab40ac1f54ec7e7358378
Subproject commit 00d6b5fb691add3241444ce1b9b11c1cf8561215