From f79e6e378d2d83e4fc62662386fc9822780bc011 Mon Sep 17 00:00:00 2001 From: TrueDoctor Date: Fri, 6 Aug 2021 12:34:30 +0200 Subject: [PATCH] Transform API (#301) * Enforce cache dirtification * Turn all shapes into one struct * Remove working folder * Remove old shapes * Major restructuring * Refactor Ellipse, Rectangle and ShapeTool * Simplify bounding box calculation for folder * Fix panic in select tool * Refactorselect tool * Refactor Align * Refactor flipping layers * Zoom to fit all * Refactor tools to avoid state keeping * Refactor more tools to use state that is passed along * Fix whitespace + change selection box style * Set viewbox of svg export based on the contents --- Cargo.lock | 7 +- .../web/src/components/panels/LayerTree.vue | 18 +- client/web/src/utilities/response-handler.ts | 26 +- client/web/wasm/src/document.rs | 33 +- core/document/Cargo.toml | 4 +- core/document/src/document.rs | 475 ++++++------- core/document/src/intersection.rs | 55 +- core/document/src/layers/blend_mode.rs | 44 ++ core/document/src/layers/ellipse.rs | 37 - core/document/src/layers/folder.rs | 94 +-- core/document/src/layers/line.rs | 40 -- core/document/src/layers/mod.rs | 236 ++----- core/document/src/layers/polyline.rs | 66 -- core/document/src/layers/rect.rs | 39 -- core/document/src/layers/shape.rs | 76 --- core/document/src/layers/simple_shape.rs | 146 ++++ core/document/src/lib.rs | 2 + core/document/src/operation.rs | 62 +- core/document/src/response.rs | 2 + core/editor/Cargo.toml | 2 +- core/editor/src/communication/dispatcher.rs | 103 ++- core/editor/src/communication/message.rs | 29 +- core/editor/src/communication/mod.rs | 13 + core/editor/src/consts.rs | 4 +- core/editor/src/document/document_file.rs | 558 ++++++++++++--- .../src/document/document_message_handler.rs | 639 +----------------- core/editor/src/document/layer_panel.rs | 94 +++ core/editor/src/document/mod.rs | 10 +- core/editor/src/document/movement_handler.rs | 214 ++++++ .../src/frontend/frontend_message_handler.rs | 1 + core/editor/src/frontend/layer_panel.rs | 28 +- .../src/global/global_message_handler.rs | 2 +- core/editor/src/input/input_mapper.rs | 120 ++-- core/editor/src/input/input_preprocessor.rs | 7 +- core/editor/src/input/keyboard.rs | 2 +- core/editor/src/input/mouse.rs | 23 +- core/editor/src/lib.rs | 3 + core/editor/src/misc/error.rs | 2 + core/editor/src/misc/test_utils.rs | 8 +- core/editor/src/tool/mod.rs | 14 +- core/editor/src/tool/tool_message_handler.rs | 8 +- core/editor/src/tool/tool_options.rs | 6 +- core/editor/src/tool/tools/crop.rs | 2 +- core/editor/src/tool/tools/ellipse.rs | 152 ++--- core/editor/src/tool/tools/eyedropper.rs | 32 +- core/editor/src/tool/tools/fill.rs | 18 +- core/editor/src/tool/tools/line.rs | 150 ++-- core/editor/src/tool/tools/mod.rs | 1 + core/editor/src/tool/tools/navigate.rs | 2 +- core/editor/src/tool/tools/path.rs | 2 +- core/editor/src/tool/tools/pen.rs | 69 +- core/editor/src/tool/tools/rectangle.rs | 153 ++--- core/editor/src/tool/tools/resize.rs | 34 + core/editor/src/tool/tools/select.rs | 186 +++-- core/editor/src/tool/tools/shape.rs | 157 ++--- 55 files changed, 2059 insertions(+), 2251 deletions(-) create mode 100644 core/document/src/layers/blend_mode.rs delete mode 100644 core/document/src/layers/ellipse.rs delete mode 100644 core/document/src/layers/line.rs delete mode 100644 core/document/src/layers/polyline.rs delete mode 100644 core/document/src/layers/rect.rs delete mode 100644 core/document/src/layers/shape.rs create mode 100644 core/document/src/layers/simple_shape.rs create mode 100644 core/editor/src/document/layer_panel.rs create mode 100644 core/editor/src/document/movement_handler.rs create mode 100644 core/editor/src/tool/tools/resize.rs diff --git a/Cargo.lock b/Cargo.lock index 29f86d7ef..30951f0b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -77,9 +77,9 @@ dependencies = [ [[package]] name = "glam" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4126c0479ccf7e8664c36a2d719f5f2c140fbb4f9090008098d2c291fa5b3f16" +checksum = "e01732b97afd8508eee3333a541b9f7610f454bb818669e66e90f5f57c93a776" dependencies = [ "serde", ] @@ -168,8 +168,7 @@ dependencies = [ [[package]] name = "kurbo" version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e30b1df631d23875f230ed3ddd1a88c231f269a04b2044eb6ca87e763b5f4c42" +source = "git+https://github.com/linebender/kurbo#0ef68211223b956942c4a5834d66a2625cb8d575" dependencies = [ "arrayvec", "serde", diff --git a/client/web/src/components/panels/LayerTree.vue b/client/web/src/components/panels/LayerTree.vue index bc5e96211..91ebde614 100644 --- a/client/web/src/components/panels/LayerTree.vue +++ b/client/web/src/components/panels/LayerTree.vue @@ -117,7 +117,7 @@