diff --git a/src/02-events/CMakeLists.txt b/src/02-events/CMakeLists.txt new file mode 100644 index 0000000..43a010f --- /dev/null +++ b/src/02-events/CMakeLists.txt @@ -0,0 +1,88 @@ +# Project Info + +cmake_minimum_required(VERSION 3.18 FATAL_ERROR) +cmake_policy(VERSION 3.18) +project(WindowEvents + VERSION 1.0.0.0 + LANGUAGES C CXX +) + +# ============================================================= + +# CMake Settings + +set_property(GLOBAL PROPERTY USE_FOLDERS ON) +set(CMAKE_SUPPRESS_REGENERATION true) +set(DCMAKE_GENERATOR_PLATFORM "x64") +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) +SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) +SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin) +SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin) +SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin) +SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin) +SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin) +SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin) +if(NOT CMAKE_DEBUG_POSTFIX) + set(CMAKE_DEBUG_POSTFIX d) +endif() + +# ============================================================= + +# Dependencies + +# CrossWindow +add_subdirectory(../../external/crosswindow ${CMAKE_BINARY_DIR}/crosswindow) +set_property(TARGET CrossWindow PROPERTY FOLDER "Dependencies") + +# ============================================================= + +# Sources + +file(GLOB_RECURSE FILE_SOURCES RELATIVE + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/src/XMain.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/${XGFX_API}Renderer.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/${XGFX_API}Renderer.mm + ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h +) + +# Solution Filters +foreach(source IN LISTS FILE_SOURCES) + get_filename_component(source_path "${source}" PATH) + string(REPLACE "/" "\\" source_path_msvc "${source_path}") + string(REPLACE "src" "" source_path_final "${source_path_msvc}") + source_group("${source_path_final}" FILES "${source}") +endforeach() + +# ============================================================= + +# Finalize App + +xwin_add_executable( + ${PROJECT_NAME} + "${FILE_SOURCES}" +) + +# ============================================================= + +# Finish Dependencies + +target_link_libraries( + ${PROJECT_NAME} + CrossWindow +) + +# ============================================================= + +# Finish Settings + +# Change output dir to bin +set_target_properties(${PROJECT_NAME} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin +) +# Change working directory to bin +if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set_property(TARGET ${PROJECT_NAME} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +endif() diff --git a/src/02-events/src/XMain.cpp b/src/02-events/src/XMain.cpp index 15b194e..bf9a78e 100644 --- a/src/02-events/src/XMain.cpp +++ b/src/02-events/src/XMain.cpp @@ -1,5 +1,5 @@ #include "CrossWindow/CrossWindow.h" -#include "Renderer.h" +//#include "Renderer.h" void xmain(int argc, const char** argv) { @@ -57,6 +57,7 @@ void xmain(int argc, const char** argv) if (event.type == xwin::EventType::Close) { window.close(); + isRunning = false; } eventQueue.pop(); diff --git a/src/03-open-save-alert/CMakeLists.txt b/src/03-open-save-alert/CMakeLists.txt new file mode 100644 index 0000000..ff6a670 --- /dev/null +++ b/src/03-open-save-alert/CMakeLists.txt @@ -0,0 +1,88 @@ +# Project Info + +cmake_minimum_required(VERSION 3.18 FATAL_ERROR) +cmake_policy(VERSION 3.18) +project(WindowOpenSaveAlert + VERSION 1.0.0.0 + LANGUAGES C CXX +) + +# ============================================================= + +# CMake Settings + +set_property(GLOBAL PROPERTY USE_FOLDERS ON) +set(CMAKE_SUPPRESS_REGENERATION true) +set(DCMAKE_GENERATOR_PLATFORM "x64") +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) +SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) +SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin) +SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin) +SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin) +SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin) +SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin) +SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin) +if(NOT CMAKE_DEBUG_POSTFIX) + set(CMAKE_DEBUG_POSTFIX d) +endif() + +# ============================================================= + +# Dependencies + +# CrossWindow +add_subdirectory(../../external/crosswindow ${CMAKE_BINARY_DIR}/crosswindow) +set_property(TARGET CrossWindow PROPERTY FOLDER "Dependencies") + +# ============================================================= + +# Sources + +file(GLOB_RECURSE FILE_SOURCES RELATIVE + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/src/XMain.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/${XGFX_API}Renderer.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/${XGFX_API}Renderer.mm + ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h +) + +# Solution Filters +foreach(source IN LISTS FILE_SOURCES) + get_filename_component(source_path "${source}" PATH) + string(REPLACE "/" "\\" source_path_msvc "${source_path}") + string(REPLACE "src" "" source_path_final "${source_path_msvc}") + source_group("${source_path_final}" FILES "${source}") +endforeach() + +# ============================================================= + +# Finalize App + +xwin_add_executable( + ${PROJECT_NAME} + "${FILE_SOURCES}" +) + +# ============================================================= + +# Finish Dependencies + +target_link_libraries( + ${PROJECT_NAME} + CrossWindow +) + +# ============================================================= + +# Finish Settings + +# Change output dir to bin +set_target_properties(${PROJECT_NAME} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin +) +# Change working directory to bin +if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set_property(TARGET ${PROJECT_NAME} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +endif() diff --git a/src/03-open-save-alert/src/XMain.cpp b/src/03-open-save-alert/src/XMain.cpp index ca5aa04..41da02d 100644 --- a/src/03-open-save-alert/src/XMain.cpp +++ b/src/03-open-save-alert/src/XMain.cpp @@ -1,5 +1,6 @@ #include "CrossWindow/CrossWindow.h" -#include "Renderer.h" +#include "CrossWindow/Common/Dialogs.h" +//#include "Renderer.h" void xmain(int argc, const char** argv) { @@ -35,20 +36,29 @@ void xmain(int argc, const char** argv) const xwin::MouseInputData data = event.data.mouseInput; if (data.state == xwin::ButtonState::Released) { - if (data.button == xwin::MouseInput::Left) - { - // 💾 Open File Save Dialog - } + if (data.button == xwin::MouseInput::Left) + { + // 💾 Open File Save Dialog + xwin::OpenSaveDialogDesc desc {}; + std::string path; + showOpenDialog(desc, path); + } - if (data.button == xwin::MouseInput::Right) - { - // 📂 Open File Open Dialog - } + if (data.button == xwin::MouseInput::Right) + { + // 📂 Open File Open Dialog + xwin::OpenSaveDialogDesc desc {}; + std::string path; + showSaveDialog(desc, path); + } - if (data.button == xwin::MouseInput::Middle) - { - // ❗ Open Alert - } + if (data.button == xwin::MouseInput::Middle) + { + // ❗ Open Alert + xwin::MessageDesc desc {}; + desc.type = xwin::MessageType::Warning; + showMessageBox(desc); + } } } diff --git a/src/04-cross-platform-hello-triangle/src/Renderer.h b/src/04-cross-platform-hello-triangle/src/Renderer.h index 3de5fc9..d7f94ec 100644 --- a/src/04-cross-platform-hello-triangle/src/Renderer.h +++ b/src/04-cross-platform-hello-triangle/src/Renderer.h @@ -123,7 +123,7 @@ class Renderer uint32_t mIndexBufferData[3] = { 0, 1, 2 }; - std::chrono::time_point tStart, tEnd; + std::chrono::time_point tStart, tEnd; float mElapsedTime = 0.0f; // Uniform data @@ -351,4 +351,4 @@ class Renderer void* mCommandBuffer; #endif -}; +}; \ No newline at end of file