From 0db228baf435fd5a96ece9442cfd4695d389b5c6 Mon Sep 17 00:00:00 2001 From: Jonah Date: Thu, 15 Oct 2026 04:14:40 -0400 Subject: [PATCH 1/5] feat(screenshot): add fill, editable shapes, redaction hardening, and recording auto zoom - Spotlight, plus selectable, movable, resizable rectangles, ellipses, and spotlight regions. - Opaque fill for rectangles and ellipses, applied before drawing or to a selected shape. - Mosaic hardening: 14-pt area-averaged, quantized, per-capture jittered, opaque blocks; masks expand to whole device pixels so fractional edges cannot blend the source. - Remove the blur tool and its metadata. - Recording auto zoom: pointer-driven 60 fps camera rendered after capture, with progress, Keep Original cancellation, and a shared record-bar/settings preference. - OCR keeps indentation, table columns, paragraph gaps, and side-by-side panels. - Scrolling stitch accepts matches clearly better than the median alignment, so capture noise no longer stalls stitching. - Pinned images gain hover Copy/Save As/Close controls; scrolling results close after use. - Folder saves never replace files; cancelling Save As returns to the selection. Co-Authored-By: Claude Opus 5.5 --- .../Resources/Localizable.xcstrings | 1369 +++++++++++++++-- .../Sources/AnnotationRenderer.swift | 206 ++- .../Sources/CaptureController.swift | 39 +- .../Sources/CaptureStatusPanel.swift | 8 + Plugins/Screenshot/Sources/Overlay.swift | 231 ++- Plugins/Screenshot/Sources/Pin.swift | 235 ++- Plugins/Screenshot/Sources/Recognition.swift | 9 +- Plugins/Screenshot/Sources/Record.swift | 117 +- .../Sources/RecordingActivity.swift | 187 +++ .../Screenshot/Sources/RecordingZoom.swift | 212 +++ .../Sources/RecordingZoomExporter.swift | 83 + .../Sources/ScreenshotCoordinator.swift | 38 +- .../Sources/ScreenshotEnvironment.swift | 10 +- .../Sources/ScreenshotImageEncoder.swift | 31 + .../Screenshot/Sources/ScreenshotOutput.swift | 23 +- .../Screenshot/Sources/ScreenshotPlugin.swift | 18 + .../Screenshot/Sources/ScrollStitcher.swift | 10 +- Plugins/Screenshot/Sources/TextLayout.swift | 114 ++ .../Tests/AnnotationEditingTests.swift | 199 +++ .../Tests/AnnotationRendererTests.swift | 190 ++- Plugins/Screenshot/Tests/PinViewTests.swift | 18 + .../Tests/RecordingActivityTests.swift | 70 + .../Tests/RecordingZoomExporterTests.swift | 229 +++ .../Screenshot/Tests/RecordingZoomTests.swift | 92 ++ .../Screenshot/Tests/ScrollSessionTests.swift | 67 +- .../Screenshot/Tests/TextLayoutTests.swift | 40 + Plugins/Screenshot/plugin.json | 31 +- README.md | 2 + .../unreleased/screenshot-capture-polish.md | 5 + .../unreleased/screenshot-fill-redaction.md | 5 + .../screenshot-recording-auto-zoom.md | 5 + changes/unreleased/screenshot-spotlight.md | 5 + docs/plugins/screenshot.md | 18 +- site/src/generated/plugins.json | 41 +- 34 files changed, 3663 insertions(+), 294 deletions(-) create mode 100644 Plugins/Screenshot/Sources/RecordingActivity.swift create mode 100644 Plugins/Screenshot/Sources/RecordingZoom.swift create mode 100644 Plugins/Screenshot/Sources/RecordingZoomExporter.swift create mode 100644 Plugins/Screenshot/Sources/TextLayout.swift create mode 100644 Plugins/Screenshot/Tests/AnnotationEditingTests.swift create mode 100644 Plugins/Screenshot/Tests/PinViewTests.swift create mode 100644 Plugins/Screenshot/Tests/RecordingActivityTests.swift create mode 100644 Plugins/Screenshot/Tests/RecordingZoomExporterTests.swift create mode 100644 Plugins/Screenshot/Tests/RecordingZoomTests.swift create mode 100644 Plugins/Screenshot/Tests/TextLayoutTests.swift create mode 100644 changes/unreleased/screenshot-capture-polish.md create mode 100644 changes/unreleased/screenshot-fill-redaction.md create mode 100644 changes/unreleased/screenshot-recording-auto-zoom.md create mode 100644 changes/unreleased/screenshot-spotlight.md diff --git a/Plugins/Screenshot/Resources/Localizable.xcstrings b/Plugins/Screenshot/Resources/Localizable.xcstrings index c03019a5c..3e044df5e 100644 --- a/Plugins/Screenshot/Resources/Localizable.xcstrings +++ b/Plugins/Screenshot/Resources/Localizable.xcstrings @@ -309,6 +309,930 @@ } } }, + "overlay.record.autoZoom": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Auto Zoom" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "自动缩放" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "自動縮放" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تكبير تلقائي" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Automatischer Zoom" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Zoom automático" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Zoom automatique" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "自動ズーム" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "자동 확대/축소" + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Zoom automático" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Автомасштаб" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Otomatik Yakınlaştırma" + } + } + } + }, + "overlay.tool.fill": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Fill" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "填充" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "填滿" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تعبئة" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Füllen" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Relleno" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Remplissage" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "塗りつぶし" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "채우기" + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Preencher" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Заливка" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Doldur" + } + } + } + }, + "pin.close": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Close (Esc)" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "关闭 (Esc)" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "關閉 (Esc)" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "إغلاق (Esc)" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Schließen (Esc)" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Cerrar (Esc)" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Fermer (Esc)" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "閉じる (Esc)" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "닫기 (Esc)" + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Fechar (Esc)" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Закрыть (Esc)" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Kapat (Esc)" + } + } + } + }, + "pin.copy": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Copy (⌘C)" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "复制 (⌘C)" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "拷貝 (⌘C)" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "نسخ (⌘C)" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Kopieren (⌘C)" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Copiar (⌘C)" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Copier (⌘C)" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "コピー (⌘C)" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "복사 (⌘C)" + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Copiar (⌘C)" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Скопировать (⌘C)" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Kopyala (⌘C)" + } + } + } + }, + "pin.save": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Save As (⌘S)" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "另存为 (⌘S)" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "另存新檔 (⌘S)" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "حفظ باسم (⌘S)" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Sichern unter (⌘S)" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Guardar como (⌘S)" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Enregistrer sous (⌘S)" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "別名で保存 (⌘S)" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "다른 이름으로 저장 (⌘S)" + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Salvar como (⌘S)" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Сохранить как (⌘S)" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Farklı Kaydet (⌘S)" + } + } + } + }, + "record.keepOriginal": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Keep Original" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "保留原片" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "保留原片" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "الاحتفاظ بالأصل" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Original behalten" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Conservar original" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Garder l’original" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "オリジナルを残す" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "원본 유지" + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Manter original" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Оставить исходник" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Orijinali Koru" + } + } + } + }, + "record.originalSuffix": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Original" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "原始" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "原始" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "أصلي" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Original" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Original" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Original" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "オリジナル" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "원본" + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Original" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Исходник" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Orijinal" + } + } + } + }, + "record.pointerMonitorUnavailable": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Pointer activity is unavailable. Try again or turn off Auto Zoom." + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "无法读取鼠标操作,请重试或关闭自动缩放" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "無法讀取滑鼠操作,請重試或關閉自動縮放" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تعذّر قراءة نشاط المؤشر. أعد المحاولة أو أوقف التكبير التلقائي." + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Zeigeraktivität ist nicht verfügbar. Versuche es erneut oder deaktiviere den automatischen Zoom." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "La actividad del puntero no está disponible. Inténtalo de nuevo o desactiva el zoom automático." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L’activité du pointeur est indisponible. Réessayez ou désactivez le zoom automatique." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ポインタの操作を読み取れません。もう一度試すか、自動ズームをオフにしてください。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "포인터 활동을 읽을 수 없습니다. 다시 시도하거나 자동 확대/축소를 끄세요." + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "A atividade do ponteiro não está disponível. Tente novamente ou desative o zoom automático." + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Не удаётся получить действия указателя. Повторите попытку или отключите автомасштаб." + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "İşaretçi etkinliği okunamıyor. Yeniden deneyin veya Otomatik Yakınlaştırma'yı kapatın." + } + } + } + }, + "record.processing": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Creating auto-zoom video %@" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "正在生成自动缩放视频 %@" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "正在產生自動縮放影片 %@" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "جارٍ إنشاء فيديو التكبير التلقائي %@" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Video mit automatischem Zoom wird erstellt %@" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Creando vídeo con zoom automático %@" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Création de la vidéo avec zoom automatique %@" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "自動ズームビデオを作成中 %@" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "자동 확대/축소 비디오 생성 중 %@" + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Criando vídeo com zoom automático %@" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Создание видео с автомасштабом %@" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Otomatik yakınlaştırmalı video oluşturuluyor %@" + } + } + } + }, + "record.processingBusy": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "An auto-zoom video is still being created. Try recording again when it finishes." + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "正在生成自动缩放视频,请稍后再录制" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "正在產生自動縮放影片,請稍後再錄製" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "لا يزال فيديو التكبير التلقائي قيد الإنشاء. أعد التسجيل بعد اكتماله." + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Ein Video mit automatischem Zoom wird noch erstellt. Starte die Aufnahme danach erneut." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Aún se está creando un vídeo con zoom automático. Vuelve a grabar cuando termine." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Une vidéo avec zoom automatique est encore en cours de création. Réessayez une fois terminée." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "自動ズームビデオを作成中です。完了してから収録してください。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "자동 확대/축소 비디오를 아직 생성 중입니다. 완료된 후 다시 녹화하세요." + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Um vídeo com zoom automático ainda está sendo criado. Grave novamente quando terminar." + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Видео с автомасштабом ещё создаётся. Начните запись после завершения." + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Otomatik yakınlaştırmalı video hâlâ oluşturuluyor. Bittiğinde yeniden kaydedin." + } + } + } + }, + "record.processingCancelled": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Original recording kept: %@" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "已保留原始录像:%@" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "已保留原始錄影:%@" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تم الاحتفاظ بالتسجيل الأصلي: %@" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Originalaufnahme behalten: %@" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Grabación original conservada: %@" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Enregistrement original conservé : %@" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "オリジナルの収録を残しました:%@" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "원본 녹화를 유지했습니다: %@" + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Gravação original mantida: %@" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Исходная запись сохранена: %@" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Orijinal kayıt korundu: %@" + } + } + } + }, + "record.processingFailed": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Could not create the auto-zoom video. Original recording kept: %@" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "自动缩放生成失败,已保留原始录像:%@" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "自動縮放產生失敗,已保留原始錄影:%@" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تعذّر إنشاء فيديو التكبير التلقائي. تم الاحتفاظ بالتسجيل الأصلي: %@" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Video mit automatischem Zoom konnte nicht erstellt werden. Originalaufnahme behalten: %@" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "No se pudo crear el vídeo con zoom automático. Grabación original conservada: %@" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Impossible de créer la vidéo avec zoom automatique. Enregistrement original conservé : %@" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "自動ズームビデオを作成できませんでした。オリジナルの収録を残しました:%@" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "자동 확대/축소 비디오를 생성할 수 없습니다. 원본 녹화를 유지했습니다: %@" + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Não foi possível criar o vídeo com zoom automático. Gravação original mantida: %@" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Не удалось создать видео с автомасштабом. Исходная запись сохранена: %@" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Otomatik yakınlaştırmalı video oluşturulamadı. Orijinal kayıt korundu: %@" + } + } + } + }, "record.saving": { "extractionState": "manual", "localizations": { @@ -6161,618 +7085,618 @@ } } }, - "overlay.tool.blur": { + "overlay.tool.effects": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Blur (B)" + "value": "Corners and shadow ([ ] corners, { } shadow)" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Bulanıklaştır (B)" + "value": "Köşeler ve gölge ([ ] köşeler, { } gölge)" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "模糊 (B)" + "value": "圆角与阴影([ ] 圆角,{ } 阴影)" } }, "ar": { "stringUnit": { "state": "translated", - "value": "طمس (B)" + "value": "الزوايا والظل ([ ] الزوايا، { } الظل)" } }, "de": { "stringUnit": { "state": "translated", - "value": "Weichzeichnen (B)" + "value": "Ecken und Schatten ([ ] Ecken, { } Schatten)" } }, "es": { "stringUnit": { "state": "translated", - "value": "Desenfoque (B)" + "value": "Esquinas y sombra ([ ] esquinas, { } sombra)" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Flou (B)" + "value": "Coins et ombre ([ ] coins, { } ombre)" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ぼかし (B)" + "value": "角丸と影([ ] 角丸、{ } 影)" } }, "ko": { "stringUnit": { "state": "translated", - "value": "블러(B)" + "value": "모서리와 그림자([ ] 모서리, { } 그림자)" } }, "pt": { "stringUnit": { "state": "translated", - "value": "Desfoque (B)" + "value": "Cantos e sombra ([ ] cantos, { } sombra)" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Размытие (B)" + "value": "Скругление и тень ([ ] скругление, { } тень)" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "模糊 (B)" + "value": "圓角與陰影([ ] 圓角,{ } 陰影)" } } } }, - "overlay.tool.effects": { + "overlay.tool.ellipse": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Corners and shadow ([ ] corners, { } shadow)" + "value": "Ellipse (O)" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Köşeler ve gölge ([ ] köşeler, { } gölge)" + "value": "Elips (O)" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "圆角与阴影([ ] 圆角,{ } 阴影)" + "value": "椭圆 (O)" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الزوايا والظل ([ ] الزوايا، { } الظل)" + "value": "القطع الناقص (O)" } }, "de": { "stringUnit": { "state": "translated", - "value": "Ecken und Schatten ([ ] Ecken, { } Schatten)" + "value": "Ellipse (O)" } }, "es": { "stringUnit": { "state": "translated", - "value": "Esquinas y sombra ([ ] esquinas, { } sombra)" + "value": "Elipse (O)" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Coins et ombre ([ ] coins, { } ombre)" + "value": "Ellipse (O)" } }, "ja": { "stringUnit": { "state": "translated", - "value": "角丸と影([ ] 角丸、{ } 影)" + "value": "楕円(O)" } }, "ko": { "stringUnit": { "state": "translated", - "value": "모서리와 그림자([ ] 모서리, { } 그림자)" + "value": "타원(O)" } }, "pt": { "stringUnit": { "state": "translated", - "value": "Cantos e sombra ([ ] cantos, { } sombra)" + "value": "Elipse (O)" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Скругление и тень ([ ] скругление, { } тень)" + "value": "Эллипс (O)" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "圓角與陰影([ ] 圓角,{ } 陰影)" + "value": "橢圓 (O)" } } } }, - "overlay.tool.ellipse": { + "overlay.tool.line": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Ellipse (O)" + "value": "Line (L)" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Elips (O)" + "value": "Çizgi (L)" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "椭圆 (O)" + "value": "直线 (L)" } }, "ar": { "stringUnit": { "state": "translated", - "value": "القطع الناقص (O)" + "value": "الخط (L)" } }, "de": { "stringUnit": { "state": "translated", - "value": "Ellipse (O)" + "value": "Linie (L)" } }, "es": { "stringUnit": { "state": "translated", - "value": "Elipse (O)" + "value": "Línea (L)" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ellipse (O)" + "value": "Ligne (L)" } }, "ja": { "stringUnit": { "state": "translated", - "value": "楕円(O)" + "value": "直線 (L)" } }, "ko": { "stringUnit": { "state": "translated", - "value": "타원(O)" + "value": "선(L)" } }, "pt": { "stringUnit": { "state": "translated", - "value": "Elipse (O)" + "value": "Linha (L)" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Эллипс (O)" + "value": "Линия (L)" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "橢圓 (O)" + "value": "直線 (L)" } } } }, - "overlay.tool.line": { + "overlay.tool.mosaic": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Line (L)" + "value": "Pixelate (M)" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Çizgi (L)" + "value": "Mozaik (M)" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "直线 (L)" + "value": "马赛克 (M)" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الخط (L)" + "value": "فسيفساء (M)" } }, "de": { "stringUnit": { "state": "translated", - "value": "Linie (L)" + "value": "Mosaik (M)" } }, "es": { "stringUnit": { "state": "translated", - "value": "Línea (L)" + "value": "Mosaico (M)" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ligne (L)" + "value": "Mosaïque (M)" } }, "ja": { "stringUnit": { "state": "translated", - "value": "直線 (L)" + "value": "モザイク(M)" } }, "ko": { "stringUnit": { "state": "translated", - "value": "선(L)" + "value": "모자이크(M)" } }, "pt": { "stringUnit": { "state": "translated", - "value": "Linha (L)" + "value": "Mosaico (M)" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Линия (L)" + "value": "Мозаика (M)" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "直線 (L)" + "value": "馬賽克 (M)" } } } }, - "overlay.tool.mosaic": { + "overlay.tool.number": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Pixelate (M)" + "value": "Number (N)" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Mozaik (M)" + "value": "Numara (N)" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "马赛克 (M)" + "value": "序号 (N)" } }, "ar": { "stringUnit": { "state": "translated", - "value": "فسيفساء (M)" + "value": "الرقم (N)" } }, "de": { "stringUnit": { "state": "translated", - "value": "Mosaik (M)" + "value": "Nummer (N)" } }, "es": { "stringUnit": { "state": "translated", - "value": "Mosaico (M)" + "value": "Número (N)" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Mosaïque (M)" + "value": "Numéro (N)" } }, "ja": { "stringUnit": { "state": "translated", - "value": "モザイク(M)" + "value": "連番 (N)" } }, "ko": { "stringUnit": { "state": "translated", - "value": "모자이크(M)" + "value": "번호(N)" } }, "pt": { "stringUnit": { "state": "translated", - "value": "Mosaico (M)" + "value": "Número (N)" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Мозаика (M)" + "value": "Номер (N)" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "馬賽克 (M)" + "value": "序號 (N)" } } } }, - "overlay.tool.number": { + "overlay.tool.pen": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Number (N)" + "value": "Pen (P)" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Numara (N)" + "value": "Kalem (P)" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "序号 (N)" + "value": "画笔 (P)" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الرقم (N)" + "value": "القلم (P)" } }, "de": { "stringUnit": { "state": "translated", - "value": "Nummer (N)" + "value": "Stift (P)" } }, "es": { "stringUnit": { "state": "translated", - "value": "Número (N)" + "value": "Bolígrafo (P)" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Numéro (N)" + "value": "Stylo (P)" } }, "ja": { "stringUnit": { "state": "translated", - "value": "連番 (N)" + "value": "ペン(P)" } }, "ko": { "stringUnit": { "state": "translated", - "value": "번호(N)" + "value": "펜(P)" } }, "pt": { "stringUnit": { "state": "translated", - "value": "Número (N)" + "value": "Caneta (P)" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Номер (N)" + "value": "Перо (P)" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "序號 (N)" + "value": "畫筆 (P)" } } } }, - "overlay.tool.pen": { + "overlay.tool.rectangle": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Pen (P)" + "value": "Rectangle (R)" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Kalem (P)" + "value": "Dikdörtgen (R)" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "画笔 (P)" + "value": "矩形 (R)" } }, "ar": { "stringUnit": { "state": "translated", - "value": "القلم (P)" + "value": "المستطيل (R)" } }, "de": { "stringUnit": { "state": "translated", - "value": "Stift (P)" + "value": "Rechteck (R)" } }, "es": { "stringUnit": { "state": "translated", - "value": "Bolígrafo (P)" + "value": "Rectángulo (R)" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Stylo (P)" + "value": "Rectangle (R)" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ペン(P)" + "value": "四角形 (R)" } }, "ko": { "stringUnit": { "state": "translated", - "value": "펜(P)" + "value": "직사각형(R)" } }, "pt": { "stringUnit": { "state": "translated", - "value": "Caneta (P)" + "value": "Retângulo (R)" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Перо (P)" + "value": "Прямоугольник (R)" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "畫筆 (P)" + "value": "矩形 (R)" } } } }, - "overlay.tool.rectangle": { + "overlay.tool.spotlight": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Rectangle (R)" + "value": "Spotlight" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Dikdörtgen (R)" + "value": "聚焦" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "矩形 (R)" + "value": "聚焦" } }, "ar": { "stringUnit": { "state": "translated", - "value": "المستطيل (R)" + "value": "تسليط الضوء" } }, "de": { "stringUnit": { "state": "translated", - "value": "Rechteck (R)" + "value": "Hervorheben" } }, "es": { "stringUnit": { "state": "translated", - "value": "Rectángulo (R)" + "value": "Resaltar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Rectangle (R)" + "value": "Projecteur" } }, "ja": { "stringUnit": { "state": "translated", - "value": "四角形 (R)" + "value": "スポットライト" } }, "ko": { "stringUnit": { "state": "translated", - "value": "직사각형(R)" + "value": "스포트라이트" } }, "pt": { "stringUnit": { "state": "translated", - "value": "Retângulo (R)" + "value": "Destacar" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Прямоугольник (R)" + "value": "Подсветка" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "矩形 (R)" + "value": "Vurgula" } } } @@ -8240,6 +9164,160 @@ } } }, + "settings.autoZoom.description": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Zooms in where you click or scroll, then returns to the full view. Applied to the saved video; the desktop does not change while recording." + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "点击或滚动时放大该位置,随后恢复全景。在保存的视频中生成,录制时不改变桌面。" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "點按或捲動時放大該位置,隨後恢復全景。在儲存的影片中產生,錄製時不改變桌面。" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "يكبّر موضع النقر أو التمرير ثم يعود إلى العرض الكامل. يُطبَّق على الفيديو المحفوظ ولا يتغير سطح المكتب أثناء التسجيل." + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Vergrößert die Stelle, an der du klickst oder scrollst, und kehrt dann zur Gesamtansicht zurück. Wird im gesicherten Video erzeugt; der Schreibtisch ändert sich während der Aufnahme nicht." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Amplía donde haces clic o te desplazas y luego vuelve a la vista completa. Se aplica al vídeo guardado; el escritorio no cambia durante la grabación." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Agrandit l’endroit où vous cliquez ou faites défiler, puis revient à la vue complète. Appliqué à la vidéo enregistrée ; le bureau ne change pas pendant l’enregistrement." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "クリックやスクロールした位置を拡大し、その後全体表示に戻します。保存したビデオに適用され、収録中のデスクトップは変わりません。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "클릭하거나 스크롤한 위치를 확대한 다음 전체 보기로 돌아갑니다. 저장된 비디오에 적용되며 녹화 중에는 데스크탑이 변하지 않습니다." + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Amplia onde você clica ou rola e depois volta à visão completa. Aplicado ao vídeo salvo; a mesa não muda durante a gravação." + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Увеличивает место щелчка или прокрутки, затем возвращает полный вид. Применяется к сохранённому видео; рабочий стол во время записи не меняется." + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Tıkladığınız veya kaydırdığınız yeri yakınlaştırır, ardından tam görünüme döner. Kaydedilen videoya uygulanır; kayıt sırasında masaüstü değişmez." + } + } + } + }, + "settings.autoZoom.title": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Auto Zoom" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "自动缩放" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "自動縮放" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تكبير تلقائي" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Automatischer Zoom" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Zoom automático" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Zoom automatique" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "自動ズーム" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "자동 확대/축소" + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Zoom automático" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Автомасштаб" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Otomatik Yakınlaştırma" + } + } + } + }, "settings.folder.choose": { "extractionState": "manual", "localizations": { @@ -8548,6 +9626,83 @@ } } }, + "settings.recording.title": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Recording" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "录屏" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "螢幕錄製" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "التسجيل" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Aufnahme" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Grabación" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Enregistrement" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "画面収録" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "화면 기록" + } + }, + "pt": { + "stringUnit": { + "state": "translated", + "value": "Gravação" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Запись" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Kayıt" + } + } + } + }, "settings.shortcuts.description": { "extractionState": "manual", "localizations": { diff --git a/Plugins/Screenshot/Sources/AnnotationRenderer.swift b/Plugins/Screenshot/Sources/AnnotationRenderer.swift index 8795df345..e094c0c53 100644 --- a/Plugins/Screenshot/Sources/AnnotationRenderer.swift +++ b/Plugins/Screenshot/Sources/AnnotationRenderer.swift @@ -1,5 +1,4 @@ import AppKit -import CoreImage enum Shape { case rect(NSRect) @@ -11,12 +10,13 @@ enum Shape { case tag(Int, at: NSPoint) case redaction(NSRect) case mosaic(NSRect) - case blur(NSRect) + case spotlight(NSRect) } struct Stroke { var color: NSColor var width: CGFloat + var filled = false /// Stroke presets also select text sizes, matching the annotation toolbar. var fontSize: CGFloat { @@ -32,9 +32,44 @@ struct Item { let shape: Shape let stroke: Stroke + var editableRect: NSRect? { + switch shape { + case .rect(let rect), .ellipse(let rect), .spotlight(let rect): return rect + default: return nil + } + } + + func replacingEditableRect(_ rect: NSRect) -> Item? { + switch shape { + case .rect: return Item(shape: .rect(rect), stroke: stroke) + case .ellipse: return Item(shape: .ellipse(rect), stroke: stroke) + case .spotlight: return Item(shape: .spotlight(rect), stroke: stroke) + default: return nil + } + } + static func qrMask(_ rect: NSRect) -> Item { Item(shape: .redaction(rect.insetBy(dx: -6, dy: -6)), stroke: Stroke(color: .black, width: 0)) } + + var supportsFill: Bool { + switch shape { + case .rect, .ellipse: return true + default: return false + } + } + + /// Opaque covers draw after source-sampling effects so nothing beneath them can show through. + var isMask: Bool { + if case .redaction = shape { return true } + return supportsFill && stroke.filled + } + + /// Ellipses hit-test their outline path; other editable shapes use their bounds. + func contains(_ point: NSPoint) -> Bool { + if case .ellipse(let rect) = shape { return NSBezierPath(ovalIn: rect).contains(point) } + return editableRect?.contains(point) == true + } } /// Draw annotations and export the frozen image without depending on overlay interaction state. @@ -44,8 +79,10 @@ final class AnnotationRenderer { private let scale: CGFloat private let bounds: NSRect private let frozen: NSImage - private lazy var ciContext = CIContext() - private var blurCache: [String: CGImage] = [:] + private var mosaicCache: [String: CGImage] = [:] + /// One random seed per capture keeps preview and export identical while varying between captures. + private let mosaicSeed = UInt64.random(in: .min ... .max) + private static let mosaicBlock: CGFloat = 14 init(image: CGImage, scale: CGFloat, size: NSSize) { cgImage = image @@ -54,7 +91,7 @@ final class AnnotationRenderer { frozen = NSImage(cgImage: image, size: size) } - func clearCache() { blurCache.removeAll() } + func clearCache() { mosaicCache.removeAll() } static func shadowMargin(for shadowSize: CGFloat) -> CGFloat { shadowSize > 0 ? (shadowSize * 2 + shadowOffset(for: shadowSize)).rounded(.up) : 0 @@ -80,16 +117,17 @@ final class AnnotationRenderer { } func drawItems(_ items: [Item], draft: Item? = nil, selection: NSRect) { - for item in items { - if case .redaction = item.shape { continue } + for item in items where !item.isMask { draw(item, cache: true, selection: selection) } - // Draft geometry changes every frame, so it must not grow the blur cache. - if let draft { draw(draft, cache: false, selection: selection) } - // Blur and mosaic sample the frozen source; keep masks above those effects. - for item in items { - if case .redaction = item.shape { draw(item, cache: true, selection: selection) } + // Draft geometry changes every frame, so it must not grow the mosaic cache. + if let draft, !draft.isMask { draw(draft, cache: false, selection: selection) } + drawSpotlights(items + (draft.map { [$0] } ?? []), selection: selection) + // Mosaic samples the frozen source; keep masks above it. + for item in items where item.isMask { + draw(item, cache: true, selection: selection) } + if let draft, draft.isMask { draw(draft, cache: false, selection: selection) } } private func draw(_ item: Item, cache: Bool, selection: NSRect) { @@ -97,9 +135,10 @@ final class AnnotationRenderer { let width = item.stroke.width switch item.shape { case .rect(let r): - stroke(NSBezierPath(rect: r), width: width) + drawClosedShape(NSBezierPath(rect: item.stroke.filled ? deviceAligned(r) : r), + style: item.stroke, selection: selection) case .ellipse(let r): - stroke(NSBezierPath(ovalIn: r), width: width) + drawClosedShape(NSBezierPath(ovalIn: r), style: item.stroke, selection: selection) case .line(let from, let to): let path = NSBezierPath() path.move(to: from) @@ -144,56 +183,127 @@ final class AnnotationRenderer { context.saveGState() context.setBlendMode(.copy) context.setFillColor(NSColor.black.cgColor) - context.fill(r.intersection(selection).intersection(bounds)) + context.fill(deviceAligned(r).intersection(selection).intersection(bounds)) context.restoreGState() case .mosaic(let r): - drawMosaic(in: r, selection: selection) - case .blur(let r): - drawBlur(in: r, cache: cache, selection: selection) + drawMosaic(in: r, cache: cache, selection: selection) + case .spotlight: + break // All spotlight regions share one dimming layer. } } + /// Expands a cover to whole device pixels. A half-pixel edge would blend the source beneath it. + private func deviceAligned(_ rect: NSRect) -> NSRect { + guard let cg = NSGraphicsContext.current?.cgContext else { return rect } + return cg.convertToUserSpace(cg.convertToDeviceSpace(rect).integral) + } + + private func drawClosedShape(_ path: NSBezierPath, style: Stroke, selection: NSRect) { + guard style.filled else { stroke(path, width: style.width); return } + NSGraphicsContext.saveGraphicsState() + defer { NSGraphicsContext.restoreGraphicsState() } + NSBezierPath(rect: selection.intersection(bounds)).addClip() + style.color.withAlphaComponent(1).setFill() + path.fill() + } + + private func drawSpotlights(_ items: [Item], selection: NSRect) { + let regions = items.compactMap { item -> NSRect? in + guard case .spotlight(let rect) = item.shape else { return nil } + let clipped = rect.intersection(selection).intersection(bounds) + return clipped.width >= 2 && clipped.height >= 2 ? clipped : nil + } + guard !regions.isEmpty else { return } + NSGraphicsContext.saveGraphicsState() + defer { NSGraphicsContext.restoreGraphicsState() } + // Intersect the outside of each region so overlapping highlights stay clear. + for rect in regions { + let mask = NSBezierPath(rect: selection.intersection(bounds)) + let radius = min(8, min(rect.width, rect.height) / 2) + mask.append(NSBezierPath(roundedRect: rect, xRadius: radius, yRadius: radius)) + mask.windingRule = .evenOdd + mask.addClip() + } + NSColor.black.withAlphaComponent(0.5).setFill() + NSBezierPath(rect: selection.intersection(bounds)).fill() + } + private func stroke(_ path: NSBezierPath, width: CGFloat) { path.lineWidth = width path.stroke() } - private func drawMosaic(in rect: NSRect, selection: NSRect) { - guard let (sub, r) = crop(rect, selection: selection), let cg = NSGraphicsContext.current?.cgContext else { return } - let block: CGFloat = 10 - let w = max(1, Int(r.width / block)), h = max(1, Int(r.height / block)) - guard let tiny = CGContext(data: nil, width: w, height: h, bitsPerComponent: 8, bytesPerRow: 0, - space: CGColorSpaceCreateDeviceRGB(), - bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue) - else { return } - tiny.interpolationQuality = .high - tiny.draw(sub, in: CGRect(x: 0, y: 0, width: w, height: h)) - guard let small = tiny.makeImage() else { return } - + /// Pixelation keeps only a quantized, seeded-jitter average per block. Exact block averages + /// can be matched against rendered candidates (as Depix does), so blocks stay coarse and noisy. + private func drawMosaic(in rect: NSRect, cache: Bool, selection: NSRect) { + guard let cg = NSGraphicsContext.current?.cgContext, + let (sub, r) = crop(deviceAligned(rect), selection: selection) else { return } + let key = "\(r)" + let image: CGImage + if let hit = mosaicCache[key] { + image = hit + } else { + guard let made = mosaicImage(from: sub, size: r.size) else { return } + if cache { mosaicCache[key] = made } + image = made + } cg.saveGState() cg.interpolationQuality = .none - cg.draw(small, in: r) + cg.draw(image, in: r) cg.restoreGState() } - private func drawBlur(in rect: NSRect, cache: Bool, selection: NSRect) { - guard let (sub, r) = crop(rect, selection: selection), let cg = NSGraphicsContext.current?.cgContext else { return } - let key = "\(r)" - let out: CGImage - if let hit = blurCache[key] { - out = hit - } else { - let extent = CGRect(x: 0, y: 0, width: sub.width, height: sub.height) - - // Extend edge pixels before blurring to avoid a dark border. - let blurred = CIImage(cgImage: sub).clampedToExtent() - .applyingGaussianBlur(sigma: 6 * scale) - .cropped(to: extent) - guard let made = ciContext.createCGImage(blurred, from: extent) else { return } - out = made - if cache { blurCache[key] = made } + private func mosaicImage(from source: CGImage, size: NSSize) -> CGImage? { + let cols = max(1, Int((size.width / Self.mosaicBlock).rounded())) + let rows = max(1, Int((size.height / Self.mosaicBlock).rounded())) + // Downsample to k×k samples per block, then average them: close to an area average + // without visiting every source pixel of a large region. + let k = 4, w = cols * k, h = rows * k + let space = CGColorSpaceCreateDeviceRGB() + let info = CGImageAlphaInfo.premultipliedLast.rawValue + var samples = [UInt8](repeating: 0, count: w * h * 4) + let drawn = samples.withUnsafeMutableBytes { buffer -> Bool in + guard let context = CGContext(data: buffer.baseAddress, width: w, height: h, bitsPerComponent: 8, + bytesPerRow: w * 4, space: space, bitmapInfo: info) else { return false } + context.interpolationQuality = .high + context.draw(source, in: CGRect(x: 0, y: 0, width: w, height: h)) + return true } - cg.draw(out, in: r) + guard drawn else { return nil } + + // Alpha stays 255: a mosaic must never let the source show through. + var blocks = [UInt8](repeating: 255, count: cols * rows * 4) + for by in 0.. Int { + var z = mosaicSeed &+ UInt64(truncatingIfNeeded: x) &* 0x9E37_79B9_7F4A_7C15 + &+ UInt64(truncatingIfNeeded: y) &* 0xD1B5_4A32_D192_ED03 + z = (z ^ (z >> 30)) &* 0xBF58_476D_1CE4_E5B9 + z = (z ^ (z >> 27)) &* 0x94D0_49BB_1331_11EB + z ^= z >> 31 + return Int(z % 25) - 12 } /// Convert bottom-left view points to top-left frozen-image pixels. diff --git a/Plugins/Screenshot/Sources/CaptureController.swift b/Plugins/Screenshot/Sources/CaptureController.swift index a1dcd1ea6..7fcc39fa5 100644 --- a/Plugins/Screenshot/Sources/CaptureController.swift +++ b/Plugins/Screenshot/Sources/CaptureController.swift @@ -89,8 +89,22 @@ final class CaptureController { private func configure(_ overlay: OverlayWindow, display: CaptureDisplay) { overlay.onComplete = { [weak self] png, mode in guard let self, !finished else { return } - dismiss() - ScreenshotOutput.save(png, mode: mode, environment: environment) + guard mode == .ask else { + dismiss() + ScreenshotOutput.save(png, mode: mode, environment: environment) + return + } + // Keep the selection and annotations while the save panel is open; cancelling returns to them. + suspend() + let saved = ScreenshotOutput.saveAs(png, suggestedName: ScreenshotOutput.suggestedScreenshotName(environment), + environment: environment) + guard !finished else { return } + if saved { + ScreenshotOutput.copyToPasteboard(png) + dismiss() + } else { + resume() + } } overlay.onCancel = { [weak self] in self?.dismiss() } overlay.onRecord = { [weak self] rect in @@ -114,6 +128,27 @@ final class CaptureController { } } + /// Hides the capture surfaces without discarding their session state. + private func suspend() { + pointerTracker?.stop() + for overlay in overlays { overlay.orderOut(nil) } + if cursorPushed { + NSCursor.pop() + cursorPushed = false + } + } + + private func resume() { + NSCursor.crosshair.push() + cursorPushed = true + PluginPresentationSafety.prepareForWindowOrdering() + for overlay in overlays { overlay.orderFrontRegardless() } + let tracker = CapturePointerTracker(overlays: overlays) + pointerTracker = tracker + // Keyboard focus follows the pointer's display, as when capture first appears. + tracker.update() + } + func dismiss() { guard !finished else { return } finished = true diff --git a/Plugins/Screenshot/Sources/CaptureStatusPanel.swift b/Plugins/Screenshot/Sources/CaptureStatusPanel.swift index 2b3677cfb..a6c2f85fe 100644 --- a/Plugins/Screenshot/Sources/CaptureStatusPanel.swift +++ b/Plugins/Screenshot/Sources/CaptureStatusPanel.swift @@ -8,6 +8,7 @@ final class CaptureStatusPanel: NSPanel { var onCancel: (() -> Void)? private let label = NSTextField(labelWithString: "00:00") private let primary = NSButton() + private var indicator: NSImageView? init(primaryTitle: String, cancelTitle: String? = nil, indicatorColor: NSColor? = nil) { super.init(contentRect: NSRect(x: 0, y: 0, width: 10, height: 10), @@ -23,6 +24,7 @@ final class CaptureStatusPanel: NSPanel { var views: [NSView] = [] if let indicatorColor, let image = NSImage(systemSymbolName: "circle.fill", accessibilityDescription: nil) { let indicator = NSImageView(image: image) + self.indicator = indicator indicator.contentTintColor = indicatorColor indicator.widthAnchor.constraint(equalToConstant: 10).isActive = true indicator.heightAnchor.constraint(equalToConstant: 10).isActive = true @@ -59,6 +61,12 @@ final class CaptureStatusPanel: NSPanel { } } + /// Reuses the visible panel for a follow-up phase, such as processing a finished recording. + func setPrimary(title: String, indicatorColor: NSColor? = nil) { + primary.title = title + if let indicatorColor { indicator?.contentTintColor = indicatorColor } + } + func show(near region: CGRect, displayID: CGDirectDisplayID) { guard let screen = NSScreen.screens.first(where: { ($0.deviceDescription[NSDeviceDescriptionKey("NSScreenNumber")] as? NSNumber)?.uint32Value == displayID diff --git a/Plugins/Screenshot/Sources/Overlay.swift b/Plugins/Screenshot/Sources/Overlay.swift index 0e7ea5803..36ee5cf35 100644 --- a/Plugins/Screenshot/Sources/Overlay.swift +++ b/Plugins/Screenshot/Sources/Overlay.swift @@ -123,9 +123,9 @@ final class OverlayWindow: NSPanel { } private enum Tool: Int { - case none, rect, ellipse, line, arrow, pen, text, tag, mosaic, blur + case none, rect, ellipse, line, arrow, pen, text, tag, mosaic, spotlight - var usesStroke: Bool { self != .none && self != .mosaic && self != .blur } + var usesStroke: Bool { self != .none && self != .mosaic && self != .spotlight } } private enum Mode: Int { case shot = 0, ocr = 1, scroll = 2, record = 3 } @@ -143,6 +143,8 @@ private enum Drag { case move case resize(Int) case draw + case moveAnnotation(Int) + case resizeAnnotation(item: Int, handle: Int) } enum MagnifierColorFormat: Equatable { @@ -321,6 +323,15 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { private var tool: Tool = .none private var stroke = Stroke(color: .systemRed, width: 2) private var items: [Item] = [] + private var selectedItemIndex: Int? + private var undoHistory: [[Item]] = [] + private var dragItems: [Item]? + private var origAnnotationRect: NSRect = .zero + + private var selectedAnnotationRect: NSRect? { + guard mode == .shot, let selectedItemIndex, items.indices.contains(selectedItemIndex) else { return nil } + return items[selectedItemIndex].editableRect + } private var anchor: NSPoint? private var dragMode: Drag? @@ -339,8 +350,12 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { private var toolButtons: [BarButton] = [] private var colorButtons: [BarButton] = [] private var widthButtons: [BarButton] = [] + private var widthControls: [NSView] = [] + private var fillButton: BarButton! private var mode: Mode = .shot private var recordBar: NSView! + private lazy var autoZoomToggle = NSButton(checkboxWithTitle: environment.string("overlay.record.autoZoom", "自动缩放"), + target: self, action: #selector(toggleAutoZoom)) private var scrollBar: NSView! private var ocrPanel: NSView? private var ocrTextView: NSTextView? @@ -415,6 +430,7 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { radiusRow.isHidden = cornerRadius == 0 && shadowSize == 0 refreshShadowButtons() refreshStyleButtons() + autoZoomToggle.state = environment.recordingAutoZoom ? .on : .off for button in modeButtons { button.isSelectedLook = button.tag == 0 } for button in toolButtons { button.isSelectedLook = false } backdrop?.prepare(image: image, bounds: bounds, scale: scale) @@ -449,6 +465,8 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { [modeBar, recordBar, scrollBar, tipView].forEach { $0?.isHidden = true } toolbar.isHidden = true styleRow.isHidden = true + fillButton.isHidden = true + widthControls.forEach { $0.isHidden = false } setHover(nil) tipButton = nil pointerInside = false @@ -461,6 +479,10 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { penPoints.removeAll() selection = .zero items.removeAll() + selectedItemIndex = nil + undoHistory.removeAll() + dragItems = nil + origAnnotationRect = .zero editing = false toolbarPinned = false modeBarPreferredX = nil @@ -660,7 +682,11 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { let bars: [NSView] = [modeBar, toolbar, recordBar, scrollBar] + (ocrPanel.map { [$0] } ?? []) if bars.contains(where: { !$0.isHidden && $0.frame.contains(p) }) { return .arrow } guard editing, tool == .none else { return .crosshair } - if let i = handleIndex(at: p) { return resizeCursor(for: handleSpots[i]) } + if let rect = selectedAnnotationRect, let i = handleIndex(at: p, in: rect) { + return resizeCursor(for: handleSpots[i]) + } + if editableItemIndex(at: p) != nil { return .openHand } + if let i = handleIndex(at: p, in: selection) { return resizeCursor(for: handleSpots[i]) } return selection.contains(p) ? .openHand : .crosshair } @@ -692,19 +718,28 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { drawItems() NSGraphicsContext.restoreGraphicsState() } - if editing, tool == .none, selectionDirty.intersects(dirtyRect) { drawHandles() } + if editing, tool == .none, selectionDirty.intersects(dirtyRect) { + drawHandles(for: selection) + if let rect = selectedAnnotationRect { + NSColor.controlAccentColor.setStroke() + let outline = NSBezierPath(rect: rect) + outline.lineWidth = 1 + outline.stroke() + drawHandles(for: rect) + } + } } private func pixelColor(at point: NSPoint) -> MagnifierColorValue? { magnifier.color(at: point) } - private func drawHandles() { + private func drawHandles(for rect: NSRect) { let shadow = NSShadow() shadow.shadowBlurRadius = 3 shadow.shadowOffset = NSSize(width: 0, height: -1) shadow.shadowColor = NSColor.black.withAlphaComponent(0.4) - for p in handlePoints() { + for p in handlePoints(for: rect) { let dot = NSBezierPath(ovalIn: NSRect(x: p.x - 5, y: p.y - 5, width: 10, height: 10)) NSGraphicsContext.saveGraphicsState() shadow.set() @@ -746,9 +781,9 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { } } - private func handlePoints() -> [NSPoint] { - handleSpots.map { NSPoint(x: coord($0.x, selection.minX, selection.maxX), - y: coord($0.y, selection.minY, selection.maxY)) } + private func handlePoints(for rect: NSRect) -> [NSPoint] { + handleSpots.map { NSPoint(x: coord($0.x, rect.minX, rect.maxX), + y: coord($0.y, rect.minY, rect.maxY)) } } private func coord(_ edge: Edge, _ lo: CGFloat, _ hi: CGFloat) -> CGFloat { @@ -759,8 +794,8 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { } } - private func handleIndex(at p: NSPoint) -> Int? { - handlePoints().firstIndex { hypot($0.x - p.x, $0.y - p.y) <= 8 } + private func handleIndex(at p: NSPoint, in rect: NSRect) -> Int? { + handlePoints(for: rect).firstIndex { hypot($0.x - p.x, $0.y - p.y) <= 8 } } private func resized(_ r: NSRect, handle: (x: Edge, y: Edge), dx: CGFloat, dy: CGFloat) -> NSRect { @@ -778,13 +813,33 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { return NSRect(x: min(left, right), y: min(bottom, top), width: abs(right - left), height: abs(top - bottom)) } - private func clamped(_ r: NSRect) -> NSRect { + private func clamped(_ r: NSRect, to limits: NSRect) -> NSRect { var r = r - r.origin.x = min(max(0, r.minX), bounds.maxX - r.width) - r.origin.y = min(max(0, r.minY), bounds.maxY - r.height) + r.size.width = min(r.width, limits.width) + r.size.height = min(r.height, limits.height) + r.origin.x = min(max(limits.minX, r.minX), limits.maxX - r.width) + r.origin.y = min(max(limits.minY, r.minY), limits.maxY - r.height) return r } + private func editableItemIndex(at point: NSPoint) -> Int? { + guard mode == .shot, selection.contains(point) else { return nil } + return items.indices.reversed().first { items[$0].contains(point) } + } + + private func appendItem(_ item: Item) { + undoHistory.append(items) + items.append(item) + } + + private func beginAnnotationDrag(_ index: Int, mode: Drag) { + guard let rect = items[index].editableRect else { return } + selectedItemIndex = index + origAnnotationRect = rect + dragItems = items + dragMode = mode + } + override func mouseDown(with event: NSEvent) { onPointerActivity?() commitText() @@ -793,26 +848,38 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { lastMouse = p anchor = p origSelection = selection + dragItems = nil penPoints = [] guard editing else { dragMode = .select; return } switch tool { case .none: - if let i = handleIndex(at: p) { + if let index = selectedItemIndex, let rect = selectedAnnotationRect, + let handle = handleIndex(at: p, in: rect) { + beginAnnotationDrag(index, mode: .resizeAnnotation(item: index, handle: handle)) + } else if let index = editableItemIndex(at: p) { + beginAnnotationDrag(index, mode: .moveAnnotation(index)) + NSCursor.closedHand.set() + } else if let i = handleIndex(at: p, in: selection) { + selectedItemIndex = nil dragMode = .resize(i) } else if selection.contains(p) { + selectedItemIndex = nil dragMode = .move NSCursor.closedHand.set() } else { + selectedItemIndex = nil dragMode = .select } + refreshSelectionStyle() + invalidateAnnotations() case .text: dragMode = nil placeTextField(at: p) case .tag: dragMode = nil let count = items.filter { if case .tag = $0.shape { return true } else { return false } }.count - items.append(Item(shape: .tag(count + 1, at: p), stroke: stroke)) + appendItem(Item(shape: .tag(count + 1, at: p), stroke: stroke)) invalidateAnnotations() default: dragMode = .draw @@ -833,8 +900,18 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { let hadAnnotations = editing || !items.isEmpty || draft != nil switch mode { + case .moveAnnotation(let index): + let rect = clamped(origAnnotationRect.offsetBy(dx: dx, dy: dy), to: selection.intersection(bounds)) + if let item = items[index].replacingEditableRect(rect) { items[index] = item } + case .resizeAnnotation(let index, let handle): + let rect = resized(origAnnotationRect, handle: handleSpots[handle], dx: dx, dy: dy) + .intersection(selection).intersection(bounds) + if rect.width >= 2, rect.height >= 2, let item = items[index].replacingEditableRect(rect) { + items[index] = item + } case .draw: if tool == .pen { + draft = nil // Release the draft's reference so the append can grow in place. penPoints.append(p) draft = Item(shape: .pen(penPoints), stroke: stroke) } else if let shape = makeShape(from: a, to: p) { @@ -843,7 +920,7 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { draft = nil } case .move: - selection = clamped(origSelection.offsetBy(dx: dx, dy: dy)) + selection = clamped(origSelection.offsetBy(dx: dx, dy: dy), to: bounds) layoutBars() case .resize(let i): let r = resized(origSelection, handle: handleSpots[i], dx: dx, dy: dy) @@ -859,6 +936,8 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { toolbarPinned = false hideOcrPanel() items.removeAll() + selectedItemIndex = nil + undoHistory.removeAll() renderer?.clearCache() placeModeBar() } @@ -872,6 +951,7 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { override func mouseUp(with event: NSEvent) { defer { anchor = nil; draft = nil; dragMode = nil + dragItems = nil onPointerActivity?() } let p = convert(event.locationInWindow, from: nil) @@ -880,8 +960,19 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { if lastMouse != p { updateDrag(at: p) } switch mode { + case .moveAnnotation(let index), .resizeAnnotation(let index, _): + if let dragItems, items.indices.contains(index), items[index].editableRect != dragItems[index].editableRect { + undoHistory.append(dragItems) + } case .draw: - if let d = draft { items.append(d) } + if let d = draft { + appendItem(d) + if d.editableRect != nil { + select(tool: .none) + selectedItemIndex = items.count - 1 + refreshSelectionStyle() + } + } case .move: if event.clickCount == 2 { primaryAction() } else if ocrShowing { rerunRecognition() } @@ -939,14 +1030,15 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { } private func makeShape(from a: NSPoint, to p: NSPoint) -> Shape? { - let r = NSRect(x: min(a.x, p.x), y: min(a.y, p.y), width: abs(p.x - a.x), height: abs(p.y - a.y)) + var r = NSRect(x: min(a.x, p.x), y: min(a.y, p.y), width: abs(p.x - a.x), height: abs(p.y - a.y)) + if tool == .rect || tool == .spotlight { r = r.intersection(selection).intersection(bounds) } let big = r.width >= 2 && r.height >= 2 let far = hypot(p.x - a.x, p.y - a.y) >= 4 switch tool { case .rect: return big ? .rect(r) : nil case .ellipse: return big ? .ellipse(r) : nil case .mosaic: return big ? .mosaic(r) : nil - case .blur: return big ? .blur(r) : nil + case .spotlight: return big ? .spotlight(r) : nil case .line: return far ? .line(from: a, to: p) : nil case .arrow: return far ? .arrow(from: a, to: p) : nil case .none, .pen, .text, .tag: return nil @@ -968,11 +1060,20 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { updateMagnifier() return case 123, 124, 125, 126: - guard editing else { return } + guard editing, dragMode == nil else { return } let step: CGFloat = flags.contains(.shift) ? 10 : 1 let delta: [UInt16: (CGFloat, CGFloat)] = [123: (-step, 0), 124: (step, 0), 125: (0, -step), 126: (0, step)] let (dx, dy) = delta[event.keyCode]! - selection = clamped(selection.offsetBy(dx: dx, dy: dy)) + if let index = selectedItemIndex, let rect = selectedAnnotationRect { + let moved = clamped(rect.offsetBy(dx: dx, dy: dy), to: selection.intersection(bounds)) + if moved != rect, let item = items[index].replacingEditableRect(moved) { + undoHistory.append(items) + items[index] = item + } + invalidateAnnotations() + return + } + selection = clamped(selection.offsetBy(dx: dx, dy: dy), to: bounds) layoutBars() if ocrShowing { rerunRecognition() } invalidateAnnotations() @@ -993,7 +1094,7 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { if editing, key == "{" { setShadow(shadowSize - 4); return } if editing, key == "}" { setShadow(shadowSize + 4); return } let shortcuts: [String: Tool] = ["r": .rect, "o": .ellipse, "l": .line, "a": .arrow, "p": .pen, - "t": .text, "n": .tag, "m": .mosaic, "b": .blur] + "t": .text, "n": .tag, "m": .mosaic] if editing, let t = shortcuts[key] { select(tool: t) } else { super.keyDown(with: event) } } @@ -1133,7 +1234,10 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { title: environment.string("overlay.action.cancel", "取消"), action: #selector(cancel) ) - recordBar = CaptureActionBar.make([start, cancel]) + autoZoomToggle.font = PluginTypography.body.nsFont + autoZoomToggle.toolTip = environment.string("settings.autoZoom.description", "点击或滚动时放大该位置,随后恢复全景。在保存的视频中生成,录制时不改变桌面。") + autoZoomToggle.setAccessibilityIdentifier("screenshot.record.autoZoom") + recordBar = CaptureActionBar.make([autoZoomToggle, start, cancel]) recordBar.isHidden = true addSubview(recordBar) } @@ -1157,6 +1261,10 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { return button } + @objc private func toggleAutoZoom() { + environment.recordingAutoZoom = autoZoomToggle.state == .on + } + @objc private func startRecord() { guard #available(macOS 15, *) else { environment.showToast(environment.string("overlay.record.unavailable", "录屏需要 macOS 15 或更高版本")) @@ -1198,13 +1306,15 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { ] for (symbol, t, tip) in drawTools { let button = iconButton(symbol, tip: tip, action: #selector(pickTool(_:)), tag: t.rawValue) + button.setAccessibilityIdentifier("screenshot.tool.\(t)") toolButtons.append(button) annotate.append(button) } annotate.append(separator()) for (symbol, t, tip) in [("checkerboard.rectangle", Tool.mosaic, environment.string("overlay.tool.mosaic", "马赛克 (M)")), - ("aqi.medium", .blur, environment.string("overlay.tool.blur", "模糊 (B)"))] { + ("light.max", Tool.spotlight, environment.string("overlay.tool.spotlight", "聚焦"))] { let button = iconButton(symbol, tip: tip, action: #selector(pickTool(_:)), tag: t.rawValue) + button.setAccessibilityIdentifier("screenshot.tool.\(t)") toolButtons.append(button) annotate.append(button) } @@ -1244,15 +1354,23 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { colorButtons.append(button) style.append(button) } - style.append(separator()) + let widthDivider = separator() + style.append(widthDivider) + widthControls.append(widthDivider) for (i, width) in Self.widths.enumerated() { let button = styledButton(image: dotImage(color: .labelColor, diameter: 4 + width * 1.5), tip: [environment.string("overlay.stroke.thin", "细"), environment.string("overlay.stroke.medium", "中"), environment.string("overlay.stroke.thick", "粗")][i], action: #selector(pickWidth(_:)), tag: i) widthButtons.append(button) + widthControls.append(button) style.append(button) } + fillButton = iconButton("paintbrush.pointed.fill", tip: environment.string("overlay.tool.fill", "填充"), + action: #selector(toggleFill)) + fillButton.setAccessibilityIdentifier("screenshot.style.fill") + fillButton.isHidden = true + style.append(fillButton) styleRow = capsule(style) styleRow.isHidden = true toolbar.addArrangedSubview(styleRow) @@ -1419,8 +1537,9 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { private func select(tool picked: Tool) { commitText() tool = tool == picked ? .none : picked + selectedItemIndex = nil for b in toolButtons { b.isSelectedLook = b.tag == tool.rawValue } - styleRow.isHidden = !tool.usesStroke + refreshStyleControls() layoutToolbar() invalidateAnnotations() } @@ -1432,6 +1551,47 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { textField?.textColor = stroke.color } + private var selectedShape: Item? { + guard mode == .shot, let index = selectedItemIndex, items.indices.contains(index), + items[index].supportsFill else { return nil } + return items[index] + } + + /// The style row edits the next shape, or the selected rectangle or ellipse. + private func refreshStyleControls() { + let canFill = tool == .rect || tool == .ellipse || selectedShape != nil + styleRow.isHidden = !tool.usesStroke && selectedShape == nil + fillButton.isHidden = !canFill + fillButton.isSelectedLook = canFill && stroke.filled + fillButton.setAccessibilityValue(stroke.filled ? "1" : "0") + // A filled shape has no outline width. + for control in widthControls { control.isHidden = canFill && stroke.filled } + } + + private func refreshSelectionStyle() { + if let item = selectedShape { stroke = item.stroke } + refreshStyleButtons() + refreshStyleControls() + if editing, !toolbar.isHidden { layoutToolbar() } + } + + private func applySelectedStyle() { + if let item = selectedShape, let index = selectedItemIndex { + undoHistory.append(items) + items[index] = Item(shape: item.shape, stroke: stroke) + } + refreshStyleButtons() + refreshStyleControls() + layoutToolbar() + invalidateAnnotations() + } + + @objc private func toggleFill() { + guard tool == .rect || tool == .ellipse || selectedShape != nil else { return } + stroke.filled.toggle() + applySelectedStyle() + } + @objc private func pickTool(_ sender: NSButton) { select(tool: Tool(rawValue: sender.tag) ?? .none) } @objc private func toggleRadiusRow() { @@ -1471,17 +1631,24 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { @objc private func pickColor(_ sender: NSButton) { stroke.color = Self.palette[sender.tag] - refreshStyleButtons() + applySelectedStyle() } @objc private func pickWidth(_ sender: NSButton) { stroke.width = Self.widths[sender.tag] - refreshStyleButtons() + applySelectedStyle() } @objc private func undoLast() { + guard dragMode == nil else { return } commitText() - _ = items.popLast() + guard let previous = undoHistory.popLast() else { return } + items = previous + if let index = selectedItemIndex, + !items.indices.contains(index) || items[index].editableRect == nil { + selectedItemIndex = nil + } + refreshSelectionStyle() invalidateAnnotations() } @@ -1579,7 +1746,7 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { } @objc private func maskQR() { - items.append(contentsOf: qrRects.map(Item.qrMask)) + for rect in qrRects { appendItem(Item.qrMask(rect)) } qrRects = [] hideOcrPanel() layoutToolbar() @@ -1746,7 +1913,7 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { textField = nil let string = field.stringValue.trimmingCharacters(in: .whitespaces) if !string.isEmpty { - items.append(Item(shape: .text(string, at: field.frame.origin), stroke: stroke)) + appendItem(Item(shape: .text(string, at: field.frame.origin), stroke: stroke)) } field.removeFromSuperview() window?.makeFirstResponder(self) diff --git a/Plugins/Screenshot/Sources/Pin.swift b/Plugins/Screenshot/Sources/Pin.swift index f724296fe..a65bed71c 100644 --- a/Plugins/Screenshot/Sources/Pin.swift +++ b/Plugins/Screenshot/Sources/Pin.swift @@ -5,7 +5,9 @@ import MacToolsPluginKit /// A movable image window retained by the plugin environment until closed or disabled. @MainActor final class PinWindow: NSWindow { - init(png: Data, at frame: NSRect, name: String, environment: ScreenshotEnvironment) { + /// A result pin, such as an assembled scrolling screenshot, closes after it is copied or saved. + /// A deliberately pinned image stays on screen after either action. + init(png: Data, at frame: NSRect, name: String, isResult: Bool = false, environment: ScreenshotEnvironment) { super.init(contentRect: frame, styleMask: .borderless, backing: .buffered, defer: false) level = .floating hasShadow = true @@ -13,45 +15,224 @@ final class PinWindow: NSWindow { backgroundColor = .clear isReleasedWhenClosed = false collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary] - let view = PinView(png: png, size: frame.size, name: name, environment: environment) + let view = PinView(png: png, size: frame.size, name: name, isResult: isResult, environment: environment) contentView = view makeFirstResponder(view) } override var canBecomeKey: Bool { true } + + override func close() { + (contentView as? PinView)?.dismissControls() + super.close() + } } @MainActor -private final class PinView: NSImageView { +final class PinView: NSImageView { private let png: Data private let name: String + private let isResult: Bool private let baseSize: NSSize private weak var environment: ScreenshotEnvironment? private var zoom: CGFloat = 1 private var localeSubscription: AnyCancellable? + private var controls: NSView! + private var controlButtons: [(button: BarButton, key: String, fallback: String)] = [] + private var controlsPanel: PinControlsPanel? + private var controlsTrackingArea: NSTrackingArea? + private var hideTimer: Timer? - init(png: Data, size: NSSize, name: String, environment: ScreenshotEnvironment) { + init(png: Data, size: NSSize, name: String, isResult: Bool, environment: ScreenshotEnvironment) { self.png = png self.name = name + self.isResult = isResult self.environment = environment baseSize = size super.init(frame: NSRect(origin: .zero, size: size)) image = NSImage(data: png) imageScaling = .scaleAxesIndependently autoresizingMask = [.width, .height] - refreshTooltip() + buildControls() + refreshLocalizedText() localeSubscription = PluginRuntimeLocalization.source.$revision.dropFirst().sink { [weak self] _ in - DispatchQueue.main.async { [weak self] in self?.refreshTooltip() } + DispatchQueue.main.async { [weak self] in self?.refreshLocalizedText() } } } required init?(coder: NSCoder) { fatalError("init(coder:) is unavailable") } override var acceptsFirstResponder: Bool { true } - private func refreshTooltip() { + private func refreshLocalizedText() { toolTip = environment?.string("pin.tooltip", "拖动移动 · 滚轮缩放 · 双击/Esc 关闭 · ⌘C 复制 · ⌘S 保存") + for control in controlButtons { + let text = environment?.string(control.key, control.fallback) ?? control.fallback + control.button.toolTip = text + control.button.setAccessibilityLabel(text) + } + } + + // MARK: Hover controls + + /// Copy, save, and close actions appear on hover so they do not cover the image otherwise. + private func buildControls() { + let specs: [(String, String, String, Selector)] = [ + ("doc.on.doc", "pin.copy", "复制 (⌘C)", #selector(copyImage)), + ("arrow.down.to.line", "pin.save", "另存为 (⌘S)", #selector(saveImage)), + ("xmark", "pin.close", "关闭 (Esc)", #selector(closeWindow)), + ] + var buttons: [NSView] = [] + for (symbol, key, fallback, action) in specs { + let image = (NSImage(systemSymbolName: symbol, accessibilityDescription: nil) + ?? NSImage(systemSymbolName: "questionmark", accessibilityDescription: nil)!) + .withSymbolConfiguration(.init(pointSize: 15, weight: .medium))! + let button = BarButton(image: image, target: self, action: action) + button.isBordered = false + (button.cell as? NSButtonCell)?.highlightsBy = [] + button.imagePosition = .imageOnly + button.usesCircularBackground = true + button.backgroundVerticalInset = 6 + button.setAccessibilityIdentifier(key) + button.widthAnchor.constraint(equalToConstant: 32).isActive = true + button.heightAnchor.constraint(equalToConstant: 36).isActive = true + button.refresh() + button.addTrackingArea(NSTrackingArea(rect: .zero, options: [.mouseEnteredAndExited, .activeAlways, .inVisibleRect], + owner: self, userInfo: ["button": button])) + controlButtons.append((button, key, fallback)) + buttons.append(button) + } + let stack = NSStackView(views: buttons) + stack.orientation = .horizontal + stack.spacing = 2 + stack.edgeInsets = NSEdgeInsets(top: 4, left: 2, bottom: 4, right: 2) + controls = Glass.wrap(stack, radius: stack.fittingSize.height / 2, blending: .behindWindow) + controls.isHidden = true + addSubview(controls) + } + + override func viewDidMoveToWindow() { + super.viewDidMoveToWindow() + NotificationCenter.default.removeObserver(self) + guard let window else { dismissControls(); return } + for name in [NSWindow.didMoveNotification, NSWindow.didResizeNotification, NSWindow.didChangeScreenNotification] { + NotificationCenter.default.addObserver(self, selector: #selector(positionControls), name: name, object: window) + } + } + + override func updateTrackingAreas() { + super.updateTrackingAreas() + for area in trackingAreas where area.userInfo == nil { removeTrackingArea(area) } + addTrackingArea(NSTrackingArea(rect: bounds, options: [.mouseEnteredAndExited, .activeAlways, .inVisibleRect], + owner: self, userInfo: nil)) + } + + override func layout() { + super.layout() + positionControls() + } + + /// Controls sit inside the image when they fit; small images show them in an adjacent panel instead. + @objc private func positionControls() { + let size = controls.fittingSize + if bounds.width >= size.width, bounds.height >= size.height + 10 { + if controls.superview !== self { + if let tracking = controlsTrackingArea { controls.removeTrackingArea(tracking) } + controlsTrackingArea = nil + controlsPanel?.contentView = nil + controls.removeFromSuperview() + addSubview(controls) + } + hideControlsPanel() + controls.frame = NSRect(x: (bounds.width - size.width) / 2, y: 10, width: size.width, height: size.height) + } else if let window { + let panel = controlsPanel ?? PinControlsPanel() + controlsPanel = panel + if panel.contentView !== controls { + controls.removeFromSuperview() + panel.contentView = controls + let tracking = NSTrackingArea(rect: .zero, options: [.mouseEnteredAndExited, .activeAlways, .inVisibleRect], + owner: self, userInfo: nil) + controls.addTrackingArea(tracking) + controlsTrackingArea = tracking + } + let screen = window.screen ?? NSScreen.screens.first { $0.frame.intersects(window.frame) } + let area = screen?.visibleFrame ?? window.frame.insetBy(dx: -size.width, dy: -size.height) + panel.setFrame(Self.controlsFrame(adjacentTo: window.frame, size: size, within: area), display: true) + if !controls.isHidden, window.isVisible, panel.parent !== window { + window.addChildWindow(panel, ordered: .above) + } + } + } + + /// Chooses the screen-clamped side position that overlaps the image least. + static func controlsFrame(adjacentTo image: NSRect, size: NSSize, within screen: NSRect) -> NSRect { + let origins = [NSPoint(x: image.midX - size.width / 2, y: image.minY - size.height), + NSPoint(x: image.midX - size.width / 2, y: image.maxY), + NSPoint(x: image.maxX, y: image.midY - size.height / 2), + NSPoint(x: image.minX - size.width, y: image.midY - size.height / 2)] + let candidates = origins.map { point in + NSRect(x: max(screen.minX, min(point.x, screen.maxX - size.width)), + y: max(screen.minY, min(point.y, screen.maxY - size.height)), + width: size.width, height: size.height) + } + return candidates.min { lhs, rhs in + let left = lhs.intersection(image), right = rhs.intersection(image) + return left.width * left.height < right.width * right.height + }! + } + + private func hideControlsPanel() { + guard let panel = controlsPanel else { return } + panel.parent?.removeChildWindow(panel) + panel.orderOut(nil) + } + + func dismissControls() { + hideTimer?.invalidate() + hideTimer = nil + controls.isHidden = true + for control in controlButtons { control.button.isHovered = false } + hideControlsPanel() + } + + override func mouseEntered(with event: NSEvent) { + if let button = event.trackingArea?.userInfo?["button"] as? BarButton { + button.isHovered = true + return + } + setControls(visible: true) } + override func mouseExited(with event: NSEvent) { + if let button = event.trackingArea?.userInfo?["button"] as? BarButton { + button.isHovered = false + return + } + setControls(visible: false) + } + + private func setControls(visible: Bool) { + hideTimer?.invalidate() + hideTimer = nil + if visible { + controls.isHidden = false + positionControls() + return + } + // Give the pointer time to cross into the adjacent control panel. + hideTimer = Timer.scheduledTimer(withTimeInterval: 0.15, repeats: false) { [weak self] _ in + MainActor.assumeIsolated { + guard let self else { return } + let pointer = NSEvent.mouseLocation + if self.window?.frame.contains(pointer) == true { return } + if let panel = self.controlsPanel, panel.isVisible, panel.frame.contains(pointer) { return } + self.dismissControls() + } + } + } + + // MARK: Actions + override func mouseDown(with event: NSEvent) { if event.clickCount == 2 { window?.close(); return } window?.performDrag(with: event) @@ -66,15 +247,43 @@ private final class PinView: NSImageView { width: size.width, height: size.height), display: true) } + @objc private func copyImage() { + ScreenshotOutput.copyToPasteboard(png) + if let environment { environment.showToast(environment.string("output.copied", "已复制到剪贴板")) } + if isResult { closeWindow() } + } + + @objc private func saveImage() { + guard let environment else { return } + // A cancelled save panel keeps the pin open. + if ScreenshotOutput.saveAs(png, suggestedName: name, environment: environment), isResult { closeWindow() } + } + + @objc private func closeWindow() { window?.close() } + override func keyDown(with event: NSEvent) { switch (event.keyCode, event.modifierFlags.contains(.command), event.charactersIgnoringModifiers) { - case (53, _, _): window?.close() - case (_, true, "c"): - ScreenshotOutput.copyToPasteboard(png) - if let environment { environment.showToast(environment.string("output.copied", "已复制到剪贴板")) } - case (_, true, "s"): - if let environment { ScreenshotOutput.saveAs(png, suggestedName: name, environment: environment) } + case (53, _, _): closeWindow() + case (_, true, "c"): copyImage() + case (_, true, "s"): saveImage() default: super.keyDown(with: event) } } } + +/// Hosts pin controls beside an image that is too small to contain them. +private final class PinControlsPanel: NSPanel { + init() { + super.init(contentRect: .zero, styleMask: [.borderless, .nonactivatingPanel], backing: .buffered, defer: false) + isOpaque = false + backgroundColor = .clear + hasShadow = true + isReleasedWhenClosed = false + hidesOnDeactivate = false + level = .floating + collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary] + } + + override var canBecomeKey: Bool { false } + override var canBecomeMain: Bool { false } +} diff --git a/Plugins/Screenshot/Sources/Recognition.swift b/Plugins/Screenshot/Sources/Recognition.swift index 9e27ca741..678a5601b 100644 --- a/Plugins/Screenshot/Sources/Recognition.swift +++ b/Plugins/Screenshot/Sources/Recognition.swift @@ -81,10 +81,11 @@ actor VisionRecognition { request.usesLanguageCorrection = true request.recognitionLanguages = Self.languages try handler.perform([request]) - let lines = (request.results ?? []) - .sorted { $0.boundingBox.minY > $1.boundingBox.minY } - .compactMap { $0.topCandidates(1).first?.string } - result = RecognitionResult(lines: lines) + let fragments = (request.results ?? []).compactMap { observation -> TextLayout.Fragment? in + guard let text = observation.topCandidates(1).first?.string else { return nil } + return TextLayout.Fragment(text: text, box: observation.boundingBox) + } + result = RecognitionResult(lines: TextLayout.lines(from: fragments)) case .barcode: let request = VNDetectBarcodesRequest() try handler.perform([request]) diff --git a/Plugins/Screenshot/Sources/Record.swift b/Plugins/Screenshot/Sources/Record.swift index 71c64e243..752c9a70f 100644 --- a/Plugins/Screenshot/Sources/Record.swift +++ b/Plugins/Screenshot/Sources/Record.swift @@ -6,12 +6,22 @@ import VideoToolbox @MainActor final class Recorder: NSObject, SCRecordingOutputDelegate { var onFinish: ((Result) -> Void)? + /// Capture has ended and the auto-zoom movie is being rendered; other capture modes may run. + var onProcessing: (() -> Void)? let region: CaptureRegion + let autoZoom: Bool + private(set) var isProcessing = false private let environment: ScreenshotEnvironment private let panel: CaptureStatusPanel private let outline: CaptureRegionOutlineWindow private let controls: CaptureControls + /// The file written by capture. With auto zoom, this is the recoverable original. private let url: URL + /// The published movie. + private let movieURL: URL + private let clock = RecordingClock() + private var activity: RecordingActivity? + private var processingTask: Task? private var session: CaptureStreamSession? private var output: SCRecordingOutput? private var startupTask: Task? @@ -19,10 +29,27 @@ final class Recorder: NSObject, SCRecordingOutputDelegate { private var startedAt: ContinuousClock.Instant? private lazy var lifecycle = RecordingLifecycle { [weak self] in self?.session?.stop() } - init(region: CaptureRegion, environment: ScreenshotEnvironment) { + init(region: CaptureRegion, environment: ScreenshotEnvironment, autoZoom: Bool? = nil) { self.region = region self.environment = environment - url = environment.fileURL(prefix: environment.string("record.filename", "录屏"), ext: "mov") + let autoZoom = autoZoom ?? environment.recordingAutoZoom + self.autoZoom = autoZoom + // Use a name whose movie and original are both unused, so neither can replace an existing file. + let preferred = environment.fileURL(prefix: environment.string("record.filename", "录屏"), ext: "mov") + let suffix = environment.string("record.originalSuffix", "原始") + func original(_ movie: URL) -> URL { + movie.deletingLastPathComponent() + .appendingPathComponent("\(movie.deletingPathExtension().lastPathComponent) \(suffix).mov") + } + let files = FileManager.default + var index = 1 + var candidate = preferred + while files.fileExists(atPath: candidate.path) || files.fileExists(atPath: original(candidate).path) { + index += 1 + candidate = ScreenshotImageEncoder.numbered(preferred, index) + } + movieURL = candidate + url = autoZoom ? original(candidate) : candidate panel = CaptureStatusPanel(primaryTitle: environment.string("record.stop", "停止"), indicatorColor: .systemRed) outline = CaptureRegionOutlineWindow(region: region) controls = CaptureControls([outline, panel]) @@ -74,6 +101,15 @@ final class Recorder: NSObject, SCRecordingOutputDelegate { let output = SCRecordingOutput(configuration: recording, delegate: self) self.output = output try session.stream.addRecordingOutput(output) + if autoZoom { + // The first encoded frame's clock aligns pointer events with the movie timeline. + try session.stream.addStreamOutput(clock, type: .screen, + sampleHandlerQueue: DispatchQueue(label: "cc.ggbond.mactools.screenshot.recording-clock")) + let activity = RecordingActivity(displayBounds: CGDisplayBounds(region.display.id), + sourceRect: region.sourceRect) + self.activity = activity + guard activity.start() else { throw RecordingZoomError.pointerMonitorUnavailable } + } outline.show() panel.show(near: region.globalRect, displayID: region.display.id) session.start() @@ -92,6 +128,8 @@ final class Recorder: NSObject, SCRecordingOutputDelegate { } func cancel() { + // Cancelling processing keeps the finished original. + processingTask?.cancel() startupTask?.cancel() if session == nil { lifecycle.failBeforeCapture(CancellationError()) } else { lifecycle.cancel() } @@ -137,10 +175,73 @@ final class Recorder: NSObject, SCRecordingOutputDelegate { private func finish(_ result: Result) { timer?.invalidate() timer = nil - controls.hide() - if let output, let session { try? session.stream.removeRecordingOutput(output) } + activity?.stop() + if let output, let session { + try? session.stream.removeRecordingOutput(output) + if autoZoom { try? session.stream.removeStreamOutput(clock, type: .screen) } + } output = nil session = nil + let activity = activity + self.activity = nil + guard case .success(let source) = result, let activity else { + controls.hide() + deliver(result) + return + } + // Without a frame clock no event can be aligned, so the original becomes the movie unchanged. + let events = clock.startTime.map { activity.snapshot(startTime: $0) } ?? [] + process(source, events: events) + } + + private func process(_ source: URL, events: [RecordingZoomEvent]) { + isProcessing = true + outline.orderOut(nil) + panel.setPrimary(title: environment.string("record.keepOriginal", "保留原片"), indicatorColor: .controlAccentColor) + panel.onPrimary = { [weak self] in self?.processingTask?.cancel() } + updateProcessing(0) + onProcessing?() + let destination = movieURL + let report: @Sendable (Double) -> Void = { [weak self] progress in + Task { @MainActor [weak self] in self?.updateProcessing(progress) } + } + processingTask = Task { [weak self] in + let result: Result + do { + result = .success(try await Self.render(source: source, destination: destination, events: events, + progress: report)) + } catch { + result = .failure(RecordingProcessingError(original: source, cause: error)) + } + guard let self else { return } + processingTask = nil + isProcessing = false + controls.hide() + deliver(result) + } + } + + private nonisolated static func render(source: URL, destination: URL, events: [RecordingZoomEvent], + progress: @escaping @Sendable (Double) -> Void) async throws -> URL { + // A clip without a deliberate interaction keeps the original bytes without re-encoding. + guard events.contains(where: { $0.kind == .click || $0.kind == .scroll }) else { + try FileManager.default.moveItem(at: source, to: destination) + return destination + } + try await RecordingZoomExporter.export(source: source, destination: destination, events: events, progress: progress) + try Task.checkCancellation() + // The complete movie exists before the recoverable original is removed. + try? FileManager.default.removeItem(at: source) + return destination + } + + private func updateProcessing(_ progress: Double) { + guard isProcessing else { return } + let percent = Int(min(1, max(0, progress)) * 100) + panel.update(environment.format("record.processing", "正在生成自动缩放视频 %@", "\(percent)%")) + } + + private func deliver(_ result: Result) { let completion = onFinish onFinish = nil completion?(result) @@ -161,6 +262,14 @@ final class Recorder: NSObject, SCRecordingOutputDelegate { enum RecordingError: Error { case unsupportedResolution } +enum RecordingZoomError: Error { case pointerMonitorUnavailable } + +/// Processing failed or was cancelled after capture; the original movie remains at `original`. +struct RecordingProcessingError: Error { + let original: URL + let cause: Error +} + enum RecordingEncoding { static func codec(width: Int, height: Int) throws -> AVVideoCodecType { if supports(kCMVideoCodecType_H264, width: width, height: height) { return .h264 } diff --git a/Plugins/Screenshot/Sources/RecordingActivity.swift b/Plugins/Screenshot/Sources/RecordingActivity.swift new file mode 100644 index 000000000..923e98701 --- /dev/null +++ b/Plugins/Screenshot/Sources/RecordingActivity.swift @@ -0,0 +1,187 @@ +import AppKit +import ScreenCaptureKit + +/// Observes the first encoded frame's clock without retaining any captured pixels. +final class RecordingClock: NSObject, SCStreamOutput, @unchecked Sendable { + private let lock = NSLock() + private var firstTime: Double? + + var startTime: Double? { lock.withLock { firstTime } } + + func stream(_ stream: SCStream, didOutputSampleBuffer sampleBuffer: CMSampleBuffer, + of type: SCStreamOutputType) { + guard type == .screen, sampleBuffer.isValid, + let attachments = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, createIfNecessary: false) + as? [[SCStreamFrameInfo: Any]], + let status = attachments.first?[.status] as? Int, + status == SCFrameStatus.complete.rawValue else { return } + let host = CMClockGetHostTimeClock() + let time: Double + if let captureClock = stream.synchronizationClock { + time = CMSyncConvertTime(sampleBuffer.presentationTimeStamp, from: captureClock, to: host).seconds + } else if let ticks = attachments.first?[.displayTime] as? UInt64 { + time = CMClockMakeHostTimeFromSystemUnits(ticks).seconds + } else { + return + } + guard time.isFinite else { return } + lock.withLock { if firstTime == nil { firstTime = time } } + } +} + +/// Converts global Quartz points to recording-relative points, independent of Retina scale. +struct RecordingCoordinates { + let rect: CGRect + + init(displayBounds: CGRect, sourceRect: CGRect) { + rect = sourceRect.offsetBy(dx: displayBounds.minX, dy: displayBounds.minY) + } + + func normalize(_ point: CGPoint) -> CGPoint? { + guard rect.width > 0, rect.height > 0, point.x.isFinite, point.y.isFinite, + rect.contains(point) else { return nil } + return CGPoint(x: (point.x - rect.minX) / rect.width, + y: (point.y - rect.minY) / rect.height) + } +} + +/// Stores sparse mouse metadata only. It never intercepts input or records keyboard text. +@MainActor +final class RecordingActivity { + private let coordinates: RecordingCoordinates + private var monitor: Any? + private var localMonitor: Any? + private var activationObserver: NSObjectProtocol? + private var events: [RecordingZoomEvent] = [] + private var lastMoveTime = -Double.infinity + private var lastScrollTime = -Double.infinity + private var lastPoint: CGPoint? + private var lastWindow: CGWindowID? + private var wasInside = false + private var suppressClickUntil = -Double.infinity + + init(displayBounds: CGRect, sourceRect: CGRect) { + coordinates = RecordingCoordinates(displayBounds: displayBounds, sourceRect: sourceRect) + } + + func start() -> Bool { + let mask: NSEvent.EventTypeMask = [.leftMouseDown, .leftMouseUp, .rightMouseDown, + .rightMouseUp, .otherMouseDown, .otherMouseUp, .mouseMoved, + .leftMouseDragged, .rightMouseDragged, .otherMouseDragged, .scrollWheel] + // AppKit delivers both monitors on the main thread. + monitor = NSEvent.addGlobalMonitorForEvents(matching: mask) { [weak self] event in + MainActor.assumeIsolated { self?.receive(event) } + } + // MacTools controls are excluded from the video and must not create zoom targets. + localMonitor = NSEvent.addLocalMonitorForEvents(matching: [.leftMouseDown, .rightMouseDown]) { [weak self] event in + MainActor.assumeIsolated { self?.reset(at: event.timestamp) } + return event + } + activationObserver = NSWorkspace.shared.notificationCenter.addObserver( + forName: NSWorkspace.didActivateApplicationNotification, object: nil, queue: .main + ) { [weak self] _ in + MainActor.assumeIsolated { + let time = CMClockGetTime(CMClockGetHostTimeClock()).seconds + self?.reset(at: time) + self?.suppressClickUntil = time + 0.3 + self?.lastWindow = nil + } + } + return monitor != nil + } + + func stop() { + if let monitor { NSEvent.removeMonitor(monitor) } + if let localMonitor { NSEvent.removeMonitor(localMonitor) } + if let activationObserver { NSWorkspace.shared.notificationCenter.removeObserver(activationObserver) } + monitor = nil + localMonitor = nil + activationObserver = nil + } + + func snapshot(startTime: Double) -> [RecordingZoomEvent] { + Self.relativeEvents(events, startTime: startTime) + } + + static func relativeEvents(_ events: [RecordingZoomEvent], startTime: Double) -> [RecordingZoomEvent] { + guard startTime.isFinite else { return [] } + return events.compactMap { event in + let time = event.time - startTime + guard time.isFinite, time >= 0 else { return nil } + return RecordingZoomEvent(time: time, kind: event.kind, point: event.point) + } + } + + func receive(_ event: NSEvent) { + guard let cgEvent = event.cgEvent else { return } + let time = event.timestamp + guard time.isFinite else { return } + guard let point = coordinates.normalize(cgEvent.location) else { + if wasInside { reset(at: time) } + wasInside = false + return + } + wasInside = true + let kind: RecordingZoomEvent.Kind + switch event.type { + case .leftMouseDown, .rightMouseDown, .otherMouseDown: + receiveClick(at: time, point: point, window: Self.window(for: cgEvent)) + return + case .leftMouseUp, .rightMouseUp, .otherMouseUp: kind = .release + case .scrollWheel: + guard abs(event.scrollingDeltaX) + abs(event.scrollingDeltaY) > 0 else { return } + // Momentum does not count as another deliberate operation. + if event.momentumPhase != [] { return } + guard time - lastScrollTime >= 0.05 else { return } + lastScrollTime = time + kind = .scroll + default: + guard time - lastMoveTime >= 0.05 else { return } + if let lastPoint, hypot(point.x - lastPoint.x, point.y - lastPoint.y) < 0.003 { return } + lastMoveTime = time + lastPoint = point + kind = .move + } + events.append(RecordingZoomEvent(time: time, kind: kind, point: point)) + } + + func receiveClick(at time: Double, point: CGPoint, window: CGWindowID?) { + let changedWindow = lastWindow != nil && window != nil && window != lastWindow + if let window { lastWindow = window } + guard time >= suppressClickUntil, !changedWindow else { reset(at: time); return } + events.append(RecordingZoomEvent(time: time, kind: .click, point: point)) + } + + private func reset(at time: Double) { + guard events.last?.kind != .reset else { return } + events.append(RecordingZoomEvent(time: time, kind: .reset, point: nil)) + } + + private static func window(for event: CGEvent) -> CGWindowID? { + let handling = event.getIntegerValueField(.mouseEventWindowUnderMousePointerThatCanHandleThisEvent) + let underPointer = event.getIntegerValueField(.mouseEventWindowUnderMousePointer) + let eventWindow = CGWindowID(exactly: handling > 0 ? handling : underPointer) ?? 0 + // 事件已带窗口号时只查这一个窗口,不必在每次点击时枚举全部窗口 + let windows = (eventWindow != 0 + ? CGWindowListCopyWindowInfo(.optionIncludingWindow, eventWindow) + : CGWindowListCopyWindowInfo([.optionOnScreenOnly, .excludeDesktopElements], kCGNullWindowID)) + as? [[String: Any]] ?? [] + return ordinaryWindow(at: event.location, eventWindow: eventWindow, windows: windows) + } + + static func ordinaryWindow(at point: CGPoint, eventWindow: CGWindowID = 0, + windows: [[String: Any]]) -> CGWindowID? { + // Do not look through menus or popovers to an unrelated window behind them. + let hit = windows.first { window in + if eventWindow != 0 { + return (window[kCGWindowNumber as String] as? NSNumber)?.uint32Value == eventWindow + } + guard ((window[kCGWindowAlpha as String] as? Double) ?? 1) > 0, + let bounds = window[kCGWindowBounds as String] as? [String: Any], + let rect = CGRect(dictionaryRepresentation: bounds as CFDictionary) else { return false } + return rect.contains(point) + } + guard let hit, (hit[kCGWindowLayer as String] as? Int) == 0 else { return nil } + return (hit[kCGWindowNumber as String] as? NSNumber)?.uint32Value + } +} diff --git a/Plugins/Screenshot/Sources/RecordingZoom.swift b/Plugins/Screenshot/Sources/RecordingZoom.swift new file mode 100644 index 000000000..9ef95f884 --- /dev/null +++ b/Plugins/Screenshot/Sources/RecordingZoom.swift @@ -0,0 +1,212 @@ +import CoreGraphics +import Foundation + +struct RecordingZoomEvent: Sendable { + enum Kind: Sendable { case click, move, release, scroll, reset } + + let time: Double + let kind: Kind + /// Normalized coordinates with a top-left origin, relative to the recorded area. + let point: CGPoint? + + init(time: Double, kind: Kind, point: CGPoint? = nil) { + self.time = time + self.kind = kind + self.point = point + } +} + +/// An immutable camera path, independent of capture and export queues. +struct RecordingZoomPlan: Sendable { + private static let full = CGRect(x: 0, y: 0, width: 1, height: 1) + private static let zoomIn = 0.35 + private static let zoomOut = 0.45 + private static let idle = 2.0 + private static let focusedSize = 1.0 / 1.6 + private static let smoothingStep = 0.025 + private static let settlingTime = smoothingStep * 4 + + private struct Keyframe: Sendable { + let time: Double + let end: Double + let source: CGRect + let target: CGRect + let followsCursor: Bool + } + + private var keyframes: [Keyframe] = [] + private let duration: Double + + var hasZoom: Bool { + keyframes.contains { $0.source != Self.full || $0.target != Self.full } + } + + init(events: [RecordingZoomEvent], duration: Double) { + self.duration = duration.isFinite ? max(0, duration) : 0 + guard self.duration > 0 else { return } + + // Preserve input order for a press/release or reset occurring at the same timestamp. + let ordered = events.enumerated().filter { + $0.element.time.isFinite && $0.element.time >= 0 && $0.element.time < self.duration + }.sorted { + $0.element.time == $1.element.time ? $0.offset < $1.offset : $0.element.time < $1.element.time + } + var focus: CGRect? + var pressed = false + var idleAt: Double? + var lastInteraction = 0.0 + var followAfter = 0.0 + var focusReadyAt = 0.0 + + for (_, event) in ordered { + let active = focus != nil && (pressed || event.time < (idleAt ?? .infinity)) + switch event.kind { + case .click, .scroll: + guard let point = Self.validPoint(event.point) else { continue } + // Avoid a zoom pulse with no time to enter and leave near the end of a clip. + guard active || self.duration - event.time >= Self.zoomIn + Self.zoomOut + Self.settlingTime else { continue } + let next = Self.focused(around: point) + let current = plannedCrop(at: event.time) + if active, let idleAt { removeTransitions(from: idleAt) } + let far = active && current.width < 0.95 && + max(abs(next.midX - current.midX), abs(next.midY - current.midY)) > 0.3 + if active, next == focus { + // Repeated scrolling/clicks refresh dwell without restarting the camera's entry. + } else if far { + transition(to: Self.full, at: event.time, over: Self.zoomOut) + transition(to: next, at: event.time + Self.zoomOut, over: Self.zoomIn) + followAfter = event.time + Self.zoomOut + focusReadyAt = followAfter + Self.zoomIn + } else { + if !active || event.time >= focusReadyAt { focusReadyAt = event.time + Self.zoomIn } + transition(to: next, at: event.time, over: focusReadyAt - event.time) + followAfter = event.time + } + focus = next + pressed = pressed || event.kind == .click + lastInteraction = event.time + idleAt = pressed ? nil : event.time + Self.idle + if let idleAt { transition(to: Self.full, at: idleAt, over: Self.zoomOut) } + + case .move: + guard active, event.time >= followAfter, let point = Self.validPoint(event.point), + let previous = focus else { continue } + let tolerance = previous.width * 0.12 + let dx = point.x - previous.midX + let dy = point.y - previous.midY + let center = CGPoint( + x: previous.midX + Self.outsideTolerance(dx, tolerance), + y: previous.midY + Self.outsideTolerance(dy, tolerance)) + let next = Self.focused(around: center) + guard next != previous else { continue } + let length = event.time < focusReadyAt ? focusReadyAt - event.time : 0.15 + transition(to: next, at: event.time, over: length, followsCursor: true) + focus = next + // Passive motion follows the camera but cannot postpone the deliberate-activity timeout. + if let idleAt { transition(to: Self.full, at: idleAt, over: Self.zoomOut) } + + case .release: + guard active, pressed else { continue } + pressed = false + lastInteraction = event.time + idleAt = event.time + Self.idle + transition(to: Self.full, at: event.time + Self.idle, over: Self.zoomOut) + + case .reset: + transition(to: Self.full, at: event.time, over: Self.zoomOut) + focus = nil + pressed = false + idleAt = nil + } + } + + // Use a quiet tail to finish at overview, without zooming out during a held drag. + if focus != nil, !pressed, self.duration - lastInteraction >= Self.zoomOut + Self.settlingTime + 0.15 { + let start = self.duration - Self.zoomOut - Self.settlingTime + if plannedCrop(at: start) != Self.full { + transition(to: Self.full, at: start, over: Self.zoomOut) + } + } + } + + func crop(at time: Double) -> CGRect { + guard time.isFinite, time > 0, !keyframes.isEmpty else { return Self.full } + let position = min(time, duration) / Self.smoothingStep + let index = floor(position) + let u = CGFloat(position - index) + let u2 = u * u + let u3 = u2 * u + // A causal cubic B-spline keeps velocity and acceleration continuous across input events. + // Its positive weights preserve the capture boundary, with only 50 ms of camera delay. + let weights: [CGFloat] = [pow(1 - u, 3) / 6, (3 * u3 - 6 * u2 + 4) / 6, + (-3 * u3 + 3 * u2 + 3 * u + 1) / 6, u3 / 6] + let samples = (0..<4).map { plannedCrop(at: (index - 3 + Double($0)) * Self.smoothingStep) } + let base = samples[0] + var x = base.minX + var y = base.minY + var size = base.width + for i in 1..<4 { + x += (samples[i].minX - base.minX) * weights[i] + y += (samples[i].minY - base.minY) * weights[i] + size += (samples[i].width - base.width) * weights[i] + } + size = min(1, max(Self.focusedSize, size)) + return CGRect(x: min(1 - size, max(0, x)), y: min(1 - size, max(0, y)), width: size, height: size) + } + + private func plannedCrop(at time: Double) -> CGRect { + guard time.isFinite, time > 0, !keyframes.isEmpty else { return Self.full } + let time = min(time, duration) + var lower = 0 + var upper = keyframes.count + while lower < upper { + let middle = (lower + upper) / 2 + if keyframes[middle].time <= time { lower = middle + 1 } + else { upper = middle } + } + guard lower > 0 else { return Self.full } + let frame = keyframes[lower - 1] + guard time < frame.end else { return frame.target } + let progress = CGFloat(max(0, min(1, (time - frame.time) / (frame.end - frame.time)))) + // Cursor following needs an immediate response; restarting an ease-in at 20 Hz loses the cursor. + let weight = frame.followsCursor ? progress * (2 - progress) : progress * progress * (3 - 2 * progress) + return CGRect( + x: frame.source.minX + (frame.target.minX - frame.source.minX) * weight, + y: frame.source.minY + (frame.target.minY - frame.source.minY) * weight, + width: frame.source.width + (frame.target.width - frame.source.width) * weight, + height: frame.source.height + (frame.target.height - frame.source.height) * weight) + } + + private mutating func transition(to target: CGRect, at time: Double, over length: Double, + followsCursor: Bool = false) { + guard time < duration else { return } + let source = plannedCrop(at: time) + // Keep the previous transition intact before its interruption, including its original easing. + removeTransitions(from: time) + // A stop/reset near the last frame must not compress the normal animation into a flash. + keyframes.append(Keyframe(time: time, end: time + length, + source: source, target: target, followsCursor: followsCursor)) + } + + private mutating func removeTransitions(from time: Double) { + while let last = keyframes.last, last.time >= time { keyframes.removeLast() } + } + + private static func validPoint(_ point: CGPoint?) -> CGPoint? { + guard let point, point.x.isFinite, point.y.isFinite, + (0...1).contains(point.x), (0...1).contains(point.y) else { return nil } + return point + } + + private static func focused(around point: CGPoint) -> CGRect { + let size = focusedSize + return CGRect(x: min(1 - size, max(0, point.x - size / 2)), + y: min(1 - size, max(0, point.y - size / 2)), width: size, height: size) + } + + private static func outsideTolerance(_ distance: CGFloat, _ tolerance: CGFloat) -> CGFloat { + if distance > tolerance { return distance - tolerance } + if distance < -tolerance { return distance + tolerance } + return 0 + } +} diff --git a/Plugins/Screenshot/Sources/RecordingZoomExporter.swift b/Plugins/Screenshot/Sources/RecordingZoomExporter.swift new file mode 100644 index 000000000..368306054 --- /dev/null +++ b/Plugins/Screenshot/Sources/RecordingZoomExporter.swift @@ -0,0 +1,83 @@ +import AVFoundation +import CoreImage +import Foundation + +/// Render a second movie without modifying the captured source or an existing destination. +@available(macOS 15, *) +enum RecordingZoomExporter { + static func export(source: URL, destination: URL, events: [RecordingZoomEvent], + progress: (@Sendable (Double) -> Void)? = nil) async throws { + try Task.checkCancellation() + let files = FileManager.default + guard source.isFileURL, destination.isFileURL, + source.standardizedFileURL.resolvingSymlinksInPath() != destination.standardizedFileURL.resolvingSymlinksInPath() + else { throw RecordingZoomExportError.invalidDestination } + guard !files.fileExists(atPath: destination.path) else { throw RecordingZoomExportError.destinationExists } + + let asset = AVURLAsset(url: source) + let duration = try await asset.load(.duration).seconds + guard duration.isFinite, duration > 0, + try await !asset.loadTracks(withMediaType: .video).isEmpty + else { throw RecordingZoomExportError.noVideo } + let plan = RecordingZoomPlan(events: events, duration: duration) + let partial = destination.deletingLastPathComponent() + .appendingPathComponent(".mactools-zoom-\(UUID().uuidString).mov") + guard !files.fileExists(atPath: partial.path) else { throw RecordingZoomExportError.destinationExists } + defer { try? files.removeItem(at: partial) } + if !plan.hasZoom { + progress?(0) + try Task.checkCancellation() + try files.copyItem(at: source, to: partial) + try Task.checkCancellation() + try files.moveItem(at: partial, to: destination) + progress?(1) + return + } + let composition = try await AVMutableVideoComposition.videoComposition(with: asset, applyingCIFiltersWithHandler: { request in + let frame = CGRect(origin: .zero, size: request.renderSize) + let normalized = plan.crop(at: request.compositionTime.seconds) + let crop = CGRect(x: normalized.minX * frame.width, + y: (1 - normalized.maxY) * frame.height, + width: normalized.width * frame.width, + height: normalized.height * frame.height) + // AVFoundation has already applied the track's display transform. + // Clamp before scaling so fractional edge samples cannot expose transparent borders. + let image = request.sourceImage.clampedToExtent() + .transformed(by: CGAffineTransform(translationX: -crop.minX, y: -crop.minY)) + .transformed(by: CGAffineTransform(scaleX: frame.width / crop.width, y: frame.height / crop.height)) + .cropped(to: frame) + request.finish(with: image, context: nil) + }) + // Static screens can have sparse source frames. Keep camera motion independent of those updates. + composition.sourceTrackIDForFrameTiming = kCMPersistentTrackID_Invalid + composition.frameDuration = CMTime(value: 1, timescale: 60) + guard let session = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetHighestQuality) + else { throw RecordingZoomExportError.unsupportedMovie } + session.videoComposition = composition + + let updates = session.states(updateInterval: 0.1) + let observer = progress.map { report in + Task { + for await state in updates { + if Task.isCancelled { break } + if case .exporting(let value) = state { report(value.fractionCompleted) } + } + } + } + defer { observer?.cancel() } + progress?(0) + try Task.checkCancellation() + try await session.export(to: partial, as: .mov) + try Task.checkCancellation() + // Same-directory publication is atomic; moveItem refuses to replace an existing file. + try files.moveItem(at: partial, to: destination) + progress?(1) + } +} + +enum RecordingZoomExportError: Error { + case invalidDestination + case destinationExists + case noVideo + case unsupportedMovie +} diff --git a/Plugins/Screenshot/Sources/ScreenshotCoordinator.swift b/Plugins/Screenshot/Sources/ScreenshotCoordinator.swift index fd3feb4f8..05599ce02 100644 --- a/Plugins/Screenshot/Sources/ScreenshotCoordinator.swift +++ b/Plugins/Screenshot/Sources/ScreenshotCoordinator.swift @@ -13,6 +13,8 @@ final class ScreenshotCoordinator { private let overlayPool: CaptureOverlayPool private var controller: CaptureController? private var recorder: AnyObject? + /// A recorder whose capture has ended while its auto-zoom movie renders. It does not block other modes. + private var processingRecorder: AnyObject? private var scrollSession: ScrollSession? private var exportTask: Task? private var generation: UInt64 = 0 @@ -68,7 +70,10 @@ final class ScreenshotCoordinator { controller?.dismiss() controller = nil scrollSession?.cancel() - if #available(macOS 15, *), let recorder = recorder as? Recorder { recorder.cancel() } + if #available(macOS 15, *) { + (recorder as? Recorder)?.cancel() + (processingRecorder as? Recorder)?.cancel() + } environment.closeAll() overlayPool.release() onStateChange?() @@ -79,23 +84,46 @@ final class ScreenshotCoordinator { report(environment.string("record.requiresNewerSystem", "录屏需要 macOS 15 或更高版本")) return } + guard processingRecorder == nil else { + report(environment.string("record.processingBusy", "正在生成自动缩放视频,请稍后再录制")) + return + } let requestGeneration = generation let session = Recorder(region: request, environment: environment) recorder = session - session.onFinish = { [weak self, weak session] result in + session.onProcessing = { [weak self, weak session] in guard let self, let session, recorder === session else { return } recorder = nil + processingRecorder = session + onStateChange?() + } + session.onFinish = { [weak self, weak session] result in + guard let self, let session else { return } + if recorder === session { recorder = nil } + else if processingRecorder === session { processingRecorder = nil } + else { return } onStateChange?() guard generation == requestGeneration else { return } switch result { case .success(let url): let folderName = FileManager.default.displayName(atPath: url.deletingLastPathComponent().path) environment.showToast(environment.format("record.saved", "录屏已保存到「%@」", folderName)) + case .failure(let error as RecordingProcessingError): + let name = error.original.lastPathComponent + environment.showToast(error.cause is CancellationError + ? environment.format("record.processingCancelled", "已保留原始录像:%@", name) + : environment.format("record.processingFailed", "自动缩放生成失败,已保留原始录像:%@", name)) case .failure(let error): guard !(error is CancellationError) else { return } - let message = error is RecordingError - ? environment.string("record.unsupportedResolution", "当前区域超出硬件编码能力,请缩小录制范围") - : environment.captureErrorDescription(error) + let message: String + switch error { + case is RecordingError: + message = environment.string("record.unsupportedResolution", "当前区域超出硬件编码能力,请缩小录制范围") + case is RecordingZoomError: + message = environment.string("record.pointerMonitorUnavailable", "无法读取鼠标操作,请重试或关闭自动缩放") + default: + message = environment.captureErrorDescription(error) + } report(environment.format("record.failed", "录屏失败:%@", message)) } } diff --git a/Plugins/Screenshot/Sources/ScreenshotEnvironment.swift b/Plugins/Screenshot/Sources/ScreenshotEnvironment.swift index ef2e866c4..a5b20624d 100644 --- a/Plugins/Screenshot/Sources/ScreenshotEnvironment.swift +++ b/Plugins/Screenshot/Sources/ScreenshotEnvironment.swift @@ -37,6 +37,12 @@ final class ScreenshotEnvironment { } } + /// Recording auto zoom is on by default; the record bar and settings share this preference. + var recordingAutoZoom: Bool { + get { storage.object(forKey: "recordingAutoZoom") as? Bool ?? true } + set { storage.set(newValue, forKey: "recordingAutoZoom") } + } + var saveFolderDisplayName: String { FileManager.default.displayName(atPath: saveFolder.path) } func string(_ key: String, _ defaultValue: String) -> String { @@ -74,9 +80,9 @@ final class ScreenshotEnvironment { saveFolder.appendingPathComponent("\(prefix) \(stamp()).\(ext)") } - func pin(_ png: Data, at frame: NSRect, bakedShadow: Bool, name: String) { + func pin(_ png: Data, at frame: NSRect, bakedShadow: Bool, name: String, isResult: Bool = false) { pins.removeAll { !$0.isVisible } - let window = PinWindow(png: png, at: frame, name: name, environment: self) + let window = PinWindow(png: png, at: frame, name: name, isResult: isResult, environment: self) window.hasShadow = !bakedShadow pins.append(window) PluginPresentationSafety.prepareForWindowOrdering(window) diff --git a/Plugins/Screenshot/Sources/ScreenshotImageEncoder.swift b/Plugins/Screenshot/Sources/ScreenshotImageEncoder.swift index c96a6099b..d5630b352 100644 --- a/Plugins/Screenshot/Sources/ScreenshotImageEncoder.swift +++ b/Plugins/Screenshot/Sources/ScreenshotImageEncoder.swift @@ -49,6 +49,37 @@ enum ScreenshotImageEncoder { try data.write(to: url, options: .atomic) }.value } + + /// Publishes a complete file under an unused name instead of replacing an existing file. + static func writeNew(_ data: Data, preferred url: URL) async throws -> URL { + try await Task.detached(priority: .userInitiated) { + try Task.checkCancellation() + let files = FileManager.default + let folder = url.deletingLastPathComponent() + try files.createDirectory(at: folder, withIntermediateDirectories: true) + let partial = folder.appendingPathComponent(".mactools-screenshot-\(UUID().uuidString).tmp") + defer { try? files.removeItem(at: partial) } + try data.write(to: partial, options: .withoutOverwriting) + var index = 1 + while true { + let candidate = numbered(url, index) + do { + // moveItem never replaces an existing destination, so a concurrent writer cannot be lost. + try files.moveItem(at: partial, to: candidate) + return candidate + } catch CocoaError.fileWriteFileExists { + index += 1 + } + } + }.value + } + + /// Candidate names for an occupied file: the original name, then " 2", " 3", and so on. + static func numbered(_ url: URL, _ index: Int) -> URL { + guard index > 1 else { return url } + return url.deletingLastPathComponent().appendingPathComponent( + "\(url.deletingPathExtension().lastPathComponent) \(index).\(url.pathExtension)") + } } /// Bound concurrent full-image encodings, including rapid clipboard replacements. diff --git a/Plugins/Screenshot/Sources/ScreenshotOutput.swift b/Plugins/Screenshot/Sources/ScreenshotOutput.swift index 1762fbabe..1fd656223 100644 --- a/Plugins/Screenshot/Sources/ScreenshotOutput.swift +++ b/Plugins/Screenshot/Sources/ScreenshotOutput.swift @@ -26,16 +26,17 @@ enum ScreenshotOutput { } static func save(_ png: Data, mode: SaveMode, environment: ScreenshotEnvironment) { - copyToPasteboard(png) switch mode { case .clipboard: + copyToPasteboard(png) environment.showToast(environment.string("output.copied", "已复制到剪贴板")) case .folder: + copyToPasteboard(png) let url = environment.fileURL(prefix: environment.string("output.screenshotName", "截图"), ext: "png") let generation = environment.presentationGeneration Task { do { - try await ScreenshotImageEncoder.write(png, to: url) + _ = try await ScreenshotImageEncoder.writeNew(png, preferred: url) guard generation == environment.presentationGeneration else { return } environment.showToast(environment.format("output.savedAndCopied", "已保存到「%@」,并复制到剪贴板", environment.saveFolderDisplayName)) } catch { @@ -44,11 +45,19 @@ enum ScreenshotOutput { } } case .ask: - saveAs(png, suggestedName: "\(environment.string("output.screenshotName", "截图")) \(environment.stamp()).png", environment: environment) + if saveAs(png, suggestedName: suggestedScreenshotName(environment), environment: environment) { + copyToPasteboard(png) + } } } - static func saveAs(_ png: Data, suggestedName: String, environment: ScreenshotEnvironment) { + static func suggestedScreenshotName(_ environment: ScreenshotEnvironment) -> String { + "\(environment.string("output.screenshotName", "截图")) \(environment.stamp()).png" + } + + /// Returns whether the user chose a destination; cancelling must not end the caller's workflow. + @discardableResult + static func saveAs(_ png: Data, suggestedName: String, environment: ScreenshotEnvironment) -> Bool { let panel = NSSavePanel() panel.directoryURL = environment.saveFolder panel.nameFieldStringValue = suggestedName @@ -57,7 +66,7 @@ enum ScreenshotOutput { defer { if environment.savePanel === panel { environment.savePanel = nil } } PluginPresentationSafety.prepareForWindowOrdering(panel) NSApp.activate(ignoringOtherApps: true) - guard panel.runModal() == .OK, let url = panel.url else { return } + guard panel.runModal() == .OK, let url = panel.url else { return false } let generation = environment.presentationGeneration Task { do { @@ -69,6 +78,7 @@ enum ScreenshotOutput { environment.showToast(environment.format("output.saveFailed", "保存失败:%@", error.localizedDescription)) } } + return true } static func finishLong(_ image: CGImage, scale: CGFloat, environment: ScreenshotEnvironment) async { @@ -87,7 +97,8 @@ enum ScreenshotOutput { environment.pin(png, at: NSRect(x: room.midX - size.width / 2, y: room.midY - size.height / 2, width: size.width, height: size.height), bakedShadow: false, - name: "\(environment.string("output.longScreenshotName", "长截图")) \(environment.stamp()).png") + name: "\(environment.string("output.longScreenshotName", "长截图")) \(environment.stamp()).png", + isResult: true) environment.showToast(environment.string("output.longCopiedAndPinned", "已复制到剪贴板,并钉在屏幕上 · ⌘S 保存")) } } diff --git a/Plugins/Screenshot/Sources/ScreenshotPlugin.swift b/Plugins/Screenshot/Sources/ScreenshotPlugin.swift index 2d133a2a4..06b2276a9 100644 --- a/Plugins/Screenshot/Sources/ScreenshotPlugin.swift +++ b/Plugins/Screenshot/Sources/ScreenshotPlugin.swift @@ -35,6 +35,7 @@ final class ScreenshotPlugin: MacToolsPlugin, PluginActionProviding, PluginActio static let execute = "execute" static let permission = "screen-recording" static let folder = "save-folder" + static let autoZoom = "recording-auto-zoom" } var metadata: PluginMetadata { @@ -173,6 +174,18 @@ final class ScreenshotPlugin: MacToolsPlugin, PluginActionProviding, PluginActio control: .action(title: environment.string("settings.folder.choose", "选择文件夹…"), role: .normal) )] ), + PluginSettingsSection( + id: "recording", + title: environment.string("settings.recording.title", "录屏"), + systemImage: "record.circle", + rows: [PluginSettingsRow( + id: ID.autoZoom, + title: environment.string("settings.autoZoom.title", "自动缩放"), + description: environment.string("settings.autoZoom.description", "点击或滚动时放大该位置,随后恢复全景。在保存的视频中生成,录制时不改变桌面。"), + systemImage: "plus.magnifyingglass", + control: .toggle(isOn: environment.recordingAutoZoom) + )] + ), ]) } @@ -287,6 +300,11 @@ final class ScreenshotPlugin: MacToolsPlugin, PluginActionProviding, PluginActio } func handleSettingsAction(_ action: PluginSettingsAction) { + if case .setBoolean(ID.autoZoom, let isOn) = action { + environment.recordingAutoZoom = isOn + onStateChange?() + return + } guard isActive, case .invoke(ID.folder) = action, let folder = folderPicker(environment.saveFolder), isActive, folder.isFileURL else { return } environment.saveFolder = folder diff --git a/Plugins/Screenshot/Sources/ScrollStitcher.swift b/Plugins/Screenshot/Sources/ScrollStitcher.swift index a2f022b0b..e4681413b 100644 --- a/Plugins/Screenshot/Sources/ScrollStitcher.swift +++ b/Plugins/Screenshot/Sources/ScrollStitcher.swift @@ -154,7 +154,13 @@ final class Stitcher { let e = error(dy, step: 1) if e < bestErr { bestErr = e; best = dy } } - guard bestErr <= 6 else { return nil } + // Capture noise raises every score, so an absolute limit alone rejects real matches. + // Also accept a match that is clearly better than a typical unrelated alignment. + let finite = scores.filter(\.isFinite).sorted() + let baseline = finite.isEmpty ? 0 : finite[finite.count / 2] + guard bestErr <= 6 || (baseline > 1 && bestErr < baseline * 0.7) else { return nil } + // The footer check scales with the matched noise floor, staying at 6 for clean frames. + let tolerance = max(6, bestErr * 2) if best > 0 { // Repeated or featureless content cannot establish a unique displacement. if scores.enumerated().contains(where: { @@ -169,7 +175,7 @@ final class Stitcher { samples += 1 } } - guard samples > 0, Double(tailError) / Double(samples) <= 6 else { return nil } + guard samples > 0, Double(tailError) / Double(samples) <= tolerance else { return nil } } return best } diff --git a/Plugins/Screenshot/Sources/TextLayout.swift b/Plugins/Screenshot/Sources/TextLayout.swift new file mode 100644 index 000000000..c8122d9a8 --- /dev/null +++ b/Plugins/Screenshot/Sources/TextLayout.swift @@ -0,0 +1,114 @@ +import CoreGraphics + +/// Rebuilds reading layout from Vision's scattered text fragments. Joining fragments by vertical order alone +/// loses indentation, side-by-side columns, and paragraph gaps. A clear vertical gutter splits columns first; +/// each column then groups fragments into visual rows and places them at absolute character columns. +enum TextLayout { + struct Fragment { + let text: String + /// Vision's normalized rectangle with a bottom-left origin. + let box: CGRect + } + + static func lines(from fragments: [Fragment]) -> [String] { + guard !fragments.isEmpty else { return [] } + let (rows, bands) = group(fragments) + // The median glyph width falls between half- and full-width characters in mixed CJK and Latin text. + let charWidth = max(median(fragments.compactMap { + $0.text.isEmpty ? nil : $0.box.width / CGFloat($0.text.count) + }), 1e-6) + // Each column recurses with its own glyph width and left edge, so the right column is not indented + // by the left column's offset. + if let (left, right) = columnSplit(fragments, bands: bands, charWidth: charWidth) { + return lines(from: left) + [""] + lines(from: right) + } + + // Calibrate blank lines against the median row pitch. Vision boxes hug glyphs, so box height would + // misread normal line spacing as paragraph breaks. + let pitch = max(median(zip(bands.dropLast(), bands.dropFirst()).map { $0.midY - $1.midY }), 1e-6) + let left = bands.map(\.minX).min() ?? 0 + + var out: [String] = [] + for (i, row) in rows.enumerated() { + // A clearly larger step is a blank line or paragraph gap; cap large whitespace at two lines. + if i > 0 { + let step = bands[i - 1].midY - bands[i].midY + if step > pitch * 1.6 { + out += Array(repeating: "", count: min(2, max(1, Int((step / pitch).rounded()) - 1))) + } + } + // Place each fragment at its absolute column instead of accumulating gaps, + // so table cells that share a left edge line up. + var text = "" + for fragment in row.sorted(by: { $0.box.minX < $1.box.minX }) { + let column = spaces(fragment.box.minX - left, charWidth) + if text.count < column { + text += String(repeating: " ", count: column - text.count) + } else if !text.isEmpty { + text += " " + } + text += fragment.text + } + out.append(text) + } + return out + } + + /// Fragments overlapping vertically by at least half belong to one visual row. + private static func group(_ fragments: [Fragment]) -> ([[Fragment]], [CGRect]) { + var rows: [[Fragment]] = [] + var bands: [CGRect] = [] + for fragment in fragments.sorted(by: { $0.box.midY > $1.box.midY }) { + if let band = bands.last, overlaps(band, fragment.box) { + rows[rows.count - 1].append(fragment) + bands[bands.count - 1] = band.union(fragment.box) + } else { + rows.append([fragment]) + bands.append(fragment.box) + } + } + return (rows, bands) + } + + private static func overlaps(_ a: CGRect, _ b: CGRect) -> Bool { + max(0, min(a.maxY, b.maxY) - max(a.minY, b.minY)) >= 0.5 * min(a.height, b.height) + } + + /// Finds a vertical gutter separating two columns. All three conditions must hold, preferring no split + /// over reading a table column by column: the gutter is wider than word spacing, each side has enough + /// rows, and the rows on both sides do not line up. Table cells share rows, so the last check rejects them. + private static func columnSplit(_ fragments: [Fragment], bands: [CGRect], + charWidth: CGFloat) -> ([Fragment], [Fragment])? { + guard fragments.count >= 8 else { return nil } + let bounds = bands.dropFirst().reduce(bands[0]) { $0.union($1) } + let minWidth = max(3 * charWidth, 0.04 * bounds.width) + + var cursor = bounds.minX + var candidates: [(CGFloat, CGFloat)] = [] + for box in fragments.map(\.box).sorted(by: { $0.minX < $1.minX }) { + if box.minX - cursor >= minWidth { candidates.append((cursor, box.minX)) } + cursor = max(cursor, box.maxX) + } + + for (lo, hi) in candidates.sorted(by: { $1.1 - $1.0 < $0.1 - $0.0 }) { + let left = fragments.filter { $0.box.maxX <= lo } + let right = fragments.filter { $0.box.minX >= hi } + guard left.count + right.count == fragments.count else { continue } + let leftBands = group(left).1, rightBands = group(right).1 + guard leftBands.count >= 4, rightBands.count >= 4 else { continue } + let paired = leftBands.filter { l in rightBands.contains { overlaps(l, $0) } }.count + if Double(paired) / Double(leftBands.count) < 0.8 { return (left, right) } + } + return nil + } + + private static func spaces(_ gap: CGFloat, _ charWidth: CGFloat) -> Int { + // Cap malformed boxes so they cannot produce thousands of spaces. + min(200, max(0, Int((gap / charWidth).rounded()))) + } + + private static func median(_ values: [CGFloat]) -> CGFloat { + guard !values.isEmpty else { return 0 } + return values.sorted()[values.count / 2] + } +} diff --git a/Plugins/Screenshot/Tests/AnnotationEditingTests.swift b/Plugins/Screenshot/Tests/AnnotationEditingTests.swift new file mode 100644 index 000000000..11a223a40 --- /dev/null +++ b/Plugins/Screenshot/Tests/AnnotationEditingTests.swift @@ -0,0 +1,199 @@ +import AppKit +import MacToolsPluginKit +import XCTest +@testable import ScreenshotPlugin + +@MainActor +final class ScreenshotAnnotationEditingTests: XCTestCase { + func testRectangleCanBeReselectedMovedResizedAndUndoneWithoutExportingHandles() async throws { + let editor = try Editor() + defer { editor.close() } + let original = NSRect(x: 200, y: 200, width: 120, height: 80) + try editor.draw("rect", original) + try editor.drag(from: NSPoint(x: 260, y: 240), to: NSPoint(x: 300, y: 260), attemptUndoDuringDrag: true) + let moved = original.offsetBy(dx: 40, dy: 20) + try await assertExport(editor, items: [item(.rect(moved))]) + + try editor.drag(from: NSPoint(x: moved.maxX, y: moved.maxY), to: NSPoint(x: 400, y: 340)) + try await assertExport(editor, items: [item(.rect(NSRect(x: 240, y: 220, width: 160, height: 120)))]) + editor.view.undo(nil) + try await assertExport(editor, items: [item(.rect(moved))]) + editor.view.undo(nil) + try await assertExport(editor, items: [item(.rect(original))]) + editor.view.undo(nil) + try await assertExport(editor, items: []) + } + + func testDrawingCreatesNestedItemsAndSelectionTargetsTheTopmostEditableItem() async throws { + let editor = try Editor() + defer { editor.close() } + let outer = NSRect(x: 180, y: 180, width: 220, height: 180) + let light = NSRect(x: 230, y: 210, width: 100, height: 80) + try editor.draw("rect", outer) + try editor.draw("spotlight", light) + try editor.drag(from: NSPoint(x: 280, y: 250), to: NSPoint(x: 320, y: 270)) + let movedLight = light.offsetBy(dx: 40, dy: 20) + let nested = NSRect(x: 290, y: 250, width: 30, height: 30) + try editor.draw("rect", nested) + + try await assertExport(editor, items: [item(.rect(outer)), item(.spotlight(movedLight)), item(.rect(nested))]) + editor.view.undo(nil) + editor.view.undo(nil) + try await assertExport(editor, items: [item(.rect(outer)), item(.spotlight(light))]) + } + + func testSpotlightClampsToCropAndArrowMovementAndNoOpDragsHaveCorrectUndo() async throws { + let editor = try Editor() + defer { editor.close() } + let original = NSRect(x: 200, y: 200, width: 120, height: 80) + try editor.draw("spotlight", original) + try editor.drag(from: NSPoint(x: 260, y: 240), to: NSPoint(x: -100, y: -100)) + let corner = NSRect(x: 100, y: 100, width: 120, height: 80) + try await assertExport(editor, items: [item(.spotlight(corner))]) + try editor.drag(from: NSPoint(x: 160, y: 140), to: NSPoint(x: -100, y: -100)) + editor.view.undo(nil) + try await assertExport(editor, items: [item(.spotlight(original))]) + + try editor.key(124, flags: .shift) + try await assertExport(editor, items: [item(.spotlight(original.offsetBy(dx: 10, dy: 0)))]) + editor.view.undo(nil) + try editor.drag(from: NSPoint(x: original.maxX, y: original.maxY), to: NSPoint(x: 1200, y: 900)) + let expanded = NSRect(x: 200, y: 200, width: editor.crop.maxX - 200, height: editor.crop.maxY - 200) + try await assertExport(editor, items: [item(.spotlight(expanded))]) + } + + func testRecroppingAndReusingOverlayDiscardAnnotationHistory() async throws { + let editor = try Editor() + defer { editor.close() } + try editor.draw("rect", NSRect(x: 200, y: 200, width: 120, height: 80)) + try editor.drag(from: NSPoint(x: 50, y: 50), to: NSPoint(x: 700, y: 500)) + editor.view.undo(nil) + try await assertExport(editor, items: [], crop: NSRect(x: 50, y: 50, width: 650, height: 450)) + + editor.view.prepare(frozen: editor.image, windows: [], quick: false) + try editor.drag(from: editor.crop.origin, to: NSPoint(x: editor.crop.maxX, y: editor.crop.maxY)) + editor.view.undo(nil) + try await assertExport(editor, items: []) + } + + func testFillCanBeSetBeforeDrawingAndToggledOnTheSelectedShapeWithUndo() async throws { + let editor = try Editor() + defer { editor.close() } + let oval = NSRect(x: 200, y: 200, width: 120, height: 80) + try editor.pick("ellipse") + try editor.click("screenshot.style.fill") + try editor.drag(from: oval.origin, to: NSPoint(x: oval.maxX, y: oval.maxY)) + try await assertExport(editor, items: [item(.ellipse(oval), filled: true)]) + + // The new ellipse stays selected, so the same control turns it back into an outline. + try editor.click("screenshot.style.fill") + try await assertExport(editor, items: [item(.ellipse(oval))]) + editor.view.undo(nil) + try await assertExport(editor, items: [item(.ellipse(oval), filled: true)]) + + try editor.drag(from: NSPoint(x: oval.midX, y: oval.midY), to: NSPoint(x: oval.midX + 30, y: oval.midY)) + try await assertExport(editor, items: [item(.ellipse(oval.offsetBy(dx: 30, dy: 0)), filled: true)]) + } + + private func item(_ shape: Shape, filled: Bool = false) -> Item { + Item(shape: shape, stroke: Stroke(color: .systemRed, width: 2, filled: filled)) + } + + private func assertExport(_ editor: Editor, items: [Item], crop: NSRect? = nil, + file: StaticString = #filePath, line: UInt = #line) async throws { + let finished = expectation(description: "Screenshot encoded") + var result: Data? + editor.view.onComplete = { png, _ in result = png; finished.fulfill() } + editor.view.copy(nil) + await fulfillment(of: [finished], timeout: 3) + let image = try XCTUnwrap(NSBitmapImageRep(data: XCTUnwrap(result))?.cgImage) + let renderer = AnnotationRenderer(image: editor.image, scale: 1, size: editor.view.bounds.size) + let expected = try XCTUnwrap(renderer.render(selection: crop ?? editor.crop, items: items, + radius: 0, shadowSize: 0, shadowColor: .black)) + XCTAssertEqual(image.width, expected.image.width, file: file, line: line) + XCTAssertEqual(image.height, expected.image.height, file: file, line: line) + let actualPixels = try pixels(image) + let expectedPixels = try pixels(expected.image) + XCTAssertTrue(actualPixels == expectedPixels, "Export changed geometry, stroke, crop, or included editing handles", + file: file, line: line) + } + + private func pixels(_ image: CGImage) throws -> Data { + let context = try XCTUnwrap(CGContext(data: nil, width: image.width, height: image.height, + bitsPerComponent: 8, bytesPerRow: image.width * 4, + space: CGColorSpace(name: CGColorSpace.sRGB)!, + bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue)) + context.draw(image, in: CGRect(x: 0, y: 0, width: image.width, height: image.height)) + return Data(bytes: try XCTUnwrap(context.data), count: context.bytesPerRow * context.height) + } +} + +@MainActor +private final class Editor { + let view: OverlayView + let window: NSWindow + let image: CGImage + let crop = NSRect(x: 100, y: 100, width: 800, height: 560) + + init() throws { + _ = NSApplication.shared + let bounds = NSRect(x: 0, y: 0, width: 1000, height: 760) + let context = try XCTUnwrap(CGContext(data: nil, width: 1000, height: 760, bitsPerComponent: 8, + bytesPerRow: 4000, space: CGColorSpace(name: CGColorSpace.sRGB)!, + bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue)) + context.setFillColor(CGColor.white) + context.fill(bounds) + image = try XCTUnwrap(context.makeImage()) + let environment = ScreenshotEnvironment(context: PluginRuntimeContext(pluginID: "screenshot", storage: ScreenshotTestStorage())) + view = OverlayView(frame: bounds, environment: environment) + window = NSWindow(contentRect: bounds, styleMask: .borderless, backing: .buffered, defer: false) + window.isReleasedWhenClosed = false + window.contentView = view + view.prepare(frozen: image, windows: [], quick: false) + try drag(from: crop.origin, to: NSPoint(x: crop.maxX, y: crop.maxY)) + } + + func close() { view.stop(); window.close() } + + func draw(_ tool: String, _ rect: NSRect) throws { + try pick(tool) + try drag(from: rect.origin, to: NSPoint(x: rect.maxX, y: rect.maxY)) + } + + func pick(_ tool: String) throws { + try click("screenshot.tool.\(tool)") + } + + func click(_ identifier: String) throws { + func descendants(_ parent: NSView) -> [NSView] { + parent.subviews.flatMap { [$0] + descendants($0) } + } + let button = try XCTUnwrap(descendants(view).compactMap { $0 as? NSButton } + .first { $0.accessibilityIdentifier() == identifier }) + button.performClick(nil) + } + + func drag(from start: NSPoint, to end: NSPoint, attemptUndoDuringDrag: Bool = false) throws { + view.mouseDown(with: try mouse(.leftMouseDown, at: start)) + if attemptUndoDuringDrag { + view.mouseDragged(with: try mouse(.leftMouseDragged, at: NSPoint(x: (start.x + end.x) / 2, + y: (start.y + end.y) / 2))) + view.undo(nil) + try key(124) + } + // Final mouse-up coordinates must apply even when AppKit coalesces drag samples. + view.mouseUp(with: try mouse(.leftMouseUp, at: end)) + } + + func key(_ code: UInt16, flags: NSEvent.ModifierFlags = []) throws { + view.keyDown(with: try XCTUnwrap(NSEvent.keyEvent(with: .keyDown, location: .zero, modifierFlags: flags, + timestamp: 0, windowNumber: window.windowNumber, context: nil, + characters: "", charactersIgnoringModifiers: "", isARepeat: false, keyCode: code))) + } + + private func mouse(_ type: NSEvent.EventType, at point: NSPoint) throws -> NSEvent { + try XCTUnwrap(NSEvent.mouseEvent(with: type, location: point, modifierFlags: [], timestamp: 0, + windowNumber: window.windowNumber, context: nil, + eventNumber: 0, clickCount: 1, pressure: 0)) + } +} diff --git a/Plugins/Screenshot/Tests/AnnotationRendererTests.swift b/Plugins/Screenshot/Tests/AnnotationRendererTests.swift index ae6b2f2e2..6c20b664b 100644 --- a/Plugins/Screenshot/Tests/AnnotationRendererTests.swift +++ b/Plugins/Screenshot/Tests/AnnotationRendererTests.swift @@ -6,6 +6,64 @@ import XCTest @MainActor final class AnnotationRendererTests: XCTestCase { + func testSpotlightKeepsOverlappingRegionsClearThroughDraftCommitAndUndoAtBothScales() throws { + let selection = NSRect(x: 20, y: 10, width: 120, height: 100) + let stroke = Stroke(color: .red, width: 4) + let first = Item(shape: .spotlight(NSRect(x: 35, y: 25, width: 40, height: 40)), stroke: stroke) + let second = Item(shape: .spotlight(NSRect(x: 55, y: 45, width: 40, height: 40)), stroke: stroke) + + for scale: CGFloat in [1, 2] { + let renderer = try whiteRenderer(scale: scale) + func render(_ items: [Item], draft: Item? = nil) throws -> NSBitmapImageRep { + let raster = try XCTUnwrap(renderer.render( + selection: selection, items: items, draft: draft, + radius: 0, shadowSize: 0, shadowColor: .black + )) + return NSBitmapImageRep(cgImage: raster.image) + } + func brightness(_ bitmap: NSBitmapImageRep, _ x: CGFloat, _ y: CGFloat) throws -> CGFloat { + let color = try XCTUnwrap(bitmap.colorAt( + x: Int((x - selection.minX) * scale), y: Int((selection.maxY - y) * scale) + )?.usingColorSpace(.deviceRGB)) + XCTAssertEqual(color.alphaComponent, 1, accuracy: 0.01) + return color.redComponent + } + + let draft = try render([first], draft: second) + let committed = try render([first, second]) + XCTAssertEqual(committed.pixelsWide, Int(selection.width * scale)) + XCTAssertEqual(committed.pixelsHigh, Int(selection.height * scale)) + for bitmap in [draft, committed] { + // Each region and their overlap remain clear, with a single dim layer outside. + for (x, y): (CGFloat, CGFloat) in [(45, 35), (85, 75), (65, 55)] { + XCTAssertEqual(try brightness(bitmap, x, y), 1, accuracy: 0.01) + } + XCTAssertEqual(try brightness(bitmap, 125, 95), 0.5, accuracy: 0.02) + XCTAssertLessThan(try brightness(bitmap, 36, 26), 0.8, "The highlight has rounded corners") + } + let undone = try render([first]) + XCTAssertEqual(try brightness(undone, 45, 35), 1, accuracy: 0.01) + XCTAssertEqual(try brightness(undone, 85, 75), 0.5, accuracy: 0.02) + XCTAssertEqual(try brightness(render([]), 125, 95), 1, accuracy: 0.01) + } + } + + func testSpotlightOutsideSelectionOrTooSmallDoesNotDimExport() throws { + let renderer = try whiteRenderer(scale: 1) + let selection = NSRect(x: 20, y: 10, width: 120, height: 100) + let raster = try XCTUnwrap(renderer.render( + selection: selection, + items: [NSRect(x: 0, y: 0, width: 10, height: 10), + NSRect(x: 40, y: 40, width: 1, height: 1)].map { + Item(shape: .spotlight($0), stroke: Stroke(color: .red, width: 2)) + }, + radius: 0, shadowSize: 0, shadowColor: .black + )) + let bitmap = NSBitmapImageRep(cgImage: raster.image) + let color = try XCTUnwrap(bitmap.colorAt(x: 60, y: 50)?.usingColorSpace(.deviceRGB)) + XCTAssertEqual(color.redComponent, 1, accuracy: 0.01) + } + func testExportKeepsQRCodeRedactedUnderOtherAnnotationsAtBothDisplayScales() throws { let payload = "mactools-private-token" let filter = try XCTUnwrap(CIFilter(name: "CIQRCodeGenerator")) @@ -38,8 +96,9 @@ final class AnnotationRendererTests: XCTestCase { // These effects sample the unredacted source, so neither may uncover the mask. let raster = try XCTUnwrap(renderer.render( selection: NSRect(origin: .zero, size: size), - items: [.qrMask(region), Item(shape: .mosaic(region), stroke: stroke)], - draft: Item(shape: .blur(region), stroke: stroke), + items: [.qrMask(region), Item(shape: .mosaic(region), stroke: stroke), + Item(shape: .spotlight(region), stroke: stroke)], + draft: Item(shape: .mosaic(region), stroke: stroke), radius: 0, shadowSize: 0, shadowColor: .black )) let bitmap = try XCTUnwrap(NSBitmapImageRep(data: ScreenshotImageEncoder.encodePNG(raster))) @@ -50,10 +109,135 @@ final class AnnotationRendererTests: XCTestCase { XCTAssertEqual(center.greenComponent, 0) XCTAssertEqual(center.blueComponent, 0) let outside = try XCTUnwrap(bitmap.colorAt(x: 0, y: 0)?.usingColorSpace(.deviceRGB)) - XCTAssertEqual(outside.redComponent, 1) + XCTAssertGreaterThan(outside.redComponent, 0) + XCTAssertLessThan(outside.redComponent, 1) + } + } + + func testMosaicAndFillHideTextFromRecognition() throws { + let secret = "4829 1735 6604" + let (source, size, textRect) = try textImage(secret, scale: 2) + XCTAssertTrue(try recognizedText(source).contains("4829"), "The source fixture must be readable") + + for filled in [false, true] { + let renderer = AnnotationRenderer(image: source, scale: 2, size: size) + let shape: Shape = filled ? .rect(textRect) : .mosaic(textRect) + let raster = try XCTUnwrap(renderer.render( + selection: NSRect(origin: .zero, size: size), + items: [Item(shape: shape, stroke: Stroke(color: .systemRed, width: 2, filled: filled))], + radius: 0, shadowSize: 0, shadowColor: .black)) + let text = try recognizedText(raster.image) + for group in secret.split(separator: " ") { + XCTAssertFalse(text.contains(group), "filled: \(filled), recognized: \(text)") + } + } + } + + func testMaskEdgesOnHalfPixelsDoNotBlendWithTheSource() throws { + let source = try checkerboard(width: 200, height: 120) + let size = NSSize(width: 100, height: 60) + // The left edge falls on device pixel 20.5; an unaligned cover would blend column 20. + let region = NSRect(x: 10.25, y: 10.25, width: 60, height: 40) + for filled in [false, true] { + let renderer = AnnotationRenderer(image: source, scale: 2, size: size) + let shape: Shape = filled ? .rect(region) : .mosaic(region) + let raster = try XCTUnwrap(renderer.render( + selection: NSRect(origin: .zero, size: size), + items: [Item(shape: shape, stroke: Stroke(color: .systemRed, width: 2, filled: filled))], + radius: 0, shadowSize: 0, shadowColor: .black)) + let bitmap = NSBitmapImageRep(cgImage: raster.image) + for row in [30, 60, 90] { + XCTAssertEqual(bitmap.colorAt(x: 20, y: row), bitmap.colorAt(x: 21, y: row), + "filled: \(filled), row: \(row)") + XCTAssertEqual(bitmap.colorAt(x: 20, y: row)?.alphaComponent, 1) + } + } + } + + func testMosaicIsOpaqueStableWithinACaptureAndVariesBetweenCaptures() throws { + let source = try checkerboard(width: 120, height: 120, transparentLeftHalf: true) + let size = NSSize(width: 120, height: 120) + let selection = NSRect(origin: .zero, size: size) + let items = [Item(shape: .mosaic(selection), stroke: Stroke(color: .red, width: 2))] + func export(_ renderer: AnnotationRenderer) throws -> Data { + let raster = try XCTUnwrap(renderer.render(selection: selection, items: items, + radius: 0, shadowSize: 0, shadowColor: .black)) + return try ScreenshotImageEncoder.encodePNG(raster) + } + let renderer = AnnotationRenderer(image: source, scale: 1, size: size) + let png = try export(renderer) + XCTAssertEqual(try export(renderer), png, "Preview and export must match within one capture") + XCTAssertNotEqual(try export(AnnotationRenderer(image: source, scale: 1, size: size)), png, + "A fixed block pattern could be matched against rendered candidates") + let bitmap = try XCTUnwrap(NSBitmapImageRep(data: png)) + for (x, y) in [(0, 0), (60, 60), (119, 119)] { + XCTAssertEqual(bitmap.colorAt(x: x, y: y)?.alphaComponent, 1) } } + private func textImage(_ text: String, scale: CGFloat) throws -> (CGImage, NSSize, NSRect) { + let size = NSSize(width: 360, height: 90) + let rep = try XCTUnwrap(NSBitmapImageRep( + bitmapDataPlanes: nil, pixelsWide: Int(size.width * scale), pixelsHigh: Int(size.height * scale), + bitsPerSample: 8, samplesPerPixel: 4, hasAlpha: true, isPlanar: false, + colorSpaceName: .deviceRGB, bytesPerRow: 0, bitsPerPixel: 0)) + rep.size = size + let context = try XCTUnwrap(NSGraphicsContext(bitmapImageRep: rep)) + NSGraphicsContext.saveGraphicsState() + NSGraphicsContext.current = context + NSColor.white.setFill() + NSRect(origin: .zero, size: size).fill() + let string = NSAttributedString(string: text, attributes: [ + .font: NSFont.monospacedDigitSystemFont(ofSize: 24, weight: .regular), + .foregroundColor: NSColor.black, + ]) + let origin = NSPoint(x: 20, y: 30) + string.draw(at: origin) + NSGraphicsContext.restoreGraphicsState() + let textRect = NSRect(origin: origin, size: string.size()).insetBy(dx: -4, dy: -4) + return (try XCTUnwrap(rep.cgImage), size, textRect) + } + + private func recognizedText(_ image: CGImage) throws -> String { + let request = VNRecognizeTextRequest() + request.recognitionLevel = .accurate + request.usesLanguageCorrection = false + try VNImageRequestHandler(cgImage: image).perform([request]) + return (request.results ?? []).compactMap { $0.topCandidates(1).first?.string }.joined(separator: " ") + } + + private func checkerboard(width: Int, height: Int, transparentLeftHalf: Bool = false) throws -> CGImage { + var pixels = [UInt8](repeating: 0, count: width * height * 4) + for y in 0.. AnnotationRenderer { + let size = NSSize(width: 160, height: 120) + let context = try XCTUnwrap(CGContext( + data: nil, width: Int(size.width * scale), height: Int(size.height * scale), + bitsPerComponent: 8, bytesPerRow: 0, space: CGColorSpaceCreateDeviceRGB(), + bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue + )) + context.setFillColor(CGColor.white) + context.fill(CGRect(x: 0, y: 0, width: context.width, height: context.height)) + return AnnotationRenderer(image: try XCTUnwrap(context.makeImage()), scale: scale, size: size) + } + private func decodedPayloads(_ image: CGImage) throws -> [String] { let request = VNDetectBarcodesRequest() request.symbologies = [.qr] diff --git a/Plugins/Screenshot/Tests/PinViewTests.swift b/Plugins/Screenshot/Tests/PinViewTests.swift new file mode 100644 index 000000000..71093530c --- /dev/null +++ b/Plugins/Screenshot/Tests/PinViewTests.swift @@ -0,0 +1,18 @@ +import AppKit +import XCTest +@testable import ScreenshotPlugin + +@MainActor +final class PinViewTests: XCTestCase { + func testControlsForASmallImageStayOnScreenWithoutCoveringIt() { + let screen = NSRect(x: 0, y: 0, width: 1440, height: 900) + let size = NSSize(width: 104, height: 44) + for image in [NSRect(x: 600, y: 400, width: 60, height: 30), // free space below + NSRect(x: 600, y: 0, width: 60, height: 30), // at the bottom edge + NSRect(x: 0, y: 870, width: 40, height: 30)] { // in the top-left corner + let frame = PinView.controlsFrame(adjacentTo: image, size: size, within: screen) + XCTAssertTrue(screen.contains(frame), "\(image)") + XCTAssertTrue(frame.intersection(image).isEmpty, "\(image)") + } + } +} diff --git a/Plugins/Screenshot/Tests/RecordingActivityTests.swift b/Plugins/Screenshot/Tests/RecordingActivityTests.swift new file mode 100644 index 000000000..e0fc0ed1e --- /dev/null +++ b/Plugins/Screenshot/Tests/RecordingActivityTests.swift @@ -0,0 +1,70 @@ +import AppKit +import XCTest +@testable import ScreenshotPlugin + +@MainActor +final class RecordingActivityTests: XCTestCase { + func testQuartzCoordinatesHandleCropsAndDisplaysAboveAndLeftOfPrimary() { + for origin in [CGPoint.zero, CGPoint(x: -1920, y: -1080), CGPoint(x: 1512, y: 200)] { + let coordinates = RecordingCoordinates( + displayBounds: CGRect(origin: origin, size: CGSize(width: 1920, height: 1080)), + sourceRect: CGRect(x: 100, y: 50, width: 800, height: 600)) + XCTAssertEqual(coordinates.normalize(CGPoint(x: origin.x + 100, y: origin.y + 50)), .zero) + XCTAssertEqual(coordinates.normalize(CGPoint(x: origin.x + 500, y: origin.y + 350)), CGPoint(x: 0.5, y: 0.5)) + XCTAssertNil(coordinates.normalize(CGPoint(x: origin.x + 99, y: origin.y + 50))) + XCTAssertNil(coordinates.normalize(CGPoint(x: CGFloat.nan, y: 0))) + } + } + + func testPointerMovementDoesNotSuppressDeliberateScrolling() throws { + let activity = RecordingActivity(displayBounds: CGRect(x: 0, y: 0, width: 800, height: 600), + sourceRect: CGRect(x: 0, y: 0, width: 800, height: 600)) + for index in 0..<10 { + let time = 1 + Double(index) * 0.06 + let point = CGPoint(x: 100 + index * 8, y: 100) + let move = try XCTUnwrap(CGEvent(mouseEventSource: nil, mouseType: .mouseMoved, + mouseCursorPosition: point, mouseButton: .left)) + move.timestamp = UInt64(time * 1_000_000_000) + activity.receive(try XCTUnwrap(NSEvent(cgEvent: move))) + let scroll = try XCTUnwrap(CGEvent(scrollWheelEvent2Source: nil, units: .pixel, wheelCount: 1, + wheel1: 10, wheel2: 0, wheel3: 0)) + scroll.location = point + scroll.timestamp = UInt64((time + 0.01) * 1_000_000_000) + activity.receive(try XCTUnwrap(NSEvent(cgEvent: scroll))) + } + let events = activity.snapshot(startTime: 0) + XCTAssertEqual(events.filter { $0.kind == .scroll }.count, 10) + XCTAssertTrue(RecordingZoomPlan(events: events, duration: 5).hasZoom) + } + + func testEventsAreRelativeToTheFirstVideoFrame() { + let events: [RecordingZoomEvent] = [ + .init(time: 100, kind: .click, point: .zero), + .init(time: 102, kind: .click, point: CGPoint(x: 0.2, y: 0.3)), + .init(time: .nan, kind: .reset), + ] + let result = RecordingActivity.relativeEvents(events, startTime: 101.5) + XCTAssertEqual(result.map(\.time), [0.5]) + XCTAssertTrue(RecordingActivity.relativeEvents(events, startTime: .nan).isEmpty) + } + + func testSwitchingWindowsResetsButMenusKeepTheCurrentInteraction() { + let activity = RecordingActivity(displayBounds: CGRect(x: 0, y: 0, width: 800, height: 600), + sourceRect: CGRect(x: 0, y: 0, width: 800, height: 600)) + let point = CGPoint(x: 0.5, y: 0.5) + activity.receiveClick(at: 1, point: point, window: 1) + let menu = RecordingActivity.ordinaryWindow(at: CGPoint(x: 100, y: 100), + windows: [window(id: 3, layer: 101), window(id: 1)]) + XCTAssertNil(menu) + activity.receiveClick(at: 2, point: point, window: menu) + let other = RecordingActivity.ordinaryWindow(at: CGPoint(x: 100, y: 100), eventWindow: 2, + windows: [window(id: 1), window(id: 2)]) + activity.receiveClick(at: 3, point: point, window: other) + XCTAssertEqual(activity.snapshot(startTime: 0).map(\.kind), [.click, .click, .reset]) + } + + private func window(id: CGWindowID, layer: Int = 0) -> [String: Any] { + [kCGWindowNumber as String: NSNumber(value: id), kCGWindowLayer as String: layer, + kCGWindowBounds as String: CGRect(x: 0, y: 0, width: 200, height: 200).dictionaryRepresentation] + } +} diff --git a/Plugins/Screenshot/Tests/RecordingZoomExporterTests.swift b/Plugins/Screenshot/Tests/RecordingZoomExporterTests.swift new file mode 100644 index 000000000..3ac794c79 --- /dev/null +++ b/Plugins/Screenshot/Tests/RecordingZoomExporterTests.swift @@ -0,0 +1,229 @@ +import AppKit +import AVFoundation +import XCTest +@testable import ScreenshotPlugin + +@available(macOS 15, *) +final class RecordingZoomExporterTests: XCTestCase { + func testZoomedMovieKeepsDurationSizeOrientationAndAudio() async throws { + for rotated in [false, true] { + let folder = try temporaryFolder() + defer { try? FileManager.default.removeItem(at: folder) } + let source = folder.appendingPathComponent("original.mov") + let destination = folder.appendingPathComponent("zoom.mov") + try await makeMovie(at: source, rotated: rotated) + let originalData = try Data(contentsOf: source) + let events = [RecordingZoomEvent(time: 0.3, kind: .click, point: CGPoint(x: 0.8, y: 0.2))] + try await RecordingZoomExporter.export(source: source, destination: destination, events: events) + XCTAssertEqual(try Data(contentsOf: source), originalData, "The original stays recoverable") + + let input = AVURLAsset(url: source), output = AVURLAsset(url: destination) + let inputDuration = try await input.load(.duration).seconds + let outputDuration = try await output.load(.duration).seconds + XCTAssertEqual(outputDuration, inputDuration, accuracy: 1.0 / 30) + let videoTracks = try await output.loadTracks(withMediaType: .video) + let track = try XCTUnwrap(videoTracks.first) + let frameRate = try await track.load(.nominalFrameRate) + XCTAssertEqual(frameRate, 60, accuracy: 0.01) + let audioTracks = try await output.loadTracks(withMediaType: .audio) + XCTAssertEqual(audioTracks.count, 1) + + let original = try await frame(from: input, at: 1) + let result = try await frame(from: output, at: 1) + XCTAssertEqual(result.pixelsWide, rotated ? 240 : 320) + XCTAssertEqual(result.pixelsHigh, rotated ? 320 : 240) + let crop = RecordingZoomPlan(events: events, duration: inputDuration).crop(at: 1) + XCTAssertLessThan(crop.width, 1) + // Compare decoded pixels in display orientation; this catches vertical flips and a lost track transform. + for point in [CGPoint(x: 0.1, y: 0.1), CGPoint(x: 0.5, y: 0.5), CGPoint(x: 0.9, y: 0.9)] { + let expected = try XCTUnwrap(original.colorAt( + x: Int((crop.minX + crop.width * point.x) * CGFloat(original.pixelsWide)), + y: Int((crop.minY + crop.height * point.y) * CGFloat(original.pixelsHigh)))?.usingColorSpace(.sRGB)) + let actual = try XCTUnwrap(result.colorAt(x: Int(point.x * CGFloat(result.pixelsWide)), + y: Int(point.y * CGFloat(result.pixelsHigh)))?.usingColorSpace(.sRGB)) + XCTAssertEqual(actual.redComponent, expected.redComponent, accuracy: 0.06, "\(point)") + XCTAssertEqual(actual.greenComponent, expected.greenComponent, accuracy: 0.06, "\(point)") + } + XCTAssertEqual(try FileManager.default.contentsOfDirectory(atPath: folder.path).sorted(), ["original.mov", "zoom.mov"]) + } + } + + func testSparseScreenUpdatesStillProduceSixtyFramesPerSecond() async throws { + let folder = try temporaryFolder() + defer { try? FileManager.default.removeItem(at: folder) } + let source = folder.appendingPathComponent("original.mov") + let destination = folder.appendingPathComponent("zoom.mov") + try await makeMovie(at: source, rotated: false, frameStride: 30) + try await RecordingZoomExporter.export(source: source, destination: destination, events: [ + .init(time: 0.3, kind: .click, point: CGPoint(x: 0.8, y: 0.2)), .init(time: 0.4, kind: .release), + ]) + let asset = AVURLAsset(url: destination) + let videoTracks = try await asset.loadTracks(withMediaType: .video) + let track = try XCTUnwrap(videoTracks.first) + let reader = try AVAssetReader(asset: asset) + let output = AVAssetReaderTrackOutput(track: track, outputSettings: [ + kCVPixelBufferPixelFormatTypeKey as String: kCVPixelFormatType_32BGRA, + ]) + reader.add(output) + XCTAssertTrue(reader.startReading()) + var times: [Double] = [] + while let sample = output.copyNextSampleBuffer() { + if CMSampleBufferGetImageBuffer(sample) != nil { times.append(sample.presentationTimeStamp.seconds) } + } + XCTAssertGreaterThanOrEqual(times.count, 179, "The camera keeps animating while the screen is unchanged") + XCTAssertLessThanOrEqual(zip(times.dropFirst(), times).map { $0 - $1 }.max() ?? .infinity, 1.0 / 60 + 0.00001) + } + + func testWithoutZoomTheOriginalBytesArePublishedUnchanged() async throws { + let folder = try temporaryFolder() + defer { try? FileManager.default.removeItem(at: folder) } + let source = folder.appendingPathComponent("original.mov") + let destination = folder.appendingPathComponent("unchanged.mov") + try await makeMovie(at: source, rotated: true) + let originalData = try Data(contentsOf: source) + // A click too close to the end has no room to zoom in and out. + try await RecordingZoomExporter.export(source: source, destination: destination, events: [ + .init(time: 2.8, kind: .click, point: CGPoint(x: 0.8, y: 0.2)), + ]) + XCTAssertEqual(try Data(contentsOf: destination), originalData) + XCTAssertEqual(try Data(contentsOf: source), originalData) + } + + func testCancellationAndCollisionsLeaveExistingFilesUntouched() async throws { + let folder = try temporaryFolder() + defer { try? FileManager.default.removeItem(at: folder) } + let source = folder.appendingPathComponent("original.mov") + let destination = folder.appendingPathComponent("zoom.mov") + try await makeMovie(at: source, rotated: false) + let originalData = try Data(contentsOf: source) + let events = [RecordingZoomEvent(time: 0.3, kind: .click, point: CGPoint(x: 0.8, y: 0.2))] + let (updates, continuation) = AsyncStream.makeStream() + let gate = DispatchSemaphore(value: 0) + let task = Task { + try await RecordingZoomExporter.export(source: source, destination: destination, events: events) { progress in + if progress == 0 { + continuation.yield(()) + gate.wait() + } + } + } + var iterator = updates.makeAsyncIterator() + await iterator.next() + task.cancel() + gate.signal() + do { + try await task.value + XCTFail("Cancelled export must throw") + } catch { + XCTAssertTrue(error is CancellationError, "\(error)") + } + XCTAssertEqual(try FileManager.default.contentsOfDirectory(atPath: folder.path), ["original.mov"]) + + let sentinel = Data("keep existing destination".utf8) + try sentinel.write(to: destination) + for target in [destination, source] { + do { + try await RecordingZoomExporter.export(source: source, destination: target, events: events) + XCTFail("An occupied destination must not be replaced") + } catch {} + } + XCTAssertEqual(try Data(contentsOf: destination), sentinel) + XCTAssertEqual(try Data(contentsOf: source), originalData) + } + + private func temporaryFolder() throws -> URL { + let folder = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) + try FileManager.default.createDirectory(at: folder, withIntermediateDirectories: true) + return folder + } + + private func frame(from asset: AVAsset, at seconds: Double) async throws -> NSBitmapImageRep { + let generator = AVAssetImageGenerator(asset: asset) + generator.appliesPreferredTrackTransform = true + generator.requestedTimeToleranceBefore = .zero + generator.requestedTimeToleranceAfter = .zero + let result = try await generator.image(at: CMTime(seconds: seconds, preferredTimescale: 600)) + return NSBitmapImageRep(cgImage: result.image) + } + + private func makeMovie(at url: URL, rotated: Bool, frameStride: Int = 1) async throws { + let writer = try AVAssetWriter(outputURL: url, fileType: .mov) + let video = AVAssetWriterInput(mediaType: .video, outputSettings: [ + AVVideoCodecKey: AVVideoCodecType.h264, AVVideoWidthKey: 320, AVVideoHeightKey: 240, + AVVideoColorPropertiesKey: [AVVideoColorPrimariesKey: AVVideoColorPrimaries_ITU_R_709_2, + AVVideoTransferFunctionKey: AVVideoTransferFunction_ITU_R_709_2, + AVVideoYCbCrMatrixKey: AVVideoYCbCrMatrix_ITU_R_709_2], + ]) + if rotated { video.transform = CGAffineTransform(a: 0, b: 1, c: -1, d: 0, tx: 240, ty: 0) } + let adaptor = AVAssetWriterInputPixelBufferAdaptor(assetWriterInput: video, sourcePixelBufferAttributes: [ + kCVPixelBufferPixelFormatTypeKey as String: kCVPixelFormatType_32BGRA, + kCVPixelBufferWidthKey as String: 320, kCVPixelBufferHeightKey as String: 240, + ]) + let audio = AVAssetWriterInput(mediaType: .audio, outputSettings: [ + AVFormatIDKey: kAudioFormatMPEG4AAC, AVSampleRateKey: 48000, AVNumberOfChannelsKey: 1, + ]) + writer.add(video) + writer.add(audio) + XCTAssertTrue(writer.startWriting()) + writer.startSession(atSourceTime: .zero) + let samples = try silentAudio() + XCTAssertTrue(audio.append(samples)) + audio.markAsFinished() + + var created: CVPixelBuffer? + XCTAssertTrue(CVPixelBufferCreate(kCFAllocatorDefault, 320, 240, kCVPixelFormatType_32BGRA, nil, &created) == kCVReturnSuccess) + let pixels = try XCTUnwrap(created) + CVPixelBufferLockBaseAddress(pixels, []) + let base = try XCTUnwrap(CVPixelBufferGetBaseAddress(pixels)).assumingMemoryBound(to: UInt8.self) + let stride = CVPixelBufferGetBytesPerRow(pixels) + for y in 0..<240 { + for x in 0..<320 { + let offset = y * stride + x * 4 + base[offset] = 180 + base[offset + 1] = UInt8(y * 255 / 239) + base[offset + 2] = UInt8(x * 255 / 319) + base[offset + 3] = 255 + } + } + CVPixelBufferUnlockBaseAddress(pixels, []) + for index in Swift.stride(from: 0, to: 90, by: frameStride) { + while !video.isReadyForMoreMediaData { + if let error = writer.error { throw error } + try await Task.sleep(for: .milliseconds(1)) + } + XCTAssertTrue(adaptor.append(pixels, withPresentationTime: CMTime(value: Int64(index), timescale: 30))) + } + video.markAsFinished() + writer.endSession(atSourceTime: CMTime(value: 3, timescale: 1)) + await writer.finishWriting() + XCTAssertTrue(writer.status == .completed) + if let error = writer.error { throw error } + } + + private func silentAudio() throws -> CMSampleBuffer { + var description = AudioStreamBasicDescription(mSampleRate: 48000, mFormatID: kAudioFormatLinearPCM, + mFormatFlags: kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked, + mBytesPerPacket: 2, mFramesPerPacket: 1, mBytesPerFrame: 2, mChannelsPerFrame: 1, + mBitsPerChannel: 16, mReserved: 0) + var format: CMAudioFormatDescription? + XCTAssertTrue(CMAudioFormatDescriptionCreate(allocator: kCFAllocatorDefault, asbd: &description, + layoutSize: 0, layout: nil, magicCookieSize: 0, magicCookie: nil, extensions: nil, + formatDescriptionOut: &format) == noErr) + var block: CMBlockBuffer? + let count = 3 * 48000 + XCTAssertTrue(CMBlockBufferCreateWithMemoryBlock(allocator: kCFAllocatorDefault, memoryBlock: nil, + blockLength: count * 2, blockAllocator: kCFAllocatorDefault, customBlockSource: nil, + offsetToData: 0, dataLength: count * 2, flags: 0, blockBufferOut: &block) == noErr) + let data = try XCTUnwrap(block) + XCTAssertTrue(CMBlockBufferFillDataBytes(with: 0, blockBuffer: data, offsetIntoDestination: 0, dataLength: count * 2) == noErr) + var timing = CMSampleTimingInfo(duration: CMTime(value: 1, timescale: 48000), presentationTimeStamp: .zero, + decodeTimeStamp: .invalid) + var sample: CMSampleBuffer? + let audioFormat = try XCTUnwrap(format) + XCTAssertTrue(CMSampleBufferCreateReady(allocator: kCFAllocatorDefault, dataBuffer: data, + formatDescription: audioFormat, sampleCount: count, sampleTimingEntryCount: 1, + sampleTimingArray: &timing, sampleSizeEntryCount: 0, sampleSizeArray: nil, + sampleBufferOut: &sample) == noErr) + return try XCTUnwrap(sample) + } +} diff --git a/Plugins/Screenshot/Tests/RecordingZoomTests.swift b/Plugins/Screenshot/Tests/RecordingZoomTests.swift new file mode 100644 index 000000000..fbc0bf894 --- /dev/null +++ b/Plugins/Screenshot/Tests/RecordingZoomTests.swift @@ -0,0 +1,92 @@ +import CoreGraphics +import XCTest +@testable import ScreenshotPlugin + +final class RecordingZoomTests: XCTestCase { + private let full = CGRect(x: 0, y: 0, width: 1, height: 1) + private let center = CGPoint(x: 0.5, y: 0.5) + + func testClickEntersSmoothlyAndReturnsToOverviewAfterInactivity() { + let plan = RecordingZoomPlan(events: [ + .init(time: 1, kind: .click, point: center), .init(time: 1.1, kind: .release) + ], duration: 5) + XCTAssertTrue(plan.hasZoom) + XCTAssertEqual(plan.crop(at: 1), full) + XCTAssertLessThan(plan.crop(at: 1.15).width, 1) + XCTAssertGreaterThan(plan.crop(at: 1.15).width, 0.625) + XCTAssertEqual(plan.crop(at: 1.5).width, 0.625, accuracy: 0.000001) + XCTAssertEqual(plan.crop(at: 3.7), full) + } + + func testInputEventsNeverRestartOrReverseCameraVelocity() { + let traces: [[RecordingZoomEvent]] = [ + [.init(time: 1, kind: .click, point: center), + .init(time: 1.15, kind: .move, point: CGPoint(x: 0.85, y: 0.5))], + [.init(time: 1, kind: .click, point: center), .init(time: 1.05, kind: .release), + .init(time: 1.18, kind: .click, point: CGPoint(x: 0.65, y: 0.5))], + [.init(time: 1, kind: .click, point: center), .init(time: 1.18, kind: .reset)], + ] + let epsilon = 0.00001 + for events in traces { + let plan = RecordingZoomPlan(events: events, duration: 6) + for time in events.flatMap({ event in (0...6).map { event.time + Double($0) / 60 } }) { + let before = plan.crop(at: time - epsilon), current = plan.crop(at: time), after = plan.crop(at: time + epsilon) + for (a, b, c) in [(before.midX, current.midX, after.midX), (before.width, current.width, after.width)] { + XCTAssertLessThan(abs((c - b) / epsilon - (b - a) / epsilon), 0.01) + } + } + } + } + + func testHeldDragOutlivesTheIdleTimeoutAndResetReturnsToOverview() { + let events: [RecordingZoomEvent] = [ + .init(time: 1, kind: .click, point: center), + .init(time: 4, kind: .move, point: CGPoint(x: 0.9, y: 0.1)), + .init(time: 5, kind: .release), + ] + let plan = RecordingZoomPlan(events: events, duration: 9) + XCTAssertEqual(plan.crop(at: 4.5).width, 0.625) + XCTAssertEqual(plan.crop(at: 6.5).width, 0.625) + XCTAssertEqual(plan.crop(at: 7.6), full) + + let reset = RecordingZoomPlan(events: events + [.init(time: 4.2, kind: .reset)], duration: 9) + XCTAssertEqual(reset.crop(at: 4.8), full) + } + + func testDenseDragKeepsTheCursorInsideTheCrop() { + var events: [RecordingZoomEvent] = [.init(time: 1, kind: .click, point: CGPoint(x: 0.1, y: 0.5))] + for index in 0...20 { + events.append(.init(time: 2 + Double(index) * 0.05, kind: .move, + point: CGPoint(x: 0.1 + Double(index) * 0.04, y: 0.5))) + } + let plan = RecordingZoomPlan(events: events, duration: 6) + for event in events.dropFirst() { + XCTAssertTrue(plan.crop(at: event.time).contains(event.point!)) + } + } + + func testInvalidEventsAreIgnoredAndCropsStayInsideTheRecording() { + let invalid: [RecordingZoomEvent] = [ + .init(time: .nan, kind: .click, point: center), + .init(time: -1, kind: .click, point: center), + .init(time: 1, kind: .click, point: CGPoint(x: 1.1, y: 0)), + .init(time: 1, kind: .click), + .init(time: 20, kind: .click, point: center), + ] + XCTAssertFalse(RecordingZoomPlan(events: invalid, duration: 5).hasZoom) + XCTAssertFalse(RecordingZoomPlan(events: [.init(time: 0, kind: .click, point: center)], duration: 0.2).hasZoom, + "A clip too short to enter and leave keeps the full view") + + let plan = RecordingZoomPlan(events: [ + .init(time: 0, kind: .click, point: CGPoint(x: 0, y: 1)), + .init(time: 0, kind: .release), + .init(time: 1, kind: .scroll, point: CGPoint(x: 1, y: 0)), + ] + invalid, duration: 5) + for step in 0...150 { + let crop = plan.crop(at: Double(step) / 30) + XCTAssertTrue(crop.minX >= 0 && crop.minY >= 0 && crop.maxX <= 1.000001 && crop.maxY <= 1.000001) + XCTAssertTrue(crop.width >= 0.625 && crop.width <= 1 && crop.width == crop.height) + } + XCTAssertEqual(plan.crop(at: 3.6), full, "A same-time release must not leave the button held") + } +} diff --git a/Plugins/Screenshot/Tests/ScrollSessionTests.swift b/Plugins/Screenshot/Tests/ScrollSessionTests.swift index 40abec5b4..112df01d3 100644 --- a/Plugins/Screenshot/Tests/ScrollSessionTests.swift +++ b/Plugins/Screenshot/Tests/ScrollSessionTests.swift @@ -69,22 +69,8 @@ final class ScrollSessionTests: XCTestCase { } func testStitcherReconstructsADocumentAcrossDifferentScrollOffsets() throws { - let width = 400, height = 2400, viewport = 900 - let context = try XCTUnwrap(CGContext(data: nil, width: width, height: height, bitsPerComponent: 8, bytesPerRow: 0, - space: CGColorSpaceCreateDeviceRGB(), - bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue)) - var seed: UInt32 = 12345 - func random() -> CGFloat { - seed = seed &* 1664525 &+ 1013904223 - return CGFloat((seed >> 8) & 0xFFFF) / 65535 - } - context.setFillColor(CGColor.white) - context.fill(CGRect(x: 0, y: 0, width: width, height: height)) - for _ in 0..<600 { - context.setFillColor(CGColor(red: random(), green: random(), blue: random(), alpha: 1)) - context.fill(CGRect(x: random() * 380, y: random() * 2380, width: 8 + random() * 60, height: 4 + random() * 20)) - } - let document = try XCTUnwrap(context.makeImage()) + let width = 400, viewport = 900 + let document = try makeDocument() let stitcher = Stitcher() for offset in [0, 300, 650, 650, 1100, 1500] { try stitcher.push(try XCTUnwrap(document.cropping(to: CGRect(x: 0, y: offset, width: width, height: viewport)))) @@ -147,6 +133,55 @@ final class ScrollSessionTests: XCTestCase { XCTAssertNil(try XCTUnwrap(results.first).get()) } + /// Real captures differ slightly between frames; noise must not reject every later frame as unmatched. + func testNoisyFramesStillMatchAndAppendEachRowOnce() throws { + let width = 400, viewport = 900 + let document = try makeDocument() + var seed: UInt32 = 777 + for amplitude in [10, 20, 40] { + let stitcher = Stitcher() + for offset in [0, 300, 650, 1100, 1500] { + let frame = try XCTUnwrap(document.cropping(to: CGRect(x: 0, y: offset, width: width, height: viewport))) + try stitcher.push(try jittered(frame, amplitude: amplitude, seed: &seed)) + } + let output = try XCTUnwrap(try stitcher.compose()) + XCTAssertEqual(output.height, document.height, "amplitude: \(amplitude)") + } + } + + private func makeDocument(width: Int = 400, height: Int = 2400) throws -> CGImage { + let context = try XCTUnwrap(CGContext(data: nil, width: width, height: height, bitsPerComponent: 8, bytesPerRow: 0, + space: CGColorSpaceCreateDeviceRGB(), + bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue)) + var seed: UInt32 = 12345 + func random() -> CGFloat { + seed = seed &* 1664525 &+ 1013904223 + return CGFloat((seed >> 8) & 0xFFFF) / 65535 + } + context.setFillColor(CGColor.white) + context.fill(CGRect(x: 0, y: 0, width: width, height: height)) + for _ in 0..<600 { + context.setFillColor(CGColor(red: random(), green: random(), blue: random(), alpha: 1)) + context.fill(CGRect(x: random() * 380, y: random() * 2380, width: 8 + random() * 60, height: 4 + random() * 20)) + } + return try XCTUnwrap(context.makeImage()) + } + + private func jittered(_ image: CGImage, amplitude: Int, seed: inout UInt32) throws -> CGImage { + let bytesPerRow = image.width * 4 + let context = try XCTUnwrap(CGContext(data: nil, width: image.width, height: image.height, bitsPerComponent: 8, + bytesPerRow: bytesPerRow, space: CGColorSpaceCreateDeviceRGB(), + bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue)) + context.draw(image, in: CGRect(x: 0, y: 0, width: image.width, height: image.height)) + let pixels = try XCTUnwrap(context.data).assumingMemoryBound(to: UInt8.self) + for i in Swift.stride(from: 0, to: bytesPerRow * image.height, by: 4) { + seed = seed &* 1664525 &+ 1013904223 + let delta = Int((seed >> 8) % UInt32(amplitude * 2 + 1)) - amplitude + for k in 0..<3 { pixels[i + k] = UInt8(clamping: Int(pixels[i + k]) + delta) } + } + return try XCTUnwrap(context.makeImage()) + } + private func makeFrame(height: Int = 128) throws -> CGImage { let context = try XCTUnwrap(CGContext(data: nil, width: 32, height: height, bitsPerComponent: 8, bytesPerRow: 0, space: CGColorSpaceCreateDeviceRGB(), diff --git a/Plugins/Screenshot/Tests/TextLayoutTests.swift b/Plugins/Screenshot/Tests/TextLayoutTests.swift new file mode 100644 index 000000000..1e1da7991 --- /dev/null +++ b/Plugins/Screenshot/Tests/TextLayoutTests.swift @@ -0,0 +1,40 @@ +import CoreGraphics +import XCTest +@testable import ScreenshotPlugin + +final class TextLayoutTests: XCTestCase { + func testRestoresTableColumnsParagraphGapsAndIndentation() { + let lines = TextLayout.lines(from: [ + fragment("indented", x: 0.14, width: 0.16, y: 0.58), + fragment("Age", x: 0.30, width: 0.06, y: 0.90), + fragment("30", x: 0.30, width: 0.04, y: 0.82), + fragment("Name", x: 0.10, width: 0.08, y: 0.90), + fragment("Bob", x: 0.10, width: 0.06, y: 0.82), + fragment("Amy", x: 0.10, width: 0.06, y: 0.74), + fragment("28", x: 0.30, width: 0.04, y: 0.74), + ]) + XCTAssertEqual(lines, ["Name Age", "Bob 30", "Amy 28", "", " indented"]) + XCTAssertEqual(TextLayout.lines(from: [fragment("solo", x: 0.6, width: 0.08, y: 0.3)]), ["solo"]) + } + + func testKeepsAlignedTableRowsTogetherButSplitsOffsetSideBySidePanels() { + let rows = [0.90, 0.82, 0.74, 0.66, 0.58] + let table = rows.enumerated().flatMap { i, y in + [fragment("row\(i)", x: 0.05, width: 0.20, y: y), fragment("val\(i)", x: 0.60, width: 0.20, y: y)] + } + let asTable = TextLayout.lines(from: table) + XCTAssertEqual(asTable.count, 5, "A table must not be read column by column") + XCTAssertTrue(asTable[0].hasPrefix("row0") && asTable[0].hasSuffix("val0")) + + let panels = rows.enumerated().flatMap { i, y in + [fragment("Left row \(i)", x: 0.05, width: 0.30, y: y), + fragment("Right col \(i)", x: 0.55, width: 0.30, y: y - 0.04)] + } + XCTAssertEqual(TextLayout.lines(from: panels), + (0...4).map { "Left row \($0)" } + [""] + (0...4).map { "Right col \($0)" }) + } + + private func fragment(_ text: String, x: CGFloat, width: CGFloat, y: CGFloat) -> TextLayout.Fragment { + TextLayout.Fragment(text: text, box: CGRect(x: x, y: y, width: width, height: 0.06)) + } +} diff --git a/Plugins/Screenshot/plugin.json b/Plugins/Screenshot/plugin.json index 1cd0118df..1667e8fd2 100644 --- a/Plugins/Screenshot/plugin.json +++ b/Plugins/Screenshot/plugin.json @@ -78,18 +78,18 @@ "quick-capture-title": "@localizable.action.quickCapture.title", "quick-capture-description": "@localizable.action.quickCapture.description", "long-description": { - "ar": "أداة محلية بلقطات مناطق ونوافذ وتعليقات وإخفاء بالموزاييك أو التمويه والتعرّف على النصوص والرموز وتثبيت الصور ولقطات التمرير. تبدأ فقط بإجراء صريح في الواجهة. تسجيل المناطق بدون صوت يتطلب macOS 15 أو أحدث؛ الميزات الأخرى تعمل على macOS 14 أو أحدث.", - "de": "Lokale Bereichs- und Fensteraufnahmen mit Anmerkungen, Mosaik und Weichzeichnen, Text- und Codeerkennung, angehefteten Bildern und Scrollaufnahmen. Start nur durch eine ausdrückliche Vordergrundaktion. Bereichsvideos ohne Ton benötigen macOS 15; alle anderen Funktionen macOS 14.", - "en": "Local region and window capture with annotations, mosaic and blur, text and code recognition, pinned images, and scrolling screenshots. Starts only through an explicit foreground action. Silent region recording requires macOS 15 or later; other features support macOS 14 or later.", - "es": "Capturas locales de regiones y ventanas con anotaciones, mosaico, desenfoque, reconocimiento de texto y códigos, imágenes fijadas y capturas con desplazamiento. Solo comienza mediante una acción explícita en primer plano. La grabación de regiones sin audio requiere macOS 15; las otras funciones, macOS 14.", - "fr": "Captures locales de zones et fenêtres avec annotations, mosaïque et flou, reconnaissance de texte et de codes, images épinglées et captures défilantes. Démarrage uniquement par une action explicite au premier plan. L’enregistrement de zones sans audio nécessite macOS 15 ; les autres fonctions, macOS 14.", - "ja": "範囲・ウインドウ撮影、注釈、モザイク・ぼかし、文字・コード認識、画像のピン留め、スクロール撮影をローカルで実行します。明示的な前面操作でのみ開始します。音声なしの範囲収録には macOS 15 以降、その他の機能には macOS 14 以降が必要です。", - "ko": "영역·창 캡처, 주석, 모자이크·흐림, 텍스트·코드 인식, 이미지 고정, 스크롤 캡처를 로컬에서 처리합니다. 명시적인 전경 작업으로만 시작합니다. 소리 없는 영역 녹화는 macOS 15 이상, 나머지 기능은 macOS 14 이상이 필요합니다.", - "pt": "Capturas locais de áreas e janelas com anotações, mosaico, desfoque, reconhecimento de textos e códigos, imagens fixadas e rolagem. Inicia apenas por uma ação explícita em primeiro plano. A gravação de áreas sem áudio exige macOS 15; os demais recursos, macOS 14.", - "ru": "Локальные снимки областей и окон с пометками, мозаикой и размытием, распознаванием текста и кодов, закреплением изображений и прокруткой. Запуск только явным действием на переднем плане. Запись области без звука требует macOS 15; остальные функции — macOS 14.", - "tr": "Ek açıklamalar, mozaik ve bulanıklık, metin ve kod tanıma, sabitlenmiş görseller ve kaydırma ekran görüntüleriyle yerel bölge ve pencere yakalama. Yalnızca açık bir ön plan eylemiyle başlar. Sessiz bölge kaydı macOS 15 veya sonrasını gerektirir; diğer özellikler macOS 14 veya sonrasını destekler.", - "zh-Hans": "本地完成区域和窗口截图、标注、马赛克与模糊、文字与二维码识别、贴图和滚动截图。仅由明确的前台操作启动;无声区域录屏需要 macOS 15 或更高,其他功能支持 macOS 14 或更高。", - "zh-Hant": "在本機完成區域和視窗截圖、標註、馬賽克與模糊、文字與 QR 碼辨識、釘選圖片及捲動截圖。僅由明確的前景操作啟動;無聲區域錄製需要 macOS 15 或更新版本,其他功能支援 macOS 14 或更新版本。" + "ar": "أداة محلية بلقطات مناطق ونوافذ وتعليقات وإخفاء بالموزاييك والتعرّف على النصوص والرموز وتثبيت الصور ولقطات التمرير. تبدأ فقط بإجراء صريح في الواجهة. تسجيل المناطق بدون صوت يتطلب macOS 15 أو أحدث؛ الميزات الأخرى تعمل على macOS 14 أو أحدث.", + "de": "Lokale Bereichs- und Fensteraufnahmen mit Anmerkungen, Mosaik, Text- und Codeerkennung, angehefteten Bildern und Scrollaufnahmen. Start nur durch eine ausdrückliche Vordergrundaktion. Bereichsvideos ohne Ton benötigen macOS 15; alle anderen Funktionen macOS 14.", + "en": "Local region and window capture with annotations, mosaic, text and code recognition, pinned images, and scrolling screenshots. Starts only through an explicit foreground action. Silent region recording requires macOS 15 or later; other features support macOS 14 or later.", + "es": "Capturas locales de regiones y ventanas con anotaciones, mosaico, reconocimiento de texto y códigos, imágenes fijadas y capturas con desplazamiento. Solo comienza mediante una acción explícita en primer plano. La grabación de regiones sin audio requiere macOS 15; las otras funciones, macOS 14.", + "fr": "Captures locales de zones et fenêtres avec annotations, mosaïque, reconnaissance de texte et de codes, images épinglées et captures défilantes. Démarrage uniquement par une action explicite au premier plan. L’enregistrement de zones sans audio nécessite macOS 15 ; les autres fonctions, macOS 14.", + "ja": "範囲・ウインドウ撮影、注釈、モザイク、文字・コード認識、画像のピン留め、スクロール撮影をローカルで実行します。明示的な前面操作でのみ開始します。音声なしの範囲収録には macOS 15 以降、その他の機能には macOS 14 以降が必要です。", + "ko": "영역·창 캡처, 주석, 모자이크, 텍스트·코드 인식, 이미지 고정, 스크롤 캡처를 로컬에서 처리합니다. 명시적인 전경 작업으로만 시작합니다. 소리 없는 영역 녹화는 macOS 15 이상, 나머지 기능은 macOS 14 이상이 필요합니다.", + "pt": "Capturas locais de áreas e janelas com anotações, mosaico, reconhecimento de textos e códigos, imagens fixadas e rolagem. Inicia apenas por uma ação explícita em primeiro plano. A gravação de áreas sem áudio exige macOS 15; os demais recursos, macOS 14.", + "ru": "Локальные снимки областей и окон с пометками, мозаикой, распознаванием текста и кодов, закреплением изображений и прокруткой. Запуск только явным действием на переднем плане. Запись области без звука требует macOS 15; остальные функции — macOS 14.", + "tr": "Ek açıklamalar, mozaik, metin ve kod tanıma, sabitlenmiş görseller ve kaydırma ekran görüntüleriyle yerel bölge ve pencere yakalama. Yalnızca açık bir ön plan eylemiyle başlar. Sessiz bölge kaydı macOS 15 veya sonrasını gerektirir; diğer özellikler macOS 14 veya sonrasını destekler.", + "zh-Hans": "本地完成区域和窗口截图、标注、马赛克、文字与二维码识别、贴图和滚动截图。仅由明确的前台操作启动;无声区域录屏需要 macOS 15 或更高,其他功能支持 macOS 14 或更高。", + "zh-Hant": "在本機完成區域和視窗截圖、標註、馬賽克、文字與 QR 碼辨識、釘選圖片及捲動截圖。僅由明確的前景操作啟動;無聲區域錄製需要 macOS 15 或更新版本,其他功能支援 macOS 14 或更新版本。" }, "retention": { "ar": "تبقى الملفات المصدّرة ومحتويات الحافظة تحت تحكم المستخدم. تُزال إعدادات الإضافة وملفاتها الخاصة عند إلغاء تثبيتها؛ ولا تُحذف الملفات التي صدّرها المستخدم.", @@ -107,7 +107,6 @@ }, "setup.requirements.title": "@standardSetup.requirements.title", "setup.requirements.description": "@standardSetup.requirements.description", - "discovery.blur": "@localizable.overlay.tool.blur", "discovery.pixelate": "@localizable.overlay.tool.mosaic", "discovery.scrolling-screenshot": "@localizable.overlay.mode.scroll", "discovery.pin-image": "@localizable.overlay.action.pin", @@ -183,7 +182,6 @@ "scrolling screenshot", "screen recording", "pin", - "blur", "pixelate" ], "localizedSynonyms": { @@ -229,7 +227,6 @@ "zh-Hans": [ "截图", "快速截图", - "模糊", "马赛克" ], "zh-Hant": [ @@ -253,7 +250,6 @@ "relatedPluginIDs": [], "alternativePluginIDs": [], "localizedSynonymRefs": [ - "@productStrings.discovery.blur", "@productStrings.discovery.pixelate", "@productStrings.discovery.scrolling-screenshot", "@productStrings.discovery.pin-image", @@ -282,7 +278,8 @@ "dataObserved": [ "screen-pixels", "window-geometry", - "recognized-text-and-codes" + "recognized-text-and-codes", + "pointer-events" ], "dataPersisted": [ "user-exported-screenshots", diff --git a/README.md b/README.md index 72b232143..cb6f4a7c2 100644 --- a/README.md +++ b/README.md @@ -127,6 +127,8 @@ Experimental [Trackpad Scale](docs/plugins/trackpad-scale.md) estimates small-ob Screenshot selection remains available on each display after switching desktops or entering and leaving full-screen apps. +The screenshot toolbar includes **Spotlight** for keeping a detail clear while dimming the rest, and opaque **Fill** for rectangles and ellipses; shapes stay selectable, movable, and resizable after drawing. Region recordings can **auto zoom** toward clicks and scrolling in the saved video. + **Take your setup with you:** export and import preferences, keep local backups, or sync supported settings through a cloud or shared folder. The app supports **12 languages** and follows your system language by default. ## `mactools` in your terminal diff --git a/changes/unreleased/screenshot-capture-polish.md b/changes/unreleased/screenshot-capture-polish.md new file mode 100644 index 000000000..a8d2fdd16 --- /dev/null +++ b/changes/unreleased/screenshot-capture-polish.md @@ -0,0 +1,5 @@ +--- +release: plugin +type: changed +--- +Screenshot keeps recognized text layout, tolerates noisy scrolling frames, adds pinned-image controls, and never overwrites saved files. Cancelling Save As returns to the selection. diff --git a/changes/unreleased/screenshot-fill-redaction.md b/changes/unreleased/screenshot-fill-redaction.md new file mode 100644 index 000000000..eb181ae05 --- /dev/null +++ b/changes/unreleased/screenshot-fill-redaction.md @@ -0,0 +1,5 @@ +--- +release: plugin +type: changed +--- +Screenshot adds opaque fills for rectangles and ellipses, hardens mosaic against text recovery, and removes blur. diff --git a/changes/unreleased/screenshot-recording-auto-zoom.md b/changes/unreleased/screenshot-recording-auto-zoom.md new file mode 100644 index 000000000..22a785d8a --- /dev/null +++ b/changes/unreleased/screenshot-recording-auto-zoom.md @@ -0,0 +1,5 @@ +--- +release: plugin +type: added +--- +Region recordings can zoom toward clicks and scrolling in the saved video. Processing shows progress and can keep the original movie instead. diff --git a/changes/unreleased/screenshot-spotlight.md b/changes/unreleased/screenshot-spotlight.md new file mode 100644 index 000000000..a02842204 --- /dev/null +++ b/changes/unreleased/screenshot-spotlight.md @@ -0,0 +1,5 @@ +--- +release: plugin +type: added +--- +Screenshot adds Spotlight to highlight details in copied, saved, and pinned images. Rectangles, ellipses, and spotlight regions can be selected, moved, resized, and undone after drawing. diff --git a/docs/plugins/screenshot.md b/docs/plugins/screenshot.md index 436115190..d6112aca3 100644 --- a/docs/plugins/screenshot.md +++ b/docs/plugins/screenshot.md @@ -6,16 +6,22 @@ Adapted from the [Snap screenshot implementation](https://github.com/idev19/Snap ## Capture and edit -- **Capture Screenshot** opens a visible selection interface across connected displays. Only the display under the pointer previews a target window and shows the mode bar, including when moving between displays; stale hover highlights are cleared immediately. Other displays remain evenly dimmed unless they contain a selection; moving the pointer does not discard that selection. Window targeting includes visible menu bar popovers, menus, floating panels, and standard app windows while excluding system overlays; translucent menu materials keep their captured appearance in preview and export. Drag to select a region or click a highlighted target. Add rectangles, ellipses, lines, arrows, freehand marks, text, numbered tags, mosaic, or blur before copying, saving, or pinning the image. +- **Capture Screenshot** opens a visible selection interface across connected displays. Only the display under the pointer previews a target window and shows the mode bar, including when moving between displays; stale hover highlights are cleared immediately. Other displays remain evenly dimmed unless they contain a selection; moving the pointer does not discard that selection. Window targeting includes visible menu bar popovers, menus, floating panels, and standard app windows while excluding system overlays; translucent menu materials keep their captured appearance in preview and export. Drag to select a region or click a highlighted target. Add rectangles, ellipses, lines, arrows, freehand marks, text, numbered tags, mosaic, or spotlight regions before copying, saving, or pinning the image. +- **Spotlight** in the screenshot annotation toolbar keeps a dragged rounded rectangle clear and dims the surrounding selection. Choose the tool again to highlight another detail; overlapping regions stay clear without darkening the background again. Copy, save, and pin include the same effect, and QR masks remain opaque. +- **Edit annotations** without a separate selection tool. Rectangles, ellipses, and spotlight regions are selected after drawing: drag inside to move, drag an edge or corner handle to resize, or use arrow keys to nudge. Click an existing shape to select it again; overlapping shapes select the topmost one. Choose a drawing tool to add another shape, or choose the active tool again to return to editing. Command-Z undoes each completed edit or annotation, and selection handles are excluded from exports. +- **Fill** appears in the style row for rectangles and ellipses. Turn it on before drawing, or select an existing shape to fill it, change its color, or return it to an outline; the change can be undone. Fills are always opaque and draw above mosaic and spotlight effects. +- **Mosaic and fill redaction** expand their edges to whole device pixels so no partially blended source pixels remain at a fractional boundary. Mosaic uses coarse 14-point blocks, area-averaged, quantized, and offset by per-capture random jitter, and is always opaque. This resists matching pixelated text against rendered candidates, but an opaque fill remains the safer choice for passwords and identifiers. The earlier blur tool has been removed. - **Capture visibility** uses a clear dimmed backdrop, the system accent color for window and selection outlines, and balanced hover spacing. Start-confirmation bars and active scrolling/recording controls share the same glass capsule, regular-size native buttons, and padding. - **Mode bar** uses slightly larger controls, sits 4 points below the screen's top edge, and moves horizontally using its left-hand grip. Movement stays within screen edges and avoids the camera housing; each display retains its dragged position during the current capture. - **Magnifier** shows the pointer coordinates and current RGB or HEX color in separate left-aligned rows. Press Tab to switch formats; Command-C copies the displayed value and closes capture. - **Quick Capture** uses the same selection interface and immediately copies the selected image after selection. -- **Text and QR recognition** processes the frozen selection locally. Recognized content can be edited and copied. Closing the panel, changing the selection or mode, or ending capture prevents an earlier recognition request from publishing its result. The QR **Mask** action uses an opaque black fill in preview and export. Mosaic and blur remain visual effects and should not be used to reliably redact sensitive content. +- **Text and QR recognition** processes the frozen selection locally. Recognized content can be edited and copied. Closing the panel, changing the selection or mode, or ending capture prevents an earlier recognition request from publishing its result. Recognized text keeps its layout: indentation, table columns, and paragraph gaps are rebuilt from fragment geometry, and side-by-side panels with misaligned rows are read one column at a time. The QR **Mask** action uses an opaque black fill in preview and export. - **Recognition actions** use the same native capsule button style and sizing as scrolling and recording confirmation actions. The footer can show Close, Mask, Open Link, and Done according to the recognized content. -- **Pinned images** stay in a movable window for reference. Use Command-S to save, and Escape or a double-click to close. -- **Scrolling screenshots** continuously capture the selected region while you scroll it downward yourself. Select the scrolling content rather than fixed headers or footers. Finish to copy and pin the assembled image, or cancel to discard it. Ambiguous or unmatched content is not appended; the controls explain how to recover. Matching and composition run on a serial background worker, with only the newest pending frame retained. Output is limited to 128 MiB of RGBA pixels and 32,768 rows, with an additional working-pixel budget that can lower this limit for large viewports. Reaching a limit stops capture with guidance to use smaller sections. +- **Pinned images** stay in a movable window for reference. Hovering shows Copy, Save As, and Close controls; small images show them beside the image without enlarging it. Use Command-C to copy, Command-S to save, and Escape or a double-click to close. A pinned scrolling screenshot closes after it is copied or saved; a deliberately pinned image stays open. +- **Scrolling screenshots** continuously capture the selected region while you scroll it downward yourself. Select the scrolling content rather than fixed headers or footers. Finish to copy and pin the assembled image, or cancel to discard it. Ambiguous or unmatched content is not appended; the controls explain how to recover. Besides a strict absolute match, a frame also matches when its best offset is clearly better than a typical unrelated alignment, so normal capture noise does not stall stitching; the stationary-footer check scales with that matched noise level. Matching and composition run on a serial background worker, with only the newest pending frame retained. Output is limited to 128 MiB of RGBA pixels and 32,768 rows, with an additional working-pixel budget that can lower this limit for large viewports. Reaching a limit stops capture with guidance to use smaller sections. - **Region recording** is available on macOS 15 or later. Choose the recording mode and a region, then start and stop using the visible controls. It saves a MOV file without microphone or system audio, checking hardware codec support before starting the native recording output. A click-through accent-colored outline marks the selected region while capture is active and is excluded from the video. It stays within the target display at screen edges and hides when native capture stops, even while the file is still finalizing. The timer starts when recording actually starts. Completion requires both native capture termination and recording-file finalization; slow finalization keeps showing progress instead of reporting a false failure. Unsupported hardware encoding dimensions produce guidance to select a smaller region. +- **Recording auto zoom** is on by default and controlled by the record bar's **Auto Zoom** checkbox or the plugin's Recording settings; both share one preference. Recording still captures the original region. While capture runs, AppKit mouse monitors record pointer position, clicks, and scrolling inside the region; keyboard input is never observed, and no Accessibility permission is requested. After capture stops, the plugin renders a second movie at 60 fps that zooms to 1.6× around clicks and scrolling, follows the cursor with a dead zone, and returns to the full view after two seconds of inactivity or when the active window or app changes. Output dimensions and aspect ratio are unchanged. +- **Auto-zoom processing** shows progress in the recording panel. **Keep Original** cancels processing; cancellation or a failure keeps the original movie, named with an Original suffix, and reports its name. A clip without a click or scroll moves the original into place without re-encoding. The finished movie is published before the original is removed. Screenshots, recognition, and scrolling capture remain available while a movie renders; a new recording waits until processing ends. Escape closes the active selection interface. Screenshot and Quick Capture global shortcuts are unassigned by default and are configured above the output section in the plugin's settings. While scrolling capture or recording is active, the capture action finishes that session instead of opening another selection interface. @@ -27,11 +33,11 @@ MacTools owns the Screen Recording permission card (`screen-recording`, kind `sc ## Privacy and retention -Screen images, visible window geometry, recognized text, and codes may contain sensitive information. Capture starts only through an explicit foreground action with a visible selection interface. The two canonical actions do not support external Run Links, automatic rules, or App Intents. The plugin does not capture on startup or run unattended screenshot jobs. +Screen images, visible window geometry, recognized text, and codes may contain sensitive information. With recording auto zoom on, pointer positions, clicks, and scrolling inside the recorded region are kept in memory only for the current recording and discarded after its movie is rendered. Capture starts only through an explicit foreground action with a visible selection interface. The two canonical actions do not support external Run Links, automatic rules, or App Intents. The plugin does not capture on startup or run unattended screenshot jobs. Capture, recognition, editing, and image assembly use Apple frameworks locally. The plugin has no upload, network service, or telemetry. Choosing to open a recognized link explicitly hands that URL to the user's browser; screenshots and recognized text are not sent to a service by the plugin. -Screenshots are copied to the system clipboard unless you choose a save operation. Saved images use PNG; recordings use MOV. The default destination is `~/Desktop/screenshot`; the folder is created on the first save, and the plugin's settings can select another folder. The selected folder is stored in plugin-scoped preferences. Exported files remain until you manage or delete them yourself; clipboard content remains subject to macOS and other clipboard applications. +Screenshots are copied to the system clipboard unless you choose a save operation. Saving to the folder never replaces an existing file; a numbered name is used instead. Cancelling Save As returns to the same selection and annotations. Saved images use PNG; recordings use MOV. The default destination is `~/Desktop/screenshot`; the folder is created on the first save, and the plugin's settings can select another folder. The selected folder is stored in plugin-scoped preferences. Exported files remain until you manage or delete them yourself; clipboard content remains subject to macOS and other clipboard applications. Ending a selection hides its reusable capture surfaces, clears image references and annotation contents, and prevents pending work from publishing stale results. Idle surfaces do not acquire or retain desktop snapshots. Disabling the plugin destroys these surfaces and closes pinned images and auxiliary windows. Unsaved edits are discarded. If recording has already created a file, interruption or an error can leave an incomplete MOV file in the selected output folder; inspect or remove it yourself. diff --git a/site/src/generated/plugins.json b/site/src/generated/plugins.json index f9debafe8..b7e7f12a8 100644 --- a/site/src/generated/plugins.json +++ b/site/src/generated/plugins.json @@ -19214,14 +19214,12 @@ "scrolling screenshot", "screen recording", "pin", - "blur", "pixelate" ], "localizedSynonyms": { "ar": [ "لقطة شاشة", "التقاط سريع", - "طمس (B)", "فسيفساء (M)", "لقطة شاشة بالتمرير", "تثبيت الصورة على الشاشة", @@ -19233,7 +19231,6 @@ "de": [ "Bildschirmfoto", "Schnellaufnahme", - "Weichzeichnen (B)", "Mosaik (M)", "Scroll-Screenshot", "Bild auf dem Bildschirm fixieren", @@ -19245,7 +19242,6 @@ "en": [ "Screenshot", "Quick Capture", - "Blur (B)", "Pixelate (M)", "Scrolling Screenshot", "Pin image on screen", @@ -19257,7 +19253,6 @@ "es": [ "Captura de pantalla", "Captura rápida", - "Desenfoque (B)", "Mosaico (M)", "Captura de pantalla con desplazamiento", "Fijar imagen en pantalla", @@ -19269,7 +19264,6 @@ "fr": [ "Capture d’écran", "Capture rapide", - "Flou (B)", "Mosaïque (M)", "Capture d'écran avec défilement", "Épingler l'image à l'écran", @@ -19281,7 +19275,6 @@ "ja": [ "スクリーンショット", "クイック撮影", - "ぼかし (B)", "モザイク(M)", "スクロールスクリーンショット", "画像を画面に固定", @@ -19293,7 +19286,6 @@ "ko": [ "스크린샷", "빠른 캡처", - "블러(B)", "모자이크(M)", "스크롤 스크린샷", "화면에 이미지 고정하기", @@ -19305,7 +19297,6 @@ "pt": [ "Captura de tela", "Captura rápida", - "Desfoque (B)", "Mosaico (M)", "Captura de tela de rolagem", "Fixar imagem na tela", @@ -19317,7 +19308,6 @@ "ru": [ "Снимок экрана", "Быстрый снимок", - "Размытие (B)", "Мозаика (M)", "Скриншот с прокруткой", "Закрепить изображение на экране", @@ -19328,7 +19318,6 @@ ], "tr": [ "Ekran Görüntüsü", - "Bulanıklaştır (B)", "Mozaik (M)", "Kaydırmalı Ekran Görüntüsü", "Görseli ekrana sabitle", @@ -19340,9 +19329,7 @@ "zh-Hans": [ "截图", "快速截图", - "模糊", "马赛克", - "模糊 (B)", "马赛克 (M)", "滚动截图", "贴图:钉在屏幕上", @@ -19354,7 +19341,6 @@ "zh-Hant": [ "截圖", "快速截圖", - "模糊 (B)", "馬賽克 (M)", "捲動截圖", "將圖片釘選在螢幕上", @@ -19442,18 +19428,18 @@ ], "license": "GPL-3.0-only", "longDescription": { - "ar": "أداة محلية بلقطات مناطق ونوافذ وتعليقات وإخفاء بالموزاييك أو التمويه والتعرّف على النصوص والرموز وتثبيت الصور ولقطات التمرير. تبدأ فقط بإجراء صريح في الواجهة. تسجيل المناطق بدون صوت يتطلب macOS 15 أو أحدث؛ الميزات الأخرى تعمل على macOS 14 أو أحدث.", - "de": "Lokale Bereichs- und Fensteraufnahmen mit Anmerkungen, Mosaik und Weichzeichnen, Text- und Codeerkennung, angehefteten Bildern und Scrollaufnahmen. Start nur durch eine ausdrückliche Vordergrundaktion. Bereichsvideos ohne Ton benötigen macOS 15; alle anderen Funktionen macOS 14.", - "en": "Local region and window capture with annotations, mosaic and blur, text and code recognition, pinned images, and scrolling screenshots. Starts only through an explicit foreground action. Silent region recording requires macOS 15 or later; other features support macOS 14 or later.", - "es": "Capturas locales de regiones y ventanas con anotaciones, mosaico, desenfoque, reconocimiento de texto y códigos, imágenes fijadas y capturas con desplazamiento. Solo comienza mediante una acción explícita en primer plano. La grabación de regiones sin audio requiere macOS 15; las otras funciones, macOS 14.", - "fr": "Captures locales de zones et fenêtres avec annotations, mosaïque et flou, reconnaissance de texte et de codes, images épinglées et captures défilantes. Démarrage uniquement par une action explicite au premier plan. L’enregistrement de zones sans audio nécessite macOS 15 ; les autres fonctions, macOS 14.", - "ja": "範囲・ウインドウ撮影、注釈、モザイク・ぼかし、文字・コード認識、画像のピン留め、スクロール撮影をローカルで実行します。明示的な前面操作でのみ開始します。音声なしの範囲収録には macOS 15 以降、その他の機能には macOS 14 以降が必要です。", - "ko": "영역·창 캡처, 주석, 모자이크·흐림, 텍스트·코드 인식, 이미지 고정, 스크롤 캡처를 로컬에서 처리합니다. 명시적인 전경 작업으로만 시작합니다. 소리 없는 영역 녹화는 macOS 15 이상, 나머지 기능은 macOS 14 이상이 필요합니다.", - "pt": "Capturas locais de áreas e janelas com anotações, mosaico, desfoque, reconhecimento de textos e códigos, imagens fixadas e rolagem. Inicia apenas por uma ação explícita em primeiro plano. A gravação de áreas sem áudio exige macOS 15; os demais recursos, macOS 14.", - "ru": "Локальные снимки областей и окон с пометками, мозаикой и размытием, распознаванием текста и кодов, закреплением изображений и прокруткой. Запуск только явным действием на переднем плане. Запись области без звука требует macOS 15; остальные функции — macOS 14.", - "tr": "Ek açıklamalar, mozaik ve bulanıklık, metin ve kod tanıma, sabitlenmiş görseller ve kaydırma ekran görüntüleriyle yerel bölge ve pencere yakalama. Yalnızca açık bir ön plan eylemiyle başlar. Sessiz bölge kaydı macOS 15 veya sonrasını gerektirir; diğer özellikler macOS 14 veya sonrasını destekler.", - "zh-Hans": "本地完成区域和窗口截图、标注、马赛克与模糊、文字与二维码识别、贴图和滚动截图。仅由明确的前台操作启动;无声区域录屏需要 macOS 15 或更高,其他功能支持 macOS 14 或更高。", - "zh-Hant": "在本機完成區域和視窗截圖、標註、馬賽克與模糊、文字與 QR 碼辨識、釘選圖片及捲動截圖。僅由明確的前景操作啟動;無聲區域錄製需要 macOS 15 或更新版本,其他功能支援 macOS 14 或更新版本。" + "ar": "أداة محلية بلقطات مناطق ونوافذ وتعليقات وإخفاء بالموزاييك والتعرّف على النصوص والرموز وتثبيت الصور ولقطات التمرير. تبدأ فقط بإجراء صريح في الواجهة. تسجيل المناطق بدون صوت يتطلب macOS 15 أو أحدث؛ الميزات الأخرى تعمل على macOS 14 أو أحدث.", + "de": "Lokale Bereichs- und Fensteraufnahmen mit Anmerkungen, Mosaik, Text- und Codeerkennung, angehefteten Bildern und Scrollaufnahmen. Start nur durch eine ausdrückliche Vordergrundaktion. Bereichsvideos ohne Ton benötigen macOS 15; alle anderen Funktionen macOS 14.", + "en": "Local region and window capture with annotations, mosaic, text and code recognition, pinned images, and scrolling screenshots. Starts only through an explicit foreground action. Silent region recording requires macOS 15 or later; other features support macOS 14 or later.", + "es": "Capturas locales de regiones y ventanas con anotaciones, mosaico, reconocimiento de texto y códigos, imágenes fijadas y capturas con desplazamiento. Solo comienza mediante una acción explícita en primer plano. La grabación de regiones sin audio requiere macOS 15; las otras funciones, macOS 14.", + "fr": "Captures locales de zones et fenêtres avec annotations, mosaïque, reconnaissance de texte et de codes, images épinglées et captures défilantes. Démarrage uniquement par une action explicite au premier plan. L’enregistrement de zones sans audio nécessite macOS 15 ; les autres fonctions, macOS 14.", + "ja": "範囲・ウインドウ撮影、注釈、モザイク、文字・コード認識、画像のピン留め、スクロール撮影をローカルで実行します。明示的な前面操作でのみ開始します。音声なしの範囲収録には macOS 15 以降、その他の機能には macOS 14 以降が必要です。", + "ko": "영역·창 캡처, 주석, 모자이크, 텍스트·코드 인식, 이미지 고정, 스크롤 캡처를 로컬에서 처리합니다. 명시적인 전경 작업으로만 시작합니다. 소리 없는 영역 녹화는 macOS 15 이상, 나머지 기능은 macOS 14 이상이 필요합니다.", + "pt": "Capturas locais de áreas e janelas com anotações, mosaico, reconhecimento de textos e códigos, imagens fixadas e rolagem. Inicia apenas por uma ação explícita em primeiro plano. A gravação de áreas sem áudio exige macOS 15; os demais recursos, macOS 14.", + "ru": "Локальные снимки областей и окон с пометками, мозаикой, распознаванием текста и кодов, закреплением изображений и прокруткой. Запуск только явным действием на переднем плане. Запись области без звука требует macOS 15; остальные функции — macOS 14.", + "tr": "Ek açıklamalar, mozaik, metin ve kod tanıma, sabitlenmiş görseller ve kaydırma ekran görüntüleriyle yerel bölge ve pencere yakalama. Yalnızca açık bir ön plan eylemiyle başlar. Sessiz bölge kaydı macOS 15 veya sonrasını gerektirir; diğer özellikler macOS 14 veya sonrasını destekler.", + "zh-Hans": "本地完成区域和窗口截图、标注、马赛克、文字与二维码识别、贴图和滚动截图。仅由明确的前台操作启动;无声区域录屏需要 macOS 15 或更高,其他功能支持 macOS 14 或更高。", + "zh-Hant": "在本機完成區域和視窗截圖、標註、馬賽克、文字與 QR 碼辨識、釘選圖片及捲動截圖。僅由明確的前景操作啟動;無聲區域錄製需要 macOS 15 或更新版本,其他功能支援 macOS 14 或更新版本。" }, "publisher": "MacTools", "screenshots": [], @@ -19464,7 +19450,8 @@ "dataObserved": [ "screen-pixels", "window-geometry", - "recognized-text-and-codes" + "recognized-text-and-codes", + "pointer-events" ], "dataPersisted": [ "user-exported-screenshots", From 1ba34ab1245406db48c2e739bc18ff1fd15f6e02 Mon Sep 17 00:00:00 2001 From: Jonah Date: Thu, 15 Oct 2026 04:14:41 -0400 Subject: [PATCH 2/5] docs(screenshot): add UI evidence for editing and recording zoom Co-Authored-By: Claude Opus 5.5 --- .../pin-large-dark.png | Bin 0 -> 61908 bytes .../pin-large-light.png | Bin 0 -> 65808 bytes .../pin-small-dark.png | Bin 0 -> 20379 bytes .../pin-small-light.png | Bin 0 -> 25386 bytes .../processing-panel-dark.png | Bin 0 -> 25131 bytes .../processing-panel-light.png | Bin 0 -> 27654 bytes .../record-bar-dark.png | Bin 0 -> 151604 bytes .../record-bar-light.png | Bin 0 -> 150782 bytes .../settings-recording-light.png | Bin 0 -> 40263 bytes .../toolbar-fill-dark.png | Bin 0 -> 163885 bytes .../toolbar-fill-light.png | Bin 0 -> 165585 bytes 11 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/pr-assets/screenshot-editing-recording/pin-large-dark.png create mode 100644 docs/pr-assets/screenshot-editing-recording/pin-large-light.png create mode 100644 docs/pr-assets/screenshot-editing-recording/pin-small-dark.png create mode 100644 docs/pr-assets/screenshot-editing-recording/pin-small-light.png create mode 100644 docs/pr-assets/screenshot-editing-recording/processing-panel-dark.png create mode 100644 docs/pr-assets/screenshot-editing-recording/processing-panel-light.png create mode 100644 docs/pr-assets/screenshot-editing-recording/record-bar-dark.png create mode 100644 docs/pr-assets/screenshot-editing-recording/record-bar-light.png create mode 100644 docs/pr-assets/screenshot-editing-recording/settings-recording-light.png create mode 100644 docs/pr-assets/screenshot-editing-recording/toolbar-fill-dark.png create mode 100644 docs/pr-assets/screenshot-editing-recording/toolbar-fill-light.png diff --git a/docs/pr-assets/screenshot-editing-recording/pin-large-dark.png b/docs/pr-assets/screenshot-editing-recording/pin-large-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..ae0a1d38c8de0def1ca1df1305af2afdbd276ecc GIT binary patch literal 61908 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�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 Rak?pJ(UR+ys2M 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 literal 0 HcmV?d00001 diff --git a/docs/pr-assets/screenshot-editing-recording/pin-large-light.png b/docs/pr-assets/screenshot-editing-recording/pin-large-light.png new file mode 100644 index 0000000000000000000000000000000000000000..6419ec08e55d966baadbd2e36fc25482d5152717 GIT binary patch literal 65808 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

l4|;?=!;@%FAS4;@|^vRLTawL%tBS zz)-RBS5Q02h60F-EXwHTK`bD=0`e942CaXd3`zbVtlErF`xFo9wAzAd?=RmV7RZM5 ze7zs!tdJjZTd~zv1CXS+<%4ox={-P80@)aICxCE|Im8pp7Ko29mjNY_a&H(B8kYnL z_dZSXJ>w6DIP%*0gQx|9J%C+VOei=#b%2)$bxroi6y0_mEBd96C*^iLk?&s;6Cj}f z)7XBqJH4z6L(2K7@e(0-d*JjKH#G95Y@tP-d>?q3Jsx0yldQ;$d)LjqP}ktvbkqw^ zws-D(8Jyk(G4;K45(LJ>fcuul|37C_z{^{KdYUFlRSAH5JxO5JQZ*S+GP;6XK=Wx# z+xOB3=PJP{pSREqvGJ09oC;mW{+mlg2iEM1AHIqZ@0}U9V>pPqkfT2edPzSDi2hTF z*crif>OYlAU|!{5)Z9+hOX)|IX6GRP=AItl0h)E8xb(Bfp++f@F7F%18RtuT?1Vi) z7v{PKkJca<*3k#Oqt<9tk_V_g(t=kSVrBXYyzb-Utm4Q0Iojg?d3mF(+=GTt5|w*& z&b9xv=2tWVxHllcQi8{7WuD1^U&&LB)s9OP5vw*(&4Ucwejg|mjX8q(BE=cdurEI3 z4Q&xMUgRgY3zaAh%Qtsvh^MiVMV}uBx;Gs)hlm=HUW~D&`maQPIgBD|fM!ub{$T*0 z1?=MO3X^OZ1KqUcw|kZy?9u{cK;tnUpn|J339L74cszhpDCs6fNuOez_fGI6bg_eA zc?K*=E9iJi0dKBN!8QIN2e2|naO?KY7UV4OKB=<;xS^K}UgLcAb6@-tWOgXA)cR`$ zwcuojt7BL19aSKcpfya`Q#e7r&>4xYm%d>)dOVgmq{MM3|}yQl5%-Fj$Ju_Yl6L({qD$#wkj^w97VrI>J%z;_`HUNHX>@)xNfJSaI zvf<&;(cm)%`92_#zEF>F2bM9{2q1SM+QrtBb^C}cr^};G2=j2SbYD7|#jxYf z1CbDwhmZ50wF(XxU_eVg`{a;>#f2or_+AkTc*|rkU$`@f`qh0h1X0*z2sG0N29NcB zjqIs1gnCNk?a4|=xw0o8wqxcLYHefdZ**p@=pbZFbS3aPE-9S+6e8vF85gU zoDCig4tZ~Hu5|Y1E-pi)PrPvwj7(^(T%?a2GJF($s_ z4G%d+gDYfBYXdGn)cZ%1VL-A1&&^+h^lB*XdG0U0x?Kz2oY=8dR&kcmj2MDPHyBLF zp?B#Ch;>>Ws@F#5ck`CCDlCMZtvyTsvJW_9N079JvwzymhLW%p@fZUS-KRi>-$VY& z5qu;w>tczHiYXY6rKI;2%m*{NlCAmkk8#5wUz@V`5BcU+-Nkm}oI;;X#`^Yje|H|c ze)}%crJ>_IOdD7#3N`At!A8hq^rV}fyBzEIUEZVS=<8LFnO#c^V7hE3@4i}fTEyDR zy7QxNOXlYcGAgrb8Hsr{k$=M#gAWqc7qn_QxVbT^%muaDDaWn8p@Z+6=WysH4jJ2d z%=CE`iV&9;p~;RHP43jj!@v}VF6Q(XV4{o$JlD&Hz^f9livq@WNrl2`-Ss%>I7w6a zY#1Xq_}9S0fnX3=Yh9iC!Jx@}B`brxL!*~2letz)cuttw99lodU6SACZRCYgQbISVj?ejFyb?pkwpafx1)!^10avf@W zrDqOQs+6SC&ypTd4Y_^W%jI_xQRV6eiUTqS)}DLYL$|3y`a(5A>p5R8QH}DNNEUjE zPE8qT?Q1wK)9cVA<*=o&PV1Q#5TgbpV8QdmX+h|e*&nEED6YrUY*;R&n9sZP_<9eb zk2P=-wrJ`n->r7pD-6^uB+Yv6o!BzwwLS-J0wea3b*|^Oac@Kox)-BV-=wbGQ-!-2 zJwMeMi$cv*_RxCLdX6sjp%Ku%%bEs~S7x2655kc)P;jP=l;xN^yZkZSfct?5(2Z`N zLcZ#inThsn^_;=yOglU8r(~W>?`NJnPwQFcG{8ypT`}f*p5(XnQwCnZQi$YRU{K#y z_1d9nXol%<@r!GF#0ph>?4|u`1%}Fy+Z}ToC8O}~buKeM4yKPXHNazGq*-Vnt*?4G zZ+f(1%C0G@6|uNre9IvRUDV%z_&n13B0nG_z=N|@p1=>?03SoJ$I#n@MhYORT0kYn zh#8-LtUhy-^G+?G&X9Rq0r5sJ++iVldF<2gH{bb{B1Ryy(YpVUSs~_NUiA&xFQBJK z0+Mniq^GKOv^Yn~RQx1`5QV(r{im4+}cO7^Lj@K`i>38I)wi{@p z=20$R3b?2k!JcU5=C^ysKr5Lk^F#7-Xgn z0RoL}`|4J4zng1-xI`gl!TAcbK5pk=m=0B?z<|I0Hd?l)n=8~dcDOs=#V)7C=tXY8 z3eK5rJNQbi(eU`lp`8mb?egJ5ZkSp7Y@AebKQ#NU!e>q52n-`kzl}dSiwljoLm<=+ z$2=XzfMI+;#Q!rBILXrMwJ2K8tM5X$jh7BojthnVFk8;o0#^@USC?8m)jy+Sl8@#Y zSCx9H6O}f#M=x@{SYp%XHen)G_&a$n&V3r;crlOq;P+~12&rSO1qm=&^a{|w;}1PG zV?AbTF&n7zi0!=_HDp(s;d^aexg3pta4WIp2g`j`)w|&%Rur=xxkh!`{_CHyI*)~R ztPrKv8SX9OCcr=_))P>}99o@uzF?6aqi;i{WMC+odej@w0}bf!#41dJM{ond0w81r zxK@ypys`&&lr9$vwj?V-23fZ>*_pDDkq0BjXb0U9A-%0@IQ2laoJ5Dv*c#sOy(njPjH4!4C54Ye(R8?hG$X**fJP)Xg&_ts2-9eYwo-LVpN`ai9nZ z@Q;`;c--1B=2%&lLXKd>TV%f1W$!}k=7Iaw&GBPQMJ}P_XZ!)$ju`! zILc0shBn3cYd!RpLnU=wWuCh&VUlPaDMpqWG1#c%_OE~ALCRe?cZ+#vJwJqG$0B=D z{V+Vu9;CPa#cK2RSpoV4RnbrfDXR*ZbBN4a#?01d*QjO(lr8JD&HvEQowe-PYjdVoRF$idna6V4$p-Uc zqc8PYzuGCG#WPAVn|;=fkWKKtN$VNNaIdU#sVA-xW}K9ON7{!1KXF`WC(iljTj0O6 zAWgFZWb`Yu)$qu{JdRd%orSn;7stvL#mQ0_aX8hKdC86;e~UKPgOs$S^Kt8sjn!i5 zEGT9{c%EPq+N#?3c*t0^_*?m0lTSlDs`rzVlbf-8sk;fFf~2avQJ<}B_Wb{CPr)#v zbd74lz4EYeU9w?7;~{iI55BtLbQ$myzBlPS16kC{u(9THoSOnGoQeT=h;1H3wa8r79y{d)ho-$x)~3q9c9Q&~eW@z7Zo-vSL49_1ou#M9XSq9J$I}14 zYwkG%ZaU9tb(H2daqF}-8&yPH>jH3v&+-H zb%6OsovN}VB{E$7U-u0iF?*5<^IY}z=IlX$&={DIpM#yCbI>p!8rk@@q|K@mq_?}9 z&5UNxl$n>L+{2fvJ1LAle7nq73`ls~XRm+#Jpbl3LVYu4?gGPpf-uA3FD-?4a?lME0Ej#_w`dJK2%|y zb6=x&NWRKC#@pd8uhfy!IJ)XpUnN4KI>$PA;!;BPrhRAZbRT@(%L!c-@v*^!w7E)9 z&dYeF`Ny|_qxt}Yvc44Wy-3!<9^lSzqD9P;FHNh9@j^z~4Er)5=51LR z1@rV&nK(h%q9v}eeSX1?>lOw4%8QdRWj9_X*a?%;VlVVmuu%W$70Tf86_E!6JBp`MxrG;mnFHN;OMj9pVHn$)5MZJ z;ps419fvXx>qHb!DiS6WQJs1F;nk}{&Px;RgP^A3D^b(ZtSBMFf-#S5G~$#eA0~X4 z^Fz+R0T-JkYSHdjN-)dIAO1Ac&!yypJ3g{B(&6js&}@l0(O}T$x()X>nYQ*5DV-#Y zyx$42|8*J!p#q1iSu!;vg^Dbb2E_}U>)mK#ClvBrA!u+x6pP|<8hPA2T}vrEDXm! zbTyWkcSjh^;@uMvIUz><=qwXLYEl^@WmCH4VcEjcU)q&h`&d<1K4ZB^k!=_!p3%~{ zm528car5Q0wij8Lu8dDPiW<%99_WQ3xi7P1_h5Tkmkn|-gv8Tuaup)4QLZFqI@l$9 z66K%8VeZwq)XnzSU$7Q^q=sFVl^Q@)8U?^zu-^-iHB>-)U1xe z7?2oio}7nrdJ7JiJmnJgu(!E0^WZ2E%afJyjqWp%zL9^Z4!83S82Vned*yObl6dR! z^|%C7*+P%sl;O%dKX?bCcV>w%rcA+cdF42=3+$luUM{r$rcnA}H?7{}$<76v(GhWp zkyV45nWyLxvx?C^pW#2Wymp>u>RO^*XVcPIsgbXh$Q-=8WB$NQoPOR+6xz2R-q&{4jRO8Co%Z^)!So7n-UcfXh!GFlGR)F?B+ALFNt$aj6HD}w`y=oPsLcZz zLXLpBob`zgtV8b_Zle61rGHj`xLOTyf>WvnK22v_OIKg|PM6%x8S2F_vHIAZv#g~V z0c|jRORP*`SqzoS^M}5K>yS>->bgZB<9Yh^Qs(Rox}DY}vk<+yXDRYmZ>B99K%L&7%g8why<20LOW&uP8b zi%{BD>dX*h43}AazQY+P&H|*vxQufd-qO^ZfUChZVXX-~V z{;vfGmH=fn`f=yI(j(@MooY&GooRR9WmFFN%SLqx{4xccl>We|3L8IJg27j+$VszJ zdVTAQN3DRfQZnxsM)Us5%eI8EKz4_`FPT#cw~JKfO}fyH~fC zt_eAx)!govZ;bW|v~#>z;UVT`JYxi8GAaA7z(iIf5P3C+GoK@6q7#dCpGg`%%%|Mp zNa#^490+x5C9W!c69W&Oq-bWmH@XJ_R8LADZqOW2LTD*!$;WgoKbCW=mj3I2i>acS z%XWStqGS?3niwW74L<6ca#|VffRM;AMkjC5>DSWb;Cc0(e8lt#gq|hUcDX9F9RY)$ z@avw*Z502@7!};FeGJog(n?5}95v5eh%UxVf>?(YJ7cmy?yG)8Rk1cS_El2tMm3jk-j54k8U+4GhAc0-ecz`fR_xSYYk9LK(ZyCsUcFt!a!quj7Gl$7N zO2C{2tUS1>;p(R45HW2Cca&EqG<=s!b{Vfs{99qQj7)8xqwI+WO07j4`I|lAYYzSi z2u`@UQ$Bm|s3#Ppm%r?ilFn#ODOPri?5!e$5Jj6X8_umq3adW?=OCrxkZpdT{)OF(uu*m9P{|2Ci4BQ4Vz zLFjAAJfLHaMgfpUPxTxyNXFMFk0yL>guh=J`Kp$Dq*3l~^`NIpe_%Up(0ec<4Ufg= z+B(&^w^Xkj1Wxds#se!Iw70ni+A9*X5EJ%|{jY0sj-*U~VBQU#xg;)%(F&~w0=<6YR!ehv@r%Nq-Tkyx` z$7nshZl=>(n46og31CJNgVE$K_?|x;%C10P#@G`%?F)$sGSW)X5mg|1z?LQT=Jl6t zeFDLzY7sccI2=a1D_VFDb<;2IlVcmoD@!k-sQUz>vsbylQWs z=Twn}7H2-2c6oJK2K!%f&kqw4y)9~}EMx8HGc`Y5?r2}L(8L84h}%Q-uBdU@EhO@b z!|3SgzfbKdWvOViXj08BOTE zJM`m62)@vdklU2s0oRaxKG42bu{5a$t_}MufuNUl2y~#c?QNM&nzfz!)Vop%WpJpQ z+Sd^B`6bilAAi=Dey1E$FKRE+T91~vb8!$_#%*XlX`UU5VfuSrR(&b;J_CCJ$WE8dw{O6*Y*10@Y)7$?KczOP` literal 0 HcmV?d00001 diff --git a/docs/pr-assets/screenshot-editing-recording/pin-small-dark.png b/docs/pr-assets/screenshot-editing-recording/pin-small-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..c87dcd9f428da4917bac735a126114a7db8c603d GIT binary patch literal 20379 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 V>)ZSb;E+$iK+oh>^$qxw{{h|N_}>5k literal 0 HcmV?d00001 diff --git a/docs/pr-assets/screenshot-editing-recording/processing-panel-dark.png b/docs/pr-assets/screenshot-editing-recording/processing-panel-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..8c9bf4ac64405fde19e1d0aa42716923ad1b6b22 GIT binary patch literal 25131 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 literal 0 HcmV?d00001 diff --git a/docs/pr-assets/screenshot-editing-recording/record-bar-dark.png b/docs/pr-assets/screenshot-editing-recording/record-bar-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..28c01ebc0d7b610308f241640cc2a5641734f55e GIT binary patch literal 151604 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 z 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

ne?n5Gbegd!q0|M2Kzat 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 literal 0 HcmV?d00001 diff --git a/docs/pr-assets/screenshot-editing-recording/record-bar-light.png b/docs/pr-assets/screenshot-editing-recording/record-bar-light.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9e872df13fe69484d06ea1b88998a3bd49e22b GIT binary patch literal 150782 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

h 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 literal 0 HcmV?d00001 diff --git a/docs/pr-assets/screenshot-editing-recording/settings-recording-light.png b/docs/pr-assets/screenshot-editing-recording/settings-recording-light.png new file mode 100644 index 0000000000000000000000000000000000000000..c5109f59a3fe06961089ab26d3d1990e17100a1b GIT binary patch literal 40263 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

WL3Y~uYVPgdCG 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∧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 literal 0 HcmV?d00001 From 2a830dae87ee0cc7854bf0941dae82736e5288d2 Mon Sep 17 00:00:00 2001 From: Jonah Date: Thu, 15 Oct 2026 04:14:41 -0400 Subject: [PATCH 3/5] fix(screenshot): end mode-bar text recognition when its panel closes Closing the panel in text-recognition mode ends the capture instead of revealing annotation tools, moving the selection keeps those tools hidden, line counts exclude layout blank lines, the panel width stays on screen, and Vision warm-up includes Chinese text. Co-Authored-By: Claude Opus 5.5 --- Plugins/Screenshot/Sources/Overlay.swift | 13 +++++--- Plugins/Screenshot/Sources/Recognition.swift | 7 +++-- .../Tests/AnnotationEditingTests.swift | 30 ++++++++++++++++--- .../screenshot-text-recognition-flow.md | 5 ++++ docs/plugins/screenshot.md | 2 +- 5 files changed, 45 insertions(+), 12 deletions(-) create mode 100644 changes/unreleased/screenshot-text-recognition-flow.md diff --git a/Plugins/Screenshot/Sources/Overlay.swift b/Plugins/Screenshot/Sources/Overlay.swift index 36ee5cf35..96ec86154 100644 --- a/Plugins/Screenshot/Sources/Overlay.swift +++ b/Plugins/Screenshot/Sources/Overlay.swift @@ -1025,7 +1025,8 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { switch mode { case .record: place(recordBar) case .scroll: place(scrollBar) - case .shot, .ocr: layoutToolbar() + case .shot: layoutToolbar() + case .ocr: break // The recognition panel follows the selection; the annotation toolbar stays hidden. } } @@ -1735,7 +1736,9 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { pasteboard.clearContents() pasteboard.setString(text, forType: .string) showOcrPanel(title: title, text: text, - status: environment.format("overlay.recognition.copiedCount", "%d %@ · 已复制到剪贴板", lines.count, unit), + // Blank lines inserted to preserve layout are not recognized lines. + status: environment.format("overlay.recognition.copiedCount", "%d %@ · 已复制到剪贴板", + lines.lazy.filter { !$0.isEmpty }.count, unit), busy: false) } @@ -1771,7 +1774,7 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { maskButton.isHidden = qrRects.isEmpty openButton.isHidden = resultURL == nil - ocrScrollWidth?.constant = min(max(selection.width, 320), 640) + ocrScrollWidth?.constant = min(max(selection.width, 320), 640, bounds.width - 48) panel.layoutSubtreeIfNeeded() if let manager = textView.layoutManager, let container = textView.textContainer { manager.ensureLayout(for: container) @@ -1882,7 +1885,9 @@ final class OverlayView: NSView, NSTextFieldDelegate, NSTextViewDelegate { @objc private func closeOcr() { hideOcrPanel() - layoutToolbar() + // Text recognition chosen from the mode bar ends with its panel. Recognition started from + // the screenshot toolbar returns to annotation. + if mode == .ocr { onCancel?() } else { layoutToolbar() } } @objc private func finishOcr() { diff --git a/Plugins/Screenshot/Sources/Recognition.swift b/Plugins/Screenshot/Sources/Recognition.swift index 678a5601b..a0961f16b 100644 --- a/Plugins/Screenshot/Sources/Recognition.swift +++ b/Plugins/Screenshot/Sources/Recognition.swift @@ -98,13 +98,14 @@ actor VisionRecognition { } func warmUp() async { - guard let ctx = CGContext(data: nil, width: 120, height: 40, bitsPerComponent: 8, bytesPerRow: 0, + guard let ctx = CGContext(data: nil, width: 200, height: 40, bitsPerComponent: 8, bytesPerRow: 0, space: CGColorSpaceCreateDeviceRGB(), bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue) else { return } ctx.setFillColor(CGColor.white) - ctx.fill(CGRect(x: 0, y: 0, width: 120, height: 40)) - let line = CTLineCreateWithAttributedString(NSAttributedString(string: "Warm up", attributes: [ + ctx.fill(CGRect(x: 0, y: 0, width: 200, height: 40)) + // Include Chinese so the first Chinese recognition does not load its model on demand. + let line = CTLineCreateWithAttributedString(NSAttributedString(string: "预热 Warm up", attributes: [ .font: NSFont.systemFont(ofSize: 20), .foregroundColor: NSColor.black, ])) ctx.textPosition = CGPoint(x: 6, y: 12) diff --git a/Plugins/Screenshot/Tests/AnnotationEditingTests.swift b/Plugins/Screenshot/Tests/AnnotationEditingTests.swift index 11a223a40..5447382cd 100644 --- a/Plugins/Screenshot/Tests/AnnotationEditingTests.swift +++ b/Plugins/Screenshot/Tests/AnnotationEditingTests.swift @@ -95,6 +95,27 @@ final class ScreenshotAnnotationEditingTests: XCTestCase { try await assertExport(editor, items: [item(.ellipse(oval.offsetBy(dx: 30, dy: 0)), filled: true)]) } + func testTextRecognitionFromTheModeBarNeverRevealsTheAnnotationToolbar() throws { + let editor = try Editor() + defer { editor.close() } + var cancelled = false + editor.view.onCancel = { cancelled = true } + let modeBar = try XCTUnwrap(editor.descendants().first { $0.identifier?.rawValue == "screenshot.modeBar" }) + // Mode-bar order: screenshot, scrolling, recording, text recognition. + try XCTUnwrap(editor.descendants(of: modeBar).compactMap { $0 as? NSButton }.first { $0.tag == 3 }).performClick(nil) + let annotationTool = try XCTUnwrap(editor.descendants().compactMap { $0 as? NSButton } + .first { $0.accessibilityIdentifier() == "screenshot.tool.rect" }) + XCTAssertTrue(annotationTool.isHiddenOrHasHiddenAncestor) + + let close = try XCTUnwrap(editor.descendants().compactMap { $0 as? NSButton } + .first { $0.action == NSSelectorFromString("closeOcr") }) + try editor.drag(from: NSPoint(x: 500, y: 400), to: NSPoint(x: 520, y: 410)) + XCTAssertTrue(annotationTool.isHiddenOrHasHiddenAncestor, "Moving a text-recognition selection must not show annotation tools") + close.performClick(nil) + XCTAssertTrue(cancelled, "Closing recognition chosen from the mode bar ends the capture") + XCTAssertTrue(annotationTool.isHiddenOrHasHiddenAncestor) + } + private func item(_ shape: Shape, filled: Bool = false) -> Item { Item(shape: shape, stroke: Stroke(color: .systemRed, width: 2, filled: filled)) } @@ -164,11 +185,12 @@ private final class Editor { try click("screenshot.tool.\(tool)") } + func descendants(of parent: NSView? = nil) -> [NSView] { + (parent ?? view).subviews.flatMap { [$0] + descendants(of: $0) } + } + func click(_ identifier: String) throws { - func descendants(_ parent: NSView) -> [NSView] { - parent.subviews.flatMap { [$0] + descendants($0) } - } - let button = try XCTUnwrap(descendants(view).compactMap { $0 as? NSButton } + let button = try XCTUnwrap(descendants().compactMap { $0 as? NSButton } .first { $0.accessibilityIdentifier() == identifier }) button.performClick(nil) } diff --git a/changes/unreleased/screenshot-text-recognition-flow.md b/changes/unreleased/screenshot-text-recognition-flow.md new file mode 100644 index 000000000..a12339390 --- /dev/null +++ b/changes/unreleased/screenshot-text-recognition-flow.md @@ -0,0 +1,5 @@ +--- +release: plugin +type: fixed +--- +Closing text recognition chosen from the mode bar now ends the capture instead of showing annotation tools. Recognized line counts exclude layout blank lines, and the result panel stays on screen. diff --git a/docs/plugins/screenshot.md b/docs/plugins/screenshot.md index d6112aca3..3e9ca5385 100644 --- a/docs/plugins/screenshot.md +++ b/docs/plugins/screenshot.md @@ -15,7 +15,7 @@ Adapted from the [Snap screenshot implementation](https://github.com/idev19/Snap - **Mode bar** uses slightly larger controls, sits 4 points below the screen's top edge, and moves horizontally using its left-hand grip. Movement stays within screen edges and avoids the camera housing; each display retains its dragged position during the current capture. - **Magnifier** shows the pointer coordinates and current RGB or HEX color in separate left-aligned rows. Press Tab to switch formats; Command-C copies the displayed value and closes capture. - **Quick Capture** uses the same selection interface and immediately copies the selected image after selection. -- **Text and QR recognition** processes the frozen selection locally. Recognized content can be edited and copied. Closing the panel, changing the selection or mode, or ending capture prevents an earlier recognition request from publishing its result. Recognized text keeps its layout: indentation, table columns, and paragraph gaps are rebuilt from fragment geometry, and side-by-side panels with misaligned rows are read one column at a time. The QR **Mask** action uses an opaque black fill in preview and export. +- **Text and QR recognition** processes the frozen selection locally. Recognized content can be edited and copied. Closing the panel, changing the selection or mode, or ending capture prevents an earlier recognition request from publishing its result. When text recognition is chosen from the mode bar, closing its panel ends the capture; recognition started from the screenshot toolbar returns to annotation. Annotation tools stay hidden in text-recognition mode. Recognized text keeps its layout: indentation, table columns, and paragraph gaps are rebuilt from fragment geometry, and side-by-side panels with misaligned rows are read one column at a time. The QR **Mask** action uses an opaque black fill in preview and export. - **Recognition actions** use the same native capsule button style and sizing as scrolling and recording confirmation actions. The footer can show Close, Mask, Open Link, and Done according to the recognized content. - **Pinned images** stay in a movable window for reference. Hovering shows Copy, Save As, and Close controls; small images show them beside the image without enlarging it. Use Command-C to copy, Command-S to save, and Escape or a double-click to close. A pinned scrolling screenshot closes after it is copied or saved; a deliberately pinned image stays open. - **Scrolling screenshots** continuously capture the selected region while you scroll it downward yourself. Select the scrolling content rather than fixed headers or footers. Finish to copy and pin the assembled image, or cancel to discard it. Ambiguous or unmatched content is not appended; the controls explain how to recover. Besides a strict absolute match, a frame also matches when its best offset is clearly better than a typical unrelated alignment, so normal capture noise does not stall stitching; the stationary-footer check scales with that matched noise level. Matching and composition run on a serial background worker, with only the newest pending frame retained. Output is limited to 128 MiB of RGBA pixels and 32,768 rows, with an additional working-pixel budget that can lower this limit for large viewports. Reaching a limit stops capture with guidance to use smaller sections. From c6c59ebf11342ea5bef49a320922dbee8e98e95d Mon Sep 17 00:00:00 2001 From: Jonah Date: Thu, 15 Oct 2026 04:14:41 -0400 Subject: [PATCH 4/5] fix(screenshot): keep menu shadows in stream captures before macOS 26 Co-Authored-By: Claude Opus 5.5 --- Plugins/Screenshot/Sources/CapturePipeline.swift | 2 ++ changes/unreleased/screenshot-legacy-shadows.md | 5 +++++ docs/plugins/screenshot.md | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 changes/unreleased/screenshot-legacy-shadows.md diff --git a/Plugins/Screenshot/Sources/CapturePipeline.swift b/Plugins/Screenshot/Sources/CapturePipeline.swift index 746373335..c3e789056 100644 --- a/Plugins/Screenshot/Sources/CapturePipeline.swift +++ b/Plugins/Screenshot/Sources/CapturePipeline.swift @@ -148,6 +148,8 @@ enum CapturePipeline { config.shouldBeOpaque = true config.pixelFormat = kCVPixelFormatType_32BGRA config.scalesToFit = false + // The default also strips shadows and framing from menus and popovers in display captures. + config.ignoreShadowsSingleWindow = false return config } diff --git a/changes/unreleased/screenshot-legacy-shadows.md b/changes/unreleased/screenshot-legacy-shadows.md new file mode 100644 index 000000000..267e98cf4 --- /dev/null +++ b/changes/unreleased/screenshot-legacy-shadows.md @@ -0,0 +1,5 @@ +--- +release: plugin +type: fixed +--- +On macOS 14 and 15, screenshots, scrolling capture, and recordings keep menu and popover shadows. diff --git a/docs/plugins/screenshot.md b/docs/plugins/screenshot.md index 3e9ca5385..5c6b921d3 100644 --- a/docs/plugins/screenshot.md +++ b/docs/plugins/screenshot.md @@ -68,7 +68,7 @@ The plugin prepares one hidden nonactivating `NSPanel` per display when activate Before each presentation, the pool checks each cached panel's public `isOnActiveSpace` property, including hidden panels. If AppKit reports an inactive Space, only that display's panel is closed and recreated; unaffected panels retain their controls. Panels also use `canJoinAllApplications` to join other apps' full-screen Spaces without participating in Stage Manager's window layout. Both APIs are available throughout the macOS 14+ support range. This check runs after image acquisition and adds no idle polling or Space-change observers. -On macOS 26 and later, screenshot configuration explicitly sets `ignoreShadows = false` to preserve system-drawn window framing, including glass edge highlights and shadows within the captured region. Relying on the default can remove these effects from the source image before either preview or export. This is separate from optional annotation shadows and does not reconstruct window decorations. +On macOS 26 and later, screenshot configuration explicitly sets `ignoreShadows = false` to preserve system-drawn window framing, including glass edge highlights and shadows within the captured region. Relying on the default can remove these effects from the source image before either preview or export. Earlier systems use stream configurations, which set `ignoreShadowsSingleWindow = false` for the same reason: its default also strips menu and popover shadows from display captures, including scrolling capture and recording. This is separate from optional annotation shadows and does not reconstruct window decorations. The original `CGImage` is assigned directly to a dedicated `CALayer`, with the source color space assigned to its window. Separate shape layers draw dimming and selection outlines, and an explicit shadow path keeps shadow composition independent of annotation drawing. The size badge and magnifier use small retained AppKit views; the magnifier reuses its source image, localized hints, and a one-pixel sRGB sampling context. The annotation view remains hidden during initial selection and is invalidated explicitly when marks or editing handles change. AppKit coalesces redraws; mouse release always commits the final position. Pointer movement does not redraw the full frozen image or create a full-screen bitmap sampler. The preview, recognition input, and PNG export all use the same frozen source. There is no live-window replacement, popover reconstruction, alpha workaround, startup capture, or continuous idle stream. Display-topology changes cancel selection and rebuild the pool through the host's `DisplayTopologyRefreshing` hook. From 24f6db2b70f156c024b9757948346319188455e3 Mon Sep 17 00:00:00 2001 From: Jonah Date: Thu, 15 Oct 2026 22:34:46 -0400 Subject: [PATCH 5/5] fix(screenshot): close saved results only after writing and keep recording messages - Save As reports whether the file was written. A pinned scrolling screenshot closes only after a successful write, and capture returns to the selection after a write failure as well as a cancellation. - Recording completion messages follow a session token that only plugin cancellation changes, so starting a screenshot while auto zoom renders no longer suppresses them. Co-Authored-By: Claude Opus 5.5 --- .../Sources/CaptureController.swift | 21 ++++--- Plugins/Screenshot/Sources/Pin.swift | 7 ++- .../Sources/ScreenshotCoordinator.swift | 57 +++++++++++-------- .../Screenshot/Sources/ScreenshotOutput.swift | 19 +++++-- .../Tests/ScreenshotCoordinatorTests.swift | 25 ++++++++ docs/plugins/screenshot.md | 2 +- 6 files changed, 90 insertions(+), 41 deletions(-) create mode 100644 Plugins/Screenshot/Tests/ScreenshotCoordinatorTests.swift diff --git a/Plugins/Screenshot/Sources/CaptureController.swift b/Plugins/Screenshot/Sources/CaptureController.swift index 7fcc39fa5..82d4ec1bf 100644 --- a/Plugins/Screenshot/Sources/CaptureController.swift +++ b/Plugins/Screenshot/Sources/CaptureController.swift @@ -94,17 +94,20 @@ final class CaptureController { ScreenshotOutput.save(png, mode: mode, environment: environment) return } - // Keep the selection and annotations while the save panel is open; cancelling returns to them. + // Keep the selection and annotations until the file is written; cancelling or a write + // failure returns to them. suspend() - let saved = ScreenshotOutput.saveAs(png, suggestedName: ScreenshotOutput.suggestedScreenshotName(environment), - environment: environment) - guard !finished else { return } - if saved { - ScreenshotOutput.copyToPasteboard(png) - dismiss() - } else { - resume() + let chosen = ScreenshotOutput.saveAs(png, suggestedName: ScreenshotOutput.suggestedScreenshotName(environment), + environment: environment) { [weak self] written in + guard let self, !finished else { return } + if written { + ScreenshotOutput.copyToPasteboard(png) + dismiss() + } else { + resume() + } } + if !chosen, !finished { resume() } } overlay.onCancel = { [weak self] in self?.dismiss() } overlay.onRecord = { [weak self] rect in diff --git a/Plugins/Screenshot/Sources/Pin.swift b/Plugins/Screenshot/Sources/Pin.swift index a65bed71c..1951b7ea5 100644 --- a/Plugins/Screenshot/Sources/Pin.swift +++ b/Plugins/Screenshot/Sources/Pin.swift @@ -255,8 +255,11 @@ final class PinView: NSImageView { @objc private func saveImage() { guard let environment else { return } - // A cancelled save panel keeps the pin open. - if ScreenshotOutput.saveAs(png, suggestedName: name, environment: environment), isResult { closeWindow() } + // A result closes only after its file is written; cancellation or a write failure keeps it for another try. + ScreenshotOutput.saveAs(png, suggestedName: name, environment: environment) { [weak self] written in + guard let self, written, isResult else { return } + closeWindow() + } } @objc private func closeWindow() { window?.close() } diff --git a/Plugins/Screenshot/Sources/ScreenshotCoordinator.swift b/Plugins/Screenshot/Sources/ScreenshotCoordinator.swift index 05599ce02..87ae1a446 100644 --- a/Plugins/Screenshot/Sources/ScreenshotCoordinator.swift +++ b/Plugins/Screenshot/Sources/ScreenshotCoordinator.swift @@ -18,6 +18,9 @@ final class ScreenshotCoordinator { private var scrollSession: ScrollSession? private var exportTask: Task? private var generation: UInt64 = 0 + /// Changes only when the plugin cancels all work. A recording can finish while a later screenshot + /// is in progress, so its messages must not depend on `generation`. + private(set) var sessionToken: UInt64 = 0 init(environment: ScreenshotEnvironment) { self.environment = environment @@ -64,6 +67,7 @@ final class ScreenshotCoordinator { func cancel() { generation &+= 1 + sessionToken &+= 1 exportTask?.cancel() exportTask = nil controller?.onFinish = nil @@ -88,7 +92,7 @@ final class ScreenshotCoordinator { report(environment.string("record.processingBusy", "正在生成自动缩放视频,请稍后再录制")) return } - let requestGeneration = generation + let requestSession = sessionToken let session = Recorder(region: request, environment: environment) recorder = session session.onProcessing = { [weak self, weak session] in @@ -103,34 +107,39 @@ final class ScreenshotCoordinator { else if processingRecorder === session { processingRecorder = nil } else { return } onStateChange?() - guard generation == requestGeneration else { return } - switch result { - case .success(let url): - let folderName = FileManager.default.displayName(atPath: url.deletingLastPathComponent().path) - environment.showToast(environment.format("record.saved", "录屏已保存到「%@」", folderName)) - case .failure(let error as RecordingProcessingError): - let name = error.original.lastPathComponent - environment.showToast(error.cause is CancellationError - ? environment.format("record.processingCancelled", "已保留原始录像:%@", name) - : environment.format("record.processingFailed", "自动缩放生成失败,已保留原始录像:%@", name)) - case .failure(let error): - guard !(error is CancellationError) else { return } - let message: String - switch error { - case is RecordingError: - message = environment.string("record.unsupportedResolution", "当前区域超出硬件编码能力,请缩小录制范围") - case is RecordingZoomError: - message = environment.string("record.pointerMonitorUnavailable", "无法读取鼠标操作,请重试或关闭自动缩放") - default: - message = environment.captureErrorDescription(error) - } - report(environment.format("record.failed", "录屏失败:%@", message)) - } + recordingFinished(result, session: requestSession) } onStateChange?() session.start() } + /// Reports a finished recording unless the plugin cancelled its session. + func recordingFinished(_ result: Result, session: UInt64) { + guard session == sessionToken else { return } + switch result { + case .success(let url): + let folderName = FileManager.default.displayName(atPath: url.deletingLastPathComponent().path) + environment.showToast(environment.format("record.saved", "录屏已保存到「%@」", folderName)) + case .failure(let error as RecordingProcessingError): + let name = error.original.lastPathComponent + environment.showToast(error.cause is CancellationError + ? environment.format("record.processingCancelled", "已保留原始录像:%@", name) + : environment.format("record.processingFailed", "自动缩放生成失败,已保留原始录像:%@", name)) + case .failure(let error): + guard !(error is CancellationError) else { return } + let message: String + switch error { + case is RecordingError: + message = environment.string("record.unsupportedResolution", "当前区域超出硬件编码能力,请缩小录制范围") + case is RecordingZoomError: + message = environment.string("record.pointerMonitorUnavailable", "无法读取鼠标操作,请重试或关闭自动缩放") + default: + message = environment.captureErrorDescription(error) + } + report(environment.format("record.failed", "录屏失败:%@", message)) + } + } + private func startScroll(_ request: CaptureRegion) { let requestGeneration = generation let session = ScrollSession(region: request, environment: environment) diff --git a/Plugins/Screenshot/Sources/ScreenshotOutput.swift b/Plugins/Screenshot/Sources/ScreenshotOutput.swift index 1fd656223..15c1fd702 100644 --- a/Plugins/Screenshot/Sources/ScreenshotOutput.swift +++ b/Plugins/Screenshot/Sources/ScreenshotOutput.swift @@ -56,8 +56,11 @@ enum ScreenshotOutput { } /// Returns whether the user chose a destination; cancelling must not end the caller's workflow. + /// `completion` reports whether the file was actually written, so callers can keep their content + /// available for another attempt after a write failure. @discardableResult - static func saveAs(_ png: Data, suggestedName: String, environment: ScreenshotEnvironment) -> Bool { + static func saveAs(_ png: Data, suggestedName: String, environment: ScreenshotEnvironment, + completion: (@MainActor (Bool) -> Void)? = nil) -> Bool { let panel = NSSavePanel() panel.directoryURL = environment.saveFolder panel.nameFieldStringValue = suggestedName @@ -69,14 +72,20 @@ enum ScreenshotOutput { guard panel.runModal() == .OK, let url = panel.url else { return false } let generation = environment.presentationGeneration Task { + let written: Bool do { try await ScreenshotImageEncoder.write(png, to: url) - guard generation == environment.presentationGeneration else { return } - environment.showToast(environment.format("output.saved", "已保存到「%@」", url.deletingLastPathComponent().lastPathComponent)) + written = true + if generation == environment.presentationGeneration { + environment.showToast(environment.format("output.saved", "已保存到「%@」", url.deletingLastPathComponent().lastPathComponent)) + } } catch { - guard generation == environment.presentationGeneration else { return } - environment.showToast(environment.format("output.saveFailed", "保存失败:%@", error.localizedDescription)) + written = false + if generation == environment.presentationGeneration { + environment.showToast(environment.format("output.saveFailed", "保存失败:%@", error.localizedDescription)) + } } + completion?(written) } return true } diff --git a/Plugins/Screenshot/Tests/ScreenshotCoordinatorTests.swift b/Plugins/Screenshot/Tests/ScreenshotCoordinatorTests.swift new file mode 100644 index 000000000..1eae1d4c2 --- /dev/null +++ b/Plugins/Screenshot/Tests/ScreenshotCoordinatorTests.swift @@ -0,0 +1,25 @@ +import MacToolsPluginKit +import XCTest +@testable import ScreenshotPlugin + +@MainActor +final class ScreenshotCoordinatorTests: XCTestCase { + /// A recording can finish while a later screenshot is in progress; only cancelling the plugin + /// may suppress its completion messages. + func testRecordingMessagesFollowTheSessionNotLaterScreenshots() { + let environment = ScreenshotEnvironment(context: PluginRuntimeContext(pluginID: "screenshot", storage: ScreenshotTestStorage())) + let coordinator = ScreenshotCoordinator(environment: environment) + var errors: [String] = [] + coordinator.onError = { errors.append($0) } + let session = coordinator.sessionToken + + coordinator.recordingFinished(.failure(TestError.failed), session: session) + XCTAssertEqual(errors.count, 1) + + coordinator.cancel() + coordinator.recordingFinished(.failure(TestError.failed), session: session) + XCTAssertEqual(errors.count, 1, "A disabled plugin must not report its old recording") + } + + private enum TestError: Error { case failed } +} diff --git a/docs/plugins/screenshot.md b/docs/plugins/screenshot.md index 5c6b921d3..1342e285d 100644 --- a/docs/plugins/screenshot.md +++ b/docs/plugins/screenshot.md @@ -37,7 +37,7 @@ Screen images, visible window geometry, recognized text, and codes may contain s Capture, recognition, editing, and image assembly use Apple frameworks locally. The plugin has no upload, network service, or telemetry. Choosing to open a recognized link explicitly hands that URL to the user's browser; screenshots and recognized text are not sent to a service by the plugin. -Screenshots are copied to the system clipboard unless you choose a save operation. Saving to the folder never replaces an existing file; a numbered name is used instead. Cancelling Save As returns to the same selection and annotations. Saved images use PNG; recordings use MOV. The default destination is `~/Desktop/screenshot`; the folder is created on the first save, and the plugin's settings can select another folder. The selected folder is stored in plugin-scoped preferences. Exported files remain until you manage or delete them yourself; clipboard content remains subject to macOS and other clipboard applications. +Screenshots are copied to the system clipboard unless you choose a save operation. Saving to the folder never replaces an existing file; a numbered name is used instead. Cancelling Save As, or a failed write, returns to the same selection and annotations; a pinned scrolling screenshot stays open until its file is written. Saved images use PNG; recordings use MOV. The default destination is `~/Desktop/screenshot`; the folder is created on the first save, and the plugin's settings can select another folder. The selected folder is stored in plugin-scoped preferences. Exported files remain until you manage or delete them yourself; clipboard content remains subject to macOS and other clipboard applications. Ending a selection hides its reusable capture surfaces, clears image references and annotation contents, and prevents pending work from publishing stale results. Idle surfaces do not acquire or retain desktop snapshots. Disabling the plugin destroys these surfaces and closes pinned images and auxiliary windows. Unsaved edits are discarded. If recording has already created a file, interruption or an error can leave an incomplete MOV file in the selected output folder; inspect or remove it yourself.

`)oduuzTrr8ze#cQ!{ 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 A)Bpeg literal 0 HcmV?d00001 diff --git a/docs/pr-assets/screenshot-editing-recording/toolbar-fill-dark.png b/docs/pr-assets/screenshot-editing-recording/toolbar-fill-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..6d2a791857f2701b2d9de8659f396fff504c18a0 GIT binary patch literal 163885 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