Commit graph

296 commits

Author SHA1 Message Date
Keavon Chambers
0ddc84ba09 Add the ability for NumberInput widgets to display labels
Part of #313
2021-07-29 13:56:45 -07:00
Keavon Chambers
edfbc27534
Layer opacity (#312)
Closes #187

* Add layer opacity input

* Improve Rust code cleanliness
2021-07-27 23:15:23 -07:00
Keavon Chambers
8c1532b0eb
Add features to NumberInput widget; refactor widgets and tool options (#311)
Closes #310

* Add features to NumberInput widget; refactor widgets and tool options

* Fix swap/reset working colors using @click instead of :action
2021-07-27 18:28:21 -07:00
Keavon Chambers
9e92d48454 Fix antialiasing caused by <svg> width/height 100% 2021-07-25 17:25:39 -07:00
Henry Sloan
3cd2260320
Move blend mode declaration and implementation (#308) 2021-07-25 13:01:50 -07:00
Henry Sloan
445329705d
Avoid looping behavior with color selection (#305) 2021-07-25 02:31:50 -04:00
Henry Sloan
9d0e194857
Add alignment of selected layers (#296)
* Add alignment of selected layers

* Refactor alignment to a document message

* Condense align messages into a tuple variant

* Rename dimension to axis and fix redundant math

* Add correct Center alignment

* Add TODO comment for nested transforms

* Add TODO for merging bounding boxes

* Move align enums to document_message_handler

* Run cargo clippy

* Clean up unwraps with filter_map
2021-07-24 19:35:48 -04:00
Henry Sloan
da8422786b
MVP eyedropper tool for fill colors (#300)
* Implement eyedropper for layer fill colors

* Add shortcut for eyedropper

* Add right mouse sampling for secondary color
2021-07-24 18:29:32 -04:00
TrueDoctor
e78d598a37
Various small fixes and cleanups (#299) 2021-07-24 17:59:01 +02:00
Keavon Chambers
8d444f4b20 Swap "Layer" and "Document" menu bar entries 2021-07-24 01:54:27 -07:00
Henry Sloan
0d681a533a
Rename align operations and icons (#295)
* Rename align operations and icons

* Fix icon import paths
2021-07-24 00:42:48 -04:00
Henry Sloan
d15d7d0fab
Add dragging of layers with the select tool (#293)
* Add dragging of layers with the select tool

* Transform mouse positions based on root transform

* Add TODOs regarding root inverse transforms
2021-07-23 21:51:14 -04:00
Keavon Chambers
ac7b5dd06e Fix inconsistent whitespace 2021-07-23 17:48:39 -07:00
Keavon Chambers
f00601e5a7 Improve various code and docs spelling/grammar 2021-07-23 17:25:05 -07:00
TrueDoctor
5e8ace928c
Hints backend (#234)
* Generate hints from list of actions

* Remove redundant Key from output

* Improve formatting

* Change logging verbosity for hints
2021-07-23 16:09:24 -07:00
TrueDoctor
be668b36ab
Rearrange layers refactor (#281)
* Keep selection during reordering

* Fix paste layer selection

* Remove junk from layer matadata

* Add function to get non_selected_layers

* Cleanup

* Add tests
2021-07-24 00:54:30 +02:00
Henry Sloan
d30d44eb70
Change tool option kinds to PascalCase (#292) 2021-07-23 14:47:55 -07:00
George Atkinson
8f9168bfe5
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
63e3b5c604
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
7b79ad1341
Implement tool messaging and shape flipping (#288) 2021-07-22 16:25:42 -04:00
AJ Weeks
a448b36d9e
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
255cdead28
Add thumbnails for layers (#286)
Fixes: #285
2021-07-21 02:30:49 -07:00
Henry Sloan
06c26f44d0
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
bc733acb4c Fix tooltips in Document panel 2021-07-19 18:02:08 -07:00
Keavon Chambers
09f8f4444a Fix dropdown menu widget showing wrong active entry
Fixes #250
2021-07-19 15:03:08 -07:00
Keavon Chambers
131256ba0b
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
801bae103e Remove outdated todo comment 2021-07-17 03:36:35 -07:00
TrueDoctor
4637cbf12b
Apply clippy lints (#278) 2021-07-17 11:12:37 +02:00
Keavon Chambers
d57bfb87ee Clean up widget type naming conventions 2021-07-16 15:57:42 -07:00
Keavon Chambers
9c68ff2952 Categorize frontend widgets to match design system 2021-07-16 15:37:35 -07:00
Simon Desloges
5068f77580
Add support for folder bounding boxes (#276) 2021-07-16 16:34:04 +02:00
Keavon Chambers
5261a373a6 Edit readme with various updates and simplifications 2021-07-16 04:01:32 -07:00
bjorn3
83d4e7309c
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
Henry Sloan
7a087ba71a
Pass layer metadata to tools (#277) 2021-07-16 08:38:46 +02:00
Simon Desloges
6648e244a0
Add a document method that returns a layer's bounding box (#273)
* Add a document method that returns a layer's bounding box

* Moved `use` to the top of the file

* Add layer local bounding box method
2021-07-15 20:18:32 -07:00
Keavon Chambers
1b37e78d64 Remove CLI client stub 2021-07-15 03:44:57 -07:00
Keavon Chambers
49ce3f0672 Adjust OptionalInput widget design to add back its right border 2021-07-15 01:01:05 -07:00
Keavon Chambers
928ef844c4 Rename tool icons 2021-07-15 00:46:32 -07:00
Keavon Chambers
98f1b123bb Switch all JS imports to absolute paths 2021-07-15 00:34:56 -07:00
Keavon Chambers
64050bc8b3 Make frontend request tab list on initialization 2021-07-15 00:07:21 -07:00
Henry Sloan
7f1ad04a28
Transform nudge coordinates to viewport space (#264)
* Transform nudge coordinates to viewport space

* Refactor nudge transform for clarity
2021-07-14 23:05:46 -07:00
Keavon Chambers
c76bb608d3 Cleanup of variable naming 2021-07-14 20:11:51 -07:00
Keavon Chambers
34f058147e
Add a fullscreen button and the keyboard lock API (#266)
Closes #249
2021-07-14 18:56:22 -07:00
Keavon Chambers
83a955522e Enforce downgraded dependency versions in package.json 2021-07-14 16:51:56 -07:00
Keavon Chambers
0330822a94
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
TrueDoctor
5b397769a2
Order mapping entries precedence based on number of modifiers (#262)
* Order mapping entries precedence based on number of modifiers

* Fix format

* Rename variables

* More renaming
2021-07-15 00:40:37 +02:00
Keavon Chambers
726152759f
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
9d34aa4867
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
TrueDoctor
2b894c55f3
Implement snapping for rotation (#257) 2021-07-13 20:38:58 +02:00
TrueDoctor
0e2097f9d0
Implement more scrolling features (#256)
* Use sideways scrolling

* Add horizontal scroll with shift

* Combine WheelCanvasTranslate messages

* Add zooming to current mouse position

* Fix formatting

* Fix scroll direction

* Rename some Constants
2021-07-13 14:02:38 +02:00