* Initial implementation of copy and paste for layers
* Sort layers on copy and add tests
* Fix logger init for test
* Fix `copy_paste_deleted_layers` test
* Readd erroneously removed svg
* Make Layer serializable and cleanup
* Add test for copy and pasting folders
* Cleanup
* Rename left_mouseup
* Cleanup
* Add length check to test
* Fix typo
* Make mouseup, mousedown more consistent
* Convert polygon and rectangle tool to kurbo::BezPath
* Add glam
* Add affine transform to elipse and remove circle
* Format
* Add svg group and add matrix for group
* Convert all operations to use matricies
* Work uses same transform as root
* Format
* Frontend fixed to render changes to working colors when changed from backend (#180)
* Backend and Frontend modification to show working color mods
* Remove comments & change precedence for tool and doc actions
* Add keybind for resetting work colors
* Minor Frontend changes
* Remove early sample "greet" code
* Add a contributing section to the project README
* Add moving document around
* Add document transform for tools
* Update to GraphiteEditor's fork
* Use write in foreach for rendering group / folder
* Add missing TranslateDown action
* Use points for line operation
* Format
* Add todo to change to shape's aspect ratio
* Remove empty if
* Initial pass at refactor
* Fix polyline test
* Use document message to modify document transform
* Messages -> Operations
* Transform layer
* Format
* Use DAffine2::IDENTITY
* Clean up kurbo generation for line and rect
* Use .into for rectangle points
* Rename cols to transform
* Rename other cols to transform
* Add todo for into_iter
* Remove unnecessary clone
Co-authored-by: akshay1992kalbhor <akshay1992kalbhor@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* 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>
* Add proc-macro crate with two macros
* Let cargo recalculate the Cargo.lock
* Add tests and refactor some code to allow testing
also the impl for parse_hint_helper_attrs now preserves order
(which is essential for testing)