Commit Graph
28 Commits
Author SHA1 Message Date
0HyperCubeandKeavon Chambers 1c834ba67f Remove transformations from LayerData (#439)
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-12-30 19:10:30 -08:00
0HyperCube 4689e47e50 Fix one item folders (#442) 2021-12-31 01:00:31 +01:00
cc560cb83b Drag to rearrange layers in the layer panel (#434)
* Add insert line

* Implement dragging

* Improve CSS and variable naming consistency

* Resolved folder crash, added Undo/Redo support

* Removed marker TODO leftover

* JS cleanup

* WIP preserving expanded state (via LayerData) when copy/pasting and moving layers in layer panel

* Finish making folders copy/paste preserving expanded state, but not recursively yet

* Add cut, copy, and paste to the Edit menu (#440)

* Add cut

* Hook up edit dropdown

* Use copy message

Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: otdavies <oliver@psyfer.io>
2021-12-30 09:18:18 -08:00
0HyperCube 62fc88264e Add cut, copy, and paste to the Edit menu (#440)
* Add cut

* Hook up edit dropdown

* Use copy message
2021-12-30 11:02:57 +00:00
82e63ea167 Populate layer entry cache (#437)
* Populate layer entry cache

* Serialize the DocumentMessageHandler

* Fix restoring of collapsed/expanded state, add iter impl for Layer, and clean up layer_data() functions

* Fixed bug with CreateEmptyLayer revealed by test

Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: otdavies <oliver@psyfer.io>
2021-12-28 20:32:44 -08:00
0HyperCube 9ee95d4c57 Remove snap rotate from layerdata (#435) 2021-12-28 18:30:41 +01:00
0HyperCubeandKeavon Chambers 573468db7d Update intoiter syntax (#436)
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-12-28 05:10:22 -08:00
0HyperCube 0e24c7d25b Fix line centering (#431) 2021-12-27 20:29:05 -08:00
0HyperCubeandKeavon Chambers 3aa08ce691 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>
2021-12-27 20:06:02 -08:00
0HyperCubeandotdavies b391b038ee Snap while dragging with select tool (#433)
* Snap while dragging with select tool

* Remove unnecessary mut

* Snap to 90 degrees instead of 45

* Removed (coming soon) text

Co-authored-by: otdavies <oliver@psyfer.io>
2021-12-27 14:29:27 -08:00
0HyperCube 618b7f755c Fix Ctrl+scroll wheel zoom point relative to the mouse position (#429)
* Fix zoom

* Cleanup maths
2021-12-27 03:30:42 -08:00
0HyperCubeandKeavon Chambers 3a56476799 Fix new document position (#421)
* Fix new document pos

* All new documents are centered before deserialization

* Move constructors to the top of to block

* Fix merge (moving coe around is a bad idea)

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-12-23 04:02:22 -08:00
0HyperCube bf1706b698 Layer snapping
* Test snapping

* Snap new shapes

* Fix snapping when zoomed

* Refactor to use viewport bounds

* Reduce snap tolerance to 3

* Snap line and path tool

* Add disable snapping and refactor

* new_snap -> new status

* Rearrange import

* Cleanup

* Fix incorrect variable name

* Store snap data in tool data
2021-11-24 16:50:58 +00:00
0HyperCube a19c4be0b6 Implement interactive scaling/motion of rulers (#306) (#385)
* Update ruler origin

* Fix ruler text

* Handle zoom

* Remove log

* Fix origin
2021-10-25 02:03:14 -07:00
0HyperCubeandKeavon Chambers a6c57be476 (G)rab, (R)otate, and (S)cale layers with hotkeys (#356)
* Add handler and input mapping.

* Selecting transform type

* Add translation and axis constraints

* Remove unnecessary Key::

* Add rotation

* Centre pivot point for rotation

* Add scaling

* Select Tool bounding box now updates when transforming

* Add typing

* Shift to slow mouse movements

* Add snapping

* Refactor modifier keys

* Refactor to apply only 1 operation per frame

* Refactor to fix scale 0 issue

* Remove logging

* Avoid multiple decimol points in queue

* Add typing negative

* Add typing negative values

* Fix bounding box on apply/abort; fix some variable names

* Allow transform to daffine2 identity

* Revert previous operation when changing operation

* Remove repopulate transforms method

* Code readability tweaks

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-08-30 18:04:10 +01:00
0HyperCube 40e91b33fb Add space key & drag to pan the canvas (#364) 2021-08-30 11:07:43 +01:00
0HyperCube e86302940a Improve scrollbar behavior (#351)
* 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
2021-08-16 13:25:00 -07:00
0HyperCube 6961811c45 Make scrollbars interactable (#328)
* 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
2021-08-15 21:48:42 +01:00
0HyperCubeandKeavon Chambers 02fd00da10 Fix floating menu positioning behavior when web page has scrollbars (#263) (#341)
* Fix color picker position on scrolled window

* Robust fix with proper usage of CSS stacking contexts

* Fix mobile device scaling

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-08-11 16:56:18 -07:00
0HyperCube 39e6893630 Viewport canvas navigation with modifier keys and zoom widget (#229)
* Add rotation around the center

* Document transform centred

* Fix drawing hexagon on rotated document

* Format

* Fix translation on rotated document

* Remove logging

* Rotate around centre of viewport

* Rotate with shift + MMB drag

* Zoom with +/- keys

* Rotation input field

* Implement frontend zoom buttons

* Zoom with ctrl + MMB

* Format

* Update number inputs

* Require Ctrl + Plus / Minus key

* Ctrl scroll

* Update zoom -> Multiply Zoom

* Fix typo

* More fixing typo

* Remove :v-on

* Add mouse scroll X

* Scrolling on document

* Refactor

* Format

* Fix ctrl + plus/minus to zoom

* Reduce zoom sensitivity

* Ctrl + shift + mmb drag = snap rotate

* Further reduce zoom speed

* Add ctrl + number key to change zoom

* Switch Ctrl and Shift for zoom and rotate

* Fix compile errors

* Format JS

* Add increment to snap angle

* Edit getting layerdata functions

* Pass viewport size directily into create_document_transform_from_layerdata

* Add to_dvec2()

* Refactor get_transform

* Get -> Calculate

* Add consts

* Use to_radians

* Remove get from function names

* Use .entry when getting layerdata that does not exist

* Fix distance scroll calculations

* Fix zooming.

* Remove 'Violation' in chrome

* Fix compile errors
2021-07-12 23:50:10 -07:00
0HyperCube 8ff545f01c Unmount working folder on select (#253) 2021-07-12 12:58:12 -07:00
0HyperCube 721f418ea2 Allow transforming layers (#244)
* Allow transforming layers

* Add document_layer function to return non mut
2021-07-11 10:24:46 +01:00
0HyperCube 7b65409c58 Re-add PartialEq removed in #230 (#232) 2021-07-04 14:27:09 -07:00
0HyperCube 69a446091f Remove partialeq for layers (#230) 2021-06-29 21:06:37 +01:00
f76517a14d Add a movable canvas with matricies (#175)
* 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>
2021-06-26 21:44:48 +01:00
0HyperCube 2500fc5053 Add preview for rectangles / shapes / lines (#85)
👀 Add preview for rectangles / shapes / lines
2021-05-07 02:47:37 -07:00
0HyperCube c04a0227f1 Add colors in Rust (#78)
* 🎨 Add colors in Rust

* 🌿 Use an option for the properties and #[repr(C)]

* ❌ Remove WASM dependency on document.

* 😎 Wrap Fill and stroke in a style struct.

* 📦 Use crate::Color

* Merge Add transactions for temporary modifications to the document

* Run cargo fmt

* Color without a 'U'
2021-05-07 02:47:34 -07:00
0HyperCube b30e9ce3ba Add Shape Tool for drawing polygons (#75)
* ⬠ Add polygon drawing tool

* 🔤 Minor fix of variable and function names

* ❌ Remove stroke

* ⌨️ Use N key as polygo tool shortcut.

* ⌨️ Now using key Y for polygons.

* ⌨️ The tooltip for the shortcut is fixed
2021-04-17 11:08:44 -07:00