* Snap zoom
* Navigate zoom from centre
* Ctrl to snap zoom in navigate
* Use ctrl for global snap rotate
* Fix the rotation input on snap rotate
* Update hint to use ctrl
* Fix mouse centre on drag
* Click to zoom in
* Clean up centre zoom
* Update user input hints; tweak some variable names for clarity and standardization
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* New overlay system that reimplements how overlays are drawn
* Fix overlay message declaration
* Fix small mistake
* WIP (broken) changes to plumb the overlay document
* Fix confusion over messaging system architecture
* Removed log
* Overlay system working
* (broken) WIP overlay association
* Finish the overlay system (except test failure)
* Change back IDs in test
* Fixed test, but stilled fails due to revealed real problem with layer reordering selection
* Disable broken test that has a bug in issue #444
Co-authored-by: Dennis <dennis@kobert.dev>
Co-authored-by: otdavies <oliver@psyfer.io>
* removed all use of document indicies
* -add u64 support for wasm bridge
* fixed rust formating
* Cleaned up FrontendDocumentState in js-messages
* Tiny tweaks from code review
* - moved more of closeDocumentWithConfirmation to rust
- updated serde_wasm_bindgen to add feature flag
* working initial auto save impl
* auto save is a lifetime file
* - cargo fmt
- fixc error message
- move document version constant
* code review round 1
* generate seed for uuid in js when wasm is initialized
* Resolve PR feedback
* Further address PR feedback
* Fix failing test
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: otdavies <oliver@psyfer.io>
* Created wasm binding to action's of the radio buttons which control the view mode
Added entry to DocumentMessage Enum
* draw in wireframe mode by changing parameters on each shape
added functions/changed behavior to do as above
not working yet
- newly added shapes should be drawn in wireframe
- setting fill to "none" on a path does not only draw an outline
- maybe the stroke width is 0?
* Wire frame view mostly functional for ellipses
- Need to implement for all shapes
- BUG: shapes don't immediatley update upon changing view-mode
* Fixed: active document now updates after view mode swap
* The Pros:
- wire frame mode effects all shapes correctly
The Cons:
- wire frame mode effects everything, including things that maybe shouldn't be, like select boxes and pen lines
* wire frame view no longer effects overlay layers
* Fixed: While in wireframe view the pen tool will draw regular thickness lines.
* some commenting
* Fixed potential bug:
In layer/file system with a Folder layer with a sub-layer that is also
a Folder cache_dirty must be set in order for all shapes to update properly
* refactored code to use ViewMode enum names throughout
* Changed: All wireframe lines are blank
cargo fmt
* Wireframe thickness doesn't change as a result of zooming
- Added DocumentMessage::ReRenderDocument, which marks layers as dirty and renders with the updated render-string
- All "zoom" messages in the movement_handler send a re-render message
- while in wireframe view, the "render-transform" of all shapes includes the root layer transform
Added getter/setter methods for graphene::Document::view_mode
* cargo fmt
* wireframe now has proper thickness after "Zoom Canvas to Fit all" action
* Refactored
- Changed FrontendMessage::UpdateCanvas to RenderDocument message to allow for lazy evaluation
- Created DocumentOperation::SetViewMode to be more consistent with existing code
- removed log statement
- Added constants for empty fill and thin-black stroke
* cargo fmt
* Removed ReRenderDocument message
* cargo fmt
* Fixes as suggested by TrueDoctor
* clean up merge
cargo fmt
* Refactor:
moved view_mode to DocumentMessageHandler
* Polishing
* changed those two comments
* Remove unknown todo comment
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Implement Path Tool
* Draw a red rectangle where the first point on the shape is
* Correctly render anchors, handles, and connecting lines
* Fix drain() which can panic
* Refactor frontend messages to work as return values not callbacks
* Reduce the number of unnecessary frontend updates
* Fix stack overflow by using a loop
* Group Document Render calls and put them at the end
* Speed hacks for dirtification
* Add performance
* Bunch folder changed updates
* Add triggers to redraw overlays to movement_handler
* Polish the pixel-perfect rendering of vector manipulators
* Restore scrollbars that were disabled
* Cleanup
* WIP Add shape outline rendering
* Fix compiling
* Add outlines to selected shapes
* Fix outlines rendering over handles and anchors
* Fix dirtification
* Add a comment
* Address code review feedback
* Formatting
* Small tweaks
Co-authored-by: Oliver Davies <oliver@psyfer.io>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
* Change scrollbar behavior
* Leave space at the end of the scrollbar
* Change mid to center
* Use shorter array initialization
* Add space around scrollbar
* Fix scrollbar spacing
* Smooth end of scrollbars
* Add page up and down
* Page up and down on click in scrollbar track
* Add shift pageup to translate horizontally
* Make scrollbars interactable
* Add watcher for position change
* Fix case of data
* Fix updateHandlePosition capitalization
* Clean up class name thing
* Scroll bars between 0 and 1
* Allow width to be 100%
* Scrollbars reflect backend
* Include viewport in scrollbar
* Add half viewport padding for scrollbars
* Refactor scrollbar using lerp
* Send messages to backend
* Refactor
* Use glam::DVec2
* Remove glam::
* Remove unnecessary abs
* Add TrueDoctor's change
* Add missing minus
* Fix vue issues
* Fix viewport size
* Remove unnecessary log
* Linear dragging
Includes refactor that sends coordinates of the document viewports to the backend so input is sent relative to the application window
Closes#124Fixes#291
* Improve Frontend -> Backend user input system
* Code review changes
* More code review changes
* Fix TS error
* Refactor ViewportPosition from u32 (UVec2) to f64 (DVec2)
* Fix pseudo_hash call
* Replace hash function with proper function for uuid generation
* Cargo fmt
Co-authored-by: Dennis Kobert <dennis@kobert.dev>