3D and Materials: the bevel and rotation options take their documented names, and the new messages are in every catalog
Bevel Shape, Space, Bevel Inside, Bevel both sides and Presets, as the public 3D and Materials panel options page names them. The 3D effects' error messages get rows in the twelve complete catalogs.
This commit is contained in:
parent
8a3458a974
commit
2cf2b972f5
|
|
@ -127,7 +127,7 @@ Ranked; detail in [docs/roadmap.md](docs/roadmap.md) and [docs/gaps.md](docs/gap
|
|||
|
||||
| Date | What landed |
|
||||
|---|---|
|
||||
| 2026-10-12 | Effect › 3D and Materials: Extrude & Bevel (depth, twist, taper, solid or hollow caps, six bevel shapes with repeat, spacing, inside and both sides), Inflate (volume, both sides) and Rotate, with Position presets and the rotation and light gizmos; live, exported as vector faces, expandable (#1407). |
|
||||
| 2026-10-12 | Effect › 3D and Materials: Extrude & Bevel (depth, twist, taper, solid or hollow caps, five bevel shapes with repeat, spacing, inside and both sides), Inflate (volume, both sides) and Rotate, with Position presets and the rotation and light gizmos; live, exported as vector faces, expandable (#1407). |
|
||||
| 2026-10-12 | `convert --editing-data` (`editingData: "always"`) opens a `.ai` from its editing data even where its page, which can be older, draws differently, with a note. |
|
||||
| 2026-10-12 | `.ai` import reads an object's art style (a fill and a stroke, variable widths too, with an Outer Glow or Drop Shadow) as its own appearance, paints a clipping path's own fill under what it clips and keeps a group's transparency as its PDF part draws them. |
|
||||
| 2026-10-12 | `.ai` import reads gradients with their matrix (radials and skew too), focal point and stop order, gradient meshes and the artboards' names from the editing data. |
|
||||
|
|
|
|||
|
|
@ -21,7 +21,8 @@ pub(super) fn body(app: &VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) {
|
|||
ui.data_mut(|m| m.remove::<bool>(widgets::dialog_focus_flag()));
|
||||
let screen = ui.ctx().content_rect();
|
||||
let width = (screen.width() - 64.0).clamp(240.0, SIDE_W);
|
||||
let height = (screen.height() - 240.0).clamp(120.0, 340.0);
|
||||
// Tall enough for Extrude & Bevel's Object tab, the longest, where the screen has the room.
|
||||
let height = (screen.height() - 240.0).clamp(120.0, 450.0);
|
||||
ui.set_width(width);
|
||||
egui::ScrollArea::vertical().id_salt("revolve-body").max_height(height).auto_shrink([false, true]).show(ui, |ui| {
|
||||
controls(app, ui, d);
|
||||
|
|
@ -179,18 +180,18 @@ fn extrude_controls(ui: &mut egui::Ui, d: &mut Dialog, unit: Unit) {
|
|||
(json!("step"), tl!("Step")),
|
||||
(json!("ogee"), tl!("Ogee")),
|
||||
];
|
||||
choice(ui, d, "bevel", tl!("Shape"), &shapes);
|
||||
choice(ui, d, "bevel", tl!("Bevel Shape"), &shapes);
|
||||
ui.add_enabled_ui(d.str("bevel") != "none", |ui| {
|
||||
number(ui, d, "bevelWidth", tl!("Width"), (0.0, 1000.0), "", 1, Some(unit));
|
||||
number(ui, d, "bevelHeight", tl!("Height"), (0.0, 1000.0), "", 1, Some(unit));
|
||||
number(ui, d, "bevelRepeat", tl!("Repeat"), (1.0, 32.0), "", 0, None);
|
||||
number(ui, d, "bevelSpace", tl!("Spacing"), (0.0, 90.0), "%", 1, None);
|
||||
toggle(ui, d, "bevelInside", c3("Inside"), false);
|
||||
toggle(ui, d, "bevelBothSides", tl!("Both sides"), false);
|
||||
number(ui, d, "bevelSpace", c3("Space"), (0.0, 90.0), "%", 1, None);
|
||||
toggle(ui, d, "bevelInside", tl!("Bevel Inside"), false);
|
||||
toggle(ui, d, "bevelBothSides", tl!("Bevel both sides"), false);
|
||||
});
|
||||
}
|
||||
|
||||
/// Position presets, rotation and perspective for Extrude & Bevel, Inflate and Rotate.
|
||||
/// Rotation presets, rotation and perspective for Extrude & Bevel, Inflate and Rotate.
|
||||
fn view_controls(ui: &mut egui::Ui, d: &mut Dialog) {
|
||||
heading(ui, tl!("Rotation"));
|
||||
let names = [
|
||||
|
|
@ -215,7 +216,7 @@ fn view_controls(ui: &mut egui::Ui, d: &mut Dialog) {
|
|||
let current = ROTATION_PRESETS.iter().position(|(_, a)| a.iter().zip(angles).all(|(a, b)| (a - b).abs() < 0.005));
|
||||
ui.horizontal(|ui| {
|
||||
ui.spacing_mut().item_spacing.x = 6.0;
|
||||
label(ui, tl!("Position"));
|
||||
label(ui, tl!("Presets"));
|
||||
let width = VALUE_W + rail_width(ui) + 6.0;
|
||||
let shown = current.and_then(|i| names.get(i).copied()).unwrap_or(tl!("Custom"));
|
||||
if let Some(k) = widgets::dropdown(ui, "three-d-position", shown, &names, width)
|
||||
|
|
|
|||
|
|
@ -211,9 +211,11 @@ fn advanced_visibility_option_is_saved_resettable_and_leaves_preview_geometry_co
|
|||
fn the_other_3d_effects_show_their_options_and_position_presets() {
|
||||
use vectorcraft_effects::{EXTRUDE, INFLATE, ROTATE, ROTATION_PRESETS};
|
||||
let square = "M100 100 L200 100 L200 200 L100 200 Z";
|
||||
for (effect, own) in
|
||||
[(EXTRUDE, &["Depth", "Twist", "Taper", "Cap", "Bevel"][..]), (INFLATE, &["Depth", "Volume", "Both sides"][..]), (ROTATE, &[][..])]
|
||||
{
|
||||
for (effect, own) in [
|
||||
(EXTRUDE, &["Depth", "Twist", "Taper", "Cap", "Bevel", "Bevel Shape", "Space", "Bevel Inside", "Bevel both sides"][..]),
|
||||
(INFLATE, &["Depth", "Volume", "Both sides"][..]),
|
||||
(ROTATE, &[][..]),
|
||||
] {
|
||||
let mut h = Harness::with(square, effect, vec2(1400.0, 1000.0));
|
||||
h.settle();
|
||||
// Extrude & Bevel and Inflate open on their Object tab; Rotate on Rotation.
|
||||
|
|
@ -224,7 +226,7 @@ fn the_other_3d_effects_show_their_options_and_position_presets() {
|
|||
h.app.ui.dialog.as_mut().unwrap().fields.insert("__tab".into(), json!("rotation"));
|
||||
h.settle();
|
||||
}
|
||||
for text in ["Position", "Rotation X", "Perspective"] {
|
||||
for text in ["Presets", "Rotation X", "Perspective"] {
|
||||
h.rect(text);
|
||||
}
|
||||
// The defaults are the Off-Axis Front position, shown by name.
|
||||
|
|
|
|||
|
|
@ -4538,4 +4538,13 @@ mark-style Japanese Japonské
|
|||
3d Hollow Duté
|
||||
3d Bevel Zkosení
|
||||
3d Rounded Zaoblené
|
||||
3d Inside Dovnitř
|
||||
3d Space Mezera
|
||||
Bevel Shape Tvar zkosení
|
||||
Bevel Inside Zkosení dovnitř
|
||||
Bevel both sides Zkosení na obou stranách
|
||||
Presets Předvolby
|
||||
@msg An object takes one 3D effect. Edit the existing effect's options, or remove it first. Objekt může mít jen jeden 3D efekt. Upravte volby stávajícího efektu, nebo jej nejprve odstraňte.
|
||||
@msg {label} currently requires a path or compound path. Convert type, images and groups to paths first. {label} zatím vyžaduje cestu nebo složenou cestu. Nejprve převeďte text, obrazy a skupiny na cesty.
|
||||
@msg {label} requires a shape with at least two anchors {label} vyžaduje tvar alespoň se dvěma kotevními body
|
||||
@msg The shape is too complex for a 3D effect Tvar je pro 3D efekt příliš složitý
|
||||
@msg The 3D surface is too complex; simplify the shape 3D povrch je příliš složitý; zjednodušte tvar
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -4189,4 +4189,13 @@ theme Appearance Erscheinungsbild
|
|||
3d Hollow Hohl
|
||||
3d Bevel Abgeflachte Kante
|
||||
3d Rounded Abgerundet
|
||||
3d Inside Nach innen
|
||||
3d Space Abstand
|
||||
Bevel Shape Form der abgeflachten Kante
|
||||
Bevel Inside Abgeflachte Kante nach innen
|
||||
Bevel both sides Abgeflachte Kante beidseitig
|
||||
Presets Vorgaben
|
||||
@msg An object takes one 3D effect. Edit the existing effect's options, or remove it first. Ein Objekt kann nur einen 3D-Effekt haben. Bearbeiten Sie die Optionen des vorhandenen Effekts oder entfernen Sie ihn zuerst.
|
||||
@msg {label} currently requires a path or compound path. Convert type, images and groups to paths first. {label} erfordert derzeit einen Pfad oder zusammengesetzten Pfad. Wandeln Sie Text, Bilder und Gruppen zuerst in Pfade um.
|
||||
@msg {label} requires a shape with at least two anchors {label} erfordert eine Form mit mindestens zwei Ankerpunkten
|
||||
@msg The shape is too complex for a 3D effect Die Form ist für einen 3D-Effekt zu komplex
|
||||
@msg The 3D surface is too complex; simplify the shape Die 3D-Oberfläche ist zu komplex; vereinfachen Sie die Form
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -4606,4 +4606,13 @@ mark-style Japanese Japonesas
|
|||
3d Hollow Hueco
|
||||
3d Bevel Bisel
|
||||
3d Rounded Redondeado
|
||||
3d Inside Hacia dentro
|
||||
3d Space Espacio
|
||||
Bevel Shape Forma del bisel
|
||||
Bevel Inside Bisel hacia dentro
|
||||
Bevel both sides Bisel en ambos lados
|
||||
Presets Ajustes preestablecidos
|
||||
@msg An object takes one 3D effect. Edit the existing effect's options, or remove it first. Un objeto admite un solo efecto 3D. Edite las opciones del efecto existente o quítelo primero.
|
||||
@msg {label} currently requires a path or compound path. Convert type, images and groups to paths first. {label} requiere por ahora un trazado o un trazado compuesto. Convierta primero el texto, las imágenes y los grupos en trazados.
|
||||
@msg {label} requires a shape with at least two anchors {label} requiere una forma con al menos dos puntos de ancla
|
||||
@msg The shape is too complex for a 3D effect La forma es demasiado compleja para un efecto 3D
|
||||
@msg The 3D surface is too complex; simplify the shape La superficie 3D es demasiado compleja; simplifique la forma
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -4242,4 +4242,13 @@ lighting Light Lumière
|
|||
3d Hollow Creux
|
||||
3d Bevel Biseau
|
||||
3d Rounded Arrondi
|
||||
3d Inside Vers l'intérieur
|
||||
3d Space Espace
|
||||
Bevel Shape Forme du biseau
|
||||
Bevel Inside Biseau vers l'intérieur
|
||||
Bevel both sides Biseau des deux côtés
|
||||
Presets Paramètres prédéfinis
|
||||
@msg An object takes one 3D effect. Edit the existing effect's options, or remove it first. Un objet n'accepte qu'un seul effet 3D. Modifiez les options de l'effet existant ou supprimez-le d'abord.
|
||||
@msg {label} currently requires a path or compound path. Convert type, images and groups to paths first. {label} nécessite pour l'instant un tracé ou un tracé transparent. Convertissez d'abord le texte, les images et les groupes en tracés.
|
||||
@msg {label} requires a shape with at least two anchors {label} nécessite une forme comportant au moins deux points d'ancrage
|
||||
@msg The shape is too complex for a 3D effect La forme est trop complexe pour un effet 3D
|
||||
@msg The 3D surface is too complex; simplify the shape La surface 3D est trop complexe ; simplifiez la forme
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -4632,4 +4632,13 @@ theme Appearance Kinézet
|
|||
3d Hollow Üreges
|
||||
3d Bevel Élletörés
|
||||
3d Rounded Lekerekített
|
||||
3d Inside Befelé
|
||||
3d Space Köz
|
||||
Bevel Shape Élletörés alakja
|
||||
Bevel Inside Élletörés befelé
|
||||
Bevel both sides Élletörés mindkét oldalon
|
||||
Presets Készletek
|
||||
@msg An object takes one 3D effect. Edit the existing effect's options, or remove it first. Egy objektumnak csak egy 3D effektusa lehet. Szerkessze a meglévő effektus beállításait, vagy előbb távolítsa el.
|
||||
@msg {label} currently requires a path or compound path. Convert type, images and groups to paths first. {label} egyelőre görbét vagy összetett görbét igényel. Előbb alakítsa görbévé a szöveget, a képeket és a csoportokat.
|
||||
@msg {label} requires a shape with at least two anchors {label} legalább két szerkesztőpontos alakzatot igényel
|
||||
@msg The shape is too complex for a 3D effect Az alakzat túl összetett a 3D effektushoz
|
||||
@msg The 3D surface is too complex; simplify the shape A 3D felület túl összetett; egyszerűsítse az alakzatot
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -4234,4 +4234,13 @@ lighting Light Luce
|
|||
3d Hollow Cavo
|
||||
3d Bevel Smusso
|
||||
3d Rounded Arrotondato
|
||||
3d Inside Verso l'interno
|
||||
3d Space Spazio
|
||||
Bevel Shape Forma smusso
|
||||
Bevel Inside Smusso verso l'interno
|
||||
Bevel both sides Smusso su entrambi i lati
|
||||
Presets Predefiniti
|
||||
@msg An object takes one 3D effect. Edit the existing effect's options, or remove it first. Un oggetto può avere un solo effetto 3D. Modificate le opzioni dell'effetto esistente oppure rimuovetelo prima.
|
||||
@msg {label} currently requires a path or compound path. Convert type, images and groups to paths first. {label} richiede per ora un tracciato o un tracciato composto. Convertite prima testo, immagini e gruppi in tracciati.
|
||||
@msg {label} requires a shape with at least two anchors {label} richiede una forma con almeno due punti di ancoraggio
|
||||
@msg The shape is too complex for a 3D effect La forma è troppo complessa per un effetto 3D
|
||||
@msg The 3D surface is too complex; simplify the shape La superficie 3D è troppo complessa; semplificate la forma
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -4228,4 +4228,13 @@ lighting Light ライト
|
|||
3d Hollow 中空
|
||||
3d Bevel ベベル
|
||||
3d Rounded 丸み
|
||||
3d Inside 内側
|
||||
3d Space 間隔
|
||||
Bevel Shape ベベルシェイプ
|
||||
Bevel Inside ベベルを内側に
|
||||
Bevel both sides 両面にベベル
|
||||
Presets プリセット
|
||||
@msg An object takes one 3D effect. Edit the existing effect's options, or remove it first. 1 つのオブジェクトに適用できる 3D 効果は 1 つです。既存の効果のオプションを編集するか、先に削除してください。
|
||||
@msg {label} currently requires a path or compound path. Convert type, images and groups to paths first. {label} には現在、パスまたは複合パスが必要です。テキスト、画像、グループは先にパスに変換してください。
|
||||
@msg {label} requires a shape with at least two anchors {label} には 2 つ以上のアンカーポイントを持つシェイプが必要です
|
||||
@msg The shape is too complex for a 3D effect シェイプが複雑すぎるため 3D 効果を適用できません
|
||||
@msg The 3D surface is too complex; simplify the shape 3D サーフェスが複雑すぎます。シェイプを単純化してください
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -4198,4 +4198,13 @@ lighting Light 광원
|
|||
3d Hollow 속이 빈
|
||||
3d Bevel 베벨
|
||||
3d Rounded 둥글게
|
||||
3d Inside 안쪽
|
||||
3d Space 간격
|
||||
Bevel Shape 베벨 모양
|
||||
Bevel Inside 안쪽 베벨
|
||||
Bevel both sides 양면 베벨
|
||||
Presets 사전 설정
|
||||
@msg An object takes one 3D effect. Edit the existing effect's options, or remove it first. 오브젝트에는 3D 효과를 하나만 적용할 수 있습니다. 기존 효과의 옵션을 편집하거나 먼저 제거하십시오.
|
||||
@msg {label} currently requires a path or compound path. Convert type, images and groups to paths first. {label}에는 현재 패스 또는 컴파운드 패스가 필요합니다. 문자, 이미지 및 그룹을 먼저 패스로 변환하십시오.
|
||||
@msg {label} requires a shape with at least two anchors {label}에는 고정점이 두 개 이상인 모양이 필요합니다
|
||||
@msg The shape is too complex for a 3D effect 모양이 너무 복잡하여 3D 효과를 적용할 수 없습니다
|
||||
@msg The 3D surface is too complex; simplify the shape 3D 표면이 너무 복잡합니다. 모양을 단순화하십시오
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -4230,4 +4230,13 @@ lighting Light Свет
|
|||
3d Hollow Полый
|
||||
3d Bevel Фаска
|
||||
3d Rounded Скруглённый
|
||||
3d Inside Внутрь
|
||||
3d Space Интервал
|
||||
Bevel Shape Форма фаски
|
||||
Bevel Inside Фаска внутрь
|
||||
Bevel both sides Фаска с обеих сторон
|
||||
Presets Наборы
|
||||
@msg An object takes one 3D effect. Edit the existing effect's options, or remove it first. У объекта может быть только один 3D-эффект. Измените параметры существующего эффекта или сначала удалите его.
|
||||
@msg {label} currently requires a path or compound path. Convert type, images and groups to paths first. {label}: пока требуется контур или составной контур. Сначала преобразуйте текст, изображения и группы в контуры.
|
||||
@msg {label} requires a shape with at least two anchors {label}: требуется фигура не менее чем с двумя опорными точками
|
||||
@msg The shape is too complex for a 3D effect Фигура слишком сложна для 3D-эффекта
|
||||
@msg The 3D surface is too complex; simplify the shape 3D-поверхность слишком сложна; упростите фигуру
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -4214,4 +4214,13 @@ lighting Light Світло
|
|||
3d Hollow Порожнистий
|
||||
3d Bevel Фаска
|
||||
3d Rounded Заокруглений
|
||||
3d Inside Усередину
|
||||
3d Space Інтервал
|
||||
Bevel Shape Форма фаски
|
||||
Bevel Inside Фаска всередину
|
||||
Bevel both sides Фаска з обох боків
|
||||
Presets Набори
|
||||
@msg An object takes one 3D effect. Edit the existing effect's options, or remove it first. Об'єкт може мати лише один 3D-ефект. Змініть параметри наявного ефекту або спершу вилучіть його.
|
||||
@msg {label} currently requires a path or compound path. Convert type, images and groups to paths first. {label}: поки що потрібен контур або складений контур. Спершу перетворіть текст, зображення та групи на контури.
|
||||
@msg {label} requires a shape with at least two anchors {label}: потрібна фігура щонайменше з двома опорними точками
|
||||
@msg The shape is too complex for a 3D effect Фігура надто складна для 3D-ефекту
|
||||
@msg The 3D surface is too complex; simplify the shape 3D-поверхня надто складна; спростіть фігуру
|
||||
|
|
|
|||
|
Can't render this file because it has a wrong number of fields in line 13.
|
|
|
@ -3825,4 +3825,13 @@ lighting Light 光源
|
|||
3d Hollow 空心
|
||||
3d Bevel 斜角
|
||||
3d Rounded 圆角
|
||||
3d Inside 向内
|
||||
3d Space 间距
|
||||
Bevel Shape 斜角形状
|
||||
Bevel Inside 斜角向内
|
||||
Bevel both sides 双面斜角
|
||||
Presets 预设
|
||||
@msg An object takes one 3D effect. Edit the existing effect's options, or remove it first. 一个对象只能应用一种 3D 效果。请编辑现有效果的选项,或先将其移去。
|
||||
@msg {label} currently requires a path or compound path. Convert type, images and groups to paths first. {label}目前需要路径或复合路径。请先将文字、图像和编组转换为路径。
|
||||
@msg {label} requires a shape with at least two anchors {label}需要至少有两个锚点的形状
|
||||
@msg The shape is too complex for a 3D effect 形状过于复杂,无法应用 3D 效果
|
||||
@msg The 3D surface is too complex; simplify the shape 3D 表面过于复杂;请简化形状
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -3606,4 +3606,13 @@ lighting Light 光源
|
|||
3d Hollow 空心
|
||||
3d Bevel 斜角
|
||||
3d Rounded 圓角
|
||||
3d Inside 向內
|
||||
3d Space 間距
|
||||
Bevel Shape 斜角形狀
|
||||
Bevel Inside 斜角向內
|
||||
Bevel both sides 雙面斜角
|
||||
Presets 預設集
|
||||
@msg An object takes one 3D effect. Edit the existing effect's options, or remove it first. 一個物件只能套用一種 3D 效果。請編輯現有效果的選項,或先將其移除。
|
||||
@msg {label} currently requires a path or compound path. Convert type, images and groups to paths first. {label}目前需要路徑或複合路徑。請先將文字、影像和群組轉換為路徑。
|
||||
@msg {label} requires a shape with at least two anchors {label}需要至少有兩個錨點的形狀
|
||||
@msg The shape is too complex for a 3D effect 形狀過於複雜,無法套用 3D 效果
|
||||
@msg The 3D surface is too complex; simplify the shape 3D 表面過於複雜;請簡化形狀
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
|
|
@ -85,7 +85,7 @@ not an accuracy guarantee for arbitrary artwork. Tests: `pixel::tests::film_grai
|
|||
| Item | Ours |
|
||||
|---|---|
|
||||
| Revolve | initial: live, editable profile, rotation and light gizmos, flat shading, SVG/PDF output, Expand Appearance ([revolve.md](revolve.md), #846) |
|
||||
| Extrude & Bevel, Inflate, Rotate | initial: live, depth, twist, taper, solid or hollow caps, six original bevel shapes, Inflate volume and both sides, Rotate of every fill and stroke, Position presets, rotation and light gizmos, SVG/PDF output, Expand Appearance ([three-d.md](three-d.md)) |
|
||||
| Extrude & Bevel, Inflate, Rotate | initial: live, depth, twist, taper, solid or hollow caps, five original bevel shapes, Inflate volume and both sides, Rotate of every fill and stroke, Position presets, rotation and light gizmos, SVG/PDF output, Expand Appearance ([three-d.md](three-d.md)) |
|
||||
| Materials panel, lighting, ray-traced render | one directional light with flat shading only; no materials, several lights, light colour, shadows or ray tracing |
|
||||
| 3D (Classic): Extrude & Bevel, Revolve, Rotate | none |
|
||||
| Turntable (30.0 beta) | none |
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ dominate; 3D, graphs and automation are specialist). They sum to 105. Feature de
|
|||
| Appearance, transparency, graphic styles, masks | 5 | 97% | raster effect reach in preview bounds | 1–2 | estimated |
|
||||
| Live vector effects | 5 | 85% | Outline Object, Effect › Rasterize, Pathfinder Hard Mix/Soft Mix/Trap, SVG Filters, the Transform effect's missing options (#885) | 6–10 | measured count 44/50, depth estimated |
|
||||
| Raster effects (Effect Gallery) | 4 | 49% | 28 Photoshop-style filters (14 Artistic, 14 Sketch), the Effect Gallery dialog, Load Texture | 23–39 | measured count 29/57; texture redraw distances optimized (#1257), pixels verified; depth estimated |
|
||||
| 3D and Materials (and Turntable) | 4 | ~25% | initial live Revolve, Extrude & Bevel (twist, taper, caps, six bevel shapes), Inflate and Rotate with Position presets (flat shading, one light, painter visibility); materials, several lights, shadows, ray tracing, 3D Classic, Turntable views, 3D export | 30–55 | estimated (Extrude & Bevel, Inflate and Rotate added 2026-10-12) |
|
||||
| 3D and Materials (and Turntable) | 4 | ~25% | initial live Revolve, Extrude & Bevel (twist, taper, caps, five bevel shapes), Inflate and Rotate with Position presets (flat shading, one light, painter visibility); materials, several lights, shadows, ray tracing, 3D Classic, Turntable views, 3D export | 30–55 | estimated (Extrude & Bevel, Inflate and Rotate added 2026-10-12) |
|
||||
| Type core | 9 | 80% | hyphenation and justification options, Optical Margin Alignment, Middle Eastern features beyond bidi layout, optional group font-size preservation; transformed character controls fixed (#1034), see [type-parity.md](type-parity.md) | 14–19 | estimated; full-name font matches regression-tested (#1258) |
|
||||
| Type advanced (CJK, spelling, Touch Type, Retype) | 4 | 50% | CJK vertical composition (ruby, mojikumi), variable font axes, tab leaders, spell check, Touch Type, Retype | 20–28 | estimated |
|
||||
| Symbols, blends, envelopes, Repeat, perspective | 5 | 85% | 30.7's Blend panel with ease in/out, dynamic symbols, symbol libraries, Start Global Edit, envelope Anti-Alias/Preserve Shape | 6–10 | estimated (lowered from 88%: target moved) |
|
||||
|
|
@ -457,7 +457,7 @@ Moved from the ROADMAP's "Shipped so far" on 2026-10-10. Update it when a featur
|
|||
- **Geometry and effects:**
|
||||
- Pathfinder (10 exact curve booleans; single-result shape operations retain source names and SVG IDs, #1293), Offset, Outline Stroke, Simplify, Clean Up, Split Into Grid, Divide Objects Below. Object › Path › Remove Anchor Points (`path.removeAnchors`) removes the direct-selected anchors without opening their paths (the Delete key still deletes them with their segments): the neighbours keep their handle directions and their facing handles are refitted so one cubic follows the two old segments, and straight sides stay straight. The Delete Anchor Point tool uses the same refit. The Control bar, the contextual task bar, the Properties quick actions and the canvas context menu offer it when anchors are selected. With anchors selected, the Control bar and the Properties panel also convert them to corner or smooth (`path.convertAnchors`), connect end points (Join) and cut the path at them (`path.cutAtAnchors`, also on the task bar and the context menu): a closed path opens there and an open one becomes one path per piece, each cut leaving one of its two coincident anchors selected so a drag pulls the path apart.
|
||||
- Divide uses open lines, bent paths and curves as cutting edges (#1307), preserving the frontmost filled face's appearance and holes. Engine tests cover implicit closure of filled open contours and unrelated objects; native automation confirms independent piece movement, one Undo/Redo, canvas/window captures and an exact saved-document read by a separate CLI process. The shared planar map retains its 4,096-segment cap and filled-area fallback; other Pathfinder operations are unchanged.
|
||||
- Extrude & Bevel, Inflate and Rotate (Effect › 3D and Materials): live effects in the `three-d` crate with depth, twist, taper, solid or hollow caps, six original bevel shapes (width, height, repeat, spacing, inside, both sides), Inflate's volume and both sides, Rotate's turned fills and strokes, Position presets, the rotation and light gizmos, SVG/PDF vector output and Expand Appearance; one 3D effect per object; covered by geometry, effect, canvas-versus-export, command and dialog tests ([three-d.md](three-d.md)).
|
||||
- Extrude & Bevel, Inflate and Rotate (Effect › 3D and Materials): live effects in the `three-d` crate with depth, twist, taper, solid or hollow caps, five original bevel shapes (width, height, repeat, spacing, inside, both sides), Inflate's volume and both sides, Rotate's turned fills and strokes, Position presets, the rotation and light gizmos, SVG/PDF vector output and Expand Appearance; one 3D effect per object; covered by geometry, effect, canvas-versus-export, command and dialog tests ([three-d.md](three-d.md)).
|
||||
- Initial live Revolve (#605, #846): a portable geometry and shading crate (`three-d`), editable path and compound profiles, compact options with artboard rotation and light gizmos, SVG/PDF vector output and Expand Appearance that can trim covered faces. Open ends are uncapped, shading is flat with one light, and intersecting surfaces' visibility is approximate ([revolve.md](revolve.md)).
|
||||
- Live effects with previewing dialogs: Distort & Transform, Path, Convert to Shape, 15 Warp styles, Round Corners, Scribble, Effect → Pathfinder (all 10 operations, live on groups; several loose objects are grouped first, in one undo step), Color Adjustments (Brightness/Contrast, Curves, Levels, Hue/Saturation, Shift to Color, Temperature/Tint, on vectors, live type and embedded images), and raster drop shadow, glows and feather. SVG and PDF export keep live effects (geometry baked; SVG raster effects as filters).
|
||||
- **Simplify feedback and component selection (#1272):** the existing tolerance dialog previews from the original interaction snapshot and shows original/new anchor counts. Preview off and Cancel restore the document and selection; OK is one Undo. A refit or Add Anchor Points clears component indexes only on paths whose geometry changes, keeping their objects selected whole and unchanged paths' components intact. Engine and real-egui frame regressions cover document/selection restoration and grouped paths.
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Select a path or compound path, then choose **Effect › 3D and Materials › Ex
|
|||
**Rotate…**. The options dialog opens beside the artboard with tabs:
|
||||
|
||||
- **Object** (Extrude & Bevel and Inflate): the shape's own options, below.
|
||||
- **Rotation**: a **Position** preset, **Rotation X/Y/Z** (−180° to 180°) and **Perspective**. The rotation rings
|
||||
- **Rotation**: a **Presets** menu, **Rotation X/Y/Z** (−180° to 180°) and **Perspective**. The rotation rings
|
||||
on the artboard turn the object about the centre of its bounds; Shift snaps to 15°.
|
||||
- **Lighting**: **Shading**, the light's **Direction** and **Elevation** (or drag the light on the artboard),
|
||||
**Intensity** and **Ambient**, as for Revolve.
|
||||
|
|
@ -27,11 +27,11 @@ object is where the art was.
|
|||
| Twist | −360° to 360°: the back face turned against the front, the walls following in slices. |
|
||||
| Taper | 1–100 %: the back face's size against the front's. |
|
||||
| Cap | **Solid** closes the front and back; **Hollow** leaves them open, showing the insides of the walls. |
|
||||
| Bevel | **None**, **Classic** (a straight chamfer), **Rounded** (convex quarter round), **Cove** (concave), **Step** (two steps) or **Ogee** (an S curve). Our own cross-sections. |
|
||||
| Width, Height | How far the bevel reaches across the face and along the depth (0–1,000 pt each). The height is limited to the depth (half of it on each side with Both sides). |
|
||||
| Repeat, Spacing | The cross-section repeated 1–32 times across the width, with a share (0–90 %) of the width flat between repeats. |
|
||||
| Inside | The bevel carved into the shape (the front face shrinks) instead of added around it (the walls stand outside the art). |
|
||||
| Both sides | The back is bevelled too. |
|
||||
| Bevel Shape | **None**, **Classic** (a straight chamfer), **Rounded** (convex quarter round), **Cove** (concave), **Step** (two steps) or **Ogee** (an S curve). Our own cross-sections. |
|
||||
| Width, Height | How far the bevel reaches across the face and along the depth (0–1,000 pt each). The height is limited to the depth (half of it on each side with Bevel both sides). |
|
||||
| Repeat, Space | The cross-section repeated 1–32 times across the width, with a share (0–90 %) of the width flat between repeats. |
|
||||
| Bevel Inside | The bevel carved into the shape (the front face shrinks) instead of added around it (the walls stand outside the art). |
|
||||
| Bevel both sides | The back is bevelled too. |
|
||||
|
||||
Holes stay holes, with walls of their own. Bevels move each corner along its bisector (mitres are limited to four
|
||||
times the width), so a bevel wider than a narrow part of the shape folds over itself.
|
||||
|
|
@ -55,7 +55,7 @@ The flat art turned in 3D about the centre of its bounds. Every fill and stroke
|
|||
stroke as its outline, so it foreshortens with the art) and shaded as one plane; a plane has two sides, so its
|
||||
back shows when it is turned past 90°.
|
||||
|
||||
## Position presets
|
||||
## Rotation presets
|
||||
|
||||
**Front**, **Back**, **Left**, **Right**, **Top** and **Bottom** face the art that way. **Off-Axis** tilts each 20°
|
||||
down and 25° aside, so the top and the right show. **Isometric Left/Right/Top/Bottom** lay the art on that plane
|
||||
|
|
|
|||
Loading…
Reference in New Issue