use std::fmt::{Display, Formatter};
use crate::geometry::Size;
pub struct CraftOptions {
pub renderer: RendererType,
pub window_title: String,
pub window_size: Option<Size<f32>>
}
impl Default for CraftOptions {
fn default() -> Self {
Self {
renderer: RendererType::default(),
window_title: "craft".to_string(),
window_size: None,
}
}
}
#[derive(Copy, Clone, Debug)]
pub enum RendererType {
#[cfg(feature = "vello_renderer")]
Vello,
#[cfg(feature = "vello_cpu_renderer")]
VelloCPU,
#[cfg(feature = "vello_hybrid_renderer")]
VelloHybrid,
Blank,
}
#[allow(clippy::derivable_impls)]
impl Default for RendererType {
fn default() -> Self {
cfg_if::cfg_if! {
if #[cfg(feature = "vello_renderer")] {
RendererType::Vello
} else if #[cfg(feature = "vello_hybrid_renderer")]{
RendererType::VelloHybrid
} else if #[cfg(feature = "vello_cpu_renderer")]{
RendererType::VelloCPU
} else {
RendererType::Blank
}
}
}
}
impl Display for RendererType {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
#[cfg(feature = "vello_renderer")]
RendererType::Vello => write!(f, "vello/wgpu"),
#[cfg(feature = "vello_cpu_renderer")]
RendererType::VelloCPU => write!(f, "vello/cpu"),
#[cfg(feature = "vello_hybrid_renderer")]
RendererType::VelloHybrid => write!(f, "vello/hybrid"),
RendererType::Blank => write!(f, "blank"),
}
}
}