1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//! A Rust CAD System - A library for building 2D *Computer Aided Design*
//! applications.
//!
//! ## A Note on Conventions
//!
//! When using this crate you'll frequently need to work with multiple
//! coordinate spaces. To prevent accidentally mixing up vectors or points in
//! different coordinate spaces (see [the Mars Climate Orbiter][mco]), we use
//! [`euclid`]'s ability to "tag" a geometry primitive with something
//! representing the coordinate space it belongs to.
//!
//! For convenience we expose type aliases for the main coordinate space you'll
//! be using, [`DrawingSpace`].
//!
//! For more details on when each coordinate space is used, consult the docs for
//! [`DrawingSpace`] and [`CanvasSpace`].
//!
//! [mco]: https://en.wikipedia.org/wiki/Mars_Climate_Orbiter

#![forbid(unsafe_code)]
#![deny(missing_debug_implementations, intra_doc_link_resolution_failure)]

pub mod components;
pub mod systems;
mod types;
pub mod window;

pub use arcs_core::*;

pub use types::{CanvasSpace, DrawingSpace, Length, Point, Transform, Vector};

/// An [`primitives::Arc`] in [`DrawingSpace`].
pub type Arc = primitives::Arc<DrawingSpace>;
/// A [`primitives::Line`] in [`DrawingSpace`].
pub type Line = primitives::Line<DrawingSpace>;