Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,20 @@ A group is one slice that opens up to six non-group actions. Its members may be
editor offers both kinds, and `UserDataStore.EnsureConsistency` removes missing, duplicate, nested or excess members
without excluding tools.

## Annotate tool

"Annotate" (`tool-annotate`, palette only, settings schema 59) draws pen lines, arrows, boxes, highlights, text and
numbers on pictures (`ImageOptions.Annotations`): points are parts of the picture, sizes parts of its shorter side.

- `Engines/Annotations/AnnotationPainter` (SkiaSharp) draws the marks. The window's `AnnotationCanvas` calls it on
Avalonia's own Skia canvas (a custom draw operation through `ISkiaSharpApiLeaseFeature`) and `Annotator` on a layer
the size of the file, laid over the picture in `ImageEncoder.ApplyOptions` after hidden areas: the preview is the
file. Text uses the system's bold font, or one the system finds for letters it lacks.
- `AnnotationSet` keeps the marks, the selection and undo / redo (a drag is one step). A mark just drawn isn't selected:
a colour picked next goes to the next mark; with Select, colour and width restyle the selected one.
- `AnnotateTool.ConversionOf` (Core) turns the tool into a conversion in the picture's own format (as Pixelate / blur),
run by the job queue; `ReworksPixels` includes the marks.

## Crop overlay and PDF page editor

