diff --git a/CMakeLists.txt b/CMakeLists.txt index c77e9aa..133a1c4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -257,6 +257,18 @@ if(PP_BUILD_APP) set_source_files_properties(${PP_VENDOR_SOURCES} PROPERTIES SKIP_PRECOMPILE_HEADERS ON) + add_library(pp_panopainter_ui STATIC + ${PP_PANOPAINTER_UI_SOURCES}) + target_link_libraries(pp_panopainter_ui + PUBLIC + pp_legacy_app + pp_project_options + PRIVATE + pp_project_warnings) + target_precompile_headers(pp_panopainter_ui REUSE_FROM pp_legacy_app) + set_target_properties(pp_panopainter_ui PROPERTIES + VS_GLOBAL_CharacterSet "Unicode") + add_library(panopainter_app STATIC ${PP_PANOPAINTER_APP_SOURCES}) target_include_directories(panopainter_app @@ -265,6 +277,7 @@ if(PP_BUILD_APP) target_link_libraries(panopainter_app PUBLIC pp_legacy_app + pp_panopainter_ui pp_project_options PRIVATE pp_project_warnings) diff --git a/cmake/PanoPainterSources.cmake b/cmake/PanoPainterSources.cmake index 2916b61..d7834ea 100644 --- a/cmake/PanoPainterSources.cmake +++ b/cmake/PanoPainterSources.cmake @@ -25,12 +25,10 @@ set(PP_LEGACY_APP_SOURCES src/log.cpp src/mp4enc.cpp src/node.cpp - src/node_about.cpp src/node_border.cpp src/node_button.cpp src/node_button_custom.cpp src/node_canvas.cpp - src/node_changelog.cpp src/node_checkbox.cpp src/node_color_quad.cpp src/node_colorwheel.cpp @@ -46,8 +44,6 @@ set(PP_LEGACY_APP_SOURCES src/node_image.cpp src/node_image_texture.cpp src/node_input_box.cpp - src/node_message_box.cpp - src/node_metadata.cpp src/node_panel_animation.cpp src/node_panel_brush.cpp src/node_panel_color.cpp @@ -67,7 +63,6 @@ set(PP_LEGACY_APP_SOURCES src/node_text.cpp src/node_text_input.cpp src/node_tool_bucket.cpp - src/node_usermanual.cpp src/node_viewport.cpp src/pch.cpp src/rtt.cpp @@ -84,6 +79,14 @@ set(PP_PANOPAINTER_APP_SOURCES src/version.cpp ) +set(PP_PANOPAINTER_UI_SOURCES + src/node_about.cpp + src/node_changelog.cpp + src/node_message_box.cpp + src/node_metadata.cpp + src/node_usermanual.cpp +) + set(PP_WINDOWS_PLATFORM_SOURCES src/main.cpp ) diff --git a/docs/modernization/build-inventory.md b/docs/modernization/build-inventory.md index 11cdbf4..d61e9ae 100644 --- a/docs/modernization/build-inventory.md +++ b/docs/modernization/build-inventory.md @@ -10,7 +10,7 @@ Keep it updated as platform paths move to shared CMake targets. | Platform/Target | Current Entrypoint | Notes | | --- | --- | --- | -| Windows desktop | Root `CMakeLists.txt`, preset `windows-msvc-default`; target preset `windows-vs2026-x64` retained for VS 2026 | Raw `.sln/.vcxproj` files removed on 2026-05-31; local machine currently uses Visual Studio 17 2022; `PanoPainter` now links through `pp_platform_windows` and `panopainter_app`, with Windows/vendor link dependencies owned by the platform shell, runtime payload deployment in `cmake/PanoPainterRuntime.cmake`, and version metadata owned by `panopainter_app` | +| Windows desktop | Root `CMakeLists.txt`, preset `windows-msvc-default`; target preset `windows-vs2026-x64` retained for VS 2026 | Raw `.sln/.vcxproj` files removed on 2026-05-31; local machine currently uses Visual Studio 17 2022; `PanoPainter` now links through `pp_platform_windows` and `panopainter_app`, with Windows/vendor link dependencies owned by the platform shell, runtime payload deployment in `cmake/PanoPainterRuntime.cmake`, version metadata owned by `panopainter_app`, and the first modal/help UI nodes owned by `pp_panopainter_ui` | | Windows AppX | `PanoPainterPackage/Package.appxmanifest`, `.wapproj` referenced by solution | Distribution packaging | | macOS | `PanoPainter-OSX/` project files and `Info.plist` | Uses `NSOpenGLView` today | | iOS | `PanoPainter/Info.plist`, related Apple sources | Uses OpenGL ES today | diff --git a/docs/modernization/roadmap.md b/docs/modernization/roadmap.md index 7ba9b00..0e2138a 100644 --- a/docs/modernization/roadmap.md +++ b/docs/modernization/roadmap.md @@ -148,7 +148,10 @@ option targets exist. The Windows desktop app builds through CMake as dependencies now belong to the platform shell target, and Windows runtime payload deployment lives behind `cmake/PanoPainterRuntime.cmake`. `panopainter_app` is now a real static target that owns app version metadata -and version-header generation. Android arm64 now configures and builds headless +and version-header generation. The first `pp_panopainter_ui` target now owns a +small app-specific modal/help UI group (`NodeAbout`, `NodeChangelog`, +`NodeMessageBox`, `NodeMetadata`, and `NodeUserManual`) outside +`pp_legacy_app`. Android arm64 now configures and builds headless foundation/tool targets through the root CMake/NDK path. Non-Windows platform app/package files remain during Phase 6 alignment.