diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b46e70..26cdbff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -274,8 +274,68 @@ if(PP_BUILD_APP) VS_GLOBAL_CharacterSet "Unicode") target_precompile_headers(pp_legacy_renderer_gl PRIVATE src/pch.h) + add_library(pp_legacy_assets_io OBJECT + ${PP_LEGACY_ASSETS_IO_SOURCES}) + target_link_libraries(pp_legacy_assets_io + PUBLIC + pp_project_options + PRIVATE + pp_assets + pp_project_warnings) + target_include_directories(pp_legacy_assets_io + PUBLIC + ${PP_LEGACY_INCLUDE_DIRS}) + target_compile_definitions(pp_legacy_assets_io + PUBLIC + ENUM_BITFIELDS_NOT_SUPPORTED + UNICODE + _UNICODE + _CRT_SECURE_NO_WARNINGS + _SCL_SECURE_NO_WARNINGS + _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING + _SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING + _CONSOLE + WITH_CURL=1) + set_target_properties(pp_legacy_assets_io PROPERTIES + VS_GLOBAL_CharacterSet "Unicode") + target_precompile_headers(pp_legacy_assets_io PRIVATE src/pch.h) + + add_library(pp_legacy_paint_document OBJECT + ${PP_LEGACY_PAINT_DOCUMENT_SOURCES}) + target_link_libraries(pp_legacy_paint_document + PUBLIC + pp_project_options + PRIVATE + pp_assets + pp_document + pp_paint + pp_renderer_api + pp_project_warnings) + if(TARGET pp_renderer_gl) + target_link_libraries(pp_legacy_paint_document PRIVATE pp_renderer_gl) + endif() + target_include_directories(pp_legacy_paint_document + PUBLIC + ${PP_LEGACY_INCLUDE_DIRS}) + target_compile_definitions(pp_legacy_paint_document + PUBLIC + ENUM_BITFIELDS_NOT_SUPPORTED + UNICODE + _UNICODE + _CRT_SECURE_NO_WARNINGS + _SCL_SECURE_NO_WARNINGS + _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING + _SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING + _CONSOLE + WITH_CURL=1) + set_target_properties(pp_legacy_paint_document PROPERTIES + VS_GLOBAL_CharacterSet "Unicode") + target_precompile_headers(pp_legacy_paint_document PRIVATE src/pch.h) + add_library(pp_legacy_engine STATIC ${PP_LEGACY_ENGINE_SOURCES} + $ + $ $ $) @@ -283,6 +343,9 @@ if(PP_BUILD_APP) PUBLIC pp_project_options PRIVATE + pp_assets + pp_document + pp_paint pp_renderer_api pp_project_warnings) if(TARGET pp_renderer_gl) diff --git a/cmake/PanoPainterSources.cmake b/cmake/PanoPainterSources.cmake index c7a7c87..1670672 100644 --- a/cmake/PanoPainterSources.cmake +++ b/cmake/PanoPainterSources.cmake @@ -1,22 +1,28 @@ set(PP_LEGACY_ENGINE_SOURCES + src/hmd.cpp + src/log.cpp + src/mp4enc.cpp + src/util.cpp + src/wacom.cpp +) + +set(PP_LEGACY_ASSETS_IO_SOURCES src/abr.cpp - src/action.cpp src/asset.cpp - src/bezier.cpp src/binary_stream.cpp + src/image.cpp + src/serializer.cpp + src/settings.cpp +) + +set(PP_LEGACY_PAINT_DOCUMENT_SOURCES + src/action.cpp + src/bezier.cpp src/brush.cpp src/canvas.cpp src/canvas_actions.cpp src/canvas_layer.cpp src/event.cpp - src/hmd.cpp - src/image.cpp - src/log.cpp - src/mp4enc.cpp - src/serializer.cpp - src/settings.cpp - src/util.cpp - src/wacom.cpp ) set(PP_LEGACY_RENDERER_GL_SOURCES diff --git a/docs/modernization/build-inventory.md b/docs/modernization/build-inventory.md index 85d4121..8b57a6d 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`, retained third-party source dependencies contained by `pp_legacy_vendor`, retained OpenGL runtime sources contained by `pp_legacy_renderer_gl` and folded into `pp_legacy_engine`, legacy canvas/asset/runtime sources contained by `pp_legacy_engine`, retained base UI controls contained by `pp_legacy_ui_core` and folded into `pp_legacy_app`, app orchestration/version metadata owned by `panopainter_app`, and app-specific modal/dialog/panel/canvas workflow nodes owned by `pp_panopainter_ui` | +| 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`, retained third-party source dependencies contained by `pp_legacy_vendor`, retained asset/file/serialization sources contained by `pp_legacy_assets_io`, retained paint/document/canvas sources contained by `pp_legacy_paint_document`, retained OpenGL runtime sources contained by `pp_legacy_renderer_gl` and folded into `pp_legacy_engine`, retained runtime shell sources contained by `pp_legacy_engine`, retained base UI controls contained by `pp_legacy_ui_core` and folded into `pp_legacy_app`, app orchestration/version metadata owned by `panopainter_app`, and app-specific modal/dialog/panel/canvas workflow 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 | @@ -402,10 +402,17 @@ Known warnings after the current CMake app build: now, including JPEG, SQLite, Yoga, poly2tri, GLAD, fmt, Wacom utilities, and other patched/embedded sources. Each dependency should either move to vcpkg, an SDK import target, or a documented permanent vendored target. -- `pp_legacy_engine` intentionally contains retained legacy runtime sources for - now, so it concentrates existing legacy canvas, asset, brush, tablet, video, - serialization, and low-level runtime warnings until those paths move to - cleaner component ownership. +- `pp_legacy_assets_io` is an object-library containment boundary for retained + ABR, asset/file, binary stream, image, serializer, and settings code. It + should shrink as app I/O consumes `pp_assets` directly. +- `pp_legacy_paint_document` is an object-library containment boundary for + retained action, bezier, brush, canvas, canvas-layer, and event code. It + should shrink as app painting and document behavior consume `pp_paint` and + `pp_document` directly. +- `pp_legacy_engine` intentionally contains retained legacy runtime shell + sources for now, so it concentrates existing legacy tablet, video, HMD, log, + and low-level utility warnings until those paths move to cleaner component + ownership. - `pp_legacy_renderer_gl` is an object-library containment boundary because the retained OpenGL runtime classes still include legacy app/engine headers and are still consumed directly by canvas and UI classes. It should become a diff --git a/docs/modernization/roadmap.md b/docs/modernization/roadmap.md index d7721a4..b68ac2a 100644 --- a/docs/modernization/roadmap.md +++ b/docs/modernization/roadmap.md @@ -150,9 +150,13 @@ payload deployment lives behind `cmake/PanoPainterRuntime.cmake`. `pp_legacy_vendor` now owns the retained third-party source bundle as an interim containment boundary until vcpkg, SDK imports, or documented permanent vendoring decisions replace each dependency. `pp_legacy_engine` now contains -the retained legacy canvas, asset/file, brush, tablet, video, serialization, -and low-level runtime sources as an interim containment boundary while pure -replacement components take over. +the retained legacy tablet, video, and low-level runtime sources as an interim +containment boundary while pure replacement components take over. +`pp_legacy_assets_io` now owns retained ABR, asset/file, binary stream, image, +serializer, and settings implementations until `pp_assets` fully replaces those +paths in the app. `pp_legacy_paint_document` now owns retained action, bezier, +brush, canvas, canvas-layer, and event implementations until `pp_paint` and +`pp_document` fully replace those paths in the app. `pp_legacy_renderer_gl` now owns the retained OpenGL runtime implementations for `Font`, `RTT`, `Shader`, `Shape`, `Texture2D`, `TextureCube`, `Sampler`, and `TextureManager` as an object-library boundary folded into the retained