Commit Graph

150 Commits

Author SHA1 Message Date
Keavon Chambers
9daffb3dad Improve various code and docs spelling/grammar 2021-07-23 17:25:05 -07:00
Henry Sloan
988dd7b400 Change tool option kinds to PascalCase (#292) 2021-07-23 14:47:55 -07:00
George Atkinson
86962fad3a Blend modes (#252)
* Add backend for selecting layer blend mode

* Change dropdown input to support callback on change

* Add debug messages

* Fix canvas update for blend-modes

* Finish up and polish blend modes implementations

* Add changes from code review

Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2021-07-23 10:21:07 -07:00
RustyNixieTube
dac60e94da Add documentation (#287)
* Add crate documentation

* Use full path intead of relative path

* Add documentation to core/document/src/color.rs

* Add modification by

* Add @Keavon's modification

* @Keavon's changes

* remove useless let

Co-authored-by: TrueDoctor <dennis@kobert.dev>
2021-07-23 16:16:26 +02:00
Henry Sloan
53322848fb Implement tool messaging and shape flipping (#288) 2021-07-22 16:25:42 -04:00
AJ Weeks
33b1f6dd32 Support rearranging layers with hotkeys (#271)
* Support moving single layers

* Fix "Move layer to top/bottom" keybinds

* Rename things named "move" to "reorder"

Fix formatting

* Combine sorted layer helper functions

* Use integer consts for moving layers to front/back

* Fix merge mistake

* Fix some clippy lints

* Fix panic

* Remove "get" prefix from functions

* Bring layer menu items out to sub-menu

* Support moving multiple layers at a time

* Add comment explaining odd keybinding

* Add reordering tests

* Add negative test

* Add new error type

* Add layer position helper, clean up tests

* Make position helper return Result

* Clean up slice iteration

* Simplify source_layer_ids computation

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2021-07-21 11:36:51 +02:00
TrueDoctor
87f65cd831 Add thumbnails for layers (#286)
Fixes: #285
2021-07-21 02:30:49 -07:00
Henry Sloan
1f1c307211 Options bar widgets for tools to control tool behavior (#283)
* Add JSON-backed options widget

* Add initial tool settings messaging to backend

* Add shape side selection with JSON deserialization

* Enforce minimum number of n-gon sides

* Make tool settings JSON errors safer

* Make tool settings JSON errors safer

* Refactor ToolOptions to ToolSettings

* Revert "Refactor ToolOptions to ToolSettings"

This reverts commit 651161fd16.

* Refactor all instances of "settings" to "options"

* Fix names and formatting

* Rearrange ToolOptions data to enforce types
2021-07-21 01:07:48 -04:00
Keavon Chambers
150b530a73 Fix tooltips in Document panel 2021-07-19 18:02:08 -07:00
Keavon Chambers
5b5388a1d6 Fix dropdown menu widget showing wrong active entry
Fixes #250
2021-07-19 15:03:08 -07:00
Keavon Chambers
209d71ddc2 Add (nonfunctional) rulers and scrollbars to the viewport (#279)
* Add nonfunctional rulers and scrollbars to viewport

* Switch from DOM divs to SVG lines

* Switch from SVG lines to a single SVG path

* Change variable names
2021-07-17 16:11:52 -07:00
Keavon Chambers
0c25031ad1 Clean up widget type naming conventions 2021-07-16 15:57:42 -07:00
Keavon Chambers
60968431b4 Categorize frontend widgets to match design system 2021-07-16 15:37:35 -07:00
bjorn3
5d91ae21a0 Two improvements to the development workflow (#270)
* Configure rust-analyzer to target wasm32-unknown-unknown

* Watch changes to core rust files
2021-07-16 01:49:52 -07:00
Keavon Chambers
a25fb40fd5 Remove CLI client stub 2021-07-15 03:44:57 -07:00
Keavon Chambers
8591dd2983 Adjust OptionalInput widget design to add back its right border 2021-07-15 01:01:05 -07:00
Keavon Chambers
761406537c Rename tool icons 2021-07-15 00:46:32 -07:00
Keavon Chambers
8a06e8e771 Switch all JS imports to absolute paths 2021-07-15 00:34:56 -07:00
Keavon Chambers
0b44a17a5d Make frontend request tab list on initialization 2021-07-15 00:07:21 -07:00
Keavon Chambers
34828a7837 Cleanup of variable naming 2021-07-14 20:11:51 -07:00
Keavon Chambers
ca50e8f37d Add a fullscreen button and the keyboard lock API (#266)
Closes #249
2021-07-14 18:56:22 -07:00
Keavon Chambers
2aff782e70 Enforce downgraded dependency versions in package.json 2021-07-14 16:51:56 -07:00
Keavon Chambers
62092910ef Implement closing the current, and all, documents from the menu bar (#265)
Closes #261
Additional cleanup and refactoring with the way the backend relays the list of open documents to the frontend and prompts for confirmation.
2021-07-14 16:13:58 -07:00
Keavon Chambers
d311ac6bfc Frontend refactor to move response handler, key input handling, and more into new utilities folder (#260)
Part of #124
2021-07-14 14:31:09 -07:00
Henry Sloan
8158d4be0e Implement fill tool (#254)
* Implement fill tool

* Add fill tool shortcut

* Add getters and setters to styles

* Make fill tool act on the topmost layer clicked

* Refactor fill operation

* Refactor and unify selection tolerance

* Add mark_as_dirty function

* Fix getter names
2021-07-14 00:49:12 -07:00
Keavon Chambers
00d6c3a5d7 Clean up and polish some code from the previous commit (#255) 2021-07-13 00:52:45 -07:00
0HyperCube
cd45a8d275 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
Simon Desloges
fb4d34bdc1 Add modifier keys to every keyboard and mouse input (#247)
* Add modifier keys to every keyboard and mouse input

* Fix bad naming convention in Typescript

* Added some tests related to modifier keys
2021-07-11 20:46:00 -07:00
Henry Sloan
3353974a0b Implement nudging selected layers with arrow keys (#245)
* Implement nudging selected layers with arrow keys

* Normalize diagonal nudges and add constants

* Replace sqrt(2.0) with a constant

* Remove normalization of diagonal movement
2021-07-11 19:22:26 -07:00
Simon Desloges
0240ba81cc Implement Select All/Deselect All layers (#242)
* Implement select all layers shortcut

* Adjust menu entry for Select All Layers

* Avoid selecting the root of the document when selecting all layers

* Implement deselect all layers

* Fix formatting

* Add extensions.json so VS Code recommends useful extensions

* Add rust-analyzer as the default Rust formatter
2021-07-10 17:01:37 -07:00
Keavon Chambers
f9337bf635 Downgrade wasm-pack and Vue-related dependencies which are causing issues
This reverts commit 744e3729d7.
2021-07-09 20:29:14 -07:00
Keavon Chambers
4ddb69d07e Improve panel tabs to fix pixel mislaignments and support MMB closing 2021-07-09 16:49:54 -07:00
Keavon Chambers
e215495430 Improve readability of OptionalInput widget design styling 2021-07-09 16:02:36 -07:00
Keavon Chambers
12dac1c154 Add the checkbox input widget (#204)
* Add the checkbox input widget

* Add OptionalInput widget
2021-07-08 14:10:30 -07:00
Keavon Chambers
8eea3720f2 Fix horizontal scrollbar due to status bar negative margin 2021-07-05 00:38:18 -07:00
Keavon Chambers
2ce6ca0935 Downgrade @vue/compiler-sfc which breaks linting 2021-07-02 15:02:01 -07:00
Keavon Chambers
77021176b2 Update wasm-pack dependency and others, fixes #167 2021-07-02 13:51:00 -07:00
Keavon Chambers
55d2fc4408 Add styled scrollbars (#231) 2021-07-01 22:08:23 -07:00
Keavon Chambers
6db1d907c3 Fix bug where other panel tabs would switch the document panel tabs 2021-06-26 23:46:39 -07:00
Chrs Msln
a0c1d7f898 Refactor frontend input components to use the v-model Vue pattern (#224)
* Use v-model for inputs

* Add opacity to LayerTree

* Fix FloatingMenu typing
2021-06-26 23:18:47 -07:00
Keavon Chambers
60cf084684 Separate Graphite header logo from menu bar 2021-06-25 00:38:32 -07:00
Keavon Chambers
ce98060cc4 Add "Guide Mode" to viewport mode selector dropdown 2021-06-23 23:10:48 -07:00
akshay1992kalbhor
0b0873262c Add support for closing document tabs (#215)
* Can only remove last document successfully

* Correctly update the layer tree panel

* Remove comments

* Add support for randomly closing docs

* Create new doc after closing last doc

* Update layer panel when creating new docs

* Fix bug that crashed the program when first doc was closed

* Refactor to make code simpler and increase readability

* Add shortcut to close active doc (Shift + C)

* Add a confirmation dialog box before closing tabs

* New docs get the correct title

* Remove comments and fix typos

* Disable 'eslint-no-alert'

* Refactor and fix document title bug

* Rename the FrontendMessage and ReponseType for showing close confirmation modal

* Change the message displayed in the close confirmation modal

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-06-22 01:58:02 -07:00
Keavon Chambers
8a56d6cf46 Reduce the greediness of keyboard input redirection
Part of #124
2021-06-20 02:06:40 -07:00
dependabot[bot]
363265097a Bump postcss from 7.0.35 to 7.0.36 in /client/web (#221)
Bumps [postcss](https://github.com/postcss/postcss) from 7.0.35 to 7.0.36.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/7.0.35...7.0.36)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-17 09:20:07 -07:00
Till Arnold
322526b983 Add keyboard shortcut to duplicate layers (#214)
* Add keyboard shortcut to duplicate layers

* Avoid heap allocation in DuplicateSelectedLayers
2021-06-16 11:15:02 +02:00
akshay1992kalbhor
cd1ac3817d Fix color swapping to allow swapping of colors with opacity less than 100% (#212) 2021-06-15 00:27:20 -07:00
Till Arnold
435b34298d Show warning message if BigInt64Array is not available (#209)
* Show warning message if BigInt64Array is not available

* Apply nitpicks
2021-06-14 11:20:40 -07:00
George Atkinson
f6b7708a8f Multi-document management (create new document; tab switching) (#210)
* Multi-docs WIP

* Change to number

* Add new document and switch documents

* Remove keybind for previous document. Change keybind for next document.

* Switch documents by clicking tabs

* Remove keybind for previous document. Change keybind for next document.

* multi-docs

* Update package-lock.json

* Hook up File>New to add new document

* Remove console logs and empty lines. Start new documents from 2 instead of 1.

* Fix formatting
2021-06-13 20:24:09 -07:00
Keavon Chambers
741a712972 Fix Layer Tree panel CSS to allow scrolling (#208) 2021-06-13 12:29:50 -07:00