From d5c9821a027169a110c4a2849cfa7fdde0a42070 Mon Sep 17 00:00:00 2001 From: George Atkinson Date: Fri, 23 Jul 2021 18:21:07 +0100 Subject: [PATCH] Blend modes (#252) * Add backend for selecting layer blend mode * Change dropdown input to support callback on change * Add debug messages * Fix canvas update for blend-modes * Finish up and polish blend modes implementations * Add changes from code review Co-authored-by: Keavon Chambers Co-authored-by: Dennis Kobert --- Cargo.lock | 3 + client/web/src/components/panels/Document.vue | 11 +- .../web/src/components/panels/LayerTree.vue | 135 ++++++++++++++---- .../widgets/floating-menus/MenuList.vue | 1 + .../widgets/inputs/DropdownInput.vue | 47 ++++-- client/web/src/utilities/response-handler.ts | 45 ++++++ client/web/wasm/Cargo.toml | 1 + client/web/wasm/src/document.rs | 28 ++++ client/web/wasm/src/lib.rs | 12 +- client/web/wasm/src/wrappers.rs | 2 +- core/document/src/document.rs | 16 ++- core/document/src/layers/mod.rs | 63 +++++++- core/document/src/layers/style/mod.rs | 6 +- core/document/src/operation.rs | 6 +- core/editor/src/document/document_file.rs | 25 ++-- .../src/document/document_message_handler.rs | 9 ++ core/editor/src/frontend/layer_panel.rs | 6 +- core/editor/src/tool/tool_options.rs | 1 + 18 files changed, 348 insertions(+), 69 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 621371ba52..29f86d7eff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "aho-corasick" version = "0.7.18" @@ -125,6 +127,7 @@ name = "graphite-wasm-wrapper" version = "0.1.0" dependencies = [ "console_error_panic_hook", + "graphite-document-core", "graphite-editor-core", "log", "serde", diff --git a/client/web/src/components/panels/Document.vue b/client/web/src/components/panels/Document.vue index 31213e1041..2c6972eae8 100644 --- a/client/web/src/components/panels/Document.vue +++ b/client/web/src/components/panels/Document.vue @@ -2,7 +2,7 @@
- + @@ -104,11 +104,11 @@ - + - +
@@ -216,7 +216,7 @@ import OptionalInput from "@/components/widgets/inputs/OptionalInput.vue"; import ToolOptions from "@/components/widgets/options/ToolOptions.vue"; import { SectionsOfMenuListEntries } from "@/components/widgets/floating-menus/MenuList.vue"; -const modeMenuEntries: SectionsOfMenuListEntries = [ +const documentModeEntries: SectionsOfMenuListEntries = [ [ { label: "Design Mode", icon: "ViewportDesignMode" }, { label: "Select Mode", icon: "ViewportSelectMode" }, @@ -334,7 +334,8 @@ export default defineComponent({ return { viewportSvg: "", activeTool: "Select", - modeMenuEntries, + documentModeEntries, + documentModeSelectionIndex: 0, viewModeIndex: 0, snappingEnabled: true, gridEnabled: true, diff --git a/client/web/src/components/panels/LayerTree.vue b/client/web/src/components/panels/LayerTree.vue index 3b5ad215e4..88ef501b23 100644 --- a/client/web/src/components/panels/LayerTree.vue +++ b/client/web/src/components/panels/LayerTree.vue @@ -1,7 +1,7 @@