summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/src/lib.rs2
-rw-r--r--core/src/padding.rs102
-rw-r--r--examples/screenshot/src/main.rs6
-rw-r--r--examples/scrollable/src/main.rs6
-rw-r--r--src/lib.rs1
5 files changed, 70 insertions, 47 deletions
diff --git a/core/src/lib.rs b/core/src/lib.rs
index 32156441..40a288e5 100644
--- a/core/src/lib.rs
+++ b/core/src/lib.rs
@@ -20,6 +20,7 @@ pub mod keyboard;
pub mod layout;
pub mod mouse;
pub mod overlay;
+pub mod padding;
pub mod renderer;
pub mod svg;
pub mod text;
@@ -35,7 +36,6 @@ mod color;
mod content_fit;
mod element;
mod length;
-mod padding;
mod pixels;
mod point;
mod rectangle;
diff --git a/core/src/padding.rs b/core/src/padding.rs
index b8c941d8..a0915fbc 100644
--- a/core/src/padding.rs
+++ b/core/src/padding.rs
@@ -1,3 +1,4 @@
+//! Space stuff around the perimeter.
use crate::{Pixels, Size};
/// An amount of space to pad for each side of a box
@@ -9,7 +10,6 @@ use crate::{Pixels, Size};
/// #
/// let padding = Padding::from(20); // 20px on all sides
/// let padding = Padding::from([10, 20]); // top/bottom, left/right
-/// let padding = Padding::from([5, 10, 15, 20]); // top, right, bottom, left
/// ```
///
/// Normally, the `padding` method of a widget will ask for an `Into<Padding>`,
@@ -31,7 +31,6 @@ use crate::{Pixels, Size};
///
/// let widget = Widget::new().padding(20); // 20px on all sides
/// let widget = Widget::new().padding([10, 20]); // top/bottom, left/right
-/// let widget = Widget::new().padding([5, 10, 15, 20]); // top, right, bottom, left
/// ```
#[derive(Debug, Copy, Clone)]
pub struct Padding {
@@ -45,6 +44,43 @@ pub struct Padding {
pub left: f32,
}
+/// Create a [`Padding`] that is equal on all sides.
+pub fn all(padding: impl Into<Pixels>) -> Padding {
+ Padding::new(padding.into().0)
+}
+
+/// Create some top [`Padding`].
+pub fn top(padding: impl Into<Pixels>) -> Padding {
+ Padding {
+ top: padding.into().0,
+ ..Padding::ZERO
+ }
+}
+
+/// Create some bottom [`Padding`].
+pub fn bottom(padding: impl Into<Pixels>) -> Padding {
+ Padding {
+ bottom: padding.into().0,
+ ..Padding::ZERO
+ }
+}
+
+/// Create some left [`Padding`].
+pub fn left(padding: impl Into<Pixels>) -> Padding {
+ Padding {
+ left: padding.into().0,
+ ..Padding::ZERO
+ }
+}
+
+/// Create some right [`Padding`].
+pub fn right(padding: impl Into<Pixels>) -> Padding {
+ Padding {
+ right: padding.into().0,
+ ..Padding::ZERO
+ }
+}
+
impl Padding {
/// Padding of zero
pub const ZERO: Padding = Padding {
@@ -64,35 +100,43 @@ impl Padding {
}
}
- /// Create some top [`Padding`].
- pub fn top(padding: impl Into<Pixels>) -> Self {
+ /// Sets the [`top`] of the [`Padding`].
+ ///
+ /// [`top`]: Self::top
+ pub fn top(self, top: impl Into<Pixels>) -> Self {
Self {
- top: padding.into().0,
- ..Self::ZERO
+ top: top.into().0,
+ ..self
}
}
- /// Create some right [`Padding`].
- pub fn right(padding: impl Into<Pixels>) -> Self {
+ /// Sets the [`bottom`] of the [`Padding`].
+ ///
+ /// [`bottom`]: Self::bottom
+ pub fn bottom(self, bottom: impl Into<Pixels>) -> Self {
Self {
- right: padding.into().0,
- ..Self::ZERO
+ bottom: bottom.into().0,
+ ..self
}
}
- /// Create some bottom [`Padding`].
- pub fn bottom(padding: impl Into<Pixels>) -> Self {
+ /// Sets the [`left`] of the [`Padding`].
+ ///
+ /// [`left`]: Self::left
+ pub fn left(self, left: impl Into<Pixels>) -> Self {
Self {
- bottom: padding.into().0,
- ..Self::ZERO
+ left: left.into().0,
+ ..self
}
}
- /// Create some left [`Padding`].
- pub fn left(padding: impl Into<Pixels>) -> Self {
+ /// Sets the [`right`] of the [`Padding`].
+ ///
+ /// [`right`]: Self::right
+ pub fn right(self, right: impl Into<Pixels>) -> Self {
Self {
- left: padding.into().0,
- ..Self::ZERO
+ right: right.into().0,
+ ..self
}
}
@@ -143,17 +187,6 @@ impl From<[u16; 2]> for Padding {
}
}
-impl From<[u16; 4]> for Padding {
- fn from(p: [u16; 4]) -> Self {
- Padding {
- top: f32::from(p[0]),
- right: f32::from(p[1]),
- bottom: f32::from(p[2]),
- left: f32::from(p[3]),
- }
- }
-}
-
impl From<f32> for Padding {
fn from(p: f32) -> Self {
Padding {
@@ -176,17 +209,6 @@ impl From<[f32; 2]> for Padding {
}
}
-impl From<[f32; 4]> for Padding {
- fn from(p: [f32; 4]) -> Self {
- Padding {
- top: p[0],
- right: p[1],
- bottom: p[2],
- left: p[3],
- }
- }
-}
-
impl From<Padding> for Size {
fn from(padding: Padding) -> Self {
Self::new(padding.horizontal(), padding.vertical())
diff --git a/examples/screenshot/src/main.rs b/examples/screenshot/src/main.rs
index 7fc87446..2d980dd9 100644
--- a/examples/screenshot/src/main.rs
+++ b/examples/screenshot/src/main.rs
@@ -170,7 +170,7 @@ impl Example {
column![
column![
button(centered_text("Screenshot!"))
- .padding([10, 20, 10, 20])
+ .padding([10, 20])
.width(Fill)
.on_press(Message::Screenshot),
if !self.png_saving {
@@ -182,7 +182,7 @@ impl Example {
.style(button::secondary)
}
.style(button::secondary)
- .padding([10, 20, 10, 20])
+ .padding([10, 20])
.width(Fill)
]
.spacing(10),
@@ -191,7 +191,7 @@ impl Example {
button(centered_text("Crop"))
.on_press(Message::Crop)
.style(button::danger)
- .padding([10, 20, 10, 20])
+ .padding([10, 20])
.width(Fill),
]
.spacing(10)
diff --git a/examples/scrollable/src/main.rs b/examples/scrollable/src/main.rs
index a1c23976..de4f2f9a 100644
--- a/examples/scrollable/src/main.rs
+++ b/examples/scrollable/src/main.rs
@@ -213,7 +213,7 @@ impl ScrollableDemo {
scroll_to_beginning_button(),
]
.align_x(Center)
- .padding([40, 0, 40, 0])
+ .padding([40, 0])
.spacing(40),
)
.direction(scrollable::Direction::Vertical(
@@ -239,7 +239,7 @@ impl ScrollableDemo {
]
.height(450)
.align_y(Center)
- .padding([0, 40, 0, 40])
+ .padding([0, 40])
.spacing(40),
)
.direction(scrollable::Direction::Horizontal(
@@ -281,7 +281,7 @@ impl ScrollableDemo {
scroll_to_beginning_button(),
]
.align_y(Center)
- .padding([0, 40, 0, 40])
+ .padding([0, 40])
.spacing(40),
)
.direction({
diff --git a/src/lib.rs b/src/lib.rs
index 8c6aeea3..7ced9a57 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -196,6 +196,7 @@ pub use crate::core::alignment;
pub use crate::core::border;
pub use crate::core::color;
pub use crate::core::gradient;
+pub use crate::core::padding;
pub use crate::core::theme;
pub use crate::core::{
Alignment, Background, Border, Color, ContentFit, Degrees, Gradient,