summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/src/color.rs35
-rw-r--r--native/src/lib.rs4
-rw-r--r--src/lib.rs4
3 files changed, 39 insertions, 4 deletions
diff --git a/core/src/color.rs b/core/src/color.rs
index c66ee97c..212c1214 100644
--- a/core/src/color.rs
+++ b/core/src/color.rs
@@ -134,6 +134,41 @@ impl From<[f32; 4]> for Color {
}
}
+/// Creates a [`Color`] with shorter and cleaner syntax.
+///
+/// # Examples
+///
+/// ```
+/// # use iced_core::{Color, color};
+/// assert_eq!(color!(0, 0, 0), Color::from_rgb(0., 0., 0.));
+/// assert_eq!(color!(0, 0, 0, 0.), Color::from_rgba(0., 0., 0., 0.));
+/// assert_eq!(color!(0xffffff), Color::from_rgb(1., 1., 1.));
+/// assert_eq!(color!(0xffffff, 0.), Color::from_rgba(1., 1., 1., 0.));
+/// ```
+#[macro_export]
+macro_rules! color {
+ ($r:expr, $g:expr, $b:expr) => {
+ Color::from_rgb8($r, $g, $b)
+ };
+ ($r:expr, $g:expr, $b:expr, $a:expr) => {
+ Color::from_rgba8($r, $g, $b, $a)
+ };
+ ($hex:expr) => {{
+ let hex = $hex as u32;
+ let r = (hex & 0xff0000) >> 16;
+ let g = (hex & 0xff00) >> 8;
+ let b = (hex & 0xff);
+ Color::from_rgb8(r as u8, g as u8, b as u8)
+ }};
+ ($hex:expr, $a:expr) => {{
+ let hex = $hex as u32;
+ let r = (hex & 0xff0000) >> 16;
+ let g = (hex & 0xff00) >> 8;
+ let b = (hex & 0xff);
+ Color::from_rgba8(r as u8, g as u8, b as u8, $a)
+ }};
+}
+
#[cfg(feature = "palette")]
/// Converts from palette's `Srgba` type to a [`Color`].
impl From<Srgba> for Color {
diff --git a/native/src/lib.rs b/native/src/lib.rs
index 13173901..02269265 100644
--- a/native/src/lib.rs
+++ b/native/src/lib.rs
@@ -80,8 +80,8 @@ mod debug;
pub use iced_core::alignment;
pub use iced_core::time;
pub use iced_core::{
- Alignment, Background, Color, ContentFit, Font, Length, Padding, Point,
- Rectangle, Size, Vector,
+ color, Alignment, Background, Color, ContentFit, Font, Length, Padding,
+ Point, Rectangle, Size, Vector,
};
pub use iced_futures::{executor, futures};
pub use iced_style::application;
diff --git a/src/lib.rs b/src/lib.rs
index 4276f86a..8209952f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -211,8 +211,8 @@ pub use theme::Theme;
pub use runtime::alignment;
pub use runtime::futures;
pub use runtime::{
- Alignment, Background, Color, Command, ContentFit, Font, Length, Padding,
- Point, Rectangle, Size, Vector,
+ color, Alignment, Background, Color, Command, ContentFit, Font, Length,
+ Padding, Point, Rectangle, Size, Vector,
};
#[cfg(feature = "system")]