All checks were successful
CI / Windows build (push) Successful in 14m54s
Replace the 2-tool ink system with a data-driven, Krita-style BrushProfile (lib/editor/engine/brush.dart). Adding a brush is a const map entry, not render-path branching. Four presets from the rnote/krita spec: - fountain pen: quadratic (p^2) pressure, wide dynamic width - ballpoint: near-constant width (thinning 0.15) - highlighter: flat width, square caps - pencil: sqrt(p) pressure, moderate width Pressure is pre-warped per brush via PressureCurve(gamma) before perfect_freehand; geometry fields (thinning/streamline/smoothing/ caps) flow through the shared stroke recipe so the PDF overlay and the note/slide PenCanvas both honor the brush. Brush kind is now persisted on the stroke model. Picker added to all three toolbars. Opacity/multiply and pencil grain are carried as data but not yet composited (TODO brush-opacity / brush-texture); this increment is width + pressure-curve differentiation. analyze clean, 283 tests.
79 lines
2.4 KiB
Plaintext
79 lines
2.4 KiB
Plaintext
{
|
|
"@@locale": "en",
|
|
"appTitle": "BadNote",
|
|
"settings": "Settings",
|
|
"search": "Search",
|
|
"importPdf": "Import PDF",
|
|
"importPpt": "Import PPT",
|
|
"penCanvasBeta": "Pen Canvas (beta)",
|
|
"newNote": "New Note",
|
|
"open": "Open",
|
|
"cancel": "Cancel",
|
|
"delete": "Delete",
|
|
"deleteNoteTitle": "Delete note?",
|
|
"deleteNote": "Delete note",
|
|
"openInSplitView": "Open in Split View",
|
|
"splitViewSubtitle": "PDF reference + scratchpad",
|
|
"removeDocument": "Remove document",
|
|
"ok": "OK",
|
|
"pickColor": "Pick a color",
|
|
"clearSettingsTitle": "Clear all local settings?",
|
|
"clear": "Clear",
|
|
"settingsReset": "Settings reset to defaults",
|
|
"themeSystem": "System",
|
|
"themeLight": "Light",
|
|
"themeDark": "Dark",
|
|
"seedColorDesc": "Seed color for Material 3 theme",
|
|
"searchHint": "Search notes and documents...",
|
|
"searchError": "Search error: {error}",
|
|
"@searchError": {
|
|
"placeholders": { "error": { "type": "String" } }
|
|
},
|
|
"noResultsFor": "No results for \"{query}\"",
|
|
"@noResultsFor": {
|
|
"placeholders": { "query": { "type": "String" } }
|
|
},
|
|
"typeToSearch": "Type to search your notes and documents",
|
|
"sectionNotes": "Notes",
|
|
"sectionDocuments": "Documents",
|
|
"pageLabel": "Page {page}",
|
|
"@pageLabel": {
|
|
"placeholders": { "page": { "type": "int" } }
|
|
},
|
|
"processingPptx": "Processing PPTX...",
|
|
"processingPresentation": "Processing presentation...",
|
|
"couldNotOpenPresentation": "Could not open presentation.",
|
|
"toolPen": "Pen",
|
|
"toolHighlighter": "Highlighter",
|
|
"toolEraser": "Eraser",
|
|
"brushPicker": "Brush",
|
|
"brushFountainPen": "Fountain pen",
|
|
"brushBallpoint": "Ballpoint",
|
|
"brushPencil": "Pencil",
|
|
"brushHighlighter": "Highlighter",
|
|
"actionUndo": "Undo",
|
|
"actionRedo": "Redo",
|
|
"fingerDrawingOn": "Finger drawing ON",
|
|
"fingerDrawingOff": "Finger drawing OFF (pen only)",
|
|
"pages": "Pages",
|
|
"penSettings": "Pen settings",
|
|
"inputDiagnostic": "Input diagnostic (writes a log file)",
|
|
"back": "Back",
|
|
"previousPage": "Previous page",
|
|
"nextPage": "Next page",
|
|
"toolSelectText": "Select text",
|
|
"actionHighlightSelection": "Highlight selection",
|
|
"failedToOpenPdf": "Failed to open PDF:\n{error}",
|
|
"@failedToOpenPdf": {
|
|
"placeholders": { "error": { "type": "String" } }
|
|
},
|
|
"pdfNoPages": "PDF has no pages.",
|
|
"pageOfPages": "{current} / {total}",
|
|
"@pageOfPages": {
|
|
"placeholders": {
|
|
"current": { "type": "int" },
|
|
"total": { "type": "int" }
|
|
}
|
|
}
|
|
}
|