use std::{
ops::{
Deref,
Div,
},
sync::Arc,
};
use freya_engine::prelude::Paragraph;
use freya_native_core::SendAnyMap;
use torin::{
geometry::{
Area,
Size2D,
},
prelude::NodeData,
};
#[derive(Clone, Debug, Default, PartialEq)]
pub struct NodeReferenceLayout {
pub area: Area,
pub inner: Size2D,
}
impl NodeReferenceLayout {
pub fn div(&mut self, rhs: f32) {
self.area = self.area.div(rhs);
self.inner = self.inner.div(rhs);
}
}
#[derive(Debug)]
pub enum CursorLayoutResponse {
CursorPosition { position: usize, id: usize },
TextSelection { from: usize, to: usize, id: usize },
}
pub struct CachedParagraph(pub Paragraph, pub f32);
unsafe impl Send for CachedParagraph {}
unsafe impl Sync for CachedParagraph {}
#[derive(Clone)]
pub struct LayoutNodeData(pub Arc<SendAnyMap>);
impl Deref for LayoutNodeData {
type Target = Arc<SendAnyMap>;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl NodeData for LayoutNodeData {}