use super::{PanelKind, types::CameraPose};
use glam::Vec3;
use indicatrix::geometry::meet_solver::SolvedTier;
use std::{collections::BTreeSet, sync::Arc};
pub enum RedrawRequest {
Reproject {
planes: Vec<(Vec3, f32)>,
camera: CameraPose,
size: (u32, u32),
view_mode: u8,
gear: Option<(u32, f32)>,
},
UpdateFacetOverlay(super::types::FacetOverlay),
Planned(Box<PlannedFrame>),
}
pub struct ReplanRequest {
pub design: Arc<indicatrix_cut_core::Design>,
pub dirty: BTreeSet<usize>,
pub last_solved: Option<Vec<SolvedTier>>,
pub camera: CameraPose,
pub size: (u32, u32),
pub selected_tier: Option<usize>,
pub n_d: f64,
pub view_mode: u8,
pub generation: u64,
pub show_preform: bool,
pub enlarged_panel: i32,
}
pub const fn panel_kind_from_index(index: i32) -> Option<PanelKind> {
match index {
0 => Some(PanelKind::Crown),
1 => Some(PanelKind::Pavilion),
2 => Some(PanelKind::Profile),
_ => None,
}
}
pub struct PlanJob {
pub design: Arc<indicatrix_cut_core::Design>,
pub dirty: BTreeSet<usize>,
pub last_solved: Option<Vec<SolvedTier>>,
pub camera: CameraPose,
pub size: (u32, u32),
pub selected_tier: Option<usize>,
pub n_d: f64,
pub view_mode: u8,
pub generation: u64,
pub show_preform: bool,
pub enlarged_panel: i32,
pub tier_cutoff: Option<usize>,
}
pub struct PlannedFrame {
pub design: Arc<indicatrix_cut_core::Design>,
pub planes: Vec<(Vec3, f32)>,
pub style: super::SolidStyle,
pub solved: Option<Vec<SolvedTier>>,
pub stale: bool,
pub unsolvable_status: Option<String>,
pub camera: CameraPose,
pub size: (u32, u32),
pub view_mode: u8,
pub generation: u64,
pub n_d: f64,
pub enlarged_panel: i32,
}