54 Commits

Author SHA1 Message Date
psychedelicious
14d0bfbef6 refactor(ui): divvy up canvas state a bit 2024-08-30 22:18:47 +10:00
psychedelicious
0c9cf73702 feat(ui): get region and base layer canvas to blob logic working 2024-08-30 22:18:47 +10:00
psychedelicious
3b864921ac refactor(ui): node manager handles more tedious annoying stuff 2024-08-30 22:18:47 +10:00
psychedelicious
ce8a7bc178 feat(ui): add toggle for clipToBbox 2024-08-30 22:18:47 +10:00
psychedelicious
488ca87787 feat(ui): rename konva node manager 2024-08-30 22:18:47 +10:00
psychedelicious
d965df8ca9 refactor(ui): create classes to abstract mgmt of konva nodes 2024-08-30 22:18:47 +10:00
psychedelicious
995c26751e tidy(ui): organise renderers 2024-08-30 22:18:47 +10:00
psychedelicious
dd09723a2a refactor(ui): create entity to konva node map abstraction (wip)
Instead of chaining konva `find` and `findOne` methods, all konva nodes are added to a mapping object. Finding and manipulating them is much simpler.

Done for regions and layers, wip for control adapters.
2024-08-30 22:18:47 +10:00
psychedelicious
f65ce6a019 fix(ui): incorrect rect/brush/eraser positions 2024-08-30 22:18:47 +10:00
psychedelicious
9f1bd98c7e refactor(ui): decouple konva renderer from react
Subscribe to redux store directly, skipping all the react overhead.

With react in dev mode, a typical frame while using the brush tool on almost-empty canvas is reduced from ~7.5ms to ~3.5ms. All things considered, this still feels slow, but it's a massive improvement.
2024-08-30 22:18:47 +10:00
psychedelicious
b531d6b7f0 feat(ui): clip lines to bbox 2024-08-30 22:18:47 +10:00
psychedelicious
8aa963fb81 fix(ui): document fit positioning 2024-08-30 22:18:47 +10:00
psychedelicious
b76e0ab4e4 feat(ui): document bounds overlay 2024-08-30 22:18:47 +10:00
psychedelicious
aea03b4e92 tidy(ui): background layer 2024-08-30 22:18:47 +10:00
psychedelicious
b39e95966c refactor(ui): use "entity" instead of "data" for canvas 2024-08-30 22:18:47 +10:00
psychedelicious
d53e5e0158 feat(ui): brush size border radius = 1 2024-08-30 22:18:47 +10:00
psychedelicious
84a4a1024e refactor(ui): split up canvas entity renderers, temp disable preview 2024-08-30 22:18:47 +10:00
psychedelicious
ddfc8785b4 fix(ui): ignore keyboard shortcuts in input/textarea elements 2024-08-30 22:18:47 +10:00
psychedelicious
21e814d766 feat(ui): r to center & fit stage on document 2024-08-30 22:18:47 +10:00
psychedelicious
e937aa831f fix(ui): always use current brush width when making straight lines 2024-08-30 22:18:47 +10:00
psychedelicious
890e6a95ed feat(ui): hold shift w/ brush to draw straight line 2024-08-30 22:18:47 +10:00
psychedelicious
b49fdf6407 refactor(ui): scaled tool preview border 2024-08-30 22:18:47 +10:00
psychedelicious
5184d05bc2 refactor(ui): port remaining canvasV1 rendering logic to V2, remove old code 2024-08-30 22:18:47 +10:00
psychedelicious
d6bd1e4a49 refactor(ui): metadata recall (wip)
just enough let the app run
2024-08-30 22:18:47 +10:00
psychedelicious
04a44c8ea7 refactor(ui): fix renderer stuff 2024-08-30 22:18:47 +10:00
psychedelicious
8533f207dc refactor(ui): canvas v2 (wip) 2024-08-30 22:18:47 +10:00
psychedelicious
d135c48319 refactor(ui): canvas v2 (wip) 2024-08-30 22:18:47 +10:00
psychedelicious
ca9090d070 refactor(ui): canvas v2 (wip) 2024-08-30 22:18:47 +10:00
psychedelicious
93b185dc3b feat(ui): bbox tool 2024-08-30 22:18:47 +10:00
psychedelicious
98e5efa895 fix(ui): rect tool preview 2024-08-30 22:18:47 +10:00
psychedelicious
22925f92bd feat(ui): decouple konva logic from nanostores 2024-08-30 22:18:47 +10:00
psychedelicious
302efcf6e8 feat(ui): store all stage attrs in nanostores 2024-08-30 22:18:47 +10:00
psychedelicious
01f101c6f2 feat(ui): generation bbox transformation working
whew
2024-08-30 22:18:47 +10:00
psychedelicious
5606aec78d feat(ui): wip generation bbox 2024-08-30 22:18:47 +10:00
psychedelicious
db90e1fe8b feat(ui): wip generation bbox 2024-08-30 22:18:47 +10:00
psychedelicious
ae96c479f2 feat(ui): CL zoom and pan, some rendering optimizations 2024-08-30 22:18:47 +10:00
psychedelicious
344ed2c83e Revert "feat(ui): add x,y,scaleX,scaleY,rotation to objects"
This reverts commit 53318b396c967c72326a7e4dea09667b2ab20bdd.
2024-08-30 22:18:47 +10:00
psychedelicious
1985944659 feat(ui): layers manage their own bbox 2024-08-30 22:18:47 +10:00
psychedelicious
915357a6c1 docs(ui): konva image object docstrings 2024-08-30 22:18:47 +10:00
psychedelicious
63c34e78d7 feat(ui): add x,y,scaleX,scaleY,rotation to objects 2024-08-30 22:18:47 +10:00
psychedelicious
40cab08133 feat(ui): image loading fallback for raster layers 2024-08-30 22:18:47 +10:00
psychedelicious
51de25122a feat(ui): bbox calc for raster layers 2024-08-30 22:18:47 +10:00
psychedelicious
90313091db feat(ui): do not fill brush preview when drawing 2024-08-30 22:18:47 +10:00
psychedelicious
9982219d18 fix(ui): brush spacing handling 2024-08-30 22:18:47 +10:00
psychedelicious
b3fe03b8f9 fix(ui): jank when starting a shape when not already focused on stage 2024-08-30 22:18:47 +10:00
psychedelicious
6edd15d68a feat(ui): wip raster layers
I meant to split this up into smaller commits and undo some of it, but I committed afterwards and it's tedious to undo.
2024-08-30 22:18:47 +10:00
psychedelicious
25d7f9c316 tidy(ui): clean up event handlers
Separate logic for each tool in preparation for ellipse and polygon tools.
2024-08-30 22:18:47 +10:00
psychedelicious
3870ebdf29 feat(ui): raster layer reset, object group util 2024-08-30 22:18:47 +10:00
psychedelicious
7595d05191 feat(ui): rect shape preview now has fill 2024-08-30 22:18:47 +10:00
psychedelicious
20e6a57cf1 feat(ui): raster layer logic
- Deduplicate shared logic
- Split up giant renderers file into separate cohesive files
- Tons of cleanup
- Progress on raster layer functionality
2024-08-30 22:18:47 +10:00