Skip to main content

egui_charts/config/
mod.rs

1//! Appearance and interaction options for the chart widget.
2//!
3//! [`ChartConfig`] controls visual styling, while [`ChartOptions`] groups time scale,
4//! scrolling, zoom, keyboard, crosshair and tooltip behavior. Start with `Default`
5//! and set the fields needed by your application.
6
7mod chart;
8mod crosshair;
9mod drawing_tool;
10mod interaction;
11mod keyboard;
12mod kinetic;
13mod timescale;
14mod tooltip;
15
16pub use chart::{
17    BackgroundStyle, ChartConfig, NavigationButtons, PriceAxisOptions, RealtimeButtonPos,
18    SessionConfig, WatermarkPos,
19};
20pub use crosshair::{CrosshairMode, CrosshairOptions, CrosshairStyle};
21pub use drawing_tool::{DrawingInteractionMode, DrawingToolType, ParseToolTypeError};
22pub use interaction::{
23    AxisDoubleClickResetOptions, AxisPressedMouseMoveOptions, HandleScaleOptions,
24    HandleScrollOptions, TrackingModeExitMode, TrackingModeOptions,
25};
26pub use keyboard::{KeyboardAction, KeyboardOptions};
27pub use kinetic::KineticScrollOptions;
28pub use timescale::TimeScaleOptions;
29pub use tooltip::{TooltipMode, TooltipOptions};
30
31pub use crate::scales::TimezoneMode;
32
33/// Top-level chart interaction options.
34///
35/// Groups time scale, scrolling, zoom, keyboard, crosshair and tooltip settings
36/// for the chart widget. Visual styling is configured separately with [`ChartConfig`].
37#[derive(Debug, Clone, Default, PartialEq, serde::Serialize, serde::Deserialize)]
38#[non_exhaustive]
39pub struct ChartOptions {
40    /// Time scale (horizontal) options
41    pub time_scale: TimeScaleOptions,
42
43    /// Scroll behavior options
44    pub handle_scroll: HandleScrollOptions,
45
46    /// Scale/zoom behavior options
47    pub handle_scale: HandleScaleOptions,
48
49    /// Kinetic scroll animation
50    pub kinetic_scroll: KineticScrollOptions,
51
52    /// Keyboard shortcuts
53    pub keyboard: KeyboardOptions,
54
55    /// Crosshair options
56    pub crosshair: CrosshairOptions,
57
58    /// Tracking mode options
59    pub tracking_mode: TrackingModeOptions,
60
61    /// Tooltip display options (Floating, Tracking, Magnifier)
62    pub tooltip: TooltipOptions,
63
64    /// Draw the main series or overlay study under the pointer above the others in the main
65    /// pane, in the priority a click selects them.
66    /// Default: false
67    pub hovered_series_on_top: bool,
68}
69
70/// Font weight shared by chart watermarks and drawing annotations.
71#[derive(
72    Debug, Clone, Copy, PartialEq, Eq, Default, Hash, serde::Serialize, serde::Deserialize,
73)]
74pub enum FontWeight {
75    /// Regular weight.
76    #[default]
77    Normal,
78    /// Bold weight.
79    Bold,
80}