From a99d81e9aac4dcf423919eb778df0763f9b08a50 Mon Sep 17 00:00:00 2001 From: bflatastic Date: Thu, 22 Oct 2026 22:57:26 +0700 Subject: [PATCH] Fix Spiral tool click options dialog Squashed from #3636 onto main. --- crates/ui-egui/src/dialogs/form.rs | 5 +-- crates/ui-egui/src/dialogs/mod.rs | 2 +- crates/ui-egui/src/dialogs/shapes.rs | 47 ++++++++++++++++++++++++++-- crates/ui-egui/src/dialogs/tools.rs | 14 +++++++++ crates/ui-egui/src/i18n/bg.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/hu.tsv | 1 + crates/ui-egui/src/i18n/id.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 + 28 files changed, 87 insertions(+), 5 deletions(-) diff --git a/crates/ui-egui/src/dialogs/form.rs b/crates/ui-egui/src/dialogs/form.rs index 430216cc8..bc2242f38 100644 --- a/crates/ui-egui/src/dialogs/form.rs +++ b/crates/ui-egui/src/dialogs/form.rs @@ -61,7 +61,7 @@ fn lengths(kind: &str) -> &'static [&'static str] { "move" => &["dx", "dy", "distance"], "rectangle" | "ellipse" | "rectangularGrid" | "polarGrid" | "artboardOptions" => &["width", "height"], "roundedRectangle" => &["width", "height", "radius"], - "polygon" => &["radius"], + "polygon" | "spiral" => &["radius"], "star" => &["radius1", "radius2"], "lineSegment" => &["length"], "arc" => &["lengthX", "lengthY"], @@ -75,7 +75,7 @@ fn lengths(kind: &str) -> &'static [&'static str] { fn suffix(kind: &str, key: &str) -> Option<&'static str> { match (kind, key) { ("rotate" | "shear" | "reflect" | "move" | "lineSegment", "angle") => Some("°"), - ("scale", "sx" | "sy") => Some("%"), + ("scale", "sx" | "sy") | ("spiral", "decay") => Some("%"), _ => None, } } @@ -96,6 +96,7 @@ fn order(kind: &str) -> &'static [&'static str] { "offsetPath" => &["offset", "joins", "miterLimit"], "rectangularGrid" => &["width", "height", "rows", "rowSkew", "columns", "columnSkew"], "polarGrid" => &["width", "height", "concentric", "concentricSkew", "radial", "radialSkew"], + "spiral" => &["radius", "decay", "segments"], "artboardOptions" => &["name", "width", "height"], "lineSegment" => &["length", "angle"], _ => &[], diff --git a/crates/ui-egui/src/dialogs/mod.rs b/crates/ui-egui/src/dialogs/mod.rs index b75313615..e3b480526 100644 --- a/crates/ui-egui/src/dialogs/mod.rs +++ b/crates/ui-egui/src/dialogs/mod.rs @@ -246,7 +246,7 @@ macro_rules! registry { registry! { DimensionOptions: [dimension::KIND] => dimension::SPEC, NewDocument: [new_document::KIND] => new_document::SPEC, - Shape: ["rectangle", "roundedRectangle", "ellipse", "polygon", "star", "lineSegment", "arc", "rectangularGrid", "polarGrid"] => shapes::SPEC, + Shape: ["rectangle", "roundedRectangle", "ellipse", "polygon", "star", "lineSegment", "arc", "spiral", "rectangularGrid", "polarGrid"] => shapes::SPEC, Transform: ["move", "rotate", "scale", "reflect", "shear"] => transform::SPEC, PathOp: ["average", "offsetPath", "simplify", "splitIntoGrid"] => path_ops::SPEC, DocumentSetup: ["documentSetup"] => document_setup::SPEC, diff --git a/crates/ui-egui/src/dialogs/shapes.rs b/crates/ui-egui/src/dialogs/shapes.rs index da21b9fb2..f3c9f4f36 100644 --- a/crates/ui-egui/src/dialogs/shapes.rs +++ b/crates/ui-egui/src/dialogs/shapes.rs @@ -1,5 +1,5 @@ //! Shape size dialogs (a click with a shape tool): Rectangle, Rounded Rectangle, Ellipse, Polygon, -//! Star, Line Segment and Arc tool options, and the two grids (size, divider counts and skews, switches). +//! Star, Line Segment, Arc and Spiral tool options, and the two grids (size, divider counts and skews, switches). use serde_json::{Value, json}; use vectorcraft_doc::Unit; @@ -20,6 +20,7 @@ fn title(kind: &str) -> &'static str { "ellipse" => tl!("Ellipse"), "polygon" => tl!("Polygon"), "star" => tl!("Star"), + "spiral" => tl!("Spiral"), "rectangularGrid" => tl!("Rectangular Grid"), "polarGrid" => tl!("Polar Grid"), "arc" => tl!("Arc Segment Tool Options"), @@ -100,6 +101,11 @@ fn body(app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { } else { form::grid(ui, d, unit); } + if d.kind == "spiral" { + ui.add_space(8.0); + form::check(ui, d, "clockwise", tl!("Clockwise")); + return false; + } let own = match d.kind.as_str() { "rectangularGrid" => ("frame", tl!("Use Outside Rectangle As Frame")), "polarGrid" => ("compound", tl!("Create Compound Path From Ellipses")), @@ -200,6 +206,17 @@ fn confirm(app: &mut VectorcraftApp, d: &Dialog) -> Result { "shape.star", json!({"cx": x, "cy": y, "radius1": d.f64("radius1", 50.0), "radius2": d.f64("radius2", 25.0), "points": d.f64("points", 5.0) as u64}), ), + "spiral" => ( + "shape.spiral", + json!({ + "cx": x, + "cy": y, + "radius": d.f64("radius", 50.0).max(0.01), + "decay": d.f64("decay", 80.0).clamp(5.0, 150.0), + "segments": (d.f64("segments", 10.0) as u64).clamp(2, 1000), + "clockwise": d.bool("clockwise"), + }), + ), kind @ ("rectangularGrid" | "polarGrid") => { // The switches as they are; the typed fields as numbers. let (mut p, (counts, skews)) = (form::params(d), grid_keys(kind)); @@ -240,7 +257,7 @@ fn confirm(app: &mut VectorcraftApp, d: &Dialog) -> Result { ), }; // On the active plane while the perspective grid shows, sized in plane units from the click. - let options = options.or_else(|| matches!(d.kind.as_str(), "rectangularGrid" | "polarGrid").then(|| params.clone())); + let options = options.or_else(|| matches!(d.kind.as_str(), "spiral" | "rectangularGrid" | "polarGrid").then(|| params.clone())); let result = match vectorcraft_engine::perspective_click(&app.session, id, ¶ms, vectorcraft_geom::Point::new(x, y)) { Some((id, params)) => run_and_close(app, &id, params), None => run_and_close(app, id, params), @@ -254,6 +271,32 @@ fn confirm(app: &mut VectorcraftApp, d: &Dialog) -> Result { #[cfg(test)] mod tests { use super::*; + use vectorcraft_engine::Session; + + #[test] + fn spiral_click_dialog_uses_and_updates_tool_options() { + let mut app = VectorcraftApp::new(Session::new(), Default::default()); + app.run("file.new", json!({"width": 300, "height": 200})).unwrap(); + app.run("tool.select", json!({"tool": "spiral"})).unwrap(); + app.run("tool.setOption", json!({"tool": "spiral", "values": {"decay": 72.0, "segments": 14, "clockwise": false}})).unwrap(); + + super::super::open_tool_dialog(&mut app, "spiral", json!({"x": 40.0, "y": 60.0})); + let d = app.ui.dialog.as_ref().expect("Spiral dialog"); + assert_eq!(d.kind, "spiral"); + assert_eq!((d.f64("x", 0.0), d.f64("y", 0.0), d.f64("radius", 0.0)), (40.0, 60.0, 50.0)); + assert_eq!((d.f64("decay", 0.0), d.f64("segments", 0.0), d.bool("clockwise")), (72.0, 14.0, false)); + + let d = app.ui.dialog.as_mut().unwrap(); + d.fields.insert("radius".into(), json!(35.0)); + d.fields.insert("decay".into(), json!(65.0)); + d.fields.insert("segments".into(), json!(12)); + d.fields.insert("clockwise".into(), json!(true)); + super::super::confirm(&mut app).unwrap(); + + assert!(app.ui.dialog.is_none()); + assert_eq!(app.session.doc().unwrap().doc.layers[0].children().unwrap().len(), 1); + assert_eq!(app.session.tool_options_of("spiral"), json!({"decay": 65.0, "segments": 12, "clockwise": true})); + } #[test] fn alt_click_centres_the_typed_size_on_the_click() { diff --git a/crates/ui-egui/src/dialogs/tools.rs b/crates/ui-egui/src/dialogs/tools.rs index bcad596f8..cdb45ab5f 100644 --- a/crates/ui-egui/src/dialogs/tools.rs +++ b/crates/ui-egui/src/dialogs/tools.rs @@ -20,6 +20,20 @@ pub fn open_tool_dialog(app: &mut VectorcraftApp, kind: &str, p: Value) { Dialog::new(kind, json!({"x": x, "y": y, "radius1": "50 pt", "radius2": "25 pt", "points": app.session.tool_options_of(kind)["points"]})) } "lineSegment" => Dialog::new(kind, json!({"x": x, "y": y, "length": "100 pt", "angle": 0})), + "spiral" => { + let options = app.session.tool_options_of(kind); + Dialog::new( + kind, + json!({ + "x": x, + "y": y, + "radius": "50 pt", + "decay": options.get("decay").cloned().unwrap_or(json!(80.0)), + "segments": options.get("segments").cloned().unwrap_or(json!(10)), + "clockwise": options.get("clockwise").cloned().unwrap_or(json!(true)), + }), + ) + } "arc" => { let opts = app.session.tool_options_of(kind); let closed = opts.get("closed").and_then(Value::as_bool).unwrap_or(false); diff --git a/crates/ui-egui/src/i18n/bg.tsv b/crates/ui-egui/src/i18n/bg.tsv index 4932397ed..591c06810 100644 --- a/crates/ui-egui/src/i18n/bg.tsv +++ b/crates/ui-egui/src/i18n/bg.tsv @@ -5382,6 +5382,7 @@ axis Y Axis Y ос Packaged {n} file(s) in {folder} Пакетирани са {n} файла в {folder} Packaged {n} file(s) {note} Пакетирани са {n} файла {note} {count} file(s) in {folder}. Show the package folder? {count} файл(а) в {folder}. Показване на папката на пакета? + Clockwise По часовниковата стрелка Dither Дитъринг Fine noise hides banding in the gradient fill Фин шум скрива ивиците в градиентната запълка @msg `dither` applies to gradient fills (stroke: false) `dither` се прилага към градиентни запълки (stroke: false) diff --git a/crates/ui-egui/src/i18n/cs.tsv b/crates/ui-egui/src/i18n/cs.tsv index 36179b9be..c51d29369 100644 --- a/crates/ui-egui/src/i18n/cs.tsv +++ b/crates/ui-egui/src/i18n/cs.tsv @@ -5427,6 +5427,7 @@ axis Y Axis osa Y Packaged {n} file(s) in {folder} Zabaleno souborů: {n} do {folder} Packaged {n} file(s) {note} Zabaleno souborů: {n} {note} {count} file(s) in {folder}. Show the package folder? Souborů: {count} v {folder}. Zobrazit složku balíčku? + Clockwise Ve směru hodinových ručiček Dither Rozptýlení Fine noise hides banding in the gradient fill Jemný šum skryje pruhy ve výplni přechodem @msg `dither` applies to gradient fills (stroke: false) `dither` platí pro výplně přechodem (stroke: false) diff --git a/crates/ui-egui/src/i18n/da.tsv b/crates/ui-egui/src/i18n/da.tsv index 22a36f46c..1a3aa63ae 100644 --- a/crates/ui-egui/src/i18n/da.tsv +++ b/crates/ui-egui/src/i18n/da.tsv @@ -5398,6 +5398,7 @@ axis Y Axis Y-akse Packaged {n} file(s) in {folder} Pakkede {n} fil(er) i {folder} Packaged {n} file(s) {note} Pakkede {n} fil(er) {note} {count} file(s) in {folder}. Show the package folder? {count} fil(er) i {folder}. Vis pakkemappen? + Clockwise Med uret Dither Dither Fine noise hides banding in the gradient fill Fin støj skjuler striber i gradientfyldet @msg `dither` applies to gradient fills (stroke: false) `dither` gælder for gradientfyld (stroke: false) diff --git a/crates/ui-egui/src/i18n/de.tsv b/crates/ui-egui/src/i18n/de.tsv index eb27f1c8a..7d6d2a468 100644 --- a/crates/ui-egui/src/i18n/de.tsv +++ b/crates/ui-egui/src/i18n/de.tsv @@ -5009,6 +5009,7 @@ axis Y Axis Y-Achse Packaged {n} file(s) in {folder} {n} Datei(en) in {folder} verpackt Packaged {n} file(s) {note} {n} Datei(en) verpackt {note} {count} file(s) in {folder}. Show the package folder? {count} Datei(en) in {folder}. Paketordner anzeigen? + Clockwise Im Uhrzeigersinn Dither Dithering Fine noise hides banding in the gradient fill Feines Rauschen verbirgt Streifen in der Verlaufsfläche @msg `dither` applies to gradient fills (stroke: false) `dither` gilt für Verlaufsflächen (stroke: false) diff --git a/crates/ui-egui/src/i18n/el.tsv b/crates/ui-egui/src/i18n/el.tsv index 2d424ea7b..1718d3438 100644 --- a/crates/ui-egui/src/i18n/el.tsv +++ b/crates/ui-egui/src/i18n/el.tsv @@ -5379,6 +5379,7 @@ axis Y Axis Άξονας Y Packaged {n} file(s) in {folder} Συσκευάστηκαν {n} αρχεία στον φάκελο {folder} Packaged {n} file(s) {note} Συσκευάστηκαν {n} αρχεία {note} {count} file(s) in {folder}. Show the package folder? {count} αρχεία στον φάκελο {folder}. Να εμφανιστεί ο φάκελος συσκευασίας; + Clockwise Δεξιόστροφα Dither Πρόσθεση θορύβου Fine noise hides banding in the gradient fill Ο λεπτός θόρυβος κρύβει τις λωρίδες στο γέμισμα ντεγκραντέ @msg `dither` applies to gradient fills (stroke: false) Το `dither` ισχύει για γεμίσματα ντεγκραντέ (stroke: false) diff --git a/crates/ui-egui/src/i18n/es.tsv b/crates/ui-egui/src/i18n/es.tsv index 1f2a1ccec..c24b12a9c 100644 --- a/crates/ui-egui/src/i18n/es.tsv +++ b/crates/ui-egui/src/i18n/es.tsv @@ -5369,6 +5369,7 @@ axis Y Axis Eje Y Packaged {n} file(s) in {folder} Se empaquetaron {n} archivo(s) en {folder} Packaged {n} file(s) {note} Se empaquetaron {n} archivo(s) {note} {count} file(s) in {folder}. Show the package folder? {count} archivo(s) en {folder}. ¿Mostrar la carpeta del paquete? + Clockwise En sentido horario Dither Tramado Fine noise hides banding in the gradient fill Un ruido fino oculta las bandas del relleno de degradado @msg `dither` applies to gradient fills (stroke: false) `dither` se aplica a rellenos de degradado (stroke: false) diff --git a/crates/ui-egui/src/i18n/fi.tsv b/crates/ui-egui/src/i18n/fi.tsv index bf0be6fdf..309790fb8 100644 --- a/crates/ui-egui/src/i18n/fi.tsv +++ b/crates/ui-egui/src/i18n/fi.tsv @@ -5458,6 +5458,7 @@ axis Y Axis Y-akseli Packaged {n} file(s) in {folder} Paketoitiin {n} tiedosto(a) kansioon {folder} Packaged {n} file(s) {note} Paketoitiin {n} tiedosto(a) {note} {count} file(s) in {folder}. Show the package folder? {count} tiedosto(a) kansiossa {folder}. Näytetäänkö pakettikansio? + Clockwise Myötäpäivään Dither Rasterointi Fine noise hides banding in the gradient fill Hieno kohina piilottaa raidat liukuväritäytöstä @msg `dither` applies to gradient fills (stroke: false) `dither` koskee liukuväritäyttöjä (stroke: false) diff --git a/crates/ui-egui/src/i18n/fr.tsv b/crates/ui-egui/src/i18n/fr.tsv index ed1b1193b..2a939f6dd 100644 --- a/crates/ui-egui/src/i18n/fr.tsv +++ b/crates/ui-egui/src/i18n/fr.tsv @@ -5426,6 +5426,7 @@ axis Y Axis Axe Y Packaged {n} file(s) in {folder} {n} fichier(s) assemblé(s) dans {folder} Packaged {n} file(s) {note} {n} fichier(s) assemblé(s) {note} {count} file(s) in {folder}. Show the package folder? {count} fichier(s) dans {folder}. Afficher le dossier de l’assemblage ? + Clockwise Sens horaire Dither Simulation Fine noise hides banding in the gradient fill Un bruit fin masque les bandes du fond en dégradé @msg `dither` applies to gradient fills (stroke: false) `dither` s’applique aux fonds en dégradé (stroke: false) diff --git a/crates/ui-egui/src/i18n/hu.tsv b/crates/ui-egui/src/i18n/hu.tsv index 330a342e5..7025aab2b 100644 --- a/crates/ui-egui/src/i18n/hu.tsv +++ b/crates/ui-egui/src/i18n/hu.tsv @@ -5413,6 +5413,7 @@ axis Y Axis Y tengely Packaged {n} file(s) in {folder} Becsomagolt fájlok: {n}, mappa: {folder} Packaged {n} file(s) {note} Becsomagolt fájlok: {n} {note} {count} file(s) in {folder}. Show the package folder? Fájlok: {count}, mappa: {folder}. Megnyitod a csomag mappáját? + Clockwise Óramutató járásával megegyező Dither Árnyalatkeverés Fine noise hides banding in the gradient fill A finom zaj elrejti a sávokat a színátmenetes kitöltésben @msg `dither` applies to gradient fills (stroke: false) A `dither` színátmenetes kitöltésekre vonatkozik (stroke: false) diff --git a/crates/ui-egui/src/i18n/id.tsv b/crates/ui-egui/src/i18n/id.tsv index f28d06420..9eae5d356 100644 --- a/crates/ui-egui/src/i18n/id.tsv +++ b/crates/ui-egui/src/i18n/id.tsv @@ -5398,6 +5398,7 @@ axis Y Axis Sumbu Y Packaged {n} file(s) in {folder} Berhasil mengemas {n} file di {folder} Packaged {n} file(s) {note} Berhasil mengemas {n} file {note} {count} file(s) in {folder}. Show the package folder? {count} file dalam {folder}. Tampilkan folder paket? + Clockwise Searah jarum jam Dither Dither Fine noise hides banding in the gradient fill Derau halus menyembunyikan pita warna pada isian gradien @msg `dither` applies to gradient fills (stroke: false) `dither` berlaku untuk isian gradien (stroke: false) diff --git a/crates/ui-egui/src/i18n/it.tsv b/crates/ui-egui/src/i18n/it.tsv index d80311fcb..f029abca5 100644 --- a/crates/ui-egui/src/i18n/it.tsv +++ b/crates/ui-egui/src/i18n/it.tsv @@ -5043,6 +5043,7 @@ axis Y Axis Asse Y Packaged {n} file(s) in {folder} Pacchetto creato con {n} file in {folder} Packaged {n} file(s) {note} Pacchetto creato con {n} file {note} {count} file(s) in {folder}. Show the package folder? {count} file in {folder}. Vuoi mostrare la cartella del pacchetto? + Clockwise In senso orario Dither Dithering Fine noise hides banding in the gradient fill Un rumore fine nasconde le bande nel riempimento sfumato @msg `dither` applies to gradient fills (stroke: false) `dither` si applica ai riempimenti sfumati (stroke: false) diff --git a/crates/ui-egui/src/i18n/ja.tsv b/crates/ui-egui/src/i18n/ja.tsv index ccd2795c0..e0e7b28e6 100644 --- a/crates/ui-egui/src/i18n/ja.tsv +++ b/crates/ui-egui/src/i18n/ja.tsv @@ -5105,6 +5105,7 @@ axis Y Axis Y 軸 Packaged {n} file(s) in {folder} {n} 個のファイルを {folder} にパッケージしました Packaged {n} file(s) {note} {n} 個のファイルをパッケージしました {note} {count} file(s) in {folder}. Show the package folder? {folder} に {count} 個のファイル。パッケージフォルダーを表示しますか? + Clockwise 時計回り Dither ディザ Fine noise hides banding in the gradient fill 細かいノイズでグラデーションの塗りの縞を目立たなくします @msg `dither` applies to gradient fills (stroke: false) `dither` はグラデーションの塗りに適用されます (stroke: false) diff --git a/crates/ui-egui/src/i18n/ka.tsv b/crates/ui-egui/src/i18n/ka.tsv index 6d71f1d5c..d79f921b2 100644 --- a/crates/ui-egui/src/i18n/ka.tsv +++ b/crates/ui-egui/src/i18n/ka.tsv @@ -5343,6 +5343,7 @@ axis Y Axis Y ღერძი @msg this kind of brush has no options dialog yet ამ ტიპის ფუნჯს პარამეტრების დიალოგი ჯერ არ აქვს Drag art, colors and text styles here to reuse them across documents. Libraries are stored on this machine — no account required. გადმოათრიეთ აქ გრაფიკა, ფერები და ტექსტის სტილები, რომ სხვა დოკუმენტებშიც გამოიყენოთ. ბიბლიოთეკები ამ კომპიუტერზე ინახება — ანგარიში არ არის საჭირო. Choose a filter ფილტრის არჩევა + Clockwise საათის ისრის მიმართულებით Dither დიზერინგი Fine noise hides banding in the gradient fill წვრილი ხმაური მალავს ზოლებს გრადიენტულ შევსებაში @msg `dither` applies to gradient fills (stroke: false) `dither` ვრცელდება გრადიენტულ შევსებებზე (stroke: false) diff --git a/crates/ui-egui/src/i18n/ko.tsv b/crates/ui-egui/src/i18n/ko.tsv index 4ffe9a4d6..4dffd978b 100644 --- a/crates/ui-egui/src/i18n/ko.tsv +++ b/crates/ui-egui/src/i18n/ko.tsv @@ -5006,6 +5006,7 @@ axis Y Axis Y축 Packaged {n} file(s) in {folder} {folder}에 파일 {n}개를 패키지했습니다 Packaged {n} file(s) {note} 파일 {n}개를 패키지했습니다 {note} {count} file(s) in {folder}. Show the package folder? {folder}에 파일 {count}개. 패키지 폴더를 표시하시겠습니까? + Clockwise 시계 방향 Dither 디더 Fine noise hides banding in the gradient fill 미세한 노이즈로 그레이디언트 칠의 띠를 감춥니다 @msg `dither` applies to gradient fills (stroke: false) `dither`는 그레이디언트 칠에 적용됩니다 (stroke: false) diff --git a/crates/ui-egui/src/i18n/nl.tsv b/crates/ui-egui/src/i18n/nl.tsv index d759394a1..95b3239c6 100644 --- a/crates/ui-egui/src/i18n/nl.tsv +++ b/crates/ui-egui/src/i18n/nl.tsv @@ -5441,6 +5441,7 @@ axis Y Axis Y-as Packaged {n} file(s) in {folder} {n} bestand(en) verpakt in {folder} Packaged {n} file(s) {note} {n} bestand(en) verpakt {note} {count} file(s) in {folder}. Show the package folder? {count} bestand(en) in {folder}. De pakketmap openen? + Clockwise Met de klok mee Dither Dither Fine noise hides banding in the gradient fill Fijne ruis verbergt banden in de verloopvulling @msg `dither` applies to gradient fills (stroke: false) `dither` geldt voor verloopvullingen (stroke: false) diff --git a/crates/ui-egui/src/i18n/pl.tsv b/crates/ui-egui/src/i18n/pl.tsv index e3829a80d..bb07cc453 100644 --- a/crates/ui-egui/src/i18n/pl.tsv +++ b/crates/ui-egui/src/i18n/pl.tsv @@ -5279,6 +5279,7 @@ axis Y Axis Oś Y Packaged {n} file(s) in {folder} Spakowane pliki: {n} w {folder} Packaged {n} file(s) {note} Spakowane pliki: {n} {note} {count} file(s) in {folder}. Show the package folder? Pliki: {count} w {folder}. Pokazać folder pakietu? + Clockwise Zgodnie z ruchem wskazówek zegara Dither Rozpraszanie Fine noise hides banding in the gradient fill Drobny szum ukrywa pasy w wypełnieniu gradientem @msg `dither` applies to gradient fills (stroke: false) `dither` dotyczy wypełnień gradientem (stroke: false) diff --git a/crates/ui-egui/src/i18n/pt-br.tsv b/crates/ui-egui/src/i18n/pt-br.tsv index 05cc15d06..8d6860257 100644 --- a/crates/ui-egui/src/i18n/pt-br.tsv +++ b/crates/ui-egui/src/i18n/pt-br.tsv @@ -5344,6 +5344,7 @@ axis Y Axis Eixo Y Packaged {n} file(s) in {folder} {n} arquivo(s) empacotado(s) em {folder} Packaged {n} file(s) {note} {n} arquivo(s) empacotado(s) {note} {count} file(s) in {folder}. Show the package folder? {count} arquivo(s) em {folder}. Mostrar a pasta do pacote? + Clockwise Sentido horário Dither Dither Fine noise hides banding in the gradient fill Um ruído fino esconde as faixas do preenchimento em gradiente @msg `dither` applies to gradient fills (stroke: false) `dither` se aplica a preenchimentos em gradiente (stroke: false) diff --git a/crates/ui-egui/src/i18n/ru.tsv b/crates/ui-egui/src/i18n/ru.tsv index 6cc532951..11b53cdc0 100644 --- a/crates/ui-egui/src/i18n/ru.tsv +++ b/crates/ui-egui/src/i18n/ru.tsv @@ -5039,6 +5039,7 @@ axis Y Axis Ось Y Packaged {n} file(s) in {folder} Упаковано файлов: {n} в {folder} Packaged {n} file(s) {note} Упаковано файлов: {n} {note} {count} file(s) in {folder}. Show the package folder? Файлов: {count} в {folder}. Показать папку пакета? + Clockwise По часовой стрелке Dither Дизеринг Fine noise hides banding in the gradient fill Мелкий шум скрывает полосы в градиентной заливке @msg `dither` applies to gradient fills (stroke: false) `dither` применяется к градиентным заливкам (stroke: false) diff --git a/crates/ui-egui/src/i18n/sv.tsv b/crates/ui-egui/src/i18n/sv.tsv index 2e9d29b49..5516d4c8b 100644 --- a/crates/ui-egui/src/i18n/sv.tsv +++ b/crates/ui-egui/src/i18n/sv.tsv @@ -5383,6 +5383,7 @@ axis Y Axis Y-axel Packaged {n} file(s) in {folder} Paketerade {n} fil(er) i {folder} Packaged {n} file(s) {note} Paketerade {n} fil(er) {note} {count} file(s) in {folder}. Show the package folder? {count} fil(er) i {folder}. Visa paketmappen? + Clockwise Medurs Dither Dithering Fine noise hides banding in the gradient fill Fint brus döljer bandningen i övertoningsfyllningen @msg `dither` applies to gradient fills (stroke: false) `dither` gäller övertoningsfyllningar (stroke: false) diff --git a/crates/ui-egui/src/i18n/tr.tsv b/crates/ui-egui/src/i18n/tr.tsv index ad77e16b6..0f0ee6591 100644 --- a/crates/ui-egui/src/i18n/tr.tsv +++ b/crates/ui-egui/src/i18n/tr.tsv @@ -5391,6 +5391,7 @@ axis Y Axis Y ekseni Packaged {n} file(s) in {folder} {folder} biçiminde paketlenmiş {n} dosyası/dosyaları Packaged {n} file(s) {note} Paketlenmiş {n} dosyası/dosyaları {note} {count} file(s) in {folder}. Show the package folder? {folder} içindeki {count} dosyası/dosyaları. Paket klasörü gösterilsin mi? + Clockwise Saat yönünde Dither Titreme Fine noise hides banding in the gradient fill İnce gürültü, degrade dolgudaki bantları gizler @msg `dither` applies to gradient fills (stroke: false) `dither` degrade dolgulara uygulanır (stroke: false) diff --git a/crates/ui-egui/src/i18n/uk.tsv b/crates/ui-egui/src/i18n/uk.tsv index cb679c4db..8ae57a446 100644 --- a/crates/ui-egui/src/i18n/uk.tsv +++ b/crates/ui-egui/src/i18n/uk.tsv @@ -5023,6 +5023,7 @@ axis Y Axis Вісь Y Packaged {n} file(s) in {folder} Упаковано файли: {n} {folder} Packaged {n} file(s) {note} Упаковано файли: {n} {note} {count} file(s) in {folder}. Show the package folder? файлів: {count} {folder}. Показати папку пакета? + Clockwise За годинниковою стрілкою Dither Дизеринг Fine noise hides banding in the gradient fill Дрібний шум приховує смуги в градієнтній заливці @msg `dither` applies to gradient fills (stroke: false) `dither` застосовується до градієнтних заливок (stroke: false) diff --git a/crates/ui-egui/src/i18n/vi.tsv b/crates/ui-egui/src/i18n/vi.tsv index 9799544b0..74ac99479 100644 --- a/crates/ui-egui/src/i18n/vi.tsv +++ b/crates/ui-egui/src/i18n/vi.tsv @@ -5023,6 +5023,7 @@ axis Y Axis Trục Y Packaged {n} file(s) in {folder} Đã đóng gói {n} tệp trong {folder} Packaged {n} file(s) {note} Đã đóng gói {n} tệp {note} {count} file(s) in {folder}. Show the package folder? {count} tệp trong {folder}. Hiện thư mục gói? + Clockwise Theo chiều kim đồng hồ Dither Dither Fine noise hides banding in the gradient fill Nhiễu mịn che dải màu trong vùng tô chuyển sắc @msg `dither` applies to gradient fills (stroke: false) `dither` áp dụng cho vùng tô chuyển sắc (stroke: false) diff --git a/crates/ui-egui/src/i18n/zh-hans.tsv b/crates/ui-egui/src/i18n/zh-hans.tsv index e7ba7813d..87887fb40 100644 --- a/crates/ui-egui/src/i18n/zh-hans.tsv +++ b/crates/ui-egui/src/i18n/zh-hans.tsv @@ -5267,6 +5267,7 @@ axis Y Axis Y 轴 Packaged {n} file(s) in {folder} 已将 {n} 个文件打包到 {folder} Packaged {n} file(s) {note} 已打包 {n} 个文件 {note} {count} file(s) in {folder}. Show the package folder? {folder} 中有 {count} 个文件。要显示打包文件夹吗? + Clockwise 顺时针 Dither 仿色 Fine noise hides banding in the gradient fill 细微杂色可隐藏渐变填色中的色带 @msg `dither` applies to gradient fills (stroke: false) `dither` 适用于渐变填色 (stroke: false) diff --git a/crates/ui-egui/src/i18n/zh-hant.tsv b/crates/ui-egui/src/i18n/zh-hant.tsv index ca6388033..6407e0bd6 100644 --- a/crates/ui-egui/src/i18n/zh-hant.tsv +++ b/crates/ui-egui/src/i18n/zh-hant.tsv @@ -5062,6 +5062,7 @@ axis Y Axis Y 軸 Packaged {n} file(s) in {folder} 已將 {n} 個檔案封裝到 {folder} Packaged {n} file(s) {note} 已封裝 {n} 個檔案 {note} {count} file(s) in {folder}. Show the package folder? {folder} 中有 {count} 個檔案。要顯示封裝資料夾嗎? + Clockwise 順時針 Dither 仿色 Fine noise hides banding in the gradient fill 細微雜色可隱藏漸層填色中的色帶 @msg `dither` applies to gradient fills (stroke: false) `dither` 適用於漸層填色 (stroke: false)