mod app;
mod color;
mod error;
mod font;
mod freeze;
mod geometry;
mod lock;
mod render;
pub use color::{Color, ParseColorError};
pub use error::Error;
pub use geometry::Rect;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ChoiceBox {
pub rect: Rect,
pub label: Option<String>,
pub id: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Selection {
pub rect: Rect,
pub label: Option<String>,
pub output: Option<String>,
pub output_geometry: Option<Rect>,
}
#[derive(Debug, Clone)]
pub struct SelectOptions {
pub background: Color,
pub border: Color,
pub selection: Color,
pub choice: Color,
pub border_weight: f32,
pub font_family: Option<String>,
pub display_dimensions: bool,
pub single_point: bool,
pub restrict: bool,
pub crosshairs: bool,
pub aspect_ratio: Option<(u32, u32)>,
pub all_outputs: bool,
pub freeze: bool,
}
impl Default for SelectOptions {
fn default() -> Self {
Self {
background: Color::from_rgba_u32(0xFFFFFF40),
border: Color::from_rgba_u32(0x000000FF),
selection: Color::from_rgba_u32(0x00000000),
choice: Color::from_rgba_u32(0xFFFFFF40),
border_weight: 2.0,
font_family: None,
display_dimensions: false,
single_point: false,
restrict: false,
crosshairs: false,
aspect_ratio: None,
all_outputs: false,
freeze: false,
}
}
}
pub fn select_region(options: SelectOptions) -> Result<Selection, Error> {
app::run(Vec::new(), options)
}
pub fn select_from_boxes(
boxes: Vec<ChoiceBox>,
options: SelectOptions,
) -> Result<Selection, Error> {
app::run(boxes, options)
}