1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//! Configuration types for basic plot types
//!
//! This module provides configuration structs for fundamental plot types:
//! - [`LineConfig`] - Line plot configuration
//! - [`ScatterConfig`] - Scatter plot configuration
//! - [`BarConfig`] - Bar chart configuration
//!
//! These configs integrate with [`PlotBuilder<C>`](crate::core::PlotBuilder) to provide
//! a zero-ceremony API for basic plots.
//!
//! # Example
//!
//! ```rust,ignore
//! use ruviz::prelude::*;
//!
//! // Line plot with configuration
//! Plot::new()
//! .line(&x, &y)
//! .line_width(2.0)
//! .color(Color::BLUE)
//! .save("line.png")?;
//!
//! // Scatter plot with markers
//! Plot::new()
//! .scatter(&x, &y)
//! .marker(MarkerStyle::Circle)
//! .marker_size(8.0)
//! .save("scatter.png")?;
//! ```
pub use ;
pub use LineConfig;
pub use ScatterConfig;
use crateColor;
/// The one rule turning a marker-edge configuration into a renderer spec.
///
/// Shared by [`ScatterConfig`] and [`LineConfig`] so `.scatter().marker(..)` and
/// `.line().marker(..)` cannot drift apart on what counts as "no edge".
///
/// Returns `None` when nothing should be stroked — `show_edge` off, or a
/// non-positive width, since an invisible rim is no rim. A `None` colour in the
/// returned pair means "derive from the fill", which cannot be done here:
/// auto-palette series only learn their fill at render time.
///
/// The width stays in points; the renderer scales it to device pixels, so the
/// rim is the same physical thickness at every DPI.
pub