mod alias;
mod cursor;
mod pingpong;
mod plane;
mod renderer;
mod size;
mod sprite;
mod stage;
mod theme;
mod xcursor;
#[cfg(test)]
mod tests;
pub use cursor::{Cursor, Frame};
pub use pingpong::PingPong;
pub use plane::{CURSOR_FORMATS, PlanePath, SelectedPlane, select_plane};
pub use renderer::{Paused, Renderer, RendererConfig};
pub use size::{preferred_size, probe_size};
pub use sprite::{Placement, Rotation, compose};
pub use stage::{PlaneState, hardware_rotation, plane_origin, stage};
pub use theme::{Theme, ThemeResolution, default_search_paths};
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
#[non_exhaustive]
pub enum CursorError {
#[error("not a usable cursor name")]
InvalidName,
#[error("no cursor themes are installed")]
NoThemes,
#[error("no theme provides that cursor")]
NotFound,
#[error("malformed cursor file")]
Malformed,
#[error("cursor file exceeds the loader's limits")]
TooLarge,
#[error("cursor file contains no images")]
NoImages,
#[error("not a usable cursor image")]
InvalidImage,
#[error("io: {0}")]
Io(String),
#[error("no plane on this CRTC can carry a cursor")]
NoPlane,
#[error("no supported cursor path is available")]
Unsupported,
#[error("the plane lacks a required property")]
MissingProperty,
#[error("the requested plane cannot carry a cursor on this CRTC")]
PlaneUnusable,
}