mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-07 14:33:34 +00:00
Commands whose `id` or `ids` the shared check in Session::execute does not
read still parsed them with id_param/ids_param, which drop anything that is
not a non-negative integer, and then acted on the selection or the current
layer. `object.blend.make {"ids": 3}` blended the selection,
`object.envelope.makeWithWarp {"ids": [2, "x"]}` warped the selection,
`graph.setData {"id": "2"}` changed the selected graph and
`layer.newSublayer {"parent": "2"}` added a sublayer to the current layer.
- cmd::named_ids and cmd::named_id read `ids`/`id` as targets does: a value
that is not an object id, or an unresolved step reference, is an error.
- The symbol and brush, Live Paint, Shape Builder and Image Trace, blend,
envelope and mesh, perspective, Liquify, Puppet Warp and graph helpers use
them in place of the lenient readers.
- layer.clippingMask.toggle checks `id`, and layer.newSublayer checks
`parent`, with checked_id before falling back to the highlighted row or the
current layer.
49 lines
1.5 KiB
Rust
49 lines
1.5 KiB
Rust
//! Graphs: the nine graph tools and Object → Graph (Type…, Data…).
|
|
//!
|
|
//! A graph is a group carrying a [`GraphSpec`]; its children (axes, labels, one group per series
|
|
//! with that series' legend swatch, like Illustrator's group-selectable series) are generated from
|
|
//! the spec. Editing the data or the type regenerates them in place, keeping any move/scale the
|
|
//! user applied to the graph since it was generated.
|
|
|
|
use std::collections::HashMap;
|
|
use std::sync::Arc;
|
|
|
|
use serde_json::{Value, json};
|
|
use vectorcraft_color::{Color, Paint};
|
|
use vectorcraft_doc::{
|
|
Appearance, CharStyle, ColumnDesign, ColumnType, Document, Fractions, GraphDesign, GraphKind, GraphSpec, Justify, Node, NodeId, NodeKind,
|
|
TextObject, TickLength, ValueAxisSide,
|
|
};
|
|
use vectorcraft_geom::{Affine, BezPath, FillRule, PathData, Point, Rect, shapes};
|
|
|
|
use super::typecmd::refresh_bounds;
|
|
use super::{CommandSpec, EngineError, Result, Session, bad, bool_or, cmd, f64_or, f64_req, has_doc, has_selection, named_id, ok, str_param};
|
|
|
|
mod axis;
|
|
mod columns;
|
|
mod commands;
|
|
mod data;
|
|
mod designs;
|
|
mod edit;
|
|
mod generate;
|
|
mod labels;
|
|
mod markers;
|
|
mod series;
|
|
|
|
#[cfg(test)]
|
|
use axis::{nice_axis, tick_values};
|
|
#[cfg(test)]
|
|
use columns::{fill_totals, total_text};
|
|
pub use commands::specs;
|
|
pub(crate) use data::apply_csv;
|
|
#[cfg(test)]
|
|
use data::{fmt_value, parse_csv, to_csv};
|
|
#[cfg(test)]
|
|
use generate::generate;
|
|
#[cfg(test)]
|
|
use series::default_series_color;
|
|
pub(crate) use series::{capture_label_styles, capture_series_paints, paint_targets};
|
|
|
|
#[cfg(test)]
|
|
mod tests;
|