From cee5feaf8d2a38ea3e131d666d25d2376fbf5852 Mon Sep 17 00:00:00 2001 From: dotCooCoo Date: Sat, 14 Nov 2026 22:34:31 -0800 Subject: [PATCH] SVG Filters: the axes error reads in every complete-message language, and the docs say how axes return to the document's - The "`axes` must be [a, b, c, d] ..." refusal gets an @msg row in each of the 24 complete-message catalogs, next to the other svg.filter rows. - docs/mcp.md and the params text say that absent or [1, 0, 0, 1] axes are the document's, that effect.setParams sets them back with [1, 0, 0, 1] (the commands refuse null), and that moving, turning, scaling or skewing the object moves `origin` and leaves `axes` as they are. --- crates/effects/src/catalog.rs | 2 +- crates/ui-egui/src/i18n/ca.tsv | 1 + crates/ui-egui/src/i18n/cs.tsv | 1 + crates/ui-egui/src/i18n/da.tsv | 1 + crates/ui-egui/src/i18n/de.tsv | 1 + crates/ui-egui/src/i18n/el.tsv | 1 + crates/ui-egui/src/i18n/es.tsv | 1 + crates/ui-egui/src/i18n/fi.tsv | 1 + crates/ui-egui/src/i18n/fr.tsv | 1 + crates/ui-egui/src/i18n/hi.tsv | 1 + crates/ui-egui/src/i18n/hu.tsv | 1 + crates/ui-egui/src/i18n/it.tsv | 1 + crates/ui-egui/src/i18n/ja.tsv | 1 + crates/ui-egui/src/i18n/ka.tsv | 1 + crates/ui-egui/src/i18n/ko.tsv | 1 + crates/ui-egui/src/i18n/nl.tsv | 1 + crates/ui-egui/src/i18n/pl.tsv | 1 + crates/ui-egui/src/i18n/pt-br.tsv | 1 + crates/ui-egui/src/i18n/ru.tsv | 1 + crates/ui-egui/src/i18n/sv.tsv | 1 + crates/ui-egui/src/i18n/tr.tsv | 1 + crates/ui-egui/src/i18n/uk.tsv | 1 + crates/ui-egui/src/i18n/vi.tsv | 1 + crates/ui-egui/src/i18n/zh-hans.tsv | 1 + crates/ui-egui/src/i18n/zh-hant.tsv | 1 + docs/mcp.md | 7 ++++--- 26 files changed, 29 insertions(+), 4 deletions(-) diff --git a/crates/effects/src/catalog.rs b/crates/effects/src/catalog.rs index 2842b01080..a6255fc37f 100644 --- a/crates/effects/src/catalog.rs +++ b/crates/effects/src/catalog.rs @@ -859,7 +859,7 @@ pub fn effect_catalog() -> Vec { crate::SVG_FILTER, "SVG Filter", &["Effect", "SVG Filters"], - "{name: string (the filter's id), xml: string (one SVG element with an id and 1..64 primitives, at most 64 KB), scale: number 0.001..1000 (1; points per unit of the filter's user space), origin: [x, y] pt ([0, 0]; where the filter's user space starts in the document), axes?: [a, b, c, d] (absent: the document's axes; the document directions of one unit along the filter's x axis [a, b] and y axis [c, d] before scale, each -1000..1000, with a·d - b·c at least 0.001 from 0; a turned, skewed or unevenly scaled user space, as SVG import gives a filtered element under a rotate, skew or uneven scale; the filter's offsets, blurs and region run along these axes)} runs the SVG filter on the object's pixels, its lengths in points times scale, at the Document Raster Effects resolution or finer; svgFilter.apply applies one of the document's filters (svgFilter.list)", + "{name: string (the filter's id), xml: string (one SVG element with an id and 1..64 primitives, at most 64 KB), scale: number 0.001..1000 (1; points per unit of the filter's user space), origin: [x, y] pt ([0, 0]; where the filter's user space starts in the document), axes?: [a, b, c, d] (absent or [1, 0, 0, 1]: the document's axes, and not null; the document directions of one unit along the filter's x axis [a, b] and y axis [c, d] before scale, each -1000..1000, with a·d - b·c at least 0.001 from 0; a turned, skewed or unevenly scaled user space, as SVG import gives a filtered element under a rotate, skew or uneven scale; the filter's offsets, blurs and region run along these axes; moving, turning or skewing the object moves origin and leaves axes)} runs the SVG filter on the object's pixels, its lengths in points times scale, at the Document Raster Effects resolution or finer; svgFilter.apply applies one of the document's filters (svgFilter.list)", json!({"scale": 1.0, "origin": [0.0, 0.0]}), )); v diff --git a/crates/ui-egui/src/i18n/ca.tsv b/crates/ui-egui/src/i18n/ca.tsv index ab50e14a58..6355e2838f 100644 --- a/crates/ui-egui/src/i18n/ca.tsv +++ b/crates/ui-egui/src/i18n/ca.tsv @@ -6552,6 +6552,7 @@ digits Malayalam Malaiàlam @msg {what} points outside memory {what} apunta fora de la memòria @msg `angle` must be a number `angle` ha de ser un nombre @msg `aspect` must be from 0.01 to 100 `aspect` ha d’estar entre 0.01 i 100 +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` ha de ser [a, b, c, d], cadascun entre -1000 i 1000, amb a·d - b·c com a mínim a 0.001 de 0 @msg `cap` must be "butt", "round" or "square" `cap` ha de ser "butt", "round" o "square" @msg `fillRule` must be "nonzero" or "evenodd" `fillRule` ha de ser "nonzero" o "evenodd" @msg `helpUrl` must be an https:// address of at most {MAX_HELP_URL} bytes `helpUrl` ha de ser una adreça https:// de {MAX_HELP_URL} bytes com a màxim diff --git a/crates/ui-egui/src/i18n/cs.tsv b/crates/ui-egui/src/i18n/cs.tsv index 3b9c300980..a2b5d61142 100644 --- a/crates/ui-egui/src/i18n/cs.tsv +++ b/crates/ui-egui/src/i18n/cs.tsv @@ -7861,6 +7861,7 @@ breakText Glyphs Glyfy @msg `names` must be an array of style names `names` musí být pole názvů stylů @msg `new` is a design name, or true `new` je název návrhu, nebo true @msg `origin` must be [x, y] in points `origin` musí být [x, y] v bodech +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` musí být [a, b, c, d], každé od -1000 do 1000, a a·d - b·c se musí od 0 lišit alespoň o 0.001 @msg `path` must be a folder `path` musí být složka @msg `path` must be a path object `path` musí být objekt cesty @msg `picks` must be an array (got {v}) `picks` musí být pole (zadáno {v}) diff --git a/crates/ui-egui/src/i18n/da.tsv b/crates/ui-egui/src/i18n/da.tsv index 59ce36d15f..864cf3ee08 100644 --- a/crates/ui-egui/src/i18n/da.tsv +++ b/crates/ui-egui/src/i18n/da.tsv @@ -426,6 +426,7 @@ @msg {what} points outside memory {what} peger uden for hukommelsen @msg `angle` must be a number `angle` skal være et tal @msg `aspect` must be from 0.01 to 100 `aspect` skal være fra 0,01 til 100 +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` skal være [a, b, c, d], hver fra -1000 til 1000, med a·d - b·c mindst 0,001 fra 0 @msg `cap` must be "butt", "round" or "square" `cap` skal være "butt", "round" eller "square" @msg `fillRule` must be "nonzero" or "evenodd" `fillRule` skal være "nonzero" eller "evenodd" @msg `helpUrl` must be an https:// address of at most {MAX_HELP_URL} bytes `helpUrl` skal være en https://-adresse på højst {MAX_HELP_URL} byte diff --git a/crates/ui-egui/src/i18n/de.tsv b/crates/ui-egui/src/i18n/de.tsv index ddc01a8016..01e73be41e 100644 --- a/crates/ui-egui/src/i18n/de.tsv +++ b/crates/ui-egui/src/i18n/de.tsv @@ -7180,6 +7180,7 @@ breakText Glyphs Glyphen @msg `name` must be a name that is not empty `name` muss ein nicht leerer Name sein @msg `name` must not be empty `name` darf nicht leer sein @msg `origin` must be [x, y] in points `origin` muss [x, y] in Punkt sein +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` muss [a, b, c, d] sein, jeweils von -1000 bis 1000, mit a·d - b·c mindestens 0,001 von 0 entfernt @msg `picks` must be an array (got {v}) `picks` muss ein Array sein (erhalten: {v}) @msg `picks` must hold 1 to {MAX_PICKS} picks (got {_1}) `picks` muss 1 bis {MAX_PICKS} Auswahlen enthalten (erhalten: {_1}) @msg `radius` must be 0 or more `radius` muss 0 oder größer sein diff --git a/crates/ui-egui/src/i18n/el.tsv b/crates/ui-egui/src/i18n/el.tsv index a89d3c72e4..6cd6335d9e 100644 --- a/crates/ui-egui/src/i18n/el.tsv +++ b/crates/ui-egui/src/i18n/el.tsv @@ -6399,6 +6399,7 @@ axis Y Axis Άξονας Y @msg {what} points outside memory το {what} δείχνει εκτός μνήμης @msg `angle` must be a number το `angle` πρέπει να είναι αριθμός @msg `aspect` must be from 0.01 to 100 το `aspect` πρέπει να είναι από 0.01 έως 100 +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 το `axes` πρέπει να είναι [a, b, c, d], καθένα από -1000 έως 1000, με το a·d - b·c να απέχει τουλάχιστον 0.001 από το 0 @msg `cap` must be "butt", "round" or "square" το `cap` πρέπει να είναι "butt", "round" ή "square" @msg `fillRule` must be "nonzero" or "evenodd" το `fillRule` πρέπει να είναι "nonzero" ή "evenodd" @msg `helpUrl` must be an https:// address of at most {MAX_HELP_URL} bytes το `helpUrl` πρέπει να είναι διεύθυνση https:// έως {MAX_HELP_URL} byte diff --git a/crates/ui-egui/src/i18n/es.tsv b/crates/ui-egui/src/i18n/es.tsv index 4a912f8005..859f1dcc78 100644 --- a/crates/ui-egui/src/i18n/es.tsv +++ b/crates/ui-egui/src/i18n/es.tsv @@ -6390,6 +6390,7 @@ axis Y Axis Eje Y @msg {what} points outside memory {what} apunta fuera de la memoria @msg `angle` must be a number `angle` debe ser un número @msg `aspect` must be from 0.01 to 100 `aspect` debe estar entre 0.01 y 100 +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` debe ser [a, b, c, d], cada uno entre -1000 y 1000, con a·d - b·c a al menos 0.001 de 0 @msg `cap` must be "butt", "round" or "square" `cap` debe ser "butt", "round" o "square" @msg `fillRule` must be "nonzero" or "evenodd" `fillRule` debe ser "nonzero" o "evenodd" @msg `helpUrl` must be an https:// address of at most {MAX_HELP_URL} bytes `helpUrl` debe ser una dirección https:// de {MAX_HELP_URL} bytes como máximo diff --git a/crates/ui-egui/src/i18n/fi.tsv b/crates/ui-egui/src/i18n/fi.tsv index 06499d13ea..9d7e546041 100644 --- a/crates/ui-egui/src/i18n/fi.tsv +++ b/crates/ui-egui/src/i18n/fi.tsv @@ -6477,6 +6477,7 @@ axis Y Axis Y-akseli @msg {what} points outside memory {what} osoittaa muistin ulkopuolelle @msg `angle` must be a number `angle` on oltava luku @msg `aspect` must be from 0.01 to 100 `aspect` on oltava 0.01 ja 100 välillä +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` on oltava [a, b, c, d], kukin -1000 ja 1000 välillä, ja a·d - b·c:n on oltava vähintään 0.001:n päässä 0:sta @msg `cap` must be "butt", "round" or "square" `cap` on oltava "butt", "round" tai "square" @msg `fillRule` must be "nonzero" or "evenodd" `fillRule` on oltava "nonzero" tai "evenodd" @msg `helpUrl` must be an https:// address of at most {MAX_HELP_URL} bytes `helpUrl` on oltava enintään {MAX_HELP_URL} tavun https://-osoite diff --git a/crates/ui-egui/src/i18n/fr.tsv b/crates/ui-egui/src/i18n/fr.tsv index 90882cf105..21f460d485 100644 --- a/crates/ui-egui/src/i18n/fr.tsv +++ b/crates/ui-egui/src/i18n/fr.tsv @@ -7728,6 +7728,7 @@ breakText Glyphs Glyphes @msg `names` must be an array of style names `names` doit être une liste de noms de styles @msg `new` is a design name, or true `new` est un nom de motif, ou true @msg `origin` must be [x, y] in points `origin` doit être [x, y] en points +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` doit être [a, b, c, d], chacun compris entre -1000 et 1000, avec a·d - b·c à au moins 0.001 de 0 @msg `path` must be a folder `path` doit être un dossier @msg `path` must be a path object `path` doit être un objet tracé @msg `picks` must be an array (got {v}) `picks` doit être une liste (reçu : {v}) diff --git a/crates/ui-egui/src/i18n/hi.tsv b/crates/ui-egui/src/i18n/hi.tsv index 671052e82b..d417457e1a 100644 --- a/crates/ui-egui/src/i18n/hi.tsv +++ b/crates/ui-egui/src/i18n/hi.tsv @@ -5602,6 +5602,7 @@ antiAlias Sharp शार्प @msg needs approval: it asks for {0}, which the user grants when installing it on its own स्वीकृति आवश्यक: यह {0} माँगता है, जिसे उपयोगकर्ता इसे अलग से स्थापित करते समय देता है @msg `angle` must be a number `angle` एक संख्या होना चाहिए @msg `aspect` must be from 0.01 to 100 `aspect` 0.01 से 100 तक होना चाहिए +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` [a, b, c, d] होना चाहिए, हर मान -1000 से 1000 तक, और a·d - b·c का 0 से अंतर कम से कम 0.001 होना चाहिए @msg `cap` must be "butt", "round" or "square" `cap` "butt", "round" या "square" होना चाहिए @msg `fillRule` must be "nonzero" or "evenodd" `fillRule` "nonzero" या "evenodd" होना चाहिए @msg `helpUrl` must be an https:// address of at most {MAX_HELP_URL} bytes `helpUrl` अधिकतम {MAX_HELP_URL} बाइट का https:// पता होना चाहिए diff --git a/crates/ui-egui/src/i18n/hu.tsv b/crates/ui-egui/src/i18n/hu.tsv index a218a2ce15..821cc03035 100644 --- a/crates/ui-egui/src/i18n/hu.tsv +++ b/crates/ui-egui/src/i18n/hu.tsv @@ -7731,6 +7731,7 @@ breakText Glyphs Glifák @msg `names` must be an array of style names `names`: stílusnevek tömbje kell @msg `new` is a design name, or true `new`: diagramminta neve vagy true @msg `origin` must be [x, y] in points `origin`: [x, y] kell pontban megadva +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes`: [a, b, c, d] kell, mindegyik -1000 és 1000 között, és a·d - b·c legalább 0.001-gyel térjen el 0-tól @msg `path` must be a folder `path`: mappa kell @msg `path` must be a path object `path`: útvonalobjektum kell @msg `picks` must be an array (got {v}) `picks`: tömb kell (kapott érték: {v}) diff --git a/crates/ui-egui/src/i18n/it.tsv b/crates/ui-egui/src/i18n/it.tsv index 2b5a6bf3da..c53abe06cf 100644 --- a/crates/ui-egui/src/i18n/it.tsv +++ b/crates/ui-egui/src/i18n/it.tsv @@ -7218,6 +7218,7 @@ breakText Glyphs Glifi @msg `name` must be a name that is not empty `name` deve essere un nome non vuoto @msg `name` must not be empty `name` non deve essere vuoto @msg `origin` must be [x, y] in points `origin` deve essere [x, y] in punti +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` deve essere [a, b, c, d], ciascuno compreso tra -1000 e 1000, con a·d - b·c distante almeno 0.001 da 0 @msg `picks` must be an array (got {v}) `picks` deve essere un array (ricevuto {v}) @msg `picks` must hold 1 to {MAX_PICKS} picks (got {_1}) `picks` deve contenere da 1 a {MAX_PICKS} scelte (ricevute {_1}) @msg `points` must hold from 2 to 100000 points `points` deve contenere da 2 a 100000 punti diff --git a/crates/ui-egui/src/i18n/ja.tsv b/crates/ui-egui/src/i18n/ja.tsv index 87ec6c8b05..c64007d33d 100644 --- a/crates/ui-egui/src/i18n/ja.tsv +++ b/crates/ui-egui/src/i18n/ja.tsv @@ -6425,6 +6425,7 @@ axis Y Axis Y 軸 @msg `name` must be a name that is not empty `name` には空でない名前を指定してください @msg `name` must not be empty `name` を空にすることはできません @msg `origin` must be [x, y] in points `origin` にはポイント単位の [x, y] を指定してください +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` には [a, b, c, d] を指定してください (各値は -1000 から 1000、a·d - b·c は 0 から 0.001 以上離れた値) @msg `picks` must be an array (got {v}) `picks` には配列を指定してください (指定値: {v}) @msg `picks` must hold 1 to {MAX_PICKS} picks (got {_1}) `picks` には 1~{MAX_PICKS} 個の指定が必要です (指定数: {_1}) @msg `points` must hold from 2 to 100000 points `points` には 2~100000 個の点が必要です diff --git a/crates/ui-egui/src/i18n/ka.tsv b/crates/ui-egui/src/i18n/ka.tsv index 8c42eafaf1..09c0316246 100644 --- a/crates/ui-egui/src/i18n/ka.tsv +++ b/crates/ui-egui/src/i18n/ka.tsv @@ -6398,6 +6398,7 @@ axis Y Axis Y ღერძი @msg {what} points outside memory {what} მეხსიერების გარეთ მიუთითებს @msg `angle` must be a number `angle` უნდა იყოს რიცხვი @msg `aspect` must be from 0.01 to 100 `aspect` უნდა იყოს 0.01-დან 100-მდე +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` უნდა იყოს [a, b, c, d], თითოეული -1000-დან 1000-მდე, ხოლო a·d - b·c უნდა განსხვავდებოდეს 0-ისგან მინიმუმ 0.001-ით @msg `cap` must be "butt", "round" or "square" `cap` უნდა იყოს "butt", "round" ან "square" @msg `fillRule` must be "nonzero" or "evenodd" `fillRule` უნდა იყოს "nonzero" ან "evenodd" @msg `helpUrl` must be an https:// address of at most {MAX_HELP_URL} bytes `helpUrl` უნდა იყოს https:// მისამართი, არაუმეტეს {MAX_HELP_URL} ბაიტისა diff --git a/crates/ui-egui/src/i18n/ko.tsv b/crates/ui-egui/src/i18n/ko.tsv index 4fd8001ea7..9bebeea3c5 100644 --- a/crates/ui-egui/src/i18n/ko.tsv +++ b/crates/ui-egui/src/i18n/ko.tsv @@ -7456,6 +7456,7 @@ breakText Glyphs 글리프 @msg `names` must be an array of style names `names`은(는) 스타일 이름의 배열이어야 합니다 @msg `new` is a design name, or true `new`은(는) 디자인 이름 또는 true입니다 @msg `origin` must be [x, y] in points `origin`은(는) 포인트 단위의 [x, y]여야 합니다 +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes`은(는) [a, b, c, d]여야 하며, 각 값은 -1000에서 1000 사이이고 a·d - b·c는 0에서 0.001 이상 떨어져야 합니다 @msg `path` must be a folder `path`은(는) 폴더여야 합니다 @msg `path` must be a path object `path`은(는) 패스 개체여야 합니다 @msg `picks` must be an array (got {v}) `picks`은(는) 배열이어야 합니다({v} 입력됨) diff --git a/crates/ui-egui/src/i18n/nl.tsv b/crates/ui-egui/src/i18n/nl.tsv index 31872f060e..2c17825de4 100644 --- a/crates/ui-egui/src/i18n/nl.tsv +++ b/crates/ui-egui/src/i18n/nl.tsv @@ -5801,6 +5801,7 @@ imageTrace Outline Contour @msg `names` must be an array of style names `names` moet een array van stijlnamen zijn @msg `new` is a design name, or true `new` is de naam van een ontwerp, of true @msg `origin` must be [x, y] in points `origin` moet [x, y] in punten zijn +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` moet [a, b, c, d] zijn, elk van -1000 tot 1000, met a·d - b·c minstens 0,001 van 0 af @msg `path` must be a folder `path` moet een map zijn @msg `path` must be a path object `path` moet een padobject zijn @msg `picks` must be an array (got {v}) `picks` moet een array zijn (kreeg {v}) diff --git a/crates/ui-egui/src/i18n/pl.tsv b/crates/ui-egui/src/i18n/pl.tsv index 77b1425e5f..e0157101c5 100644 --- a/crates/ui-egui/src/i18n/pl.tsv +++ b/crates/ui-egui/src/i18n/pl.tsv @@ -7451,6 +7451,7 @@ breakText Glyphs Glify @msg `name` must be a name that is not empty `name` musi być niepustą nazwą @msg `name` must not be empty `name` nie może być puste @msg `origin` must be [x, y] in points `origin` musi mieć postać [x, y] w punktach +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` musi mieć postać [a, b, c, d], każda wartość od -1000 do 1000, a a·d - b·c musi różnić się od 0 o co najmniej 0,001 @msg `picks` must be an array (got {v}) `picks` musi być tablicą (podano {v}) @msg `picks` must hold 1 to {MAX_PICKS} picks (got {_1}) `picks` musi zawierać od 1 do {MAX_PICKS} wskazań (podano {_1}) @msg `points` must hold from 2 to 100000 points `points` musi zawierać od 2 do 100000 punktów diff --git a/crates/ui-egui/src/i18n/pt-br.tsv b/crates/ui-egui/src/i18n/pt-br.tsv index caed79af2a..3854b66746 100644 --- a/crates/ui-egui/src/i18n/pt-br.tsv +++ b/crates/ui-egui/src/i18n/pt-br.tsv @@ -7925,6 +7925,7 @@ swatch Yellow Green Verde-amarelado @msg `names` must be an array of style names `names` deve ser uma matriz de nomes de estilos @msg `new` is a design name, or true `new` é o nome de um projeto, ou true @msg `origin` must be [x, y] in points `origin` deve ser [x, y] em pontos +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` deve ser [a, b, c, d], cada um de -1000 a 1000, com a·d - b·c a pelo menos 0.001 de 0 @msg `path` must be a folder `path` deve ser uma pasta @msg `path` must be a path object `path` deve ser um objeto de caminho @msg `picks` must be an array (got {v}) `picks` deve ser uma matriz (recebido {v}) diff --git a/crates/ui-egui/src/i18n/ru.tsv b/crates/ui-egui/src/i18n/ru.tsv index 206b209ee2..67cf6812e3 100644 --- a/crates/ui-egui/src/i18n/ru.tsv +++ b/crates/ui-egui/src/i18n/ru.tsv @@ -6058,6 +6058,7 @@ axis Y Axis Ось Y @msg {what} points outside memory {what} указывает за пределы памяти @msg `angle` must be a number `angle` должно быть числом @msg `aspect` must be from 0.01 to 100 `aspect` должно быть от 0.01 до 100 +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` должно быть [a, b, c, d], каждое от -1000 до 1000, а a·d - b·c должно отличаться от 0 не менее чем на 0.001 @msg `cap` must be "butt", "round" or "square" `cap` должно быть "butt", "round" или "square" @msg `fillRule` must be "nonzero" or "evenodd" `fillRule` должно быть "nonzero" или "evenodd" @msg `helpUrl` must be an https:// address of at most {MAX_HELP_URL} bytes `helpUrl` должно быть адресом https:// длиной не более {MAX_HELP_URL} байт diff --git a/crates/ui-egui/src/i18n/sv.tsv b/crates/ui-egui/src/i18n/sv.tsv index 82e63d1667..4678441592 100644 --- a/crates/ui-egui/src/i18n/sv.tsv +++ b/crates/ui-egui/src/i18n/sv.tsv @@ -6431,6 +6431,7 @@ axis Y Axis Y-axel @msg needs approval: it asks for {0}, which the user grants when installing it on its own kräver godkännande: det begär {0}, som användaren beviljar när pluginet installeras för sig @msg `angle` must be a number `angle` måste vara ett tal @msg `aspect` must be from 0.01 to 100 `aspect` måste vara från 0.01 till 100 +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` måste vara [a, b, c, d], vart och ett från -1000 till 1000, med a·d - b·c minst 0.001 från 0 @msg `cap` must be "butt", "round" or "square" `cap` måste vara "butt", "round" eller "square" @msg `fillRule` must be "nonzero" or "evenodd" `fillRule` måste vara "nonzero" eller "evenodd" @msg `helpUrl` must be an https:// address of at most {MAX_HELP_URL} bytes `helpUrl` måste vara en https://-adress på högst {MAX_HELP_URL} byte diff --git a/crates/ui-egui/src/i18n/tr.tsv b/crates/ui-egui/src/i18n/tr.tsv index 237694bff5..5bb12210df 100644 --- a/crates/ui-egui/src/i18n/tr.tsv +++ b/crates/ui-egui/src/i18n/tr.tsv @@ -6809,6 +6809,7 @@ axis Y Axis Y ekseni @msg `name` must be a name that is not empty `name` boş olmayan bir ad olmalıdır @msg `name` must not be empty `name` boş olmamalıdır @msg `origin` must be [x, y] in points `origin` punto cinsinden [x, y] olmalıdır +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` [a, b, c, d] olmalıdır; her biri -1000 ile 1000 arasında, a·d - b·c ise 0'dan en az 0.001 uzakta olmalıdır @msg `picks` must be an array (got {v}) `picks` bir dizi olmalıdır (verilen: {v}) @msg `picks` must hold 1 to {MAX_PICKS} picks (got {_1}) `picks` 1 ile {MAX_PICKS} arasında seçim içermelidir (verilen: {_1}) @msg `points` must hold from 2 to 100000 points `points` 2 ile 100000 arasında nokta içermelidir diff --git a/crates/ui-egui/src/i18n/uk.tsv b/crates/ui-egui/src/i18n/uk.tsv index a74a03529d..b3f2b9c19a 100644 --- a/crates/ui-egui/src/i18n/uk.tsv +++ b/crates/ui-egui/src/i18n/uk.tsv @@ -7465,6 +7465,7 @@ breakText Glyphs Гліфи @msg `names` must be an array of style names `names` має бути масивом імен стилів @msg `new` is a design name, or true `new` — це назва дизайну або true @msg `origin` must be [x, y] in points `origin` має бути [x, y] у пунктах +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` має бути [a, b, c, d], кожне від -1000 до 1000, а a·d - b·c має відрізнятися від 0 щонайменше на 0.001 @msg `path` must be a folder `path` має бути папкою @msg `path` must be a path object `path` має бути об’єктом-контуром @msg `picks` must be an array (got {v}) `picks` має бути масивом (отримано {v}) diff --git a/crates/ui-egui/src/i18n/vi.tsv b/crates/ui-egui/src/i18n/vi.tsv index 16c613874c..b332b82426 100644 --- a/crates/ui-egui/src/i18n/vi.tsv +++ b/crates/ui-egui/src/i18n/vi.tsv @@ -6054,6 +6054,7 @@ axis Y Axis Trục Y @msg {what} points outside memory {what} trỏ ra ngoài bộ nhớ @msg `angle` must be a number `angle` phải là một số @msg `aspect` must be from 0.01 to 100 `aspect` phải từ 0.01 đến 100 +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` phải là [a, b, c, d], mỗi số từ -1000 đến 1000, và a·d - b·c phải cách 0 ít nhất 0.001 @msg `cap` must be "butt", "round" or "square" `cap` phải là "butt", "round" hoặc "square" @msg `fillRule` must be "nonzero" or "evenodd" `fillRule` phải là "nonzero" hoặc "evenodd" @msg `helpUrl` must be an https:// address of at most {MAX_HELP_URL} bytes `helpUrl` phải là một địa chỉ https:// dài tối đa {MAX_HELP_URL} byte diff --git a/crates/ui-egui/src/i18n/zh-hans.tsv b/crates/ui-egui/src/i18n/zh-hans.tsv index b83bee650f..18d786b4a4 100644 --- a/crates/ui-egui/src/i18n/zh-hans.tsv +++ b/crates/ui-egui/src/i18n/zh-hans.tsv @@ -7432,6 +7432,7 @@ breakText Glyphs 字形 @msg `name` must be a name that is not empty `name` 必须是非空的名称 @msg `name` must not be empty `name` 不能为空 @msg `origin` must be [x, y] in points `origin` 必须是以点为单位的 [x, y] +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` 必须是 [a, b, c, d],每个值在 -1000 到 1000 之间,且 a·d - b·c 与 0 的差至少为 0.001 @msg `picks` must be an array (got {v}) `picks` 必须是数组 (实际为 {v}) @msg `picks` must hold 1 to {MAX_PICKS} picks (got {_1}) `picks` 必须包含 1 到 {MAX_PICKS} 个拾取项 (实际为 {_1}) @msg `points` must hold from 2 to 100000 points `points` 必须包含 2 到 100000 个点 diff --git a/crates/ui-egui/src/i18n/zh-hant.tsv b/crates/ui-egui/src/i18n/zh-hant.tsv index 4637ecb811..6826f0dd14 100644 --- a/crates/ui-egui/src/i18n/zh-hant.tsv +++ b/crates/ui-egui/src/i18n/zh-hant.tsv @@ -7360,6 +7360,7 @@ breakText Glyphs 字符 @msg `name` must be a name that is not empty `name` 必須是不為空的名稱 @msg `name` must not be empty `name` 不能為空 @msg `origin` must be [x, y] in points `origin` 必須是以點為單位的 [x, y] +@msg `axes` must be [a, b, c, d], each from -1000 to 1000, with a·d - b·c at least 0.001 from 0 `axes` 必須是 [a, b, c, d],每個值介於 -1000 到 1000 之間,且 a·d - b·c 與 0 的差至少為 0.001 @msg `picks` must be an array (got {v}) `picks` 必須是陣列 (收到 {v}) @msg `picks` must hold 1 to {MAX_PICKS} picks (got {_1}) `picks` 必須包含 1 到 {MAX_PICKS} 個選擇 (收到 {_1}) @msg `points` must hold from 2 to 100000 points `points` 必須包含 2 到 100000 個點 diff --git a/docs/mcp.md b/docs/mcp.md index cce75d189c..cdcbe93510 100644 --- a/docs/mcp.md +++ b/docs/mcp.md @@ -5301,7 +5301,8 @@ SVG Filter (New, Edit, Delete, Import…), and from the Appearance panel it edit The canvas, raster export, printing and PDF draw the filter with the object as its source graphic, its user space starting at `origin` (`[x, y]` in points, `[0, 0]` by default) with its units `scale` points (1 by default), its axes along `axes` (`[a, b, c, d]`: one unit along the filter's x axis points `[a, b]` in the document and one along -its y axis `[c, d]`, before `scale`; absent, the document's axes; each number -1000 to 1000 and `a·d - b·c` at least +its y axis `[c, d]`, before `scale`; absent or `[1, 0, 0, 1]`, the document's axes, and `effect.setParams` sets them +back with `[1, 0, 0, 1]`, since the commands refuse `null`; each number -1000 to 1000 and `a·d - b·c` at least 0.001 from 0, or the command refuses it), its object bounding box the drawn object's, and at the Document Raster Effects resolution when the view is finer. The filter runs on coarser pixels when a morphology radius or kernel unit would span more than 32 of them, or a standard deviation more than 512. With `axes`, the filter runs on pixels lined up with its own axes, so offsets, blurs and the @@ -5309,8 +5310,8 @@ region run along them, and the result is drawn onto the object's pixels through along each axis as the object's and coarser when there would be more than 4 times as many, or when a radius, kernel unit or standard deviation would span more than 32 or 512 of them. The object's box is then its box in that user space: a region measured against it, and a region or primitive lengths in `objectBoundingBox` -units, are measured against that box. Moving the object moves `origin` and -leaves `scale` and `axes` as they are. An effect whose XML or `axes` these rules refuse (from a file or a script) is not drawn or exported. The +units, are measured against that box. Moving, turning, scaling or skewing the object moves `origin` with it and +leaves `axes` as they are, and `scale` too unless Scale Strokes & Effects scales it. An effect whose XML or `axes` these rules refuse (from a file or a script) is not drawn or exported. The filter is drawn and written rebuilt from its filter elements and their filter attributes alone, without comments, text, descriptions or other attributes. An image in a filter is drawn only when its bytes are a PNG, JPEG, GIF or WebP within the pixel limit. A filter region in user space given in percentages is measured against the object's box (x