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
This commit is contained in:
0HyperCube
2021-07-13 07:50:10 +01:00
committed by GitHub
parent 8ff545f01c
commit 39e6893630
22 changed files with 442 additions and 73 deletions

View File

@@ -1,6 +1,6 @@
use crate::{
input::{
mouse::{MouseKeys, MouseState, ViewportPosition},
mouse::{MouseKeys, MouseState, ScrollDelta, ViewportPosition},
InputPreprocessorMessage, ModifierKeys,
},
message_prelude::{Message, ToolMessage},
@@ -47,6 +47,7 @@ impl EditorTestUtils for Editor {
self.mouseup(MouseState {
position: ViewportPosition { x: x2, y: y2 },
mouse_keys: MouseKeys::empty(),
scroll_delta: ScrollDelta::default(),
});
}
@@ -66,6 +67,7 @@ impl EditorTestUtils for Editor {
self.mousedown(MouseState {
position: ViewportPosition { x, y },
mouse_keys: MouseKeys::LEFT,
scroll_delta: ScrollDelta::default(),
})
}