mirror of
https://codeberg.org/waydeer/layer-shika.git
synced 2025-12-23 10:25:54 +00:00
refactor: improve margin and scale factor on builder
This commit is contained in:
parent
791ceaa34e
commit
dc676d606e
3 changed files with 63 additions and 12 deletions
|
|
@ -149,13 +149,8 @@ impl LayerShika<HasComponent> {
|
|||
}
|
||||
|
||||
#[must_use]
|
||||
pub const fn with_margin(mut self, top: i32, right: i32, bottom: i32, left: i32) -> Self {
|
||||
self.config.margin = Margins {
|
||||
top,
|
||||
right,
|
||||
bottom,
|
||||
left,
|
||||
};
|
||||
pub fn with_margin(mut self, margin: impl Into<Margins>) -> Self {
|
||||
self.config.margin = margin.into();
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -172,14 +167,15 @@ impl LayerShika<HasComponent> {
|
|||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn with_namespace(mut self, namespace: String) -> Self {
|
||||
self.config.namespace = namespace;
|
||||
pub fn with_namespace(mut self, namespace: impl Into<String>) -> Self {
|
||||
self.config.namespace = namespace.into();
|
||||
self
|
||||
}
|
||||
|
||||
pub fn with_scale_factor(mut self, scale_factor: f32) -> Result<Self> {
|
||||
self.config.scale_factor = ScaleFactor::new(scale_factor)?;
|
||||
Ok(self)
|
||||
#[must_use]
|
||||
pub fn with_scale_factor(mut self, sf: impl TryInto<ScaleFactor, Error = DomainError>) -> Self {
|
||||
self.config.scale_factor = sf.try_into().unwrap_or_default();
|
||||
self
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
|
|
|
|||
|
|
@ -174,6 +174,14 @@ impl Default for ScaleFactor {
|
|||
}
|
||||
}
|
||||
|
||||
impl TryFrom<f32> for ScaleFactor {
|
||||
type Error = DomainError;
|
||||
|
||||
fn try_from(factor: f32) -> Result<Self, Self::Error> {
|
||||
Self::new(factor)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||
pub struct LogicalPosition {
|
||||
x: f32,
|
||||
|
|
|
|||
|
|
@ -5,3 +5,50 @@ pub struct Margins {
|
|||
pub bottom: i32,
|
||||
pub left: i32,
|
||||
}
|
||||
|
||||
impl Margins {
|
||||
pub const fn all(px: i32) -> Self {
|
||||
Self {
|
||||
top: px,
|
||||
right: px,
|
||||
bottom: px,
|
||||
left: px,
|
||||
}
|
||||
}
|
||||
|
||||
pub const fn symmetric(vertical: i32, horizontal: i32) -> Self {
|
||||
Self {
|
||||
top: vertical,
|
||||
right: horizontal,
|
||||
bottom: vertical,
|
||||
left: horizontal,
|
||||
}
|
||||
}
|
||||
|
||||
pub const fn new(top: i32, right: i32, bottom: i32, left: i32) -> Self {
|
||||
Self {
|
||||
top,
|
||||
right,
|
||||
bottom,
|
||||
left,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<i32> for Margins {
|
||||
fn from(px: i32) -> Self {
|
||||
Self::all(px)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<(i32, i32)> for Margins {
|
||||
fn from((vertical, horizontal): (i32, i32)) -> Self {
|
||||
Self::symmetric(vertical, horizontal)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<(i32, i32, i32, i32)> for Margins {
|
||||
fn from((top, right, bottom, left): (i32, i32, i32, i32)) -> Self {
|
||||
Self::new(top, right, bottom, left)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue