feat: crop save (save visible area at original resolution) v1.4.0
Build & Release / build-linux (push) Has been cancelled
Build & Release / build-windows (push) Has been cancelled
Build & Release / create-release (push) Has been cancelled

- Save visible area at original resolution as JPEG q90 (title bar button or Ctrl+S)
- Output name: original name + _HHmmss suffix; no overwrite, warning shown
- Active color effects baked in; rotation saves bounding box
- New: crop_save_service, l10n strings TR/EN, docs/plan-crop-save.md
This commit is contained in:
Alhan committed 2026-10-11 21:36:20 +03:00
1 parent 73c1ff51d6
commit 168e087c8b
16 files changed
+399 -14

No files matched your search

+31 -1
View File
@@ -137,7 +137,7 @@ abstract class AppLocalizations {
/// No description provided for @shortcutsList.
///
/// In en, this message translates to:
/// **'• Left/Right arrow — previous/next image\n• Ctrl+Q — close window\n• Ctrl+Shift+Q — close all windows\n• Double click — toggle fill/fit\n• Right-drag — contrast\n• Shift+right-drag — rotate\n• Ctrl+right-drag — saturation\n• Ctrl+Shift+right-drag — brightness'**
/// **'• Left/Right arrow — previous/next image\n• Ctrl+S — save visible area (JPEG 90)\n• Ctrl+Q — close window\n• Ctrl+Shift+Q — close all windows\n• Double click — toggle fill/fit\n• Right-drag — contrast\n• Shift+right-drag — rotate\n• Ctrl+right-drag — saturation\n• Ctrl+Shift+right-drag — brightness'**
String get shortcutsList;
/// No description provided for @print.
@@ -152,6 +152,36 @@ abstract class AppLocalizations {
/// **'Close'**
String get close;
/// No description provided for @saveCrop.
///
/// In en, this message translates to:
/// **'Save visible area (JPEG 90)'**
String get saveCrop;
/// No description provided for @cropSaved.
///
/// In en, this message translates to:
/// **'Saved: {path}'**
String cropSaved(String path);
/// No description provided for @cropFileExists.
///
/// In en, this message translates to:
/// **'A file with the same name already exists — nothing was written'**
String get cropFileExists;
/// No description provided for @cropUnsupported.
///
/// In en, this message translates to:
/// **'This image format cannot be saved as a crop'**
String get cropUnsupported;
/// No description provided for @cropFailed.
///
/// In en, this message translates to:
/// **'Failed to save crop'**
String get cropFailed;
/// No description provided for @dragDropHint.
///
/// In en, this message translates to: