60 lines
1.6 KiB
Rust
60 lines
1.6 KiB
Rust
use super::predefined::GridFieldRenderer;
|
|
use super::renders::DataRenderer;
|
|
use crate::data::Radar2d;
|
|
use crate::pipeline::element::{ElementImpl, Target};
|
|
use crate::pipeline::offscreen_renderer::CanvasWrapper;
|
|
use crate::widgets::predefined::color_mapper::ColorMapper;
|
|
use crate::widgets::{LayerImpl};
|
|
use num_traits::{AsPrimitive, FromPrimitive, Num, NumOps};
|
|
use std::any::Any;
|
|
use std::fmt::Debug;
|
|
use radarg_plugin_interface::PluginResult;
|
|
|
|
#[derive(Debug)]
|
|
pub struct GridElementImpl<CMAP, T>
|
|
where
|
|
T: Num + NumOps + PartialOrd + FromPrimitive + AsPrimitive<f64> + Send + Sync + Debug,
|
|
CMAP: ColorMapper<T>,
|
|
{
|
|
renderer: GridFieldRenderer<CMAP, T>,
|
|
}
|
|
|
|
impl<CMAP, T> GridElementImpl<CMAP, T>
|
|
where
|
|
T: Num + NumOps + PartialOrd + FromPrimitive + AsPrimitive<f64> + Send + Sync + Debug,
|
|
CMAP: ColorMapper<T>,
|
|
{
|
|
pub fn new(color: CMAP) -> Self {
|
|
Self {
|
|
renderer: GridFieldRenderer::new(color),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<CMAP, T> ElementImpl for GridElementImpl<CMAP, T>
|
|
where
|
|
T: Num
|
|
+ NumOps
|
|
+ PartialOrd
|
|
+ Copy
|
|
+ Clone
|
|
+ Debug
|
|
+ Send
|
|
+ Sync
|
|
+ FromPrimitive
|
|
+ AsPrimitive<f64>,
|
|
CMAP: ColorMapper<T> + Debug + 'static,
|
|
{
|
|
fn render(
|
|
&self,
|
|
data: &PluginResult,
|
|
canvas: &mut CanvasWrapper,
|
|
cms: &mut crate::coords::cms::CMS,
|
|
) -> crate::pipeline::element::Target {
|
|
let first_block = data.blocks.first().unwrap();
|
|
let data = first_block.clone().into();
|
|
let result = self.renderer.render(canvas, cms, &data, (3000.0, 3000.0));
|
|
result
|
|
}
|
|
}
|