mirror of
https://github.com/penpot/penpot.git
synced 2025-05-24 00:06:11 +02:00
✨ Flex layout modifiers wasm implementation
* ✨ Flex layout modifiers wasm implementation * ✨ Flex auto modifiers propagation
This commit is contained in:
parent
fa9d8a9b15
commit
fa0da3a695
13 changed files with 1400 additions and 219 deletions
|
@ -153,9 +153,9 @@ impl ConstraintV {
|
|||
pub type Color = skia::Color;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
#[allow(dead_code)]
|
||||
pub struct Shape {
|
||||
pub id: Uuid,
|
||||
pub parent_id: Option<Uuid>,
|
||||
pub shape_type: Type,
|
||||
pub children: Vec<Uuid>,
|
||||
pub selrect: math::Rect,
|
||||
|
@ -180,6 +180,7 @@ impl Shape {
|
|||
pub fn new(id: Uuid) -> Self {
|
||||
Self {
|
||||
id,
|
||||
parent_id: None,
|
||||
shape_type: Type::Rect(Rect::default()),
|
||||
children: Vec::<Uuid>::new(),
|
||||
selrect: math::Rect::new_empty(),
|
||||
|
@ -201,14 +202,32 @@ impl Shape {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn set_parent(&mut self, id: Uuid) {
|
||||
self.parent_id = Some(id);
|
||||
}
|
||||
|
||||
pub fn set_shape_type(&mut self, shape_type: Type) {
|
||||
self.shape_type = shape_type;
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn is_frame(&self) -> bool {
|
||||
matches!(self.shape_type, Type::Frame(_))
|
||||
}
|
||||
|
||||
pub fn is_group_like(&self) -> bool {
|
||||
matches!(self.shape_type, Type::Group(_)) || matches!(self.shape_type, Type::Bool(_))
|
||||
}
|
||||
|
||||
pub fn has_layout(&self) -> bool {
|
||||
match self.shape_type {
|
||||
Type::Frame(Frame {
|
||||
layout: Some(_), ..
|
||||
}) => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_selrect(&mut self, left: f32, top: f32, right: f32, bottom: f32) {
|
||||
self.selrect.set_ltrb(left, top, right, bottom);
|
||||
match self.shape_type {
|
||||
|
@ -276,6 +295,7 @@ impl Shape {
|
|||
min_h: Option<f32>,
|
||||
max_w: Option<f32>,
|
||||
min_w: Option<f32>,
|
||||
align_self: Option<AlignSelf>,
|
||||
is_absolute: bool,
|
||||
z_index: i32,
|
||||
) {
|
||||
|
@ -292,6 +312,7 @@ impl Shape {
|
|||
min_w,
|
||||
is_absolute,
|
||||
z_index,
|
||||
align_self,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -654,6 +675,34 @@ impl Shape {
|
|||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn is_layout_vertical_auto(&self) -> bool {
|
||||
match &self.layout_item {
|
||||
Some(LayoutItem { v_sizing, .. }) => v_sizing == &Sizing::Auto,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn is_layout_vertical_fill(&self) -> bool {
|
||||
match &self.layout_item {
|
||||
Some(LayoutItem { v_sizing, .. }) => v_sizing == &Sizing::Fill,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn is_layout_horizontal_auto(&self) -> bool {
|
||||
match &self.layout_item {
|
||||
Some(LayoutItem { h_sizing, .. }) => h_sizing == &Sizing::Auto,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn is_layout_horizontal_fill(&self) -> bool {
|
||||
match &self.layout_item {
|
||||
Some(LayoutItem { h_sizing, .. }) => h_sizing == &Sizing::Fill,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue