From a5e4ceb735361481c9933f6879f8eca049976b52 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 18 Sep 2023 19:48:22 -0600 Subject: [PATCH] Checkpoint: Add methods for setting arbitrary lengths --- crates/gpui/src/geometry.rs | 21 +++-- crates/gpui2/src/style.rs | 23 +---- crates/gpui2_macros/src/styleable_helpers.rs | 83 ++++++++++++++++--- crates/storybook/src/ui/component/facepile.rs | 2 + 4 files changed, 90 insertions(+), 39 deletions(-) diff --git a/crates/gpui/src/geometry.rs b/crates/gpui/src/geometry.rs index c83ad73b5d..d1b8302ad4 100644 --- a/crates/gpui/src/geometry.rs +++ b/crates/gpui/src/geometry.rs @@ -1,12 +1,12 @@ -use std::fmt::Debug; - use super::scene::{Path, PathVertex}; use crate::{color::Color, json::ToJson}; +use derive_more::Neg; pub use pathfinder_geometry::*; use rect::RectF; use refineable::Refineable; use serde::{Deserialize, Deserializer}; use serde_json::json; +use std::fmt::Debug; use vector::{vec2f, Vector2F}; pub struct PathBuilder { @@ -235,6 +235,17 @@ pub struct Edges { pub left: T, } +impl Edges { + pub fn uniform(value: T) -> Self { + Self { + top: value.clone(), + right: value.clone(), + bottom: value.clone(), + left: value.clone(), + } + } +} + impl Edges { pub fn auto() -> Self { Self { @@ -322,7 +333,7 @@ impl Edges { } } -#[derive(Clone, Copy)] +#[derive(Clone, Copy, Neg)] pub enum AbsoluteLength { Pixels(f32), Rems(f32), @@ -360,7 +371,7 @@ impl Default for AbsoluteLength { } /// A non-auto length that can be defined in pixels, rems, or percent of parent. -#[derive(Clone, Copy)] +#[derive(Clone, Copy, Neg)] pub enum DefiniteLength { Absolute(AbsoluteLength), Relative(f32), // 0. to 1. @@ -404,7 +415,7 @@ impl Default for DefiniteLength { } /// A length that can be defined in pixels, rems, percent of parent, or auto. -#[derive(Clone, Copy)] +#[derive(Clone, Copy, Neg)] pub enum Length { Definite(DefiniteLength), Auto, diff --git a/crates/gpui2/src/style.rs b/crates/gpui2/src/style.rs index e3e0f5b0c4..688883416f 100644 --- a/crates/gpui2/src/style.rs +++ b/crates/gpui2/src/style.rs @@ -314,6 +314,8 @@ pub trait Styleable { } } +use crate as gpui2; + // Helpers methods that take and return mut self. This includes tailwind style methods for standard sizes etc. // // Example: @@ -322,27 +324,6 @@ pub trait Styleable { pub trait StyleHelpers: Styleable