mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-10 19:21:22 +00:00
object.envelope.makeWithWarp, resetWithWarp and options read `style`
and `orientation`, and options read `preserveShape`, as text and
ignored any other value, so `{"style": 5}` kept the default style and
`{"orientation": "diagonal"}` kept the current orientation. They now
return "`style` must be a string" or "`preserveShape` must be a
string" for a value other than text or null, and "`orientation` must
be one of horizontal, vertical" for any other orientation, through
the shared `choice` helper. object.envelope.options checks the warp
keys whatever is selected, so a call with no envelope or only mesh
envelopes selected gets the same errors, an unknown style name
included. Omitted and null values keep today's defaults.
Docs: docs/mcp.md, docs/target-app-parity.md.
37 lines
1.4 KiB
Rust
37 lines
1.4 KiB
Rust
//! Live Blends (Object → Blend), Envelope Distort (Object → Envelope Distort) and Gradient Mesh
|
|
//! (Object → Create Gradient Mesh, Mesh tool edits).
|
|
//!
|
|
//! The objects are live document nodes (`NodeKind::Blend`, `NodeKind::Envelope`,
|
|
//! `NodeKind::Mesh`); evaluation lives in `vectorcraft_doc::live` and the renderer. **Expand**
|
|
//! replaces a live object by its evaluated geometry (`vectorcraft_render::expand_live`).
|
|
|
|
use std::sync::Arc;
|
|
|
|
use serde_json::{Value, json};
|
|
use vectorcraft_color::{Color, Paint};
|
|
use vectorcraft_doc::live::{
|
|
self, BlendDefaults, BlendEase, BlendEaseType, BlendOrientation, BlendSpacing, BlendSpec, EnvelopeKind, EnvelopeMap, EnvelopeOptions,
|
|
GradientMesh, MeshAppearance, PreserveShape, Spine,
|
|
};
|
|
use vectorcraft_doc::{Appearance, Document, Node, NodeId, NodeKind, Selection};
|
|
use vectorcraft_geom::{Affine, Anchor, PathData, Point, Vec2};
|
|
|
|
use super::edit::selected_roots;
|
|
use super::expand::gradient_sampler;
|
|
use super::pathops::Beside;
|
|
use super::{
|
|
CommandSpec, EngineError, Result, Session, always, bad, check_numbers, cmd, color_param, f64_or, f64_req, finite_numbers, has_doc, has_multi,
|
|
has_selection, id_param, named_ids, number_or, ok, str_param, switch_or, text_param,
|
|
};
|
|
|
|
mod blend;
|
|
mod commands;
|
|
mod common;
|
|
mod envelope;
|
|
mod mesh;
|
|
|
|
pub(crate) use blend::expand_blends;
|
|
pub use commands::specs;
|
|
pub(super) use common::fix_ids;
|
|
pub(super) use envelope::expand_envelopes_under;
|