The image Crop tool (`tool-crop`) and PDF Crop (`tool-pdf-crop`) open `Views/CropOverlayWindow` instead of running a job:
Expand Down
24 changes: 24 additions & 0 deletions src/Filee.App/Assets/i18n/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@
"preset.rotate_180": "تدوير 180°",
"preset.rotate_180.short": "180°",
"preset.group_flip": "انعكاس",
"preset.annotate": "تعليقات",
"preset.flip_horizontal": "انعكاس أفقي",
"preset.flip_horizontal.short": "أفقي",
"preset.flip_vertical": "انعكاس عمودي",
Expand Down Expand Up @@ -900,6 +901,29 @@
"presets.conflict.Rename": "إضافة رقم",
"presets.conflict.Overwrite": "استبداله",
"presets.conflict.Skip": "تخطٍّ",
"annotate.select": "تحديد",
"annotate.select_hint": "حدّد علامة أو انقلها أو غيّر حجمها (V)",
"annotate.pen": "قلم",
"annotate.pen_hint": "ارسم بحرية (P)",
"annotate.arrow": "سهم",
"annotate.arrow_hint": "ارسم سهمًا من الذيل إلى الرأس (A)",
"annotate.box": "مربع",
"annotate.box_hint": "ارسم إطارًا (B)",
"annotate.highlight": "تمييز",
"annotate.highlight_hint": "ميّز بلون شفاف (H)",
"annotate.text": "نص",
"annotate.text_hint": "انقر واكتب تسمية (T)",
"annotate.number": "رقم",
"annotate.number_hint": "انقر لإضافة الرقم التالي (N)",
"annotate.thin": "رفيع",
"annotate.medium": "متوسط",
"annotate.thick": "سميك",
"annotate.undo": "تراجع (Ctrl+Z)",
"annotate.redo": "إعادة (Ctrl+Shift+Z)",
"annotate.remove": "إزالة العلامة المحددة (Del)",
"annotate.keys": "V للتحديد · P A B H T N لاختيار أداة · Del للإزالة · Ctrl+Z للتراجع · Esc للإغلاق",
"annotate.save": "حفظ",
"annotate.save_next": "حفظ والتالي",
"presets.editor_title": "تعديل الإعداد المسبق",
"presets.delete_confirm": "هل تريد حذف «{0}»؟ سيُزال أيضًا من جميع أشرطة الأدوات والمجموعات.",
"presets.name_required": "أدخل اسمًا",
Expand Down
24 changes: 24 additions & 0 deletions src/Filee.App/Assets/i18n/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@
"preset.rotate_180": "Um 180° drehen",
"preset.rotate_180.short": "180°",
"preset.group_flip": "Spiegeln",
"preset.annotate": "Beschriften",
"preset.flip_horizontal": "Horizontal spiegeln",
"preset.flip_horizontal.short": "Horizontal",
"preset.flip_vertical": "Vertikal spiegeln",
Expand Down Expand Up @@ -900,6 +901,29 @@
"presets.conflict.Rename": "Nummer anhängen",
"presets.conflict.Overwrite": "Ersetzen",
"presets.conflict.Skip": "Überspringen",
"annotate.select": "Auswählen",
"annotate.select_hint": "Markierung auswählen, verschieben oder skalieren (V)",
"annotate.pen": "Stift",
"annotate.pen_hint": "Freihand zeichnen (P)",
"annotate.arrow": "Pfeil",
"annotate.arrow_hint": "Pfeil vom Ende zur Spitze zeichnen (A)",
"annotate.box": "Rahmen",
"annotate.box_hint": "Rahmen zeichnen (B)",
"annotate.highlight": "Textmarker",
"annotate.highlight_hint": "Mit durchscheinender Farbe markieren (H)",
"annotate.text": "Text",
"annotate.text_hint": "Klicken und Beschriftung tippen (T)",
"annotate.number": "Nummer",
"annotate.number_hint": "Klicken für die nächste Nummer (N)",
"annotate.thin": "Dünn",
"annotate.medium": "Mittel",
"annotate.thick": "Dick",
"annotate.undo": "Rückgängig (Strg+Z)",
"annotate.redo": "Wiederholen (Strg+Umschalt+Z)",
"annotate.remove": "Ausgewählte Markierung entfernen (Entf)",
"annotate.keys": "V wählt aus · P A B H T N wählen ein Werkzeug · Entf entfernt · Strg+Z macht rückgängig · Esc schließt",
"annotate.save": "Speichern",
"annotate.save_next": "Speichern & weiter",
"presets.editor_title": "Vorlage bearbeiten",
"presets.delete_confirm": "„{0}“ löschen? Die Vorlage wird auch aus allen Werkzeugleisten und Gruppen entfernt.",
"presets.name_required": "Namen eingeben",
Expand Down
24 changes: 24 additions & 0 deletions src/Filee.App/Assets/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,7 @@
"preset.rotate_180": "Rotate 180°",
"preset.rotate_180.short": "180°",
"preset.group_flip": "Flip",
"preset.annotate": "Annotate",
"preset.flip_horizontal": "Flip horizontal",
"preset.flip_horizontal.short": "Horizontal",
"preset.flip_vertical": "Flip vertical",
Expand Down Expand Up @@ -915,6 +916,29 @@
"presets.conflict.Rename": "Add a number",
"presets.conflict.Overwrite": "Replace it",
"presets.conflict.Skip": "Skip",
"annotate.select": "Select",
"annotate.select_hint": "Select, move or resize a mark (V)",
"annotate.pen": "Pen",
"annotate.pen_hint": "Draw freehand (P)",
"annotate.arrow": "Arrow",
"annotate.arrow_hint": "Draw an arrow, tail to tip (A)",
"annotate.box": "Box",
"annotate.box_hint": "Draw a frame (B)",
"annotate.highlight": "Highlight",
"annotate.highlight_hint": "Mark with a see-through colour (H)",
"annotate.text": "Text",
"annotate.text_hint": "Click and type a label (T)",
"annotate.number": "Number",
"annotate.number_hint": "Click to add the next number (N)",
"annotate.thin": "Thin",
"annotate.medium": "Medium",
"annotate.thick": "Thick",
"annotate.undo": "Undo (Ctrl+Z)",
"annotate.redo": "Redo (Ctrl+Shift+Z)",
"annotate.remove": "Remove the selected mark (Del)",
"annotate.keys": "V selects · P A B H T N pick a tool · Del removes · Ctrl+Z undoes · Esc closes",
"annotate.save": "Save",
"annotate.save_next": "Save & next",
"presets.editor_title": "Edit preset",
"presets.delete_confirm": "Delete “{0}”? It will also be removed from every toolbar and group.",
"presets.name_required": "Enter a name",
Expand Down
24 changes: 24 additions & 0 deletions src/Filee.App/Assets/i18n/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@
"preset.rotate_180": "Rotar 180°",
"preset.rotate_180.short": "180°",
"preset.group_flip": "Voltear",
"preset.annotate": "Anotar",
"preset.flip_horizontal": "Volteo horizontal",
"preset.flip_horizontal.short": "Horizontal",
"preset.flip_vertical": "Volteo vertical",
Expand Down Expand Up @@ -900,6 +901,29 @@
"presets.conflict.Rename": "Añadir un número",
"presets.conflict.Overwrite": "Reemplazarlo",
"presets.conflict.Skip": "Omitir",
"annotate.select": "Seleccionar",
"annotate.select_hint": "Seleccionar, mover o redimensionar una marca (V)",
"annotate.pen": "Lápiz",
"annotate.pen_hint": "Dibujar a mano alzada (P)",
"annotate.arrow": "Flecha",
"annotate.arrow_hint": "Dibujar una flecha de la cola a la punta (A)",
"annotate.box": "Recuadro",
"annotate.box_hint": "Dibujar un recuadro (B)",
"annotate.highlight": "Resaltador",
"annotate.highlight_hint": "Marcar con un color transparente (H)",
"annotate.text": "Texto",
"annotate.text_hint": "Haz clic y escribe una etiqueta (T)",
"annotate.number": "Número",
"annotate.number_hint": "Haz clic para añadir el siguiente número (N)",
"annotate.thin": "Fino",
"annotate.medium": "Medio",
"annotate.thick": "Grueso",
"annotate.undo": "Deshacer (Ctrl+Z)",
"annotate.redo": "Rehacer (Ctrl+Mayús+Z)",
"annotate.remove": "Quitar la marca seleccionada (Supr)",
"annotate.keys": "V selecciona · P A B H T N eligen herramienta · Supr quita · Ctrl+Z deshace · Esc cierra",
"annotate.save": "Guardar",
"annotate.save_next": "Guardar y siguiente",
"presets.editor_title": "Editar ajuste preestablecido",
"presets.delete_confirm": "¿Eliminar «{0}»? También se quitará de todos los menús circulares y grupos.",
"presets.name_required": "Escribe un nombre",
Expand Down
24 changes: 24 additions & 0 deletions src/Filee.App/Assets/i18n/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,7 @@
"preset.rotate_180": "Pivoter de 180°",
"preset.rotate_180.short": "180°",
"preset.group_flip": "Retourner",
"preset.annotate": "Annoter",
"preset.flip_horizontal": "Retourner horizontalement",
"preset.flip_horizontal.short": "Horizontal",
"preset.flip_vertical": "Retourner verticalement",
Expand Down Expand Up @@ -915,6 +916,29 @@
"presets.conflict.Rename": "Ajouter un numéro",
"presets.conflict.Overwrite": "Le remplacer",
"presets.conflict.Skip": "Ignorer",
"annotate.select": "Sélection",
"annotate.select_hint": "Sélectionner, déplacer ou redimensionner une marque (V)",
"annotate.pen": "Stylo",
"annotate.pen_hint": "Dessiner à main levée (P)",
"annotate.arrow": "Flèche",
"annotate.arrow_hint": "Tracer une flèche, de la base à la pointe (A)",
"annotate.box": "Cadre",
"annotate.box_hint": "Tracer un cadre (B)",
"annotate.highlight": "Surligneur",
"annotate.highlight_hint": "Marquer d'une couleur transparente (H)",
"annotate.text": "Texte",
"annotate.text_hint": "Cliquer et taper une étiquette (T)",
"annotate.number": "Numéro",
"annotate.number_hint": "Cliquer pour ajouter le numéro suivant (N)",
"annotate.thin": "Fin",
"annotate.medium": "Moyen",
"annotate.thick": "Épais",
"annotate.undo": "Annuler (Ctrl+Z)",
"annotate.redo": "Rétablir (Ctrl+Maj+Z)",
"annotate.remove": "Supprimer la marque sélectionnée (Suppr)",
"annotate.keys": "V sélectionne · P A B H T N choisissent un outil · Suppr supprime · Ctrl+Z annule · Échap ferme",
"annotate.save": "Enregistrer",
"annotate.save_next": "Enregistrer et suivant",
"presets.editor_title": "Modifier le préréglage",
"presets.delete_confirm": "Supprimer « {0} » ? Il sera aussi retiré de tous les menus circulaires et groupes.",
"presets.name_required": "Saisissez un nom",
Expand Down
24 changes: 24 additions & 0 deletions src/Filee.App/Assets/i18n/hi.json
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@
"preset.rotate_180": "180° घुमाएँ",
"preset.rotate_180.short": "180°",
"preset.group_flip": "पलटें",
"preset.annotate": "टिप्पणी",
"preset.flip_horizontal": "आड़ा पलटें",
"preset.flip_horizontal.short": "आड़ा",
"preset.flip_vertical": "खड़ा पलटें",
Expand Down Expand Up @@ -900,6 +901,29 @@
"presets.conflict.Rename": "नंबर जोड़ें",
"presets.conflict.Overwrite": "बदल दें",
"presets.conflict.Skip": "छोड़ दें",
"annotate.select": "चुनें",
"annotate.select_hint": "निशान चुनें, खिसकाएँ या आकार बदलें (V)",
"annotate.pen": "पेन",
"annotate.pen_hint": "हाथ से बनाएँ (P)",
"annotate.arrow": "तीर",
"annotate.arrow_hint": "पूँछ से नोक तक तीर बनाएँ (A)",
"annotate.box": "बॉक्स",
"annotate.box_hint": "फ़्रेम बनाएँ (B)",
"annotate.highlight": "हाइलाइट",
"annotate.highlight_hint": "पारदर्शी रंग से निशान लगाएँ (H)",
"annotate.text": "टेक्स्ट",
"annotate.text_hint": "क्लिक करके लेबल लिखें (T)",
"annotate.number": "नंबर",
"annotate.number_hint": "अगला नंबर जोड़ने के लिए क्लिक करें (N)",
"annotate.thin": "पतला",
"annotate.medium": "मध्यम",
"annotate.thick": "मोटा",
"annotate.undo": "पूर्ववत (Ctrl+Z)",
"annotate.redo": "फिर से करें (Ctrl+Shift+Z)",
"annotate.remove": "चुना निशान हटाएँ (Del)",
"annotate.keys": "V चुनता है · P A B H T N टूल चुनते हैं · Del हटाता है · Ctrl+Z पूर्ववत · Esc बंद करता है",
"annotate.save": "सहेजें",
"annotate.save_next": "सहेजें और अगला",
"presets.editor_title": "प्रीसेट संपादित करें",
"presets.delete_confirm": "“{0}” हटाएँ? यह हर टूलबार और समूह से भी हट जाएगा।",
"presets.name_required": "नाम दर्ज करें",
Expand Down
24 changes: 24 additions & 0 deletions src/Filee.App/Assets/i18n/id.json
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@
"preset.rotate_180": "Putar 180°",
"preset.rotate_180.short": "180°",
"preset.group_flip": "Balik",
"preset.annotate": "Anotasi",
"preset.flip_horizontal": "Balik horizontal",
"preset.flip_horizontal.short": "Horizontal",
"preset.flip_vertical": "Balik vertikal",
Expand Down Expand Up @@ -900,6 +901,29 @@
"presets.conflict.Rename": "Tambahkan nomor",
"presets.conflict.Overwrite": "Timpa file",
"presets.conflict.Skip": "Lewati",
"annotate.select": "Pilih",
"annotate.select_hint": "Pilih, pindahkan, atau ubah ukuran tanda (V)",
"annotate.pen": "Pena",
"annotate.pen_hint": "Gambar bebas (P)",
"annotate.arrow": "Panah",
"annotate.arrow_hint": "Gambar panah, dari pangkal ke ujung (A)",
"annotate.box": "Kotak",
"annotate.box_hint": "Gambar bingkai (B)",
"annotate.highlight": "Sorot",
"annotate.highlight_hint": "Tandai dengan warna tembus pandang (H)",
"annotate.text": "Teks",
"annotate.text_hint": "Klik dan ketik label (T)",
"annotate.number": "Nomor",
"annotate.number_hint": "Klik untuk menambah nomor berikutnya (N)",
"annotate.thin": "Tipis",
"annotate.medium": "Sedang",
"annotate.thick": "Tebal",
"annotate.undo": "Urungkan (Ctrl+Z)",
"annotate.redo": "Ulangi (Ctrl+Shift+Z)",
"annotate.remove": "Hapus tanda yang dipilih (Del)",
"annotate.keys": "V memilih · P A B H T N memilih alat · Del menghapus · Ctrl+Z urungkan · Esc menutup",
"annotate.save": "Simpan",
"annotate.save_next": "Simpan & Berikutnya",
"presets.editor_title": "Edit preset",
"presets.delete_confirm": "Hapus “{0}”? Preset ini juga akan dihapus dari semua toolbar dan grup.",
"presets.name_required": "Masukkan nama",
Expand Down
24 changes: 24 additions & 0 deletions src/Filee.App/Assets/i18n/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@
"preset.rotate_180": "Ruota di 180°",
"preset.rotate_180.short": "180°",
"preset.group_flip": "Capovolgi",
"preset.annotate": "Annota",
"preset.flip_horizontal": "Capovolgi orizzontalmente",
"preset.flip_horizontal.short": "Orizzontale",
"preset.flip_vertical": "Capovolgi verticalmente",
Expand Down Expand Up @@ -900,6 +901,29 @@
"presets.conflict.Rename": "Aggiungi un numero",
"presets.conflict.Overwrite": "Sostituiscilo",
"presets.conflict.Skip": "Salta",
"annotate.select": "Seleziona",
"annotate.select_hint": "Seleziona, sposta o ridimensiona un segno (V)",
"annotate.pen": "Penna",
"annotate.pen_hint": "Disegna a mano libera (P)",
"annotate.arrow": "Freccia",
"annotate.arrow_hint": "Disegna una freccia, dalla coda alla punta (A)",
"annotate.box": "Riquadro",
"annotate.box_hint": "Disegna una cornice (B)",
"annotate.highlight": "Evidenzia",
"annotate.highlight_hint": "Segna con un colore trasparente (H)",
"annotate.text": "Testo",
"annotate.text_hint": "Fai clic e scrivi un'etichetta (T)",
"annotate.number": "Numero",
"annotate.number_hint": "Fai clic per aggiungere il numero successivo (N)",
"annotate.thin": "Sottile",
"annotate.medium": "Medio",
"annotate.thick": "Spesso",
"annotate.undo": "Annulla (Ctrl+Z)",
"annotate.redo": "Ripeti (Ctrl+Maiusc+Z)",
"annotate.remove": "Rimuovi il segno selezionato (Canc)",
"annotate.keys": "V seleziona · P A B H T N scelgono uno strumento · Canc rimuove · Ctrl+Z annulla · Esc chiude",
"annotate.save": "Salva",
"annotate.save_next": "Salva e avanti",
"presets.editor_title": "Modifica preset",
"presets.delete_confirm": "Eliminare “{0}”? Verrà rimosso anche da ogni barra e gruppo.",
"presets.name_required": "Inserisci un nome",
Expand Down
24 changes: 24 additions & 0 deletions src/Filee.App/Assets/i18n/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@
"preset.rotate_180": "180°回転",
"preset.rotate_180.short": "180°",
"preset.group_flip": "反転",
"preset.annotate": "注釈",
"preset.flip_horizontal": "水平方向に反転",
"preset.flip_horizontal.short": "水平",
"preset.flip_vertical": "垂直方向に反転",
Expand Down Expand Up @@ -900,6 +901,29 @@
"presets.conflict.Rename": "連番を付ける",
"presets.conflict.Overwrite": "上書き",
"presets.conflict.Skip": "スキップ",
"annotate.select": "選択",
"annotate.select_hint": "マークを選択・移動・サイズ変更 (V)",
"annotate.pen": "ペン",
"annotate.pen_hint": "フリーハンドで描く (P)",
"annotate.arrow": "矢印",
"annotate.arrow_hint": "根元から先端へ矢印を描く (A)",
"annotate.box": "枠",
"annotate.box_hint": "枠を描く (B)",
"annotate.highlight": "ハイライト",
"annotate.highlight_hint": "透ける色で塗る (H)",
"annotate.text": "テキスト",
"annotate.text_hint": "クリックして文字を入力 (T)",
"annotate.number": "番号",
"annotate.number_hint": "クリックで次の番号を追加 (N)",
"annotate.thin": "細い",
"annotate.medium": "ふつう",
"annotate.thick": "太い",
"annotate.undo": "元に戻す (Ctrl+Z)",
"annotate.redo": "やり直し (Ctrl+Shift+Z)",
"annotate.remove": "選択したマークを削除 (Del)",
"annotate.keys": "V 選択 · P A B H T N ツール · Del 削除 · Ctrl+Z 元に戻す · Esc 閉じる",
"annotate.save": "保存",
"annotate.save_next": "保存して次へ",
"presets.editor_title": "プリセットを編集",
"presets.delete_confirm": "「{0}」を削除しますか?すべてのドーナツメニューとグループからも削除されます。",
"presets.name_required": "名前を入力してください",
Expand Down
Loading
Loading