mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-11 20:01:43 +00:00
Paragraph settings given to all of a graph label's text with text.setFormat (indents, spacing, hyphenation, Justification options, composer, direction, kashida, kinsoku, mojikumi, burasagari and the rest) and the label's anti-aliasing method were lost when the graph drew its labels again, because the graph kept only a character style for each kind of label. Each kind now also keeps its paragraph settings and anti-aliasing method, saved with the graph in its label styles, and the graph still sets each label's alignment for its place. The legend spaces its entries by the kept legend settings: Legend Across Top measures each label with its indents and spacing, both legend layouts make room for extra leading or paragraph spacing, and a label with a negative indent or negative space before moves right or down so it stays clear of its swatch and of the entry above it.
52 lines
1.7 KiB
Rust
52 lines
1.7 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_anti_alias, capture_label_paragraphs, capture_label_styles, capture_series_object_opacity, capture_series_opacity,
|
|
capture_series_paints, capture_series_top_paints, paint_targets, series_object_opacity_differs, shown_paint,
|
|
};
|
|
|
|
#[cfg(test)]
|
|
mod tests;
|