Commit Graph

337 Commits

Author SHA1 Message Date
Keavon Chambers
cdcddf176b 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
5016fde231 Standardize icon sizes and folder paths (closes #110) 2021-05-27 00:14:50 -07:00
Keavon Chambers
9930ea2e13 Fix popover positioning regression 2021-05-25 21:49:43 -07:00
Keavon Chambers
0ed6f24664 Update the readme with new progress, details, and mockup screenshot 2021-05-24 00:33:09 -07:00
Keavon Chambers
34efac990b Update UI colors and alignment for consistency with the design mockup (#157)
Closes #111
2021-05-23 19:01:13 -07:00
TrueDoctor
4b19a459b7 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
c08b2d4b31 Fix icon cursor hitbox below SVGs by setting images to display: block
Fixes #133
2021-05-21 14:28:11 -07:00
Keavon Chambers
3b0762ef18 Rename and organize widget components to conform to design terminology (#132) 2021-05-21 13:10:32 -07:00
Keavon Chambers
b9248b828c 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
267331728d Popovers now close when clicked out or mouse strays 100px outside bounds (#129) 2021-05-19 01:02:58 -07:00
akshay1992kalbhor
a5bea53db2 Make the show/hide layer buttons work (#118) (#127) 2021-05-18 22:25:05 +05:30
Keavon Chambers
564560c7dd Move .eslintignore file rules into .eslintrc.js 2021-05-17 18:56:41 -07:00
Keavon Chambers
a439b27d2b Implement popover component and beginnings of color picker (#128) 2021-05-17 12:07:54 -07:00
Keavon Chambers
b7b329c85a Rename Panel Area -> Workspace and Dockable Panel -> Workspace Panel 2021-05-16 18:15:04 -07:00
Keavon Chambers
11e408523a Rename Footer Bar -> Status Bar 2021-05-16 18:04:26 -07:00
Keavon Chambers
5dc838079b Refactor type handling for response handler to fix dangerous casting (#126) 2021-05-15 01:02:33 -07:00
Keavon Chambers
a28cb314aa Upgrade TypeScript from 3.9 to 4.x 2021-05-14 23:53:55 -07:00
dependabot[bot]
037aa90065 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
cba56e1dec Update node packages 2021-05-14 00:58:15 -07:00
Keavon Chambers
2fbdafb157 Update favicon 2021-05-09 23:34:12 -07:00
Keavon Chambers
935daa3a7a Change debug colors for dark theme readability 2021-05-09 01:37:58 -07:00
Paul Kupper
52bebfad25 Cancel in-progress drag with right click or escape key (#119) 2021-05-09 10:26:47 +02:00
RustyStriker
3522969fec Fix rect/hexagon not centering properly when holding alt (#121) 2021-05-09 10:23:13 +03:00
Keavon Chambers
b91c416611 Change default draw color to orange, plus small fixes 2021-05-08 15:16:59 -07:00
Keavon Chambers
34036e42ee Rename human-readable layer types (#117) 2021-05-07 21:13:22 -07:00
Keavon Chambers
4975a4e737 Plumb frontend for layer visibility toggle 2021-05-07 16:57:45 -07:00
Paul Kupper
14e61d2328 Improved Rectangle, Line and Shape Tools (#106) 2021-05-07 20:05:03 +02:00
Keavon Chambers
2650b2c998 Fix "P" not switching to the Pen Tool 2021-05-07 01:51:15 -07:00
TrueDoctor
6adb984f2d 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:17:46 +02:00
Keavon Chambers
76d3e8cde4 Styling improvements to layers 2021-05-06 01:05:10 -07:00
Keavon Chambers
c74575724c Replace placeholder with eye icons for layers 2021-05-05 22:09:50 -07:00
Keavon Chambers
6dc8c91578 Fix CSS extraneous space beneath icons 2021-05-05 22:08:58 -07:00
Paul Kupper
b4ad274fd8 Fix ellipse tool behavior (#105) 2021-05-04 22:25:25 +02:00
T0mstone
3431128e66 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-04 15:08:24 +02:00
Paul Kupper
0ff9e5ff49 Improve Ellipse Tool (#98) 2021-05-04 10:53:00 +02:00
Keavon Chambers
4ffb836673 Add basic HTML for layers in the layer panel (#97) 2021-05-02 13:55:22 -07:00
TrueDoctor
f8ebff033d Use serde to serialize responses (#96) 2021-05-02 22:46:47 +02:00
TrueDoctor
f10a3c63d1 Add npm run lint-no-fix option (#93) 2021-05-02 21:27:44 +02:00
TrueDoctor
fc10575dfa Improve rendering efficiency and add caching (#95)
Fixes #84

*Reduce heap allocations
* Add caching for rendering svgs
* Deduplicate UpdateCanvas Responses
2021-05-02 21:21:39 +02:00
TrueDoctor
457c465342 Add caching to svg rendering (#94)
* Add documentation for functions in the document library
* Restructure backchannel
2021-05-02 20:34:23 +02:00
TrueDoctor
8d683a4162 Fix active tool selection (#92) 2021-05-02 08:30:51 +02:00
TrueDoctor
f05cb30acb Add responses in document for layer system (#91) 2021-05-02 00:57:47 +02:00
Keavon Chambers
b27eaf3fae Update architecture diagram around the Dispatcher 2021-05-01 13:36:05 -07:00
TrueDoctor
c5506c71b3 Split mouse events according to the button pressed (#90) 2021-05-01 21:09:13 +02:00
Keavon Chambers
3b32184906 Rename tools: "Sample" to "Eyedropper", "Blur/Sharpen" to "Detail" (#87) 2021-04-29 00:50:55 -07:00
Keavon Chambers
b6ce559d86 Add design documentation about user input and masking 2021-04-29 00:41:38 -07:00
Keavon Chambers
f01e20571a Design tweaks to frontend components 2021-04-29 00:32:25 -07:00
0HyperCube
164e9f9729 Add preview for rectangles / shapes / lines (#85)
👀 Add preview for rectangles / shapes / lines
2021-04-24 22:18:48 +01:00
Edwin Cheng
8a981efd1d Use fold instead of join in PolyLine rendering (#83)
* Use fold instead of join in PolyLine rendering

* Add test
2021-04-23 03:34:11 +08:00
Edwin Cheng
e40727e914 Implement Pen Tool (#79) 2021-04-23 00:12:24 +08:00