Trait plotters_iced::Chart
source · pub trait Chart<Message> {
type State: Default + 'static;
// Required method
fn build_chart<DB: DrawingBackend>(
&self,
state: &Self::State,
builder: ChartBuilder<'_, '_, DB>
);
// Provided methods
fn draw_chart<DB: DrawingBackend>(
&self,
state: &Self::State,
root: DrawingArea<DB, Shift>
) { ... }
fn draw<R: Renderer, F: Fn(&mut Frame)>(
&self,
renderer: &R,
size: Size,
f: F
) -> Geometry { ... }
fn update(
&self,
state: &mut Self::State,
event: Event,
bounds: Rectangle,
cursor: Cursor
) -> (Status, Option<Message>) { ... }
fn mouse_interaction(
&self,
state: &Self::State,
bounds: Rectangle,
cursor: Cursor
) -> Interaction { ... }
}
Expand description
Chart View Model
Example
ⓘ
use plotters::prelude::*;
use plotters_iced::{Chart,ChartWidget};
struct MyChart;
impl Chart<Message> for MyChart {
type State = ();
fn build_chart<DB:DrawingBackend>(&self, state: &Self::State, builder: ChartBuilder<DB>) {
//build your chart here, please refer to plotters for more details
}
}
impl MyChart {
fn view(&mut self)->Element<Message> {
ChartWidget::new(self)
.width(Length::Unit(200))
.height(Length::Unit(200))
.into()
}
}
Required Associated Types§
Required Methods§
sourcefn build_chart<DB: DrawingBackend>(
&self,
state: &Self::State,
builder: ChartBuilder<'_, '_, DB>
)
fn build_chart<DB: DrawingBackend>( &self, state: &Self::State, builder: ChartBuilder<'_, '_, DB> )
draw chart with ChartBuilder
for simple chart, you impl this method
Provided Methods§
sourcefn draw_chart<DB: DrawingBackend>(
&self,
state: &Self::State,
root: DrawingArea<DB, Shift>
)
fn draw_chart<DB: DrawingBackend>( &self, state: &Self::State, root: DrawingArea<DB, Shift> )
override this method if you want more freedom of drawing area
Example
ⓘ
use plotters::prelude::*;
use plotters_iced::{Chart,ChartWidget};
struct MyChart{}
impl Chart<Message> for MyChart {
// leave it empty
fn build_chart<DB: DrawingBackend>(&self, state: &Self::State, builder: ChartBuilder<DB>){}
fn draw_chart<DB: DrawingBackend>(&self, state: &Self::State, root: DrawingArea<DB, Shift>){
let children = root.split_evenly((3,3));
for (area, color) in children.into_iter().zip(0..) {
area.fill(&Palette99::pick(color)).unwrap();
}
}
}
sourcefn draw<R: Renderer, F: Fn(&mut Frame)>(
&self,
renderer: &R,
size: Size,
f: F
) -> Geometry
fn draw<R: Renderer, F: Fn(&mut Frame)>( &self, renderer: &R, size: Size, f: F ) -> Geometry
draw on [iced_graphics::widget::canvas::Canvas
]
override this method if you want to use [iced_graphics::widget::canvas::Cache
]
Example
ⓘ
impl Chart<Message> for CpuUsageChart {
#[inline]
fn draw<R: Renderer, F: Fn(&mut Frame)>(&self, renderer: &R, bounds: Size, draw_fn: F) -> Geometry {
R::draw(renderer, &self.cache, size, draw_fn)
}
//...
}
sourcefn update(
&self,
state: &mut Self::State,
event: Event,
bounds: Rectangle,
cursor: Cursor
) -> (Status, Option<Message>)
fn update( &self, state: &mut Self::State, event: Event, bounds: Rectangle, cursor: Cursor ) -> (Status, Option<Message>)
react on event
sourcefn mouse_interaction(
&self,
state: &Self::State,
bounds: Rectangle,
cursor: Cursor
) -> Interaction
fn mouse_interaction( &self, state: &Self::State, bounds: Rectangle, cursor: Cursor ) -> Interaction
Returns the current mouse interaction of the Chart