Skip to content

Markup, lens correction, and more - #63

Merged
TheJoeFin merged 9 commits into
mainfrom
markup
Aug 2, 2026
Merged

Markup, lens correction, and more#63
TheJoeFin merged 9 commits into
mainfrom
markup

Conversation

@TheJoeFin

Copy link
Copy Markdown
Owner

PR Classification

New feature and UI/UX enhancement.

PR Summary

This PR adds a comprehensive lens correction workflow, advanced canvas navigation with a mini map, and improved markup and export features. It also updates dependencies and refines UI interactions.

  • Added LensCorrectionWindow, LensMetadataHelper, and LensProfileService for interactive lens correction with profile management and EXIF auto-detection.
  • Updated MainWindowViewModel and UI to support lens correction, profile selection, and new navigation controls.
  • Implemented a floating Canvas Navigation Bar and MiniMap control for enhanced zoom, pan, and viewport management.
  • Enhanced markup tools with marquee selection, group manipulation, and improved undo/redo logic.
  • Refactored export dialog and logic to support overlay options and live file size estimation.

TheJoeFin and others added 9 commits July 17, 2026 17:20
Updated the following dependencies:
- Magick.NET-Q16-AnyCPU: 14.14.0 → 14.15.0
- Magick.NET.SystemDrawing: 8.0.23 → 8.0.24
- Magick.NET.SystemWindowsMedia: 8.0.23 → 8.0.24
- Microsoft.WindowsAppSDK: 2.2.0 → 2.3.1
- System.Drawing.Common: 10.0.9 → 10.0.10

These updates bring in the latest bug fixes, features, and security improvements. No other code changes were made.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Save Options dialog now displays a live "Estimated file size" that updates as users change format, quality, resize, markup, or measurement settings. Introduced a debounced, cancellable async estimation mechanism using a delegate for file size calculation. MainWindow provides an async estimation function that renders the image with overlays and computes output size without disk writes. Refactored image save logic into ApplySaveOptions and EncodeImageForSave helpers. Added SaveOptions.Clone() for thread safety. Improved resource cleanup and cancellation in the dialog. UI updated to accommodate the new estimated size display.
- Added floating canvas navigation bar (zoom, pan, fit, bounds) and collapsible tools sidebar to MainWindow UI; both are toggleable
- Refactored zoom/pan logic with new methods for zooming at a point, fitting bounds, and syncing controls
- Improved transform handle dragging with optional image bounds constraint
- Added rubber-band marquee selection for markup "Select" tool; supports multi-item selection and group moves with undo/redo
- Visual highlights for selected markup text controls
- Extended Undo/Redo with MarkupGroupMovedItem for group moves
- Improved Delete key handling to remove all selected markup as a group
- Refactored coordinate conversion and handle scaling
- Updated event handlers and UI logic for new features
Introduced a MiniMap control showing a thumbnail with viewport rectangle. Integrated into MainWindow with toggleable visibility via menu/context menu. Updated MainWindow logic to sync mini map with canvas zoom/pan/resize and handle user panning via the mini map. Ensured mini map events do not interfere with main canvas interaction. UI state management updated to support mini map controls.
Introduced CornerNavButton control for quick viewport centering on polygon handles. Styled button and integrated dynamic creation, positioning, and scaling logic. Updated canvas and pan/zoom handling for smooth navigation and animation cancellation. Improved hit-testing and minimap drag robustness.
closes #21

Introduced a "Lens Correction" feature with a dedicated window for barrel/pincushion correction, live preview, EXIF auto-detection, and profile management. Added services and models for lens profiles, persisted in JSON. Updated MainWindow and ViewModel for workflow integration, undo/redo, error handling, and user warnings about measurement invalidation. Included new resources and updated project file.
@TheJoeFin
TheJoeFin merged commit 317d093 into main Aug 2, 2026
2 checks passed
@TheJoeFin
TheJoeFin deleted the markup branch August 2, 2026 04:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant