Brush Options: Tips shows each colorization method on a sample

Scatter, Art and Pattern Brush Options had no Tips button. The
reference app's Brushes page has one for Colorization, with information
and samples about each method.

A Tips button beside Method now opens Colorization Tips. For each
method it shows the name, what the method does, and a sample of the
brush as OK would make it, painted with that method on a blue stroke.
Hue Shift's sample uses the dialog's Key Color. A second click on Tips,
Escape or a click outside the popover closes it, and the dialog field
tips opens it from a command. Screen readers name the button, the
popover and each sample.

In every dialog, Escape with a dropdown list open now closes the list
and leaves the dialog open. Before, it canceled the dialog and
discarded its edits.

The stroke preview and the samples no longer panic when ui.dialog.set
writes a brush definition (__def) that is not a JSON object.

Docs: docs/target-app-parity.md.
This commit is contained in:
dotCooCoo
2026-10-21 23:15:43 +07:00
committed by bflatastic
parent bbd9f51096
commit 5ac70a9b07
28 changed files with 434 additions and 11 deletions
@@ -1,10 +1,12 @@
//! Scatter, Art and Pattern Brush Options: the [`super::brush_options`] of the brushes made of
//! art. Each has the brush's own values, Colorization (Method, and Key Color for Hue Shift, picked
//! from the art's colours) and a live preview of a stroke.
//! from the art's colors), a Tips button beside Method that opens Colorization Tips (what each
//! method does, beside a sample of the brush painted with it) and a live preview of a stroke.
//!
//! Fields (besides `__brush`, `__type` and `name`): `__def` (the brush definition, for the preview),
//! `__colors` (the art's colours, most used first), `colorization` (`none` | `tints` |
//! `tintsAndShades` | `hueShift`), `keyColor` (a colour).
//! `tintsAndShades` | `hueShift`), `keyColor` (a color), `tips` (whether Colorization Tips is
//! open).
//! Scatter: per value (`size`, `spacing`, `scatter` %, `rotation` °) `…Min`, `…Max` and `…Mode`
//! (`fixed` | `random` | `pressure`), `rotationRelativeTo` (`page` | `path`).
//! Art: `width` (%), `scaleMode` (`proportional` | `stretch` | `betweenGuides`), `guideStart` and
@@ -14,12 +16,13 @@
//! `flipAcross`, `__tiles` (slot → preview key, for the tiles the brush has).
use std::hash::{Hash, Hasher};
use std::sync::Arc;
use egui::{Color32, Sense, Stroke, pos2, vec2};
use serde_json::{Map, Value, json};
use vectorcraft_brush::{ArtBrush, ArtScale, Brush, BrushKind, Colorization, Direction, PatternBrush, PatternFit, Scatter, Variation};
use vectorcraft_color::{Color, Paint};
use vectorcraft_doc::{Document, Node};
use vectorcraft_doc::{Appearance, Document, Node, NodeId};
use super::brush_options::{clamped, mode_key, stroke_preview};
use crate::state::Dialog;
@@ -45,6 +48,15 @@ const LABEL_W: f32 = 132.0;
/// Width of the stroke preview.
const PREVIEW_W: f32 = 420.0;
/// The color of the stroke the Colorization Tips samples are painted on.
pub(super) const TIP_STROKE: Color = Color::Rgb { r: 0.18, g: 0.44, b: 0.86 };
/// Size of a Colorization Tips sample.
const TIP_SAMPLE: egui::Vec2 = vec2(120.0, 44.0);
/// Width of the text beside a Colorization Tips sample.
const TIP_TEXT_W: f32 = 250.0;
pub(super) fn heading(ty: &str) -> &'static str {
match ty {
"scatter" => tl!("Scatter Brush Options"),
@@ -197,12 +209,17 @@ pub(super) fn body(ui: &mut egui::Ui, d: &mut Dialog) {
colorization_body(ui, d);
ui.add_space(10.0);
// The brush as OK would make it, on a sample stroke.
let ty = d.str("__type");
stroke_preview(ui, &ty, edited_def(d), vec2(PREVIEW_W, 64.0));
}
/// The brush definition as OK would make it: `__def` with the fields' params.
pub(super) fn edited_def(d: &Dialog) -> Value {
let mut def = d.fields.get("__def").cloned().unwrap_or_default();
if let (Some(o), Value::Object(p)) = (def.as_object_mut(), params(d)) {
o.extend(p);
}
let ty = d.str("__type");
stroke_preview(ui, &ty, def, vec2(PREVIEW_W, 64.0));
def
}
/// A whole-number field (`suffix`: % or °) bound to `d.fields[key]`, kept within `range`.
@@ -376,6 +393,74 @@ fn tiles(ui: &mut egui::Ui, d: &Dialog) {
});
}
/// Colorization Tips: for each method, a sample of the brush as OK would make it, painted with
/// that method on a [`TIP_STROKE`] stroke (Hue Shift with the dialog's Key Color), beside the
/// method's name and what it does. Screen readers call the popover "Colorization Tips" and each
/// sample by its method's name.
fn tips(ui: &mut egui::Ui, d: &Dialog) {
let t = Tokens::get(ui.ctx());
ui.ctx().accesskit_node_builder(ui.unique_id(), |node| {
node.set_role(egui::accesskit::Role::Dialog);
node.set_label(tl!("Colorization Tips"));
});
ui.label(egui::RichText::new(tl!("Colorization Tips")).strong().color(t.text_strong));
ui.label(egui::RichText::new(tl!("The samples show this brush on a blue stroke.")).color(t.text_dim));
ui.add_space(4.0);
let names = [tl!("None"), tl!("Tints"), tl!("Tints and Shades"), tl!("Hue Shift")];
let about = [
tl!("The art keeps its own colors."),
tl!("Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness."),
tl!("Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it."),
tl!("The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness."),
];
let (def, ty, key) = (edited_def(d), d.str("__type"), key_color(d));
for ((id, name), about) in Colorization::IDS.into_iter().zip(names).zip(about) {
let Some(method) = Colorization::parse(id, key) else { continue };
ui.horizontal(|ui| {
tip_sample(ui, &def, &ty, method, name);
ui.vertical(|ui| {
ui.set_width(TIP_TEXT_W);
ui.label(egui::RichText::new(name).strong().color(t.text_strong));
ui.label(egui::RichText::new(about).color(t.text));
});
});
ui.add_space(4.0);
}
}
/// A Colorization Tips sample: [`tip_doc`] on white, which screen readers call `name`.
fn tip_sample(ui: &mut egui::Ui, def: &Value, ty: &str, method: Colorization, name: &str) {
let t = Tokens::get(ui.ctx());
let (r, resp) = ui.allocate_exact_size(TIP_SAMPLE, Sense::hover());
ui.painter().rect_filled(r, 0.0, Color32::WHITE);
let key = format!("brush-tip:{}:{def}", json!(method));
if let Some(tex) = widgets::doc_preview(ui, &key, r.size(), |w, h| tip_doc(def, ty, method, w, h)) {
ui.painter().image(tex.id(), r, egui::Rect::from_min_max(pos2(0.0, 0.0), pos2(1.0, 1.0)), Color32::WHITE);
}
ui.painter().rect_stroke(r, 0.0, Stroke::new(1.0, t.input_border), egui::StrokeKind::Inside);
resp.widget_info(|| egui::WidgetInfo::labeled(egui::WidgetType::Image, true, name));
}
/// A document of `w` × `h` showing brush definition `def` (of type `ty`) with colorization
/// `method`, drawn by [`vectorcraft_brush::stroke_pieces`] along a gentle S-curve stroked
/// [`TIP_STROKE`] 1 pt wide, and scaled to fit, centered.
pub(super) fn tip_doc(def: &Value, ty: &str, method: Colorization, w: f64, h: f64) -> Option<Document> {
let mut def = match def {
Value::Object(o) => o.clone(),
_ => Map::new(),
};
def.insert("name".into(), json!("tip"));
def.insert("type".into(), json!(ty));
def.insert("colorization".into(), serde_json::to_value(method).ok()?);
let brush: Brush = serde_json::from_value(Value::Object(def)).ok()?;
let ap = Appearance::basic(Paint::None, Paint::solid(TIP_STROKE), 1.0);
let mut bp = vectorcraft_geom::BezPath::new();
bp.move_to((0.0, 20.0));
bp.curve_to((35.0, 6.0), (65.0, 34.0), (100.0, 20.0));
let pieces = vectorcraft_brush::stroke_pieces(&Document::new(w, h), &brush, &bp, ap.stroke()?);
tile_doc(&Node::group(NodeId(0), pieces.into_iter().map(Arc::new).collect()), w, h)
}
/// A document of `w` × `h` showing `art` scaled to fit, centred.
fn tile_doc(art: &Node, w: f64, h: f64) -> Option<Document> {
let b = art.visual_bounds().or_else(|| art.geometric_bounds())?;
@@ -405,6 +490,14 @@ fn colorization_body(ui: &mut egui::Ui, d: &mut Dialog) {
{
d.fields.insert("colorization".into(), json!(id));
}
// Tips opens and closes Colorization Tips; Escape and a click outside it close it too.
ui.add_space(6.0);
let button = widgets::flat_button(ui, tl!("Tips"), 64.0);
let mut open = d.bool("tips") != button.clicked();
egui::Popup::from_response(&button).open_bool(&mut open).close_behavior(egui::PopupCloseBehavior::CloseOnClickOutside).show(|ui| tips(ui, d));
if open != d.bool("tips") {
d.fields.insert("tips".into(), json!(open));
}
});
// Hue Shift's key colour: the art colour that becomes the stroke colour.
let colors: Vec<Color> = d.fields.get("__colors").and_then(|v| serde_json::from_value(v.clone()).ok()).unwrap_or_default();
+169 -4
View File
@@ -200,6 +200,12 @@ pub(super) fn clamped(d: &Dialog, key: &str, (lo, hi): (f64, f64)) -> f64 {
d.f64(key, lo).clamp(lo, hi)
}
/// Is `d` Scatter, Art or Pattern Brush Options with Colorization Tips open? Escape then closes
/// Tips, not the dialog.
pub(crate) fn tips_open(d: &Dialog) -> bool {
d.kind == KIND && d.bool("tips") && !matches!(d.str("__type").as_str(), "bristle" | "calligraphic")
}
/// The Calligraphic brush the fields describe.
fn calligraphic(d: &Dialog) -> Calligraphic {
let value = |i: usize| CALLI.get(i).zip(Calligraphic::RANGES.get(i)).map_or(0.0, |((key, ..), r)| clamped(d, key, *r));
@@ -286,11 +292,15 @@ fn bristle_body(app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) {
}
/// A stroke painted with the brush the fields describe (type `ty`, definition fields `def`).
pub(super) fn stroke_preview(ui: &mut egui::Ui, ty: &str, mut def: Value, size: egui::Vec2) {
def["name"] = json!("preview");
def["type"] = json!(ty);
pub(super) fn stroke_preview(ui: &mut egui::Ui, ty: &str, def: Value, size: egui::Vec2) {
let mut def = match def {
Value::Object(o) => o,
_ => Map::new(),
};
def.insert("name".into(), json!("preview"));
def.insert("type".into(), json!(ty));
let (r, _) = ui.allocate_exact_size(size, Sense::hover());
crate::panels::brushes::chip(ui, r, &def);
crate::panels::brushes::chip(ui, r, &Value::Object(def));
ui.painter().rect_stroke(r, 0.0, Stroke::new(1.0, Tokens::get(ui.ctx()).input_border), egui::StrokeKind::Inside);
}
@@ -524,6 +534,161 @@ mod tests {
assert_eq!(app.run("brush.get", json!({"name": "Arrow"})).unwrap()["scale"], json!({"mode": "stretch"}));
}
/// A context with the app's fonts and theme, for [`frame`].
fn ctx() -> egui::Context {
let ctx = egui::Context::default();
crate::theme::install_fonts(&ctx);
crate::theme::apply(&ctx, Default::default());
ctx
}
/// Runs one 1200 × 900 frame with `events` through the app's key handling and the dialogs, and
/// returns the center of the text `label` if the frame shows it.
fn frame(ctx: &egui::Context, app: &mut VectorcraftApp, events: Vec<egui::Event>, label: &str) -> Option<egui::Pos2> {
use egui::{Pos2, Rect};
let raw = egui::RawInput { screen_rect: Some(Rect::from_min_size(Pos2::ZERO, vec2(1200.0, 900.0))), events, ..Default::default() };
let mut out = ctx.run_ui(raw, |ui| {
crate::shortcuts::handle(app, ui.ctx());
super::super::show(app, ui.ctx());
});
out.textures_delta.clear();
out.shapes.iter().find_map(|s| match &s.shape {
egui::Shape::Text(t) if t.galley.text() == label => Some(egui::Rect::from_min_size(t.pos, t.galley.size()).center()),
_ => None,
})
}
/// Clicks the text `label` the open dialog shows.
fn click_text(ctx: &egui::Context, app: &mut VectorcraftApp, label: &str) {
use egui::{Event, PointerButton};
frame(ctx, app, vec![], label);
let at = frame(ctx, app, vec![], label).unwrap_or_else(|| panic!("no {label:?} shown"));
let button = |pressed| Event::PointerButton { pos: at, button: PointerButton::Primary, pressed, modifiers: Default::default() };
frame(ctx, app, vec![Event::PointerMoved(at), button(true)], label);
frame(ctx, app, vec![button(false)], label);
frame(ctx, app, vec![], label);
}
/// Presses Escape.
fn escape(ctx: &egui::Context, app: &mut VectorcraftApp) {
let key = egui::Event::Key { key: egui::Key::Escape, physical_key: None, pressed: true, repeat: false, modifiers: Default::default() };
frame(ctx, app, vec![key], "");
frame(ctx, app, vec![], "");
}
/// Scatter, Art and Pattern Brush Options have a Tips button beside Method. A click on it opens
/// Colorization Tips, which names each method and what it does beside a sample of the brush,
/// and a second click closes it. Screen readers name the button, the popover and each sample.
#[test]
fn tips_names_each_colorization_method_beside_a_sample() {
use crate::widgets::accessibility_tests::{role_and_state, tree};
use egui::accesskit::Role;
let mut app = app();
for name in ["Confetti", "Arrow", "Chain"] {
app.run("ui.brushOptions", json!({ "name": name })).unwrap();
let text = shown(&mut app);
assert!(text.lines().any(|l| l == "Tips") && !text.contains("Colorization Tips"), "{name}: {text}");
}
app.run("ui.brushOptions", json!({"name": "Confetti"})).unwrap();
let ctx = ctx();
click_text(&ctx, &mut app, "Tips");
assert!(app.ui.dialog.as_ref().unwrap().bool("tips"), "Tips opens Colorization Tips");
let text = shown(&mut app);
for label in [
"Colorization Tips",
"The samples show this brush on a blue stroke.",
"None",
"The art keeps its own colors.",
"Tints",
"Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness.",
"Tints and Shades",
"Hue Shift",
"The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness.",
"Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it.",
] {
assert!(text.contains(label), "{label} in {text}");
}
let nodes = tree(|ui| super::super::show(&mut app, ui.ctx()));
assert_eq!(role_and_state(&nodes, "Tips").0, Role::Button);
assert_eq!(role_and_state(&nodes, "Colorization Tips").0, Role::Dialog);
for method in ["None", "Tints", "Tints and Shades", "Hue Shift"] {
assert!(nodes.iter().any(|n| n.role() == Role::Image && n.label() == Some(method)), "a sample named {method}");
}
click_text(&ctx, &mut app, "Tips");
assert!(!app.ui.dialog.as_ref().unwrap().bool("tips"), "a second click closes it");
assert!(!shown(&mut app).contains("Colorization Tips"));
// `ui.dialog.set {field: "tips", value: true}` opens it too.
set(&mut app, json!({"tips": true}));
assert!(shown(&mut app).contains("Colorization Tips"));
}
/// Escape with Colorization Tips or the Method list open closes only that: Brush Options stays
/// open with its edits, and the next Escape cancels it.
#[test]
fn escape_closes_tips_or_the_method_list_and_leaves_the_dialog_open() {
let (mut app, ctx) = (app(), ctx());
app.run("ui.brushOptions", json!({"name": "Confetti"})).unwrap();
set(&mut app, json!({"colorization": "tints"}));
click_text(&ctx, &mut app, "Tips");
assert!(app.ui.dialog.as_ref().unwrap().bool("tips"));
escape(&ctx, &mut app);
let d = app.ui.dialog.as_ref().expect("Escape closes Tips, not Brush Options");
assert!(!d.bool("tips") && d.str("colorization") == "tints");
assert!(frame(&ctx, &mut app, vec![], "Colorization Tips").is_none());
click_text(&ctx, &mut app, "Tints");
assert!(egui::Popup::is_any_open(&ctx), "the Method list is open");
escape(&ctx, &mut app);
assert!(app.ui.dialog.as_ref().is_some_and(|d| d.str("colorization") == "tints"), "Escape closes the list, not Brush Options");
assert!(!egui::Popup::is_any_open(&ctx));
escape(&ctx, &mut app);
assert!(app.ui.dialog.is_none(), "the next Escape cancels Brush Options");
// Calligraphic Brush Options has no Tips: with `tips` set, Escape still cancels it.
app.run("ui.brushOptions", json!({"name": "6 pt. Flat"})).unwrap();
set(&mut app, json!({"tips": true}));
escape(&ctx, &mut app);
assert!(app.ui.dialog.is_none(), "Escape cancels Calligraphic Brush Options");
}
/// Each Colorization Tips sample paints the brush with its own method on the blue stroke:
/// Confetti's black and gray art keeps its colors with None, its black becomes the stroke color
/// with Tints and with Hue Shift (black is its key color), and stays black with Tints and Shades.
#[test]
fn each_tips_sample_paints_the_brush_with_its_method() {
let mut app = app();
app.run("ui.brushOptions", json!({"name": "Confetti"})).unwrap();
let d = app.ui.dialog.as_ref().unwrap();
let key: vectorcraft_color::Color = serde_json::from_value(d.fields["keyColor"].clone()).unwrap();
let colors = |id: &str| -> Vec<String> {
let method = vectorcraft_brush::Colorization::parse(id, key).unwrap();
let doc = brush_art_options::tip_doc(&brush_art_options::edited_def(d), "scatter", method, 120.0, 44.0).unwrap();
let mut hex: Vec<String> = vectorcraft_brush::art_colors(doc.layers.iter().map(|l| l.as_ref())).iter().map(|c| c.to_hex()).collect();
hex.sort();
hex
};
let (black, blue) = ("#000000".to_string(), brush_art_options::TIP_STROKE.to_hex());
let confetti = vectorcraft_brush::defaults().iter().find(|b| b.name == "Confetti").unwrap();
let art: Vec<String> = vectorcraft_brush::art_colors(confetti.art()).iter().map(|c| c.to_hex()).collect();
let none = colors("none");
assert!(none.len() == 2 && art.iter().all(|c| none.contains(c)), "None keeps the art's colors {art:?}: {none:?}");
let (tints, shades, hue) = (colors("tints"), colors("tintsAndShades"), colors("hueShift"));
assert!(tints.contains(&blue) && !tints.contains(&black), "{tints:?}");
assert!(shades.contains(&black) && !shades.contains(&blue), "{shades:?}");
assert!(hue.contains(&blue) && !hue.contains(&black), "{hue:?}");
assert!(tints != hue && tints != shades && none != shades, "four different samples");
}
/// `ui.dialog.set` writes any field, `__def` included. With a brush definition that is not
/// an object, Brush Options and Colorization Tips still draw.
#[test]
fn a_brush_definition_that_is_not_an_object_still_draws() {
let (mut app, ctx) = (app(), ctx());
app.run("ui.brushOptions", json!({"name": "Confetti"})).unwrap();
crate::tests_synthetic::control(&mut app, &ctx, "ui.dialog.set", json!({"field": "__def", "value": 5}));
crate::tests_synthetic::control(&mut app, &ctx, "ui.dialog.set", json!({"field": "tips", "value": true}));
let text = shown(&mut app);
assert!(text.contains("Scatter Brush Options") && text.contains("Colorization Tips"), "{text}");
}
#[test]
fn pattern_options_show_the_tiles_and_set_scale_spacing_fit() {
let mut app = app();
+7
View File
@@ -1882,6 +1882,13 @@
Tints and Shades Оттенъци и нюанси
Hue Shift Промяна на нюанса
Key Color: Основен цвят:
Tips Съвети
Colorization Tips Съвети за оцветяване
The samples show this brush on a blue stroke. Образците показват тази четка върху син щрих.
The art keeps its own colors. Графиката запазва собствените си цветове.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Черното става цвят на щриха, а бялото остава бяло. Другите цветове стават оттенъци на цвета на щриха и колкото по-светъл е един цвят, толкова по-светъл е оттенъкът му.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Черното остава черно, а бялото остава бяло. Другите цветове стават тъмни нюанси на цвета на щриха, когато са тъмни, и негови оттенъци, когато са светли.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Основният цвят става цвят на щриха. Другите цветове се завъртат по цветовото колело толкова, колкото и основният цвят, и запазват насищането и яркостта си.
Roundness: Закръгленост:
Fixed Фиксирано
Pressure Натиск
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -2041,6 +2041,13 @@ lighting Light Světlo
Tints and Shades Světlé a tmavé tóny
Hue Shift Posun odstínu
Key Color: Klíčová barva:
Tips Tipy
Colorization Tips Tipy k obarvení
The samples show this brush on a blue stroke. Ukázky zobrazují tento štětec na modrém tahu.
The art keeps its own colors. Kresba si ponechá své vlastní barvy.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Černá se změní na barvu tahu a bílá zůstane bílá. Ostatní barvy se změní na světlé tóny barvy tahu, a čím je barva světlejší, tím světlejší je její tón.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Černá zůstane černá a bílá zůstane bílá. Ostatní barvy se změní na tmavé tóny barvy tahu, když jsou tmavé, a na její světlé tóny, když jsou světlé.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Klíčová barva se změní na barvu tahu. Ostatní barvy se posunou po barevném kruhu o stejný úhel jako klíčová barva a zachovají si sytost a jas.
Size: Velikost:
Calligraphic Brush Options Možnosti kaligrafického štětce
Bristle Brush Options Možnosti štětinového štětce
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -1856,6 +1856,13 @@ lighting Light Lys
Tints and Shades Nuancer og skygger
Hue Shift Farvetoneskift
Key Color: Nøglefarve:
Tips Tips
Colorization Tips Tips om farvelægning
The samples show this brush on a blue stroke. Eksemplerne viser denne pensel på en blå streg.
The art keeps its own colors. Grafikken beholder sine egne farver.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Sort bliver stregfarven, og hvid forbliver hvid. Andre farver bliver nuancer af stregfarven, og jo lysere en farve er, desto lysere er dens nuance.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Sort forbliver sort, og hvid forbliver hvid. Andre farver bliver skygger af stregfarven, når de er mørke, og nuancer af den, når de er lyse.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Nøglefarven bliver stregfarven. De andre farver flytter sig lige så langt rundt i farvehjulet som nøglefarven og beholder deres mætning og lysstyrke.
Size: Størrelse:
Calligraphic Brush Options Indstillinger for kalligrafipensel
Bristle Brush Options Indstillinger for børstepensel
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -4455,6 +4455,13 @@ theme Appearance Erscheinungsbild
Tints Farbtöne
Tints and Shades Farbtöne und Schattierungen
Hue Shift Farbtonverschiebung
Tips Tipps
Colorization Tips Tipps zur Färbung
The samples show this brush on a blue stroke. Die Beispiele zeigen diesen Pinsel auf einer blauen Kontur.
The art keeps its own colors. Die Grafik behält ihre eigenen Farben.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Schwarz wird zur Konturfarbe und Weiß bleibt weiß. Andere Farben werden zu Farbtönen der Konturfarbe, und je heller eine Farbe ist, desto heller ist ihr Farbton.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Schwarz bleibt schwarz und Weiß bleibt weiß. Andere Farben werden zu Schattierungen der Konturfarbe, wenn sie dunkel sind, und zu Farbtönen davon, wenn sie hell sind.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Die Hauptfarbe wird zur Konturfarbe. Die anderen Farben wandern ebenso weit um den Farbkreis wie die Hauptfarbe und behalten ihre Sättigung und Helligkeit.
RGB: RGB:
CMYK: CMYK:
# PSD files (opened and placed as their merged image).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -2632,6 +2632,13 @@ theme Appearance Εμφάνιση
Tints and Shades Αποχρώσεις και σκιάσεις
Hue Shift Μετατόπιση απόχρωσης
Key Color: Βασικό χρώμα:
Tips Συμβουλές
Colorization Tips Συμβουλές χρωματισμού
The samples show this brush on a blue stroke. Τα δείγματα δείχνουν αυτό το πινέλο σε μπλε περίγραμμα.
The art keeps its own colors. Το σχέδιο διατηρεί τα δικά του χρώματα.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Το μαύρο γίνεται το χρώμα του περιγράμματος και το λευκό μένει λευκό. Τα άλλα χρώματα γίνονται αποχρώσεις του χρώματος του περιγράμματος, και όσο πιο ανοιχτό είναι ένα χρώμα, τόσο πιο ανοιχτή είναι η απόχρωσή του.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Το μαύρο μένει μαύρο και το λευκό μένει λευκό. Τα άλλα χρώματα γίνονται σκιάσεις του χρώματος του περιγράμματος όταν είναι σκούρα και αποχρώσεις του όταν είναι ανοιχτά.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Το βασικό χρώμα γίνεται το χρώμα του περιγράμματος. Τα άλλα χρώματα μετακινούνται στον χρωματικό τροχό όσο και το βασικό χρώμα και διατηρούν τον κορεσμό και τη φωτεινότητά τους.
Bristle Length: Μήκος τριχών:
Bristle Density: Πυκνότητα τριχών:
Bristle Thickness: Πάχος τριχών:
Can't render this file because it contains an unexpected character in line 2029 and column 19.
+7
View File
@@ -1932,6 +1932,13 @@
Tints and Shades Matices y sombras
Hue Shift Cambio de tono
Key Color: Color clave:
Tips Consejos
Colorization Tips Consejos de coloración
The samples show this brush on a blue stroke. Las muestras presentan este pincel sobre un trazo azul.
The art keeps its own colors. La ilustración conserva sus propios colores.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. El negro pasa a ser el color del trazo y el blanco sigue siendo blanco. Los demás colores pasan a ser matices del color del trazo, y cuanto más claro es un color, más claro es su matiz.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. El negro sigue siendo negro y el blanco sigue siendo blanco. Los demás colores pasan a ser sombras del color del trazo cuando son oscuros y matices de él cuando son claros.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. El color clave pasa a ser el color del trazo. Los demás colores giran en la rueda de colores lo mismo que el color clave y conservan su saturación y su brillo.
Roundness: Redondez:
Fixed Fijo
Pressure Presión
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -2002,6 +2002,13 @@ lighting Light Valo
Tints and Shades Vaaleat ja tummat sävyt
Hue Shift Sävynsiirto
Key Color: Avainväri:
Tips Vinkit
Colorization Tips Värityksen vinkit
The samples show this brush on a blue stroke. Näytteissä tämä sivellin on sinisellä viivalla.
The art keeps its own colors. Kuvitus säilyttää omat värinsä.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Mustasta tulee viivan väri, ja valkoinen pysyy valkoisena. Muista väreistä tulee viivan värin vaaleita sävyjä, ja mitä vaaleampi väri on, sitä vaaleampi on sen sävy.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Musta pysyy mustana, ja valkoinen pysyy valkoisena. Tummista väreistä tulee viivan värin tummia sävyjä ja vaaleista sen vaaleita sävyjä.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Avainväristä tulee viivan väri. Muut värit siirtyvät väriympyrällä yhtä paljon kuin avainväri ja säilyttävät kylläisyytensä ja kirkkautensa.
Size: Koko:
Calligraphic Brush Options Kalligrafisen siveltimen asetukset
Bristle Brush Options Harjassiveltimen asetukset
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -1928,6 +1928,13 @@
Tints Teintes
Tints and Shades Teintes et ombres
Hue Shift Décalage de teinte
Tips Conseils
Colorization Tips Conseils de colorisation
The samples show this brush on a blue stroke. Les exemples montrent cette forme sur un contour bleu.
The art keeps its own colors. L’illustration garde ses propres couleurs.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Le noir devient la couleur du contour et le blanc reste blanc. Les autres couleurs deviennent des teintes de la couleur du contour, et plus une couleur est claire, plus sa teinte est claire.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Le noir reste noir et le blanc reste blanc. Les autres couleurs deviennent des ombres de la couleur du contour quand elles sont foncées et des teintes de celle-ci quand elles sont claires.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. La couleur clé devient la couleur du contour. Les autres couleurs tournent sur le cercle chromatique autant que la couleur clé et gardent leur saturation et leur luminosité.
Key Color: Couleur clé :
Roundness: Arrondi :
Fixed Fixe
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -3941,6 +3941,13 @@ mark-style Japanese Japán
Tint Tónus
Tints Tónusok
Tints and Shades Tónusok és árnyalatok
Tips Tippek
Colorization Tips Színezési tippek
The samples show this brush on a blue stroke. A minták ezt az ecsetet kék körvonalon mutatják.
The art keeps its own colors. A grafika megtartja a saját színeit.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. A fekete a körvonal színévé válik, a fehér pedig fehér marad. A többi szín a körvonalszín tónusává válik, és minél világosabb egy szín, annál világosabb a tónusa.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. A fekete fekete marad, a fehér pedig fehér marad. A többi szín a körvonalszín sötét árnyalatává válik, ha sötét, és a tónusává, ha világos.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. A kulcsszín a körvonal színévé válik. A többi szín ugyanannyit fordul el a színkörön, mint a kulcsszín, és megtartja a telítettségét és a fényességét.
Tiny Lens Apró lencsék
Tip extends past the end point A hegy túlnyúlik a végponton
Tip on the end point A hegy a végponton van
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -1856,6 +1856,13 @@ lighting Light Cahaya
Tints and Shades Tint dan shade
Hue Shift Pergeseran rona
Key Color: Warna kunci:
Tips Kiat
Colorization Tips Kiat pewarnaan
The samples show this brush on a blue stroke. Contoh menampilkan kuas ini pada stroke biru.
The art keeps its own colors. Karya seni mempertahankan warnanya sendiri.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Hitam menjadi warna stroke dan putih tetap putih. Warna lain menjadi tint dari warna stroke, dan makin terang suatu warna, makin terang tint-nya.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Hitam tetap hitam dan putih tetap putih. Warna lain menjadi shade dari warna stroke jika gelap dan tint darinya jika terang.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Warna kunci menjadi warna stroke. Warna lain bergeser di roda warna sejauh warna kunci bergeser dan mempertahankan saturasi serta kecerahannya.
Size: Ukuran:
Calligraphic Brush Options Opsi kuas kaligrafi
Bristle Brush Options Opsi kuas bristle
1 # Indonesian (id) catalog. Same format as zh-hant.tsv: context <TAB> source <TAB> translation
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
+7
View File
@@ -1959,6 +1959,13 @@ file-filter Templates Modelli
Tints and Shades Tinte e ombre
Hue Shift Variazione tonalità
Key Color: Colore chiave:
Tips Suggerimenti
Colorization Tips Suggerimenti sulla colorazione
The samples show this brush on a blue stroke. Gli esempi mostrano questo pennello su una traccia blu.
The art keeps its own colors. La grafica mantiene i propri colori.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Il nero diventa il colore della traccia e il bianco resta bianco. Gli altri colori diventano tinte del colore della traccia, e più un colore è chiaro, più è chiara la sua tinta.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Il nero resta nero e il bianco resta bianco. Gli altri colori diventano ombre del colore della traccia quando sono scuri e tinte di esso quando sono chiari.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Il colore chiave diventa il colore della traccia. Gli altri colori ruotano sulla ruota dei colori quanto il colore chiave e mantengono la loro saturazione e luminosità.
Roundness: Rotondità:
Fixed Fisso
Pressure Pressione
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -2074,6 +2074,13 @@
Tints and Shades 淡彩と陰影
Hue Shift 色相シフト
Key Color: キーカラー:
Tips ヒント
Colorization Tips 着色のヒント
The samples show this brush on a blue stroke. サンプルは、このブラシを青い線に適用した状態を表示します。
The art keeps its own colors. アートは元のカラーのままです。
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. 黒は線のカラーになり、白は白のままです。その他のカラーは線のカラーの淡彩になり、明るいカラーほど明るい淡彩になります。
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. 黒は黒のまま、白は白のままです。その他のカラーは、暗い場合は線のカラーの陰影に、明るい場合は淡彩になります。
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. キーカラーが線のカラーになります。その他のカラーはキーカラーと同じだけカラーホイール上を移動し、彩度と明るさは保たれます。
Roundness: 真円率:
Fixed 固定
Pressure 筆圧
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -1755,6 +1755,13 @@ lighting Light სინათლე
Tints and Shades ტონირებები და ჩრდილები
Hue Shift ფერის ტონის წანაცვლება
Key Color: საკვანძო ფერი:
Tips რჩევები
Colorization Tips შეფერადების რჩევები
The samples show this brush on a blue stroke. ნიმუშები ამ ფუნჯს ლურჯ კონტურზე აჩვენებს.
The art keeps its own colors. ნახატი საკუთარ ფერებს ინარჩუნებს.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. შავი კონტურის ფერი ხდება, თეთრი კი თეთრად რჩება. სხვა ფერები კონტურის ფერის ტონირებები ხდება და რაც უფრო ღიაა ფერი, მით უფრო ღიაა მისი ტონირება.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. შავი შავად რჩება, თეთრი კი თეთრად რჩება. სხვა ფერები კონტურის ფერის ჩრდილები ხდება, თუ მუქია, და მისი ტონირებები, თუ ღიაა.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. საკვანძო ფერი კონტურის ფერი ხდება. სხვა ფერები ფერთა წრეზე იმდენივეს გადაინაცვლებს, რამდენსაც საკვანძო ფერი, და ინარჩუნებს გაჯერებასა და სიკაშკაშეს.
Size: ზომა:
Calligraphic Brush Options კალიგრაფიული ფუნჯის პარამეტრები
Bristle Brush Options ჯაგრის ფუნჯის პარამეტრები
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -2069,6 +2069,13 @@
Tints and Shades 틴트와 셰이드
Hue Shift 색조 이동
Key Color: 키 색상:
Tips 팁
Colorization Tips 색상화 팁
The samples show this brush on a blue stroke. 샘플은 이 브러시를 파란색 선에 적용한 모습을 보여 줍니다.
The art keeps its own colors. 아트웍은 원래 색상을 유지합니다.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. 검정은 선 색상이 되고 흰색은 흰색으로 남습니다. 다른 색상은 선 색상의 틴트가 되며, 색상이 밝을수록 틴트도 밝아집니다.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. 검정은 검정으로 남고 흰색은 흰색으로 남습니다. 다른 색상은 어두우면 선 색상의 셰이드가 되고 밝으면 틴트가 됩니다.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. 키 색상은 선 색상이 됩니다. 다른 색상은 키 색상과 같은 만큼 색상환에서 이동하며 채도와 밝기를 유지합니다.
Roundness: 원형률:
Fixed 고정
Pressure 필압
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -1870,6 +1870,13 @@ lighting Light Licht
Tints and Shades Tinten en schakeringen
Hue Shift Tintverschuiving
Key Color: Sleutelkleur:
Tips Tips
Colorization Tips Tips voor inkleuring
The samples show this brush on a blue stroke. De voorbeelden tonen dit penseel op een blauwe contour.
The art keeps its own colors. De illustratie behoudt haar eigen kleuren.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Zwart wordt de contourkleur en wit blijft wit. Andere kleuren worden tinten van de contourkleur, en hoe lichter een kleur is, hoe lichter de tint is.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Zwart blijft zwart en wit blijft wit. Andere kleuren worden schakeringen van de contourkleur als ze donker zijn en tinten ervan als ze licht zijn.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. De sleutelkleur wordt de contourkleur. De andere kleuren draaien even ver over de kleurencirkel als de sleutelkleur en behouden hun verzadiging en helderheid.
Size: Grootte:
Calligraphic Brush Options Opties voor kalligrafisch penseel
Bristle Brush Options Opties voor borstelpenseel
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -1957,6 +1957,13 @@ lighting Light Światło
Tints and Shades Tinty i odcienie
Hue Shift Przesunięcie barwy
Key Color: Kolor kluczowy:
Tips Wskazówki
Colorization Tips Wskazówki dotyczące koloryzacji
The samples show this brush on a blue stroke. Próbki pokazują ten pędzel na niebieskim obrysie.
The art keeps its own colors. Kompozycja zachowuje własne kolory.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Czarny staje się kolorem obrysu, a biały pozostaje biały. Pozostałe kolory stają się tintami koloru obrysu, a im jaśniejszy jest kolor, tym jaśniejsza jest jego tinta.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Czarny pozostaje czarny, a biały pozostaje biały. Pozostałe kolory stają się ciemnymi odcieniami koloru obrysu, gdy są ciemne, i jego tintami, gdy są jasne.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Kolor kluczowy staje się kolorem obrysu. Pozostałe kolory przesuwają się po kole barw o tyle samo co kolor kluczowy i zachowują nasycenie oraz jasność.
Size: Rozmiar:
Calligraphic Brush Options Opcje pędzla kaligraficznego
Bristle Brush Options Opcje pędzla włosiankowego
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -3195,6 +3195,13 @@ lighting Light Luz
Tints and Shades Matizes e sombras
Hue Shift Deslocamento de matiz
Key Color: Cor-chave:
Tips Dicas
Colorization Tips Dicas de colorização
The samples show this brush on a blue stroke. As amostras mostram este pincel em um traçado azul.
The art keeps its own colors. A arte mantém as próprias cores.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. O preto passa a ser a cor do traçado e o branco continua branco. As outras cores passam a ser matizes da cor do traçado, e quanto mais clara é uma cor, mais claro é o seu matiz.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. O preto continua preto e o branco continua branco. As outras cores passam a ser sombras da cor do traçado quando são escuras e matizes dela quando são claras.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. A cor-chave passa a ser a cor do traçado. As outras cores giram na roda de cores tanto quanto a cor-chave e mantêm a saturação e o brilho.
Shape: Forma:
New Artboard Options… Opções de nova mesa de trabalho…
New Layer Options… Opções de nova camada…
Can't render this file because it contains an unexpected character in line 6 and column 47.
+7
View File
@@ -1955,6 +1955,13 @@ file-filter Templates Шаблоны
Tints and Shades Оттенки и тени
Hue Shift Сдвиг тона
Key Color: Ключевой цвет:
Tips Советы
Colorization Tips Советы по перекрашиванию
The samples show this brush on a blue stroke. Образцы показывают эту кисть на синей обводке.
The art keeps its own colors. Рисунок сохраняет собственные цвета.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Чёрный становится цветом обводки, а белый остаётся белым. Остальные цвета становятся оттенками цвета обводки, и чем светлее цвет, тем светлее его оттенок.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Чёрный остаётся чёрным, а белый остаётся белым. Остальные цвета становятся тенями цвета обводки, если они тёмные, и его оттенками, если они светлые.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Ключевой цвет становится цветом обводки. Остальные цвета сдвигаются по цветовому кругу на столько же, на сколько ключевой цвет, и сохраняют насыщенность и яркость.
Roundness: Округлость:
Fixed Фиксированный
Pressure Нажим
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -1882,6 +1882,13 @@
Tints and Shades Ljusare och mörkare toner
Hue Shift Nyansförskjutning
Key Color: Nyckelfärg:
Tips Tips
Colorization Tips Tips om färgläggning
The samples show this brush on a blue stroke. Exemplen visar den här penseln på en blå kontur.
The art keeps its own colors. Grafiken behåller sina egna färger.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Svart blir konturfärgen och vitt förblir vitt. Andra färger blir ljusare toner av konturfärgen, och ju ljusare en färg är, desto ljusare är dess ton.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Svart förblir svart och vitt förblir vitt. Andra färger blir mörkare toner av konturfärgen när de är mörka och ljusare toner av den när de är ljusa.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Nyckelfärgen blir konturfärgen. De andra färgerna flyttas lika långt runt färghjulet som nyckelfärgen och behåller sin mättnad och ljusstyrka.
Roundness: Rundhet:
Fixed Fast
Pressure Tryck
Can't render this file because it contains an unexpected character in line 5 and column 25.
+7
View File
@@ -1951,6 +1951,13 @@ file-filter Templates Шаблони
Tints and Shades Відтінки й тіні
Hue Shift Зсув тону
Key Color: Ключовий колір:
Tips Поради
Colorization Tips Поради щодо перефарбування
The samples show this brush on a blue stroke. Зразки показують цей пензель на синьому обведенні.
The art keeps its own colors. Малюнок зберігає власні кольори.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Чорний стає кольором обведення, а білий залишається білим. Інші кольори стають відтінками кольору обведення, і що світліший колір, то світліший його відтінок.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Чорний залишається чорним, а білий залишається білим. Інші кольори стають тінями кольору обведення, якщо вони темні, і його відтінками, якщо вони світлі.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Ключовий колір стає кольором обведення. Інші кольори зсуваються по колірному колу на стільки ж, на скільки ключовий колір, і зберігають насиченість та яскравість.
Roundness: Округлість:
Fixed Фіксований
Pressure Натиск
Can't render this file because it contains an unexpected character in line 726 and column 40.
+7
View File
@@ -3642,6 +3642,13 @@ mark-style Japanese Kiểu Nhật
Tint Tông màu
Tints Sắc pha
Tints and Shades Sắc pha và bóng
Tips Mẹo
Colorization Tips Mẹo tô màu
The samples show this brush on a blue stroke. Các mẫu hiển thị cọ này trên một nét màu xanh lam.
The art keeps its own colors. Hình vẽ giữ nguyên màu của nó.
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Màu đen trở thành màu nét và màu trắng vẫn là màu trắng. Các màu khác trở thành sắc pha của màu nét, và màu càng sáng thì sắc pha càng sáng.
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Màu đen vẫn là màu đen và màu trắng vẫn là màu trắng. Các màu khác trở thành bóng của màu nét khi chúng tối và sắc pha của màu nét khi chúng sáng.
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Màu chủ trở thành màu nét. Các màu khác dịch chuyển trên bánh xe màu một khoảng bằng màu chủ và giữ nguyên độ bão hòa và độ sáng.
Tiny Lens Thấu kính nhỏ
Tip extends past the end point Đầu mũi tên vượt qua điểm cuối
Tip on the end point Đầu mũi tên tại điểm cuối
1 # Vietnamese (vi) catalog. Same format as zh-hant.tsv: context <TAB> source <TAB> translation
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
+7
View File
@@ -4560,6 +4560,13 @@ imageTrace Outline 轮廓
Scale Tints 缩放淡色
Tints and Shades 淡色和阴影
Hue Shift 色相偏移
Tips 提示
Colorization Tips 着色提示
The samples show this brush on a blue stroke. 示例显示此画笔在蓝色描边上的效果。
The art keeps its own colors. 图稿保留自己的颜色。
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. 黑色变为描边颜色,白色保持白色。其他颜色变为描边颜色的淡色,颜色越浅,淡色越浅。
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. 黑色保持黑色,白色保持白色。其他颜色较暗时变为描边颜色的阴影,较亮时变为描边颜色的淡色。
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. 主色变为描边颜色。其他颜色在色轮上移动与主色相同的距离,并保持其饱和度和亮度。
Harmony Rules 协调规则
Variation 变化
Drag art, colors and text styles here to reuse them across documents. Libraries are stored on this machine — no account required. 将图稿、颜色和文字样式拖到这里,即可在不同文档中复用。库保存在本机,无需账户。
Can't render this file because it contains an unexpected character in line 2 and column 73.
+7
View File
@@ -2700,6 +2700,13 @@ file-filter Templates 範本
Tints and Shades 淺色與暗色
Hue Shift 色相偏移
Key Color: 主要顏色:
Tips 提示
Colorization Tips 上色提示
The samples show this brush on a blue stroke. 範例顯示此筆刷在藍色筆畫上的效果。
The art keeps its own colors. 圖稿保留自己的顏色。
Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. 黑色變為筆畫顏色,白色維持白色。其他顏色變為筆畫顏色的淺色,顏色越淺,淺色就越淺。
Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. 黑色維持黑色,白色維持白色。其他顏色較暗時變為筆畫顏色的暗色,較亮時變為筆畫顏色的淺色。
The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. 主要顏色變為筆畫顏色。其他顏色在色輪上移動與主要顏色相同的距離,並保留其飽和度和亮度。
Roundness: 圓度:
Fixed 固定
Pressure 壓力
Can't render this file because it contains an unexpected character in line 6 and column 47.
+1 -1
View File
@@ -472,7 +472,7 @@ pub const UI_COMMANDS: &[(&str, &str, &str, &str)] = &[
"ui.brushOptions",
"Brush Options…",
"",
"{name?} (default: the selected path's brush, else the current brush) open its Brush Options, what double-clicking a brush in the Brushes panel opens (dialog `brushOptions`): Calligraphic (fields name, angle −180..180, roundness 0..100, size 0..1296 pt, angleMode/roundnessMode/sizeMode: fixed|random|pressure, angleVariation/roundnessVariation/sizeVariation), Bristle (fields name, shape, size, length, density, thickness, opacity, stiffness), Scatter (fields sizeMin/sizeMax/sizeMode, spacingMin/spacingMax/spacingMode, scatterMin/scatterMax/scatterMode, rotationMin/rotationMax/rotationMode with modes fixed|random|pressure, rotationRelativeTo: page|path), Art (fields width %, scaleMode: proportional|stretch|betweenGuides, guideStart/guideEnd % of the art length, direction: leftToRight|rightToLeft|topToBottom|bottomToTop, flipAlong, flipAcross) or Pattern (fields scale %, spacing %, fit: stretch|addSpace|approximate, flipAlong, flipAcross); Scatter, Art and Pattern also colorization: none|tints|tintsAndShades|hueShift and keyColor; OK runs brush.options",
"{name?} (default: the selected path's brush, else the current brush) open its Brush Options, what double-clicking a brush in the Brushes panel opens (dialog `brushOptions`): Calligraphic (fields name, angle −180..180, roundness 0..100, size 0..1296 pt, angleMode/roundnessMode/sizeMode: fixed|random|pressure, angleVariation/roundnessVariation/sizeVariation), Bristle (fields name, shape, size, length, density, thickness, opacity, stiffness), Scatter (fields sizeMin/sizeMax/sizeMode, spacingMin/spacingMax/spacingMode, scatterMin/scatterMax/scatterMode, rotationMin/rotationMax/rotationMode with modes fixed|random|pressure, rotationRelativeTo: page|path), Art (fields width %, scaleMode: proportional|stretch|betweenGuides, guideStart/guideEnd % of the art length, direction: leftToRight|rightToLeft|topToBottom|bottomToTop, flipAlong, flipAcross) or Pattern (fields scale %, spacing %, fit: stretch|addSpace|approximate, flipAlong, flipAcross); Scatter, Art and Pattern also colorization: none|tints|tintsAndShades|hueShift, keyColor, and tips: true opens Colorization Tips (what each method does, beside a sample of the brush painted with it), as the Tips button beside Method does; OK runs brush.options",
),
(
"ui.graphicStyleOptions",
+4 -1
View File
@@ -321,7 +321,10 @@ pub fn handle(app: &mut VectorcraftApp, ctx: &egui::Context) {
if crate::shortcut_editor::is_recording(app) {
return;
}
if ctx.input(|i| i.key_pressed(Key::Escape)) {
// Escape closes a dropdown list or popover open in the dialog (each closes itself on it) and
// leaves the dialog open.
let popup = app.ui.dialog.as_ref().is_some_and(|d| egui::Popup::is_any_open(ctx) || crate::dialogs::brush_options::tips_open(d));
if !popup && ctx.input(|i| i.key_pressed(Key::Escape)) {
crate::dialogs::cancel(app);
app.ui.palette_open = false;
}
+1
View File
@@ -723,6 +723,7 @@ Moved from the ROADMAP's "Shipped so far" on 2026-10-10. Update it when a featur
- **Brushes (part of #852):** double-clicking a brush in the Brushes panel (or the panel menu's Brush Options…) opens Calligraphic Brush Options (Name; Angle, Roundness and Size, each Fixed, Random or Pressure with its Variation; live previews of the nib and of a light–heavy–light stroke) or Bristle Brush Options (Shape and the bristle sliders); OK edits the brush and every stroke painted with it. The Paintbrush records the pen pressure along each stroke (kept with the path, saved, and joined when a stroke continues a path); a Calligraphic value on Pressure goes from value − variation at the lightest pressure to value + variation at the heaviest, on the canvas and in SVG, PDF and the other exports. Brushes saved before keep their look. Scatter Brush Options (Size, Spacing, Scatter and Rotation, each Fixed, Random between two values or Pressure from the first at the lightest pressure to the second at the heaviest; Rotation relative to Page or Path), Art Brush Options (Width, Scale Proportionately, Stretch to Fit Stroke Length or Stretch Between Guides with the guides' start and end, the four Directions, Flip Along and Across) and Pattern Brush Options (Scale, Spacing, the five tiles shown, Flip Along and Across, Stretch to fit, Add space to fit or Approximate path) each have Colorization (None, Tints, Tints and Shades, Hue Shift with its Key Color picked from the art's colours) and a live stroke preview; values from files and commands are clamped to their ranges. Still to come: the Art brush's Overlap, auto-generated Pattern brush corners, new tile art picked in Pattern Brush Options, Stylus Wheel, Tilt, Bearing and Rotation, and pen pressure on macOS.
Type in a scatter brush's art takes the brush's colorization as its paths do: Tints, Tints and Shades and Hue Shift recolor the characters' solid fills and strokes in each copy the brush draws, and Brush Options' Key Color list, whose first color is Hue Shift's default key, counts the characters' fills and their strokes wider than 0. The Brushes page states that "The colors that a scatter, art, or pattern brush paints depend on the current stroke color and the colorization method of the brush" (<https://web.archive.org/web/20241230205225/https://helpx.adobe.com/illustrator/using/brushes.html>) and does not mention type there; recoloring the characters' paints like the art's fills and strokes is VectorCraft's own rule. The Symbol Stainer mixes the characters' strokes of type toward the stain as it mixes their fills. Evidence: `tests::scatter_colorization_recolors_type`, `tests::art_colors_list_the_most_used_first`, `tests::stain_mixes_type_strokes_too` (vectorcraft-brush).
Art Brush Options' Width (1% to 1000%) and Pattern Brush Options' Scale (1% to 10000%) each have a slider beside the field, over the same range in whole percents; screen readers name the slider as its row and read the field's value.
Scatter, Art and Pattern Brush Options have the Tips button for Colorization that the [Brushes](https://web.archive.org/web/20241230205225/https://helpx.adobe.com/illustrator/using/brushes.html) page (archived copy) describes, beside Method. It opens Colorization Tips, which shows each method's name and what it does beside a sample of the brush, as OK would make it, painted with that method on a blue stroke; Hue Shift's sample uses the dialog's Key Color. `ui.dialog.set {field: "tips", value: true}` opens it. Screen readers name the button, the popover and each sample.
Hue Shift set by `brush.new` or `brush.options` without a key color takes the color the art's fills and strokes use most, as Brush Options already offers it, following the Brushes page: "By default, the key color is the most prominent color in the art" (<https://web.archive.org/web/20241230205225/https://helpx.adobe.com/illustrator/using/brushes.html>). The page does not state how prominence is measured. Counting the fills and strokes that use each solid color, with the first one found winning a tie and black for art with no solid color, is VectorCraft's own rule. A `brush.options` edit that gives only the method keeps the brush's key color, and one that gives only an art brush's start guide keeps its end guide. Evidence: `tests_brushsym::hue_shift_without_a_key_takes_the_most_used_art_color`, `tests_brushsym::art_brush_options_keep_the_scale_fields_an_edit_leaves_out`.
In the Brushes panel, Shift-click selects a range of brushes and Ctrl/Cmd-click adds or removes one. Delete Brush and Duplicate Brush then act on all of them (`brush.delete {names}`, `brush.duplicate {names}`).
Document Info has a Brushes category after Graphic Styles. It lists the Brushes panel's brushes, or with Selection Only it lists the brushes that the selected objects' strokes use. The Document Info report and Package's report list them too (`document.info {category: "brushes"}`, `brushNames`).