From 558abf648bdeb86d92e7092f4b023d5e55cc673c Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Fri, 14 Feb 2020 04:59:31 +0100 Subject: Add transform stack to `canvas::Frame` --- core/src/color.rs | 9 ++++++++- core/src/point.rs | 7 ++++++- 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'core/src') diff --git a/core/src/color.rs b/core/src/color.rs index d6bdd365..db509b88 100644 --- a/core/src/color.rs +++ b/core/src/color.rs @@ -44,11 +44,18 @@ impl Color { /// /// [`Color`]: struct.Color.html pub fn from_rgb8(r: u8, g: u8, b: u8) -> Color { + Color::from_rgba8(r, g, b, 1.0) + } + + /// Creates a [`Color`] from its RGB8 components and an alpha value. + /// + /// [`Color`]: struct.Color.html + pub fn from_rgba8(r: u8, g: u8, b: u8, a: f32) -> Color { Color { r: f32::from(r) / 255.0, g: f32::from(g) / 255.0, b: f32::from(b) / 255.0, - a: 1.0, + a, } } diff --git a/core/src/point.rs b/core/src/point.rs index 47c8b142..b9a8149c 100644 --- a/core/src/point.rs +++ b/core/src/point.rs @@ -11,10 +11,15 @@ pub struct Point { } impl Point { + /// The origin (i.e. a [`Point`] with both X=0 and Y=0). + /// + /// [`Point`]: struct.Point.html + pub const ORIGIN: Point = Point::new(0.0, 0.0); + /// Creates a new [`Point`] with the given coordinates. /// /// [`Point`]: struct.Point.html - pub fn new(x: f32, y: f32) -> Self { + pub const fn new(x: f32, y: f32) -> Self { Self { x, y } } } -- cgit From 945dfabd7135d1bd44a14e54d95b716642651ed3 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Fri, 14 Feb 2020 05:35:42 +0100 Subject: Move `Size` to `iced_core` --- core/src/lib.rs | 2 ++ core/src/size.rs | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 core/src/size.rs (limited to 'core/src') diff --git a/core/src/lib.rs b/core/src/lib.rs index 3cbce743..ea5e8b43 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -22,6 +22,7 @@ mod font; mod length; mod point; mod rectangle; +mod size; mod vector; pub use align::{Align, HorizontalAlignment, VerticalAlignment}; @@ -31,4 +32,5 @@ pub use font::Font; pub use length::Length; pub use point::Point; pub use rectangle::Rectangle; +pub use size::Size; pub use vector::Vector; diff --git a/core/src/size.rs b/core/src/size.rs new file mode 100644 index 00000000..389b3247 --- /dev/null +++ b/core/src/size.rs @@ -0,0 +1,51 @@ +use std::f32; + +/// An amount of space in 2 dimensions. +#[derive(Debug, Clone, Copy, PartialEq)] +pub struct Size { + /// The width. + pub width: f32, + /// The height. + pub height: f32, +} + +impl Size { + /// A [`Size`] with zero width and height. + /// + /// [`Size`]: struct.Size.html + pub const ZERO: Size = Size::new(0., 0.); + + /// A [`Size`] with infinite width and height. + /// + /// [`Size`]: struct.Size.html + pub const INFINITY: Size = Size::new(f32::INFINITY, f32::INFINITY); + + /// A [`Size`] of infinite width and height. + /// + /// [`Size`]: struct.Size.html + pub const fn new(width: f32, height: f32) -> Self { + Size { width, height } + } + + /// Increments the [`Size`] to account for the given padding. + /// + /// [`Size`]: struct.Size.html + pub fn pad(&self, padding: f32) -> Self { + Size { + width: self.width + padding * 2.0, + height: self.height + padding * 2.0, + } + } +} + +impl From<[f32; 2]> for Size { + fn from([width, height]: [f32; 2]) -> Self { + Size { width, height } + } +} + +impl From<[u16; 2]> for Size { + fn from([width, height]: [u16; 2]) -> Self { + Size::new(width.into(), height.into()) + } +} -- cgit