Commit graph

191 commits

Author SHA1 Message Date
Keavon Chambers
9f63c6e8ea Fix missing keyboard shortcut <P> for the Pen Tool 2021-05-27 22:10:48 -07:00
Keavon Chambers
6331325ae0 Minor CSS custom property rename for accuracy 2021-05-27 15:03:49 -07:00
Chrs Msln
f3a23cb3ec
Implement color picker for primary/secondary working colors (#70)
* feat/color-picker: rework

* feat(161) lint

* feat(161) Remove response handlers

* feat(161) fix rgb <-> hsv conversion

* feat(161) inverse swatchs and add checkered bg

* feat(161) remove temporary color assignment

* feat(161) move cursor outside of the box

* feat(161) @Keavon feedbacks

* feat(161) lint

* feat(161) fix opacity-picker color

* feat(161) --saturation-picker-color
2021-05-27 14:59:52 -07:00
Keavon Chambers
c2314df8d5 Fix layer visibility icons incorrectly referenced in previous cleanup commit. 2021-05-27 09:26:38 -07:00
Keavon Chambers
c205fec0d4 Move all icon SVG imports to the Icon component
This change also removes the need to specify the icon size.
2021-05-27 02:14:32 -07:00
Keavon Chambers
313a1dfc65 Standardize icon sizes and folder paths (closes #110) 2021-05-27 00:14:50 -07:00
Keavon Chambers
3fba54fad1 Fix popover positioning regression 2021-05-25 21:49:43 -07:00
Keavon Chambers
b3fa6347c2 Update the readme with new progress, details, and mockup screenshot 2021-05-24 00:33:09 -07:00
Keavon Chambers
d7478f5890
Update UI colors and alignment for consistency with the design mockup (#157)
Closes #111
2021-05-23 19:01:13 -07:00
TrueDoctor
a596ce0104
Major overhaul of input and communication systems
* Add input manager

* WIP lifetime hell

* Hell yeah, dark lifetime magic

* Replace events with actions in tools

* Fix borrow in GlobalEventHandler

* Fix typo in response-handler

* Distribute dispatch structure

* Add translation from events to actions

* Port default key actions to input_mapper

* Split actions macro

* Add handling for Ambiguous Mouse events

* Fix warnings and clippy lints

* Add actions macro

* WIP rework

* Add AsMessage macro

* Add implementation for derived enums

* Add macro implementation for top level message

* Add #[child] attribute to indicate derivation

* Replace some mentions of Actions and Responses with Message

* It compiles !!!

* Add functionality to some message handlers

* Add document rendering

* ICE

* Rework the previous code while keeping basic functionality

* Reduce parent-top-level macro args to only two

* Add workaround for ICE

* Fix cyclic reference in document.rs

* Make derive_transitive_child a bit more powerful

This addresses the todo that was left,
enabling arbitrary expressions to be passed as the last
parameter of a #[parent] attribute

* Adapt frontend message format

* Make responses use VecDeque

Our responses are a queue so we should use a queue type for them

* Move traits to sensible location

* Are we rectangle yet?

* Simplify, improve & document `derive_discriminant`

* Change `child` to `sub_discriminant`

This only applies to `ToDiscriminant`.
Code using `#[impl_message]` continues to work.

* Add docs for `derive_transitive_child`

* Finish docs and improve macros

The improvements are that impl_message now uses trait
resolution to obtain the parent's discriminant
and that derive_as_message now allows for non-unit
variants (which we don't use but it's nice to have,
just in case)

* Remove logging call

* Move files around and cleanup structure

* Fix proc macro doc tests

* Improve actions_fn!() macro

* Add ellipse tool

* Pass populated actions list to the input mapper

* Add KeyState bitvector

* Merge mouse buttons into "keyboard"

* Add macro for initialization of key mapper table

* Add syntactic sugar for the macro

* Implement mapping function

* Translate the remaining tools

* Fix shape tool

* Add keybindings for line and pen tool

* Fix modifiers

* Cleanup

* Add doc comments for the actions macro

* Fix formatting

* Rename MouseMove to PointerMove

* Add keybinds for tools

* Apply review suggestions

* Rename KeyMappings -> KeyMappingEntries

* Apply review changes

Co-authored-by: T0mstone <realt0mstone@gmail.com>
Co-authored-by: Paul Kupper <kupper.pa@gmail.com>
2021-05-23 01:26:24 +02:00
Keavon Chambers
56c1110800 Fix icon cursor hitbox below SVGs by setting images to display: block
Fixes #133
2021-05-21 14:28:11 -07:00
Keavon Chambers
c97cb9905c
Rename and organize widget components to conform to design terminology (#132) 2021-05-21 13:10:32 -07:00
Keavon Chambers
c8eea1e4b1
Complete implementing popover system main features (#131)
* Make popover buttons open popover menus and add placeholder messages to all of them.
* Implement all directions for drawing, aligning, and edge-clamping popovers.
* Fix popovers so they are drawn outside their parent panel bounds and not clipped.
* Fix popover HTML to avoid nesting it inside a <button> element.
2021-05-21 12:22:30 -07:00
Keavon Chambers
4ed093bb4b
Popovers now close when clicked out or mouse strays 100px outside bounds (#129) 2021-05-19 01:02:58 -07:00
akshay1992kalbhor
b23fa6d84f
Make the show/hide layer buttons work (#118) (#127) 2021-05-18 18:55:05 +02:00
Keavon Chambers
81effa550f Move .eslintignore file rules into .eslintrc.js 2021-05-17 18:56:41 -07:00
Keavon Chambers
b20addaaaf
Implement popover component and beginnings of color picker (#128) 2021-05-17 12:07:54 -07:00
Keavon Chambers
94485fe6cb Rename Panel Area -> Workspace and Dockable Panel -> Workspace Panel 2021-05-16 18:15:04 -07:00
Keavon Chambers
7fc6eddb1a Rename Footer Bar -> Status Bar 2021-05-16 18:04:26 -07:00
Keavon Chambers
1419f3bc6b
Refactor type handling for response handler to fix dangerous casting (#126) 2021-05-15 01:02:33 -07:00
Keavon Chambers
a1b80db51f Upgrade TypeScript from 3.9 to 4.x 2021-05-14 23:53:55 -07:00
dependabot[bot]
9eba2ef782
Bump lodash from 4.17.20 to 4.17.21 in /client/web (#125)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-14 01:05:27 -07:00
Keavon Chambers
15459256b6 Update node packages 2021-05-14 00:58:15 -07:00
Keavon Chambers
c9e9f1acc0 Update favicon 2021-05-09 23:34:12 -07:00
Keavon Chambers
dc5b563ab2 Change debug colors for dark theme readability 2021-05-09 01:37:58 -07:00
Paul Kupper
57252fa828
Cancel in-progress drag with right click or escape key (#119) 2021-05-09 01:26:47 -07:00
RustyStriker
78ff81ffa8
Fix rect/hexagon not centering properly when holding alt (#121) 2021-05-09 00:23:13 -07:00
Keavon Chambers
722c777ba6 Change default draw color to orange, plus small fixes 2021-05-08 15:17:31 -07:00
Keavon Chambers
64f716e081
Rename human-readable layer types (#117) 2021-05-07 21:13:22 -07:00
Keavon Chambers
7ec0558cbd Plumb frontend for layer visibility toggle 2021-05-07 16:57:45 -07:00
Paul Kupper
1230e9d829
Improved Rectangle, Line and Shape Tools (#106) 2021-05-07 11:05:03 -07:00
Keavon Chambers
5bf0452b9c Fix "P" not switching to the Pen Tool 2021-05-07 10:42:09 -07:00
TrueDoctor
437251f90e Plumb layer panel (#107)
* WIP ExpandFolder handling

* Implement response parsing in typescript

* Update layer panel with list sent by wasm

* Add events for layer interaction

* Add proper default naming

* Fix displaying of the eye icon

* Attach path to LayerPanelEntry

* Fix lint issues

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-05-07 10:41:38 -07:00
Keavon Chambers
67abeadf32 Styling improvements to layers 2021-05-07 02:47:38 -07:00
Keavon Chambers
0ebd127333 Replace placeholder with eye icons for layers 2021-05-07 02:47:38 -07:00
Keavon Chambers
e448f908e3 Fix CSS extraneous space beneath icons 2021-05-07 02:47:38 -07:00
Paul Kupper
9c324edfe0 Fix ellipse tool behavior (#105) 2021-05-07 02:47:38 -07:00
T0mstone
47458115b8 Another round of polishing (#101)
* Implement basic refactorings

* Simplify some match statements

* Rename `ix` to `index`

If we're not going with a single letter name,
then a full word makes more sense.

* Rename `as_hex` to `to_hex`

`as_` implies lossless reinterpretation
while the function does a conversion that loses information

* Replace `for_each` with for loops

for loops are a lot easier to read and maintain.

* factor out x and y coords in Line::render

this is arguably more ergonomic

* Remove redundant `format!(format_args!())`
2021-05-07 02:47:38 -07:00
Paul Kupper
c9fea54ec5 Improve Ellipse Tool (#98) 2021-05-07 02:47:38 -07:00
Keavon Chambers
76eb944233 Add basic HTML for layers in the layer panel (#97) 2021-05-07 02:47:38 -07:00
TrueDoctor
721a442b75 Use serde to serialize responses (#96) 2021-05-07 02:47:38 -07:00
TrueDoctor
9ad5f4ce78 Add npm run lint-no-fix option (#93) 2021-05-07 02:47:38 -07:00
TrueDoctor
cb9d34c84d Improve rendering efficiency and add caching (#95)
Fixes #84

*Reduce heap allocations
* Add caching for rendering svgs
* Deduplicate UpdateCanvas Responses
2021-05-07 02:47:38 -07:00
TrueDoctor
5f1620b008 Add caching to svg rendering (#94)
* Add documentation for functions in the document library
* Restructure backchannel
2021-05-07 02:47:38 -07:00
TrueDoctor
c540d781e1 Fix active tool selection (#92) 2021-05-07 02:47:38 -07:00
TrueDoctor
3ab5f6b7ef Add responses in document for layer system (#91) 2021-05-07 02:47:38 -07:00
Keavon Chambers
76a998dea4 Update architecture diagram around the Dispatcher 2021-05-07 02:47:38 -07:00
TrueDoctor
0b3a53c223 Split mouse events according to the button pressed (#90) 2021-05-07 02:47:38 -07:00
Keavon Chambers
825e6954df Rename tools: "Sample" to "Eyedropper", "Blur/Sharpen" to "Detail" (#87) 2021-05-07 02:47:38 -07:00
Keavon Chambers
e28b5575f7 Add design documentation about user input and masking 2021-05-07 02:47:38 -07:00