Commit Graph
98 Commits
Author SHA1 Message Date
Dennis Kobert 0531df18d5 Implement blur as a document node (#987)
* Implement blur as a document node

* Reuse node node registry

* Add comment explaining the use of once cell

* Fix rebase error
2023-01-27 21:47:47 +01:00
Dennis Kobertand0hypercube b030a1860b Add self hosted runner to ci.yml (#955)
* Add self hosted runner to ci.yml

* Remove libgtk install

* Use mold as the linker

* Make build logs non verbose

* Fix crash on failure to get GLOBAL_PLATFORM

* Copy the platform enum before calling unwrap_or_default

Co-authored-by: 0hypercube <0hypercube@gmail.com>
2023-01-13 21:32:50 +01:00
Dennis Kobert 329f0be6b2 Update package chache before install (#962) 2023-01-12 09:43:50 +01:00
Dennis Kobert de5d02da00 Manually install packages instead of using github action (#943)
Fixes the fact that CI randomly stopped working on existing code in master that already passed CI
2023-01-03 10:04:42 +01:00
Dennis Kobert a9601ab164 Implement the Gaussian Blur node (#933) 2022-12-31 21:12:02 +01:00
Dennis Kobert 74bfd630a9 Quantization node (#887)
Add basic quantization node
2022-12-31 18:30:35 +01:00
Dennis Kobert 79ad3e7908 Restructure GPU compilation execution pipeline (#903)
* Restructure gpu compilation execution pipeline

* Add compilation server/client infrastructure

* Add wgpu executor
2022-12-31 02:52:04 +01:00
TrueDoctor f46f113b93 Fix incorrect wasm mime type (#879) 2022-12-12 11:13:54 +01:00
TrueDoctor 7d8f94462a Bundle Graphite using Tauri (#873)
* Setup tauri component for graphite editor

Integrate graphite into tauri app

Split interpreted-executor out of graph-craft

* Add gpu execution node

* General Cleanup
2022-12-07 12:49:34 +01:00
TrueDoctor 57a1f653e1 Implement node graph gpu execution via vulkano and rust gpu (#870)
* Add Executor abstraction

* Resolve inputs for proto nodes by adding compose nodes

* Add infrastructure for compiling gpu code

* Integrate nodegraph gpu execution into graph-crafter

* Extract graphene core path from env vars

* Make Color struct usable for gpu code
2022-12-05 12:56:36 +01:00
TrueDoctor ae7affda74 Implement Upcasting without nightly support (#825) 2022-10-26 01:37:18 +02:00
TrueDoctor 4ec600957c Node graph dynamic execution (#824)
Restructure document node implementation

* Implement topological sort

* Enforce the usage of type annotations

* Add complete test case
2022-10-26 00:45:42 +02:00
TrueDoctor b2a90ddc2c Relax borrow stack lifetimes (#823)
Relax lifetimes for borrow_stack
2022-10-26 00:35:30 +02:00
TrueDoctor 11c6413251 Implement node registry (#822) 2022-10-26 00:32:50 +02:00
TrueDoctor 562217015d Rework DynAnyNode design to work with the borrow stack (#796) 2022-10-15 03:02:58 +02:00
TrueDoctor 2ced9a57c4 Implement the initial Document Nodes system (#795)
* Add testcase for flattening graph

* Implement equality for Values

* Implement input resolution
2022-10-15 02:02:50 +02:00
Dennis 71f12db1e6 Impl DynNode 2022-08-22 17:18:26 +02:00
Dennis bdad7aca47 Make node trait consume self 2022-08-19 18:58:17 +02:00
Dennis 12b33da083 Implement image loding test 2022-08-13 19:15:48 +02:00
Dennis 8a0eb0e266 Add tests for op nodes 2022-08-13 18:21:46 +02:00
Dennis b06e00ce61 Implement cons node 2022-08-13 14:54:12 +02:00
Dennis 7f415febed Add test for gray scale node
# Conflicts:
#	node-graph/gcore/src/raster.rs
2022-08-10 13:10:14 +02:00
Dennis ef08c27e9c Reintroduce input for the node trait
# Conflicts:
#	node-graph/gcore/src/raster.rs
2022-08-10 13:05:57 +02:00
Dennis 1ed7562b90 Add raster module to graphene_core 2022-08-04 12:34:05 +02:00
Dennis 78f07439db Add license information for node_graph crates 2022-08-04 11:47:38 +02:00
Dennis d09f023618 Bump dyn-any version + format code 2022-08-04 09:08:48 +02:00
Dennis c44e9d22e3 Integrate dyn-any into the main graphite repo 2022-08-04 08:52:24 +02:00
Dennis fa461f3157 Temporarily remove pretty printing for token streams 2022-08-02 11:53:35 +02:00
Dennis 20f4271e91 Add dyn-any as a submodule 2022-08-02 11:52:08 +02:00
Dennis e84b9bd5bd Compile node graph description to GPU code 2022-06-08 09:52:58 +02:00
Dennis 998f37d1b0 Add Unit and Id nodes to node graph 2022-06-05 22:58:12 +02:00
Dennis a2703c0fb1 Don't force nodes to store references to other nodes 2022-06-05 15:25:07 +02:00
Dennis fa5345d33f Remove input from the node definition 2022-06-05 01:15:22 +02:00
Dennis f6e4dbf3e3 Add GPU support for node graph 2022-04-24 11:58:31 +02:00
Dennis 49c171b419 Implement borrow stack for node graph 2022-04-22 19:58:13 +02:00
Dennis 09deee0c4d Make graphene_core no_std 2022-04-22 15:15:39 +02:00
Dennis 90e465b35c Restructure node graph proxy architecture 2022-04-03 19:25:07 +02:00
Dennis cb337fd338 Replace GAT with lifetime on trait in node graph 2022-04-03 10:44:02 +02:00
Dennis 3243b80cf2 Try and fail to make nodes object-safe in node graph 2022-04-02 20:50:53 +02:00
Dennis 800fb4dbc1 Restructure node graph project layout 2022-04-02 14:50:00 +02:00
Dennis f8d4e10f35 Add Exec trait to simplify calling nodes without input data 2022-04-02 12:48:05 +02:00
Dennis ab67953f96 Implement ProxyNode for node graph 2022-04-02 11:08:00 +02:00
Dennis e999d66108 Add Fst- and SndNode to node graph 2022-04-02 11:00:45 +02:00
Dennis 758487edf0 Add FnNode and FnNodeWithState to node graph 2022-03-31 15:35:37 +02:00
Dennis e8b01e99cb Finish implementation of compose node 2022-03-31 00:16:20 +02:00
Dennis 19b02738ca Rewrite node graph using generic associated types 2022-03-29 23:34:45 +02:00
Dennis 1174fadfaf Implement node composition and Cache node 2022-03-27 23:12:12 +02:00
Dennis ab727de684 Transition to a trait-based node graph 2022-03-27 17:48:24 +02:00
TrueDoctor a807a54c80 Initial implementation of node graph based on structs 2021-07-07 13:05:52 +02:00
TrueDoctor 0ee492a857 Differentiate between scale and dimensions (#570)
* Differentiate between scale and dimensions

* Fix layout and naming of properties
2022-03-27 01:48:40 +01:00
TrueDoctor f27ab59a79 Fix type error in Brave browser (#569) 2022-03-15 19:10:45 +01:00
Dennis 4757e8b8cd Fix panic on non existing document layer 2022-02-16 17:41:45 +01:00
TrueDoctor 5ea4654f53 De duplicate Overlay render messages (#520) 2022-02-07 19:15:25 +01:00
TrueDoctor f8d748c07b Simplify point storage for pen tool (#500)
Store points as vectors instead of representing them as transforms to
avoid confusion and improve efficiency
2022-01-27 18:49:49 +01:00
TrueDoctor 72e638c5da Generify functions in document.rs (#488)
* Generify functions in document.rs
2022-01-18 22:21:44 +01:00
TrueDoctorandOliver Davies 522626cd02 Tidy up path handling in document_file (#464)
* Tidy up path handling in document_file

+ Improve #455

* Cargo Clippy lints

* Rename to_vec to map_to_vec

Co-authored-by: Oliver Davies <oliver@psyfer.io>
2022-01-07 04:15:08 +01:00
TrueDoctor b605466819 Change the select tool to immediately start dragging when clicking a shape (#424)
* Change the select tool to immediately start dragging when clicking a shape

* Fix operation order

* Fix holding shift to add to selection
2021-12-28 14:05:02 +01:00
1186f33113 Implement multiple clipboards (#425)
* Imeplement multiple Clipboards

* Cargo fmt

* Fix unit tests

* Fix console error caused by the Pen Tool (#432)

* Fix error in pen tool

* Cleanup

* Split make operation and remove preview

Co-authored-by: Keavon Chambers <keavon@keavon.com>

* Fix line centering (#431)

* cargo fmt

Co-authored-by: 0HyperCube <78500760+0HyperCube@users.noreply.github.com>
2021-12-28 06:17:41 +01:00
TrueDoctorandKeavon Chambers 49d3e16226 Add function to serialize the layer structure to a 1D array (#363)
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-09-07 09:20:56 +02:00
TrueDoctor 0ccb181e2c Implement Undo and Redo (#354)
* Implement undo and redo

* Create more save points and hook up menu entry

* Fix operation ordering

* Remove debug statement

* Fix folder changed order

* Don't store overlays in the history chain

* Keep selection
2021-08-26 12:20:00 +02:00
TrueDoctor 9e47b27b59 Implement bounding box for selected layers (#349)
* Implement bounding box for selected layers

* Add shift modifier for multi selection
2021-08-20 09:57:00 +02:00
TrueDoctor 699562b735 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
2021-08-06 12:34:30 +02:00
TrueDoctor 6a5d3cc48c Various small fixes and cleanups (#299) 2021-07-24 17:59:01 +02:00
TrueDoctor 8cab7222a2 Hints backend (#234)
* Generate hints from list of actions

* Remove redundant Key from output

* Improve formatting

* Change logging verbosity for hints
2021-07-24 01:09:24 +02:00
TrueDoctor 76d57ab25d Rearrange layers refactor (#281)
* Keep selection during reordering

* Fix paste layer selection

* Remove junk from layer matadata

* Add function to get non_selected_layers

* Cleanup

* Add tests
2021-07-24 00:54:30 +02:00
TrueDoctor 16722c69cd Add thumbnails for layers (#286)
Fixes: #285
2021-07-21 11:30:49 +02:00
TrueDoctor 55a2448764 Apply clippy lints (#278) 2021-07-17 11:12:37 +02:00
TrueDoctor f7e5dd1a4f Order mapping entries precedence based on number of modifiers (#262)
* Order mapping entries precedence based on number of modifiers

* Fix format

* Rename variables

* More renaming
2021-07-15 00:40:37 +02:00
TrueDoctor 57b8ee0e86 Implement snapping for rotation (#257) 2021-07-13 20:38:58 +02:00
TrueDoctor 246ca2c95b Implement more scrolling features (#256)
* Use sideways scrolling

* Add horizontal scroll with shift

* Combine WheelCanvasTranslate messages

* Add zooming to current mouse position

* Fix formatting

* Fix scroll direction

* Rename some Constants
2021-07-13 14:02:38 +02:00
TrueDoctor 3d9e15adb7 Simplify document selection by reusing code (#226) 2021-06-23 11:20:59 +02:00
TrueDoctor e4b5aa3933 Delete selected layers (#173)
* Delete Layers
* Fix backend selection
* Fix shift selection
* Add desired shape add selection behavior
* Add X and Backspace as keybinds for layer deletion
* Change key storage to u128
* Remove unhelpful trace logging
* Reverse display direction for layers
2021-06-10 09:24:59 +02:00
TrueDoctor 0e8cbad003 Implement backend part of the layer selection (#172)
* Implement backend part of the layer selection
2021-06-09 12:20:50 +02:00
TrueDoctor c0e60a21d3 Export current document as SVG when pressing Ctrl+Shift+S (#160)
* Export current document when pressing Ctrl+Shift+S

* Use a blob for download

* Add Ctrl + E shortcut, match on lower case

* Don't mount element in DOM

* Polish some keybindings

* Add initialization for MappingEntries

* Implement svg coloring

* Add newline after svg tag

* Add spaces to svg style format

* Fix more svg formatting

* Add space before />

* Remove duplicate whitespace
2021-05-28 20:43:51 +02:00
4b19a459b7 Major overhaul of input and communication systems
* Add input manager

* WIP lifetime hell

* Hell yeah, dark lifetime magic

* Replace events with actions in tools

* Fix borrow in GlobalEventHandler

* Fix typo in response-handler

* Distribute dispatch structure

* Add translation from events to actions

* Port default key actions to input_mapper

* Split actions macro

* Add handling for Ambiguous Mouse events

* Fix warnings and clippy lints

* Add actions macro

* WIP rework

* Add AsMessage macro

* Add implementation for derived enums

* Add macro implementation for top level message

* Add #[child] attribute to indicate derivation

* Replace some mentions of Actions and Responses with Message

* It compiles !!!

* Add functionality to some message handlers

* Add document rendering

* ICE

* Rework the previous code while keeping basic functionality

* Reduce parent-top-level macro args to only two

* Add workaround for ICE

* Fix cyclic reference in document.rs

* Make derive_transitive_child a bit more powerful

This addresses the todo that was left,
enabling arbitrary expressions to be passed as the last
parameter of a #[parent] attribute

* Adapt frontend message format

* Make responses use VecDeque

Our responses are a queue so we should use a queue type for them

* Move traits to sensible location

* Are we rectangle yet?

* Simplify, improve & document `derive_discriminant`

* Change `child` to `sub_discriminant`

This only applies to `ToDiscriminant`.
Code using `#[impl_message]` continues to work.

* Add docs for `derive_transitive_child`

* Finish docs and improve macros

The improvements are that impl_message now uses trait
resolution to obtain the parent's discriminant
and that derive_as_message now allows for non-unit
variants (which we don't use but it's nice to have,
just in case)

* Remove logging call

* Move files around and cleanup structure

* Fix proc macro doc tests

* Improve actions_fn!() macro

* Add ellipse tool

* Pass populated actions list to the input mapper

* Add KeyState bitvector

* Merge mouse buttons into "keyboard"

* Add macro for initialization of key mapper table

* Add syntactic sugar for the macro

* Implement mapping function

* Translate the remaining tools

* Fix shape tool

* Add keybindings for line and pen tool

* Fix modifiers

* Cleanup

* Add doc comments for the actions macro

* Fix formatting

* Rename MouseMove to PointerMove

* Add keybinds for tools

* Apply review suggestions

* Rename KeyMappings -> KeyMappingEntries

* Apply review changes

Co-authored-by: T0mstone <realt0mstone@gmail.com>
Co-authored-by: Paul Kupper <kupper.pa@gmail.com>
2021-05-23 01:26:24 +02:00
TrueDoctorandKeavon Chambers 6adb984f2d Plumb layer panel (#107)
* WIP ExpandFolder handling

* Implement response parsing in typescript

* Update layer panel with list sent by wasm

* Add events for layer interaction

* Add proper default naming

* Fix displaying of the eye icon

* Attach path to LayerPanelEntry

* Fix lint issues

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-05-07 10:17:46 +02:00
TrueDoctor f8ebff033d Use serde to serialize responses (#96) 2021-05-02 22:46:47 +02:00
TrueDoctor f10a3c63d1 Add npm run lint-no-fix option (#93) 2021-05-02 21:27:44 +02:00
TrueDoctor fc10575dfa Improve rendering efficiency and add caching (#95)
Fixes #84

*Reduce heap allocations
* Add caching for rendering svgs
* Deduplicate UpdateCanvas Responses
2021-05-02 21:21:39 +02:00
TrueDoctor 457c465342 Add caching to svg rendering (#94)
* Add documentation for functions in the document library
* Restructure backchannel
2021-05-02 20:34:23 +02:00
TrueDoctor 8d683a4162 Fix active tool selection (#92) 2021-05-02 08:30:51 +02:00
TrueDoctor f05cb30acb Add responses in document for layer system (#91) 2021-05-02 00:57:47 +02:00
TrueDoctor c5506c71b3 Split mouse events according to the button pressed (#90) 2021-05-01 21:09:13 +02:00
TrueDoctor 2849b99b59 Add transactions for temporary modifications to the document (#77)
* Add transactions for temporary modifications to the document

* Add DiscardTempFolder Operation

* Add clearFolder operation

* Rename Temp to Work
2021-04-21 00:32:36 +02:00
TrueDoctor 6511f5a628 Implement svg layer structure (#59)
* Add folder struct

* Add file system like structure to interface with svgs

* Add primitive undo functionality

* Restructure layer system
2021-04-12 00:57:39 +02:00
TrueDoctor 0a112be97b Implement key handling (#65) 2021-04-07 11:02:56 +02:00
TrueDoctor 599d478a5c Add ToolData and rectangle tool (#64) 2021-04-07 09:25:23 +02:00
TrueDoctor 6050038047 Add loging implementation for wasm (#56) 2021-03-30 18:48:32 +02:00
TrueDoctor b6d4baa513 Implement event/response roundtrip (#49) 2021-03-28 00:23:41 +01:00
TrueDoctor a5d85812ce Rework the ToolState and integrate it into the Editor struct (#48)
* Rework the ToolState and integrate it into the Editor struct

* Add asset manager sources to docs outline
2021-03-27 22:02:01 +01:00
TrueDoctor a62126f926 Add event struct (#47) 2021-03-27 20:06:10 +01:00
TrueDoctor 543fc4fec1 Add tool_state functionality to wasm-wrapper (#42) 2021-03-25 18:58:21 +01:00
TrueDoctor b1ecc4d950 Create basic CI workflow (#41) 2021-03-24 21:40:35 +01:00
TrueDoctor 76043cebcb Add wasm-bindgen to Vue config (#38) 2021-03-23 08:54:03 +01:00
TrueDoctor 36de2bfb02 Rename layout to workspace and fix typo (#36) 2021-03-22 09:24:09 +01:00
TrueDoctor d66add5310 Fix errors introduced in 29f5672 (#35) 2021-03-21 21:03:29 +01:00
TrueDoctor d254916430 Define the js wasm-editor interface (#31) 2021-03-21 19:32:56 +01:00
TrueDoctor 1b8c71d2b3 Add graphite-editor library skeleton (#34) 2021-03-21 18:02:14 +01:00