use conrod_core::{self as conrod, position::Scalar as ConrodScalar};
use plotters_backend::BackendCoord;
use super::path::PathScalar;
type PositionScalar = i32;
pub(crate) struct PositionParent {
x_start: PositionScalar,
y_end: PositionScalar,
}
impl PositionParent {
#[inline(always)]
pub(crate) fn from(ui: &conrod::UiCell, parent: conrod::widget::Id) -> Option<Self> {
if let Some(parent_rect) = ui.rect_of(parent) {
Some(Self {
x_start: parent_rect.x.start as PositionScalar,
y_end: parent_rect.y.end as PositionScalar,
})
} else {
None
}
}
#[inline(always)]
pub(crate) fn abs_point_conrod_scalar(&self, point: &BackendCoord) -> [ConrodScalar; 2] {
[
(point.0 + self.x_start) as ConrodScalar,
(-point.1 + self.y_end) as ConrodScalar,
]
}
#[inline(always)]
pub(crate) fn abs_point_path_simplifier(&self, point: &BackendCoord) -> [PathScalar; 2] {
[
(point.0 + self.x_start) as PathScalar,
(-point.1 + self.y_end) as PathScalar,
]
}
}