mirror of
https://github.com/penpot/penpot.git
synced 2025-07-19 00:37:17 +02:00
✨ Add drop grid cells in wasm
This commit is contained in:
parent
52a4fc6030
commit
8dcb376b18
12 changed files with 215 additions and 119 deletions
|
@ -1,11 +1,9 @@
|
|||
use skia_safe::{self as skia};
|
||||
use std::collections::HashMap;
|
||||
|
||||
use crate::shapes::modifiers::common::GetBounds;
|
||||
|
||||
use crate::math::{Bounds, Matrix, Rect};
|
||||
use crate::shapes::modifiers::grid_layout::{calculate_tracks, create_cell_data};
|
||||
use crate::shapes::{modified_children_ids, Frame, Layout, Shape, StructureEntry, Type};
|
||||
use crate::math::{Matrix, Rect};
|
||||
use crate::shapes::modifiers::grid_layout::grid_cell_data;
|
||||
use crate::shapes::{Shape, StructureEntry};
|
||||
use crate::uuid::Uuid;
|
||||
|
||||
pub fn render_overlay(
|
||||
|
@ -16,67 +14,7 @@ pub fn render_overlay(
|
|||
modifiers: &HashMap<Uuid, Matrix>,
|
||||
structure: &HashMap<Uuid, Vec<StructureEntry>>,
|
||||
) {
|
||||
let Type::Frame(Frame {
|
||||
layout: Some(Layout::GridLayout(layout_data, grid_data)),
|
||||
..
|
||||
}) = &shape.shape_type
|
||||
else {
|
||||
return;
|
||||
};
|
||||
|
||||
let bounds = &mut HashMap::<Uuid, Bounds>::new();
|
||||
|
||||
let shape = &mut shape.clone();
|
||||
if let Some(modifiers) = modifiers.get(&shape.id) {
|
||||
shape.apply_transform(modifiers);
|
||||
}
|
||||
|
||||
let layout_bounds = shape.bounds();
|
||||
let children = modified_children_ids(shape, structure.get(&shape.id), false);
|
||||
|
||||
for child_id in children.iter() {
|
||||
let Some(child) = shapes.get(child_id) else {
|
||||
continue;
|
||||
};
|
||||
|
||||
if let Some(modifier) = modifiers.get(child_id) {
|
||||
let mut b = bounds.find(child);
|
||||
b.transform_mut(modifier);
|
||||
bounds.insert(*child_id, b);
|
||||
}
|
||||
}
|
||||
|
||||
let column_tracks = calculate_tracks(
|
||||
true,
|
||||
shape,
|
||||
layout_data,
|
||||
grid_data,
|
||||
&layout_bounds,
|
||||
&grid_data.cells,
|
||||
shapes,
|
||||
bounds,
|
||||
);
|
||||
|
||||
let row_tracks = calculate_tracks(
|
||||
false,
|
||||
shape,
|
||||
layout_data,
|
||||
grid_data,
|
||||
&layout_bounds,
|
||||
&grid_data.cells,
|
||||
shapes,
|
||||
bounds,
|
||||
);
|
||||
|
||||
let cells = create_cell_data(
|
||||
&layout_bounds,
|
||||
&children,
|
||||
shapes,
|
||||
&grid_data.cells,
|
||||
&column_tracks,
|
||||
&row_tracks,
|
||||
true,
|
||||
);
|
||||
let cells = grid_cell_data(shape.clone(), shapes, modifiers, structure, true);
|
||||
|
||||
let mut paint = skia::Paint::default();
|
||||
paint.set_style(skia::PaintStyle::Stroke);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue