theta_chart/chart/
scales.rs1use chrono::NaiveDateTime;
2
3use crate::coord::{Arc, Axes, Stick, Vector};
4
5pub trait ScaleLabel {
7 fn scale(&self, value: f64) -> f64;
9 fn scale_index(&self, label: String) -> usize;
10 fn gen_axes(&self) -> Axes;
11 fn to_stick(&self) -> Vec<Stick>;
12}
13pub trait ScaleNumber {
15 fn domain(&self) -> (f64, f64);
17 fn scale(&self, value: f64) -> f64;
18 fn count_distance_step(&self) -> (f64, f64, f64);
19 fn to_percent(&self) -> Vec<f64>;
20
21 fn gen_pie(&self) -> Vec<Arc>;
23 fn to_percent_radar(&self) -> Vec<f64>;
24 fn gen_axes(&self) -> Axes;
25
26 fn to_stick(&self) -> Vec<Stick>;
28
29 fn gen_radar_grid(&self, count: usize) -> Vec<Vector>;
31}
32
33pub trait ScaleTime {
35 fn domain(&self) -> (NaiveDateTime, NaiveDateTime);
36 fn domain_unix(&self) -> (f64, f64);
37 fn scale(&self, value: NaiveDateTime) -> f64;
38 fn gen_axes(&self) -> Axes;
43 fn to_stick(&self) -> Vec<Stick>;
45}