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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
//! 9-Slice scaling math. //! //! ```text //! left right ┌──→ +x //! ┊←──── outer ────→┊ │ //! ┊ ┊ ↓ //! ┊ ┊←─ inner ─→┊ ┊ + y //! ┊ ┊ ┊ ┊ //! ┌──┬───────────┬──┐┈┈┈┈┈┈┈┈ top //! │ │ │ │ ↑ //! ├──┼───────────┼──┤┈┈┈┈ │ //! │ │ │ │ ↑ │ //! │ │ │ │ inner outer //! │ │ │ │ ↓ │ //! ├──┼───────────┼──┤┈┈┈┈ │ //! │ │ │ │ ↓ //! └──┴───────────┴──┘┈┈┈┈┈┈ bottom //! ``` //! //! ### References //! //! * [Wikipedia: 9-slice scaling](https://en.wikipedia.org/wiki/9-slice_scaling) //! * [Unity: 9-slicing Sprites](https://docs.unity3d.com/Manual/9SliceSprites.html) //! * [CSS Backgrounds and Borders ML3: ¶6 Border Images](https://www.w3.org/TR/css-backgrounds-3/#border-images) //! //! [Scalar]: trait.Scalar.html //! [uNN]: https://doc.rust-lang.org/std/primitive.u32.html //! //! ### Crate Features //! //! | feature | Overview | //! | ----------------- | -------- | //! | debug | Enable extra asserts for debugging nines itself. //! | unsigned-scalar | Allow [Scalar] to use underflow-prone [uNN] types. const DEBUG : bool = cfg!(feature = "debug"); mod dimensions; mod error; mod layout; mod rect; mod scalar; mod scale; mod style; pub use dimensions::{Dimensions, ValidDimensions}; pub use error::Error; pub use layout::Layout; pub use rect::{Rect, ValidRect}; pub use scalar::Scalar; pub use scale::Scale; pub use style::Style; pub(crate) use error::err; /// A { horizontal, vertical } pair. #[derive(Clone, Copy, Debug, Default)] pub struct Axises<V: std::fmt::Debug> { /// A horizontal (x-axis) value pub horizontal: V, /// A vertical (y-axis) value pub vertical: V, }