mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-12 13:33:19 +00:00
Merge pull request #6763 from dotCooCoo/feat/styles-textures-library
Graphic Styles: built-in Textures library with grain, canvas, craquelure and tile styles
This commit is contained in:
@@ -155,6 +155,7 @@ pub const STYLE_LIBRARIES: &[BuiltinStyleLibrary] = &[
|
||||
BuiltinStyleLibrary { id: "shadows-glows", name: "Shadows and Glows", make: shadows_glows },
|
||||
BuiltinStyleLibrary { id: "outlines-rules", name: "Outlines and Rules", make: outlines_rules },
|
||||
BuiltinStyleLibrary { id: "hand-drawn", name: "Hand-Drawn", make: hand_drawn },
|
||||
BuiltinStyleLibrary { id: "textures", name: "Textures", make: textures },
|
||||
BuiltinStyleLibrary { id: "gradient-finishes", name: "Gradient Finishes", make: gradient_finishes },
|
||||
BuiltinStyleLibrary { id: "shape-effects", name: "Shape Effects", make: shape_effects },
|
||||
BuiltinStyleLibrary { id: "blends-transparency", name: "Blends and Transparency", make: blends_transparency },
|
||||
@@ -322,6 +323,44 @@ fn hand_drawn() -> Vec<GraphicStyle> {
|
||||
]
|
||||
}
|
||||
|
||||
/// Textures: fills and strokes painted with the catalog's texture effects (grain, canvas and
|
||||
/// burlap surfaces, craquelure, tiles, patchwork, stained glass and water paper).
|
||||
fn textures() -> Vec<GraphicStyle> {
|
||||
let surface = |texture: &str, scaling: f64, relief: f64, light: &str| {
|
||||
fx("texture.texturizer", json!({"texture": texture, "scaling": scaling, "relief": relief, "lightDirection": light, "invert": false}))
|
||||
};
|
||||
vec![
|
||||
style(
|
||||
"Fine Grain",
|
||||
vec![F(fill("#c9ada7")), S(stroke("#4a4e69", 1.0))],
|
||||
vec![fx("texture.grain", json!({"intensity": 35.0, "contrast": 55.0, "grainType": "regular"}))],
|
||||
),
|
||||
style("Canvas Weave", vec![F(fill("#e9d8a6"))], vec![surface("canvas", 100.0, 6.0, "topLeft")]),
|
||||
style("Burlap Sack", vec![F(fill("#bc8a5f")), S(stroke("#6f4518", 1.5))], vec![surface("burlap", 120.0, 8.0, "top")]),
|
||||
style(
|
||||
"Cracked Glaze",
|
||||
vec![F(fill("#94d2bd")), S(stroke("#005f73", 1.0))],
|
||||
vec![fx("texture.craquelure", json!({"crackSpacing": 12.0, "crackDepth": 5.0, "crackBrightness": 8.0}))],
|
||||
),
|
||||
style(
|
||||
"Mosaic Floor",
|
||||
vec![F(fill("#0a9396"))],
|
||||
vec![fx("texture.mosaicTiles", json!({"tileSize": 10.0, "groutWidth": 3.0, "lightenGrout": 8.0}))],
|
||||
),
|
||||
style("Quilted Squares", vec![F(fill("#ee9b00"))], vec![fx("texture.patchwork", json!({"squareSize": 5.0, "relief": 10.0}))]),
|
||||
style(
|
||||
"Leaded Glass",
|
||||
vec![F(FillLayer::new(linear(-45.0, &[(0.0, "#ae2012", 1.0), (0.5, "#ee9b00", 1.0), (1.0, "#005f73", 1.0)])))],
|
||||
vec![fx("texture.stainedGlass", json!({"cellSize": 8.0, "borderThickness": 4.0, "lightIntensity": 3.0}))],
|
||||
),
|
||||
style(
|
||||
"Damp Paper",
|
||||
vec![F(fill("#4895ef")), S(stroke("#3f37c9", 1.0))],
|
||||
vec![fx("sketch.waterPaper", json!({"fiberLength": 12.0, "brightness": 55.0, "contrast": 60.0}))],
|
||||
),
|
||||
]
|
||||
}
|
||||
|
||||
fn gradient_finishes() -> Vec<GraphicStyle> {
|
||||
let rim = |h: &str| S(stroke(h, 1.0));
|
||||
vec![
|
||||
@@ -550,6 +589,18 @@ mod tests {
|
||||
assert_eq!(status.name, "Status Effects");
|
||||
let status_names: Vec<&str> = status.styles.iter().map(|g| g.name.as_str()).collect();
|
||||
assert_eq!(status_names, ["Poison Tint", "Freeze Edge", "Burn Aura", "Stun Pulse", "Stealth Fade", "Shield Buff"]);
|
||||
let textures = builtin_style_library("textures").unwrap();
|
||||
assert_eq!(textures.name, "Textures");
|
||||
let texture_names: Vec<&str> = textures.styles.iter().map(|g| g.name.as_str()).collect();
|
||||
let expected =
|
||||
["Fine Grain", "Canvas Weave", "Burlap Sack", "Cracked Glaze", "Mosaic Floor", "Quilted Squares", "Leaded Glass", "Damp Paper"];
|
||||
assert_eq!(texture_names, expected);
|
||||
for b in STYLE_LIBRARIES.iter().filter(|b| b.id != "textures") {
|
||||
let lib = builtin_style_library(b.id).unwrap();
|
||||
assert!(lib.styles.iter().all(|g| !expected.contains(&g.name.as_str())), "{} shares a name with Textures", b.id);
|
||||
}
|
||||
let ids: Vec<&str> = STYLE_LIBRARIES.iter().map(|b| b.id).collect();
|
||||
assert_eq!(ids.iter().position(|&i| i == "textures"), ids.iter().position(|&i| i == "hand-drawn").map(|i| i + 1), "after Hand-Drawn");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -44,6 +44,7 @@ fn builtin_libraries_are_listed_with_original_styles_using_catalogued_effects()
|
||||
assert!(libs.len() >= 8 && libs.iter().all(|l| l["category"] == "builtIn"), "{libs:?}");
|
||||
assert!(libs.iter().any(|l| l["id"] == "game-hud" && l["name"] == "Game HUD"), "{libs:?}");
|
||||
assert!(libs.iter().any(|l| l["id"] == "status-effects" && l["name"] == "Status Effects"), "{libs:?}");
|
||||
assert!(libs.iter().any(|l| l["id"] == "textures" && l["name"] == "Textures" && l["count"] == 8), "{libs:?}");
|
||||
for l in libs {
|
||||
let id = l["id"].as_str().unwrap();
|
||||
let g = run(&mut s, "graphicStyle.library", json!({"library": id}));
|
||||
@@ -64,6 +65,10 @@ fn builtin_libraries_are_listed_with_original_styles_using_catalogued_effects()
|
||||
let status = run(&mut s, "graphicStyle.library", json!({"library": "status-effects"}));
|
||||
let status_names: Vec<&str> = status["styles"].as_array().unwrap().iter().map(|x| x["name"].as_str().unwrap()).collect();
|
||||
assert_eq!(status_names, ["Poison Tint", "Freeze Edge", "Burn Aura", "Stun Pulse", "Stealth Fade", "Shield Buff"]);
|
||||
let textures = run(&mut s, "graphicStyle.library", json!({"library": "textures"}));
|
||||
let texture_names: Vec<&str> = textures["styles"].as_array().unwrap().iter().map(|x| x["name"].as_str().unwrap()).collect();
|
||||
let expected = ["Fine Grain", "Canvas Weave", "Burlap Sack", "Cracked Glaze", "Mosaic Floor", "Quilted Squares", "Leaded Glass", "Damp Paper"];
|
||||
assert_eq!(texture_names, expected);
|
||||
let id = rect(&mut s, 10.0, 20.0, 40.0, 30.0);
|
||||
let r = run(&mut s, "graphicStyle.addFromLibrary", json!({"library": "game-hud", "name": "Mana Glow", "apply": true, "ids": [id.0]}));
|
||||
assert_eq!((names(&r["added"]), r["applied"].as_str()), (vec!["Mana Glow"], Some("Mana Glow")));
|
||||
@@ -167,6 +172,53 @@ fn add_with_null_ids_applies_to_selection() {
|
||||
assert_eq!(doc(&s).node(id).unwrap().extras().graphic_style, Some(style.id));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn textures_styles_apply_their_texture_effects_and_keep_their_params_through_save_and_open() {
|
||||
let mut s = session();
|
||||
let (_, lib) = cmd::stylelib::library(&s, "textures").unwrap();
|
||||
let mut ids = vec![];
|
||||
for (i, g) in lib.styles.iter().enumerate() {
|
||||
let id = rect(&mut s, (i % 4) as f64 * 50.0, (i / 4) as f64 * 50.0, 40.0, 40.0);
|
||||
let before = undo_len(&s);
|
||||
let r = run(&mut s, "graphicStyle.addFromLibrary", json!({"library": "textures", "name": g.name, "apply": true, "ids": [id.0]}));
|
||||
assert_eq!((names(&r["added"]), r["applied"].as_str()), (vec![g.name.as_str()], Some(g.name.as_str())));
|
||||
assert_eq!(undo_len(&s), before + 1, "{}: added and applied as one step", g.name);
|
||||
ids.push(id);
|
||||
}
|
||||
let effects = |s: &Session| -> Vec<Vec<(String, Value)>> {
|
||||
ids.iter().map(|id| doc(s).node(*id).unwrap().appearance.effects.iter().map(|e| (e.id.clone(), e.params.clone())).collect()).collect()
|
||||
};
|
||||
let applied = effects(&s);
|
||||
let effect_ids: Vec<Vec<&str>> = applied.iter().map(|fx| fx.iter().map(|(id, _)| id.as_str()).collect()).collect();
|
||||
assert_eq!(
|
||||
effect_ids,
|
||||
[
|
||||
["texture.grain"],
|
||||
["texture.texturizer"],
|
||||
["texture.texturizer"],
|
||||
["texture.craquelure"],
|
||||
["texture.mosaicTiles"],
|
||||
["texture.patchwork"],
|
||||
["texture.stainedGlass"],
|
||||
["sketch.waterPaper"],
|
||||
]
|
||||
);
|
||||
assert_eq!(applied[1][0].1["texture"], "canvas");
|
||||
assert_eq!(applied[3][0].1["crackSpacing"], 12.0);
|
||||
for (fx, g) in applied.iter().zip(&lib.styles) {
|
||||
let want: Vec<(String, Value)> = g.appearance.effects.iter().map(|e| (e.id.clone(), e.params.clone())).collect();
|
||||
assert_eq!(fx, &want, "{} applies the library's params", g.name);
|
||||
}
|
||||
let b64 = run(&mut s, "document.serialize", json!({"format": "vectorcraft"}))["dataBase64"].as_str().unwrap().to_string();
|
||||
run(&mut s, "document.open", json!({"name": "textures.vectorcraft", "dataBase64": b64}));
|
||||
assert_eq!(effects(&s), applied, "the params survive a save and open");
|
||||
for g in &lib.styles {
|
||||
let saved = doc(&s).graphic_style(&g.name).unwrap();
|
||||
assert!(saved.same_look(g), "{} keeps its look", g.name);
|
||||
assert!(ids.iter().any(|id| doc(&s).node(*id).unwrap().extras().graphic_style == Some(saved.id)), "{} stays linked", g.name);
|
||||
}
|
||||
}
|
||||
|
||||
/// A document with pattern `name` (a dot) and its swatch.
|
||||
fn add_pattern(s: &mut Session, name: &str, radius: f64) {
|
||||
s.edit("Pattern", |d, _| {
|
||||
|
||||
@@ -3091,6 +3091,15 @@ digits Malayalam Малаялам
|
||||
Stun Pulse Зашеметяване
|
||||
Stealth Fade Скритост
|
||||
Shield Buff Щит
|
||||
Textures Текстури
|
||||
Fine Grain Фино зърно
|
||||
Canvas Weave Тъкано платно
|
||||
Burlap Sack Зебло
|
||||
Cracked Glaze Напукана глазура
|
||||
Mosaic Floor Мозаечен под
|
||||
Quilted Squares Капитонирани квадрати
|
||||
Leaded Glass Оловно стъкло
|
||||
Damp Paper Влажна хартия
|
||||
Shape Фигура
|
||||
Shape Builder Създател на фигури
|
||||
Shape Builder Regions Области на създателя на фигури
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -794,6 +794,15 @@
|
||||
Stun Pulse Omamljenost
|
||||
Stealth Fade Nevidljivost
|
||||
Shield Buff Štit
|
||||
Textures Teksture
|
||||
Fine Grain Fino zrno
|
||||
Canvas Weave Tkano platno
|
||||
Burlap Sack Jutena vreća
|
||||
Cracked Glaze Ispucala glazura
|
||||
Mosaic Floor Mozaični pod
|
||||
Quilted Squares Prošiveni kvadrati
|
||||
Leaded Glass Olovno staklo
|
||||
Damp Paper Vlažni papir
|
||||
Outlines and Rules Obrisi i linije
|
||||
Hand-Drawn Ručno crtano
|
||||
Gradient Finishes Gradijentne završnice
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4009,6 +4009,15 @@ digits Malayalam Malaiàlam
|
||||
Stun Pulse Atordiment
|
||||
Stealth Fade Sigil
|
||||
Shield Buff Escut
|
||||
Textures Textures
|
||||
Fine Grain Gra fi
|
||||
Canvas Weave Teixit de llenç
|
||||
Burlap Sack Sac de jute
|
||||
Cracked Glaze Vidrat esquerdat
|
||||
Mosaic Floor Terra de mosaic
|
||||
Quilted Squares Quadrats encoixinats
|
||||
Leaded Glass Vitrall emplomat
|
||||
Damp Paper Paper humit
|
||||
Shape Forma
|
||||
Shape Builder Constructor de formes
|
||||
Shape Builder Delete Suprimeix del constructor de formes
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -802,6 +802,15 @@
|
||||
Stun Pulse Omráčení
|
||||
Stealth Fade Plížení
|
||||
Shield Buff Štít
|
||||
Textures Textury
|
||||
Fine Grain Jemné zrno
|
||||
Canvas Weave Tkané plátno
|
||||
Burlap Sack Pytlovina
|
||||
Cracked Glaze Popraskaná glazura
|
||||
Mosaic Floor Mozaiková podlaha
|
||||
Quilted Squares Prošívané čtverce
|
||||
Leaded Glass Olovnaté sklo
|
||||
Damp Paper Vlhký papír
|
||||
Outlines and Rules Obrysy a linky
|
||||
Hand-Drawn Ručně kreslené
|
||||
Gradient Finishes Přechodové povrchy
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -740,6 +740,15 @@
|
||||
Stun Pulse Bedøvelse
|
||||
Stealth Fade Snige
|
||||
Shield Buff Skjold
|
||||
Textures Teksturer
|
||||
Fine Grain Fin kornethed
|
||||
Canvas Weave Lærredsvævning
|
||||
Burlap Sack Jutesæk
|
||||
Cracked Glaze Krakeleret glasur
|
||||
Mosaic Floor Mosaikgulv
|
||||
Quilted Squares Quiltede firkanter
|
||||
Leaded Glass Blyindfattet glas
|
||||
Damp Paper Fugtigt papir
|
||||
Outlines and Rules Konturer og linjer
|
||||
Hand-Drawn Håndtegnet
|
||||
Gradient Finishes Gradientfinish
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3138,6 +3138,15 @@ digits Malayalam Malayalam
|
||||
Stun Pulse Betäubung
|
||||
Stealth Fade Schleichen
|
||||
Shield Buff Schild
|
||||
Textures Texturen
|
||||
Fine Grain Feine Körnung
|
||||
Canvas Weave Leinwandgewebe
|
||||
Burlap Sack Jutesack
|
||||
Cracked Glaze Craquelé-Glasur
|
||||
Mosaic Floor Mosaikboden
|
||||
Quilted Squares Gesteppte Quadrate
|
||||
Leaded Glass Bleiglas
|
||||
Damp Paper Feuchtes Papier
|
||||
Shape Form
|
||||
Shape Builder Formerstellung
|
||||
Shape Builder Regions Formerstellungsbereiche
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3656,6 +3656,15 @@ digits Malayalam Μαλαγιάλαμ
|
||||
Stun Pulse Ζάλη
|
||||
Stealth Fade Αορασία
|
||||
Shield Buff Ασπίδα
|
||||
Textures Υφές
|
||||
Fine Grain Λεπτός κόκκος
|
||||
Canvas Weave Ύφανση καμβά
|
||||
Burlap Sack Λινάτσα
|
||||
Cracked Glaze Ραγισμένο γλάσο
|
||||
Mosaic Floor Ψηφιδωτό δάπεδο
|
||||
Quilted Squares Καπιτονέ τετράγωνα
|
||||
Leaded Glass Μολυβδόδετο γυαλί
|
||||
Damp Paper Υγρό χαρτί
|
||||
Shape Builder Regions Περιοχές δημιουργίας σχημάτων
|
||||
Shape Effects Εφέ σχημάτων
|
||||
Shape Mode Λειτουργία σχήματος
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -3177,6 +3177,15 @@ digits Malayalam Malayálam
|
||||
Stun Pulse Aturdimiento
|
||||
Stealth Fade Sigilo
|
||||
Shield Buff Escudo
|
||||
Textures Texturas
|
||||
Fine Grain Grano fino
|
||||
Canvas Weave Tejido de lienzo
|
||||
Burlap Sack Saco de arpillera
|
||||
Cracked Glaze Esmalte agrietado
|
||||
Mosaic Floor Suelo de mosaico
|
||||
Quilted Squares Cuadros acolchados
|
||||
Leaded Glass Vidrio emplomado
|
||||
Damp Paper Papel húmedo
|
||||
Shape Forma
|
||||
Shape Builder Generador de formas
|
||||
Shape Builder Regions Regiones del generador de formas
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -793,6 +793,15 @@
|
||||
Stun Pulse Tainnutus
|
||||
Stealth Fade Hiipiminen
|
||||
Shield Buff Kilpi
|
||||
Textures Tekstuurit
|
||||
Fine Grain Hieno rae
|
||||
Canvas Weave Kanvaskudos
|
||||
Burlap Sack Juuttisäkki
|
||||
Cracked Glaze Krakeloitu lasite
|
||||
Mosaic Floor Mosaiikkilattia
|
||||
Quilted Squares Tikatut ruudut
|
||||
Leaded Glass Lyijylasi
|
||||
Damp Paper Kostea paperi
|
||||
Outlines and Rules Ääriviivat ja viivat
|
||||
Hand-Drawn Käsin piirretyt
|
||||
Gradient Finishes Liukuväriviimeistelyt
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3169,6 +3169,15 @@ digits Malayalam Malayalam
|
||||
Stun Pulse Étourdissement
|
||||
Stealth Fade Furtivité
|
||||
Shield Buff Bouclier
|
||||
Textures Textures
|
||||
Fine Grain Grain fin
|
||||
Canvas Weave Toile tissée
|
||||
Burlap Sack Sac de jute
|
||||
Cracked Glaze Glaçure craquelée
|
||||
Mosaic Floor Sol en mosaïque
|
||||
Quilted Squares Carrés matelassés
|
||||
Leaded Glass Vitrail au plomb
|
||||
Damp Paper Papier humide
|
||||
Shape Forme
|
||||
Shape Builder Concepteur de forme
|
||||
Shape Builder Regions Zones du Concepteur de forme
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4324,6 +4324,15 @@ antiAlias Sharp शार्प
|
||||
Stun Pulse स्तब्ध
|
||||
Stealth Fade छिपना
|
||||
Shield Buff ढाल
|
||||
Textures बनावटें
|
||||
Fine Grain महीन दाना
|
||||
Canvas Weave कैनवास बुनावट
|
||||
Burlap Sack टाट की बोरी
|
||||
Cracked Glaze दरकी ग्लेज़
|
||||
Mosaic Floor मोज़ेक फ़र्श
|
||||
Quilted Squares रज़ाईदार वर्ग
|
||||
Leaded Glass सीसा जड़ा काँच
|
||||
Damp Paper नम काग़ज़
|
||||
Shaft: दस्ता:
|
||||
Shape शेप
|
||||
Shape Builder शेप बिल्डर
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -3799,6 +3799,15 @@ mark-style Japanese Japán
|
||||
Stun Pulse Kábítás
|
||||
Stealth Fade Lopakodás
|
||||
Shield Buff Pajzs
|
||||
Textures Textúrák
|
||||
Fine Grain Finom szemcse
|
||||
Canvas Weave Vászonszövés
|
||||
Burlap Sack Jutazsák
|
||||
Cracked Glaze Repedezett máz
|
||||
Mosaic Floor Mozaikpadló
|
||||
Quilted Squares Steppelt négyzetek
|
||||
Leaded Glass Ólomüveg
|
||||
Damp Paper Nedves papír
|
||||
Shape Alakzat
|
||||
Shape Builder Alakzatépítő
|
||||
Shape Builder Regions Alakzatépítő területei
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -740,6 +740,15 @@
|
||||
Stun Pulse Pingsan
|
||||
Stealth Fade Menghilang
|
||||
Shield Buff Perisai
|
||||
Textures Tekstur
|
||||
Fine Grain Butiran Halus
|
||||
Canvas Weave Anyaman Kanvas
|
||||
Burlap Sack Karung Goni
|
||||
Cracked Glaze Glasir Retak
|
||||
Mosaic Floor Lantai Mosaik
|
||||
Quilted Squares Kotak Quilt
|
||||
Leaded Glass Kaca Patri
|
||||
Damp Paper Kertas Basah
|
||||
Outlines and Rules Garis luar dan garis
|
||||
Hand-Drawn Gambar tangan
|
||||
Gradient Finishes Finishing gradien
|
||||
|
||||
|
@@ -3214,6 +3214,15 @@ digits Malayalam Malayalam
|
||||
Stun Pulse Stordimento
|
||||
Stealth Fade Furtività
|
||||
Shield Buff Scudo
|
||||
Textures Texture
|
||||
Fine Grain Grana fine
|
||||
Canvas Weave Trama di tela
|
||||
Burlap Sack Sacco di iuta
|
||||
Cracked Glaze Smalto craquelé
|
||||
Mosaic Floor Pavimento a mosaico
|
||||
Quilted Squares Quadrati trapuntati
|
||||
Leaded Glass Vetro piombato
|
||||
Damp Paper Carta umida
|
||||
Shape Forma
|
||||
Shape Builder Generatore forme
|
||||
Shape Builder Regions Aree del Generatore forme
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -826,6 +826,15 @@ digits Malayalam マラヤーラム数字
|
||||
Stun Pulse 気絶
|
||||
Stealth Fade ステルス
|
||||
Shield Buff シールド
|
||||
Textures テクスチャ集
|
||||
Fine Grain 細かい粒子
|
||||
Canvas Weave キャンバス織り
|
||||
Burlap Sack 麻袋
|
||||
Cracked Glaze ひび割れ釉
|
||||
Mosaic Floor モザイクの床
|
||||
Quilted Squares キルトの四角
|
||||
Leaded Glass 鉛ガラス
|
||||
Damp Paper 湿った紙
|
||||
Outlines and Rules アウトラインと罫線
|
||||
Hand-Drawn 手描き風
|
||||
Gradient Finishes グラデーション仕上げ
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -699,6 +699,15 @@
|
||||
Stun Pulse დაბნეულობა
|
||||
Stealth Fade შენიღბვა
|
||||
Shield Buff ფარი
|
||||
Textures ტექსტურები
|
||||
Fine Grain წვრილი მარცვალი
|
||||
Canvas Weave ტილოს ქსოვილი
|
||||
Burlap Sack ჯუთის ტომარა
|
||||
Cracked Glaze დამსკდარი მინანქარი
|
||||
Mosaic Floor მოზაიკის იატაკი
|
||||
Quilted Squares ქვილთის კვადრატები
|
||||
Leaded Glass ტყვიის მინა
|
||||
Damp Paper ნესტიანი ქაღალდი
|
||||
Outlines and Rules კონტურები და ხაზები
|
||||
Hand-Drawn ხელით დახატული
|
||||
Gradient Finishes გრადიენტული ზედაპირები
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -819,6 +819,15 @@ digits Malayalam 말라얄람어
|
||||
Stun Pulse 기절
|
||||
Stealth Fade 은신
|
||||
Shield Buff 방패
|
||||
Textures 텍스처
|
||||
Fine Grain 고운 입자
|
||||
Canvas Weave 캔버스 직조
|
||||
Burlap Sack 마대 자루
|
||||
Cracked Glaze 갈라진 유약
|
||||
Mosaic Floor 모자이크 바닥
|
||||
Quilted Squares 퀼트 사각형
|
||||
Leaded Glass 납유리
|
||||
Damp Paper 젖은 종이
|
||||
Outlines and Rules 윤곽선과 괘선
|
||||
Hand-Drawn 손그림
|
||||
Gradient Finishes 그레이디언트 마감
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -754,6 +754,15 @@
|
||||
Stun Pulse Verdoving
|
||||
Stealth Fade Sluipen
|
||||
Shield Buff Schild
|
||||
Textures Texturen
|
||||
Fine Grain Fijne korrel
|
||||
Canvas Weave Canvasweefsel
|
||||
Burlap Sack Jutezak
|
||||
Cracked Glaze Gecraqueleerd glazuur
|
||||
Mosaic Floor Mozaïekvloer
|
||||
Quilted Squares Gequilte vierkanten
|
||||
Leaded Glass Glas-in-lood
|
||||
Damp Paper Vochtig papier
|
||||
Outlines and Rules Omtrekken en lijnen
|
||||
Hand-Drawn Handgetekend
|
||||
Gradient Finishes Verloopafwerkingen
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -749,6 +749,15 @@
|
||||
Stun Pulse Ogłuszenie
|
||||
Stealth Fade Ukrycie
|
||||
Shield Buff Tarcza
|
||||
Textures Tekstury
|
||||
Fine Grain Drobne ziarno
|
||||
Canvas Weave Splot płótna
|
||||
Burlap Sack Worek jutowy
|
||||
Cracked Glaze Spękana glazura
|
||||
Mosaic Floor Mozaikowa posadzka
|
||||
Quilted Squares Pikowane kwadraty
|
||||
Leaded Glass Witraż ołowiany
|
||||
Damp Paper Wilgotny papier
|
||||
Outlines and Rules Kontury i linie
|
||||
Hand-Drawn Rysowane odręcznie
|
||||
Gradient Finishes Wykończenia gradientowe
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -2669,6 +2669,15 @@ digits Malayalam Malaiala
|
||||
Stun Pulse Atordoamento
|
||||
Stealth Fade Furtividade
|
||||
Shield Buff Escudo
|
||||
Textures Texturas
|
||||
Fine Grain Grão fino
|
||||
Canvas Weave Trama de tela
|
||||
Burlap Sack Saco de juta
|
||||
Cracked Glaze Esmalte craquelado
|
||||
Mosaic Floor Piso de mosaico
|
||||
Quilted Squares Quadrados acolchoados
|
||||
Leaded Glass Vitral de chumbo
|
||||
Damp Paper Papel úmido
|
||||
Shape Forma
|
||||
Shape Builder Construtor de Formas
|
||||
Shape Builder Regions Regiões do Construtor de Formas
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -3209,6 +3209,15 @@ digits Malayalam Малаялам
|
||||
Stun Pulse Оглушение
|
||||
Stealth Fade Скрытность
|
||||
Shield Buff Щит
|
||||
Textures Текстуры
|
||||
Fine Grain Мелкое зерно
|
||||
Canvas Weave Холстяное плетение
|
||||
Burlap Sack Мешковина
|
||||
Cracked Glaze Потрескавшаяся глазурь
|
||||
Mosaic Floor Мозаичный пол
|
||||
Quilted Squares Стёганые квадраты
|
||||
Leaded Glass Витражное стекло
|
||||
Damp Paper Влажная бумага
|
||||
Shape Фигура
|
||||
Shape Builder Создание фигур
|
||||
Shape Builder Regions Области создания фигур
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -3101,6 +3101,15 @@ digits Malayalam Malayalam
|
||||
Stun Pulse Bedövning
|
||||
Stealth Fade Smyga
|
||||
Shield Buff Sköld
|
||||
Textures Texturer
|
||||
Fine Grain Fin kornighet
|
||||
Canvas Weave Kanvasväv
|
||||
Burlap Sack Jutesäck
|
||||
Cracked Glaze Krackelerad glasyr
|
||||
Mosaic Floor Mosaikgolv
|
||||
Quilted Squares Quiltade rutor
|
||||
Leaded Glass Blyinfattat glas
|
||||
Damp Paper Fuktigt papper
|
||||
Shape Form
|
||||
Shape Builder Formbyggare
|
||||
Shape Builder Regions Formbyggarområden
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 25.
|
@@ -3005,6 +3005,15 @@ digits Malayalam Malayalam
|
||||
Stun Pulse Sersemletme
|
||||
Stealth Fade Gizlilik
|
||||
Shield Buff Kalkan
|
||||
Textures Dokular
|
||||
Fine Grain İnce Gren
|
||||
Canvas Weave Kanvas Dokuma
|
||||
Burlap Sack Çuval Bezi
|
||||
Cracked Glaze Çatlak Sır
|
||||
Mosaic Floor Mozaik Zemin
|
||||
Quilted Squares Kapitone Kareler
|
||||
Leaded Glass Kurşunlu Cam
|
||||
Damp Paper Nemli Kâğıt
|
||||
Shape Şekil
|
||||
Shape Builder Şekil Oluşturucu
|
||||
Shape Builder Regions Şekil Oluşturucu Bölgeleri
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 25.
|
@@ -3206,6 +3206,15 @@ digits Malayalam Малаялам
|
||||
Stun Pulse Оглушення
|
||||
Stealth Fade Невидимість
|
||||
Shield Buff Щит
|
||||
Textures Текстури
|
||||
Fine Grain Дрібне зерно
|
||||
Canvas Weave Полотняне плетіння
|
||||
Burlap Sack Мішковина
|
||||
Cracked Glaze Потріскана глазур
|
||||
Mosaic Floor Мозаїчна підлога
|
||||
Quilted Squares Стьобані квадрати
|
||||
Leaded Glass Вітражне скло
|
||||
Damp Paper Вологий папір
|
||||
Shape Фігура
|
||||
Shape Builder Створення фігур
|
||||
Shape Builder Regions Області створення фігур
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 182 and column 5.
|
@@ -3545,6 +3545,15 @@ mark-style Japanese Kiểu Nhật
|
||||
Stun Pulse Choáng
|
||||
Stealth Fade Ẩn thân
|
||||
Shield Buff Khiên
|
||||
Textures Kết cấu
|
||||
Fine Grain Hạt mịn
|
||||
Canvas Weave Vải canvas
|
||||
Burlap Sack Bao bố
|
||||
Cracked Glaze Men rạn
|
||||
Mosaic Floor Sàn khảm
|
||||
Quilted Squares Ô chần bông
|
||||
Leaded Glass Kính chì
|
||||
Damp Paper Giấy ẩm
|
||||
Shape Hình dạng
|
||||
Shape Builder Tạo hình dạng
|
||||
Shape Builder Regions Vùng Tạo hình dạng
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 204 and column 5.
|
@@ -3044,6 +3044,15 @@ digits Malayalam 马拉雅拉姆数字
|
||||
Stun Pulse 眩晕
|
||||
Stealth Fade 隐身
|
||||
Shield Buff 护盾
|
||||
Textures 纹理
|
||||
Fine Grain 细颗粒
|
||||
Canvas Weave 帆布纹
|
||||
Burlap Sack 麻布袋
|
||||
Cracked Glaze 裂纹釉
|
||||
Mosaic Floor 马赛克地面
|
||||
Quilted Squares 绗缝方格
|
||||
Leaded Glass 铅条玻璃
|
||||
Damp Paper 湿纸
|
||||
Shape 形状
|
||||
Shape Builder 形状生成器
|
||||
Shape Builder Regions 形状生成器区域
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4175,6 +4175,15 @@ digits Malayalam 馬來亞拉姆數字
|
||||
Stun Pulse 暈眩
|
||||
Stealth Fade 隱身
|
||||
Shield Buff 護盾
|
||||
Textures 紋理
|
||||
Fine Grain 細顆粒
|
||||
Canvas Weave 帆布紋
|
||||
Burlap Sack 麻布袋
|
||||
Cracked Glaze 裂紋釉
|
||||
Mosaic Floor 馬賽克地面
|
||||
Quilted Squares 絎縫方格
|
||||
Leaded Glass 鉛條玻璃
|
||||
Damp Paper 濕紙
|
||||
Shape 形狀
|
||||
Shape Builder 形狀建立
|
||||
Shape Builder Regions 形狀建立區域
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
+6
-5
@@ -646,11 +646,12 @@ macOS cursor delivery (#2292) is narrowed to a native host adapter using the exi
|
||||
Direct Selection of a path, compound path or type inside a dynamic instance also takes opacity and blend
|
||||
(`transparency.set`) and a gradient or pattern fill or stroke (`paint.setFill` / `paint.setStroke`,
|
||||
Eyedropper), for that instance only;
|
||||
graphic style libraries (Window › Graphic Style Libraries; eight original libraries generated in code, including
|
||||
Game HUD with Health Fill, Mana Glow, Damage Flash, Quest Outline, Coin Shine and Boss Alert, and Status Effects
|
||||
with Poison Tint, Freeze Edge, Burn Aura, Stun Pulse, Stealth Fade and Shield Buff; User Defined; Other
|
||||
Library…; `graphicStyle.libraries`, `graphicStyle.addFromLibrary`).
|
||||
- **Missing:** more built-in brush libraries beyond the six shipped (and further graphic-style libraries beyond the eight shipped, and further symbol libraries beyond Basic
|
||||
graphic style libraries (Window › Graphic Style Libraries; nine original libraries generated in code, including
|
||||
Game HUD with Health Fill, Mana Glow, Damage Flash, Quest Outline, Coin Shine and Boss Alert, Status Effects
|
||||
with Poison Tint, Freeze Edge, Burn Aura, Stun Pulse, Stealth Fade and Shield Buff, and Textures with Fine Grain,
|
||||
Canvas Weave, Burlap Sack, Cracked Glaze, Mosaic Floor, Quilted Squares, Leaded Glass and Damp Paper, painted with
|
||||
the texture effects; User Defined; Other Library…; `graphicStyle.libraries`, `graphicStyle.addFromLibrary`).
|
||||
- **Missing:** more built-in brush libraries beyond the six shipped (and further graphic-style libraries beyond the nine shipped, and further symbol libraries beyond Basic
|
||||
Shapes, UI Frames, Map Markers, Inventory Icons and Skill Icons; original, generated in code, never Adobe's); dynamic symbols' `.ai` read and write;
|
||||
Global Edit of groups holding type or images, rotated copies as matches and highlighting matches before the
|
||||
start; 9-slice guides outside the symbol's art (a dragged guide stops at the art's edge).
|
||||
|
||||
+4
-1
@@ -3353,7 +3353,10 @@ as a value left out.
|
||||
## Graphic style libraries
|
||||
|
||||
Graphic style libraries are read-only sets of graphic styles generated in code (Shadows and Glows, Outlines and
|
||||
Rules, Hand-Drawn, Gradient Finishes, Shape Effects, Blends and Transparency, Game HUD, Status Effects). `graphicStyle.libraries` lists them
|
||||
Rules, Hand-Drawn, Textures, Gradient Finishes, Shape Effects, Blends and Transparency, Game HUD, Status Effects). Textures
|
||||
(`textures`) paints its fills and strokes with the texture effects: Fine Grain (`texture.grain`), Canvas Weave and Burlap
|
||||
Sack (`texture.texturizer`), Cracked Glaze (`texture.craquelure`), Mosaic Floor (`texture.mosaicTiles`), Quilted Squares
|
||||
(`texture.patchwork`), Leaded Glass (`texture.stainedGlass`) and Damp Paper (`sketch.waterPaper`). `graphicStyle.libraries` lists them
|
||||
(`id`, `name`, `category`: `builtIn`, `user` or `loaded`, `count`) and `graphicStyle.library {library}` returns one's
|
||||
styles in the `graphicStyle.list` shape (`library` is an id or a name). `graphicStyle.addFromLibrary {library, name? |
|
||||
names?}` copies styles into the document's Graphic Styles as one undo step (no names: the whole library); styles the
|
||||
|
||||
@@ -1358,7 +1358,8 @@ Moved from the ROADMAP's "Shipped so far" on 2026-10-10. Update it when a featur
|
||||
- **Transparency:** three-state Knockout Group (on, neutral, off), Opacity & Mask Define Knockout Shape, Page Isolated Blending and Page Knockout Group, on screen and in SVG/PDF. SVG export writes a knockout group of opaque art plainly, without masks, so shapes meeting edge to edge leave no seam; translucent, blended, masked or brushed art knocks out through masks. Blend modes match the standard formulas on screen, in SVG and in PDF, and non-isolated groups blend with the art below. Flatten Transparency with presets, a dialog and a Flattener Preview panel. Flattening for files without transparency (PDF/X-1a, PDF/X-3) in a CMYK document keeps the inks where it rasterizes, as under an image with see-through pixels: the images it makes hold ink amounts, not screen colours the file would separate again, so a C100 M6 Y41 K3 panel stays C100 M6 Y41 K3 there (#2160, `engine/src/cmd/fileio/tests_pdfx.rs`).
|
||||
On the canvas, the renderer no longer draws the picture of the art below back as an image each time it copies the backdrop of a non-isolated group that blends: it keeps that picture and draws the art that follows over it. At 2880 × 1800, 50 translucent groups with Multiply members take 65 ms a frame instead of 299 ms on 8 threads (`vectorcraft-cli bench`), and the frames have the same pixels.
|
||||
Type inside a group, layer, symbol instance, blend or repeat keeps its opacity, blend mode, opacity mask, Opacity & Mask Define Knockout Shape, own effects, perspective and visibility when the effects on the container outline it. Hidden type with a geometry effect of its own is left out of exports.
|
||||
- **Graphic styles:** styles keep opacity and blend mode, capture groups and type, apply on top with Alt, and link to the objects using them; Redefine, Break Link, Graphic Style Options, Select All Unused, Sort by Name, and Select > Same Graphic Style / Appearance Attribute. The panel has list and thumbnail views with rendered previews, merge, reorder and drag and drop, plus a Control bar Style picker; eight generated style libraries (including Game HUD and Status Effects) save and load as `.vcstyles`.
|
||||
- **Graphic styles:** styles keep opacity and blend mode, capture groups and type, apply on top with Alt, and link to the objects using them; Redefine, Break Link, Graphic Style Options, Select All Unused, Sort by Name, and Select > Same Graphic Style / Appearance Attribute. The panel has list and thumbnail views with rendered previews, merge, reorder and drag and drop, plus a Control bar Style picker; nine generated style libraries (including Game HUD, Status Effects and Textures) save and load as `.vcstyles`.
|
||||
The built-in Textures graphic style library (`graphicStyle.addFromLibrary {library: "textures"}`) has eight styles that paint their fills and strokes with the texture effects: Fine Grain (Grain), Canvas Weave and Burlap Sack (Texturizer), Cracked Glaze (Craquelure), Mosaic Floor (Mosaic Tiles), Quilted Squares (Patchwork), Leaded Glass (Stained Glass) and Damp Paper (Water Paper). The help page names new graphic styles for textures ([What's new](https://helpx.adobe.com/illustrator/desktop/new-features/whats-new.html)) without naming them, so the styles, their names and their settings are VectorCraft's own (`tests::stylelib::textures_styles_apply_their_texture_effects_and_keep_their_params_through_save_and_open`).
|
||||
In the Graphic Styles panel, Shift-click selects a range of styles and Ctrl/Cmd-click adds or removes one.
|
||||
Applying a style to several objects, and Redefine Graphic Style, give the objects one shared copy of the style's appearance instead of a copy each; an object that is edited later gets its own copy, and an object whose placed gradients are fitted to its own bounds gets its own. The undo history's memory estimate counts a shared appearance once. Saved files are unchanged (`crates/engine/src/tests/styles.rs`).
|
||||
- **Several text styles at once:** in the Character Styles and Paragraph Styles panels, Shift-click highlights a range of styles and Ctrl/Cmd-click adds or removes one, without applying them; the panel menu's Select All Unused (`charStyle.unused`, `paraStyle.unused`) highlights the styles no type uses (in the layers, opacity masks, symbols, graph designs, pattern tiles and the art of brushes), never the Normal style; Delete, the button or the menu item, deletes every highlighted style but Normal in one undo step (`charStyle.delete {names}`, `paraStyle.delete {names}`). The menu's Duplicate copies every highlighted style in one undo step and highlights the copies. A highlighted row dragged onto Create New Style or Delete carries every highlighted style: dropped on Create New Style it copies them all and highlights the copies, and dropped on Delete it deletes them all but Normal and clears the highlight; a row from outside the highlight carries only its own style. Public reference: [Character and paragraph styles](https://web.archive.org/web/20261015081534/https://helpx.adobe.com/illustrator/using/character-paragraph-styles.html).
|
||||
|
||||
Reference in New Issue
Block a user