605 Commits

Author SHA1 Message Date
Igor Zinken
bca9aa9145 When erasing content from a drawable layer, underlying layers are now preserved correctly during draw 1.1.0 2025-04-06 09:26:34 +02:00
dependabot[bot]
c06156165f Bump vite from 6.2.3 to 6.2.5 (#65)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.3 to 6.2.5.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.5/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.2.5
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-06 06:42:32 +02:00
Igor Zinken
0285fc53bf Fix bug where scrollable windows would not respond to mousewheel event 2025-04-05 11:53:53 +02:00
Igor Zinken
f930d43078 Restructure UI, maximize layers panel when filters & effects view is opened (#66)
* Some sizing shenanigans

* Cleanups in ZoomableSprite and inheritance chain

* Ongoing

* Done
2025-04-05 11:50:08 +02:00
Igor Zinken
304e08d9d0 Touchpads on laptops now zoom the canvas, not the page 2025-04-05 11:10:28 +02:00
Igor Zinken
d64ec1ae3e Refactor Layer effects and introduce duotone filter (#64)
* Added Duotone filter to effects
* Renamed Effects actor to Transform
2025-04-04 20:55:34 +02:00
Igor Zinken
6056e6301e Fix bug where opacity compositing was not supported when using a blend mode 2025-04-03 21:48:07 +02:00
Igor Zinken
e8eb11fd06 Improve performance of dragging Masks on blended, effected Layers 2025-04-02 21:26:28 +02:00
Igor Zinken
00e0b7549a Allow committing effects and filters to a Layer source, control zoom level using pointer, move state changing actions to separate files. (#63)
* Implemented new commit layer effects and transforms action
* Moved all actions out of the application menu component
* Grid to layer slicing moved out of component
* Unified all layer filter toggling into single action
* Moved all layer panel history interactions to separate action files
* Moved mirror, rotation, later addition and document resize state actions to separate files
* Adjust behaviour of layer addition action
* Moved canvas resizing history action to separate file
* Move interaction pane selection logic into separate files
* Move layer positioning utilities to separate actions
* Use correct event variable in ZoomableCanvas
* Zoom tool now responds to clicks and alt+clicks when zoom is selected
2025-04-02 19:21:28 +02:00
Igor Zinken
b7c6698da8 Fix bug where cutting a selection would not correctly render the cut pixels 2025-03-29 17:32:26 +01:00
Igor Zinken
641828c035 Move history management functions out of layer renderer and into history utility (#61) 2025-03-29 07:43:47 +01:00
Igor Zinken
26d7fe6593 Fix issue where dragging masks on transformed layers would not respond correctly (#60) 2025-03-28 21:57:09 +01:00
Igor Zinken
32e308bb6b When drawing on a mask using the eraser tool, the live preview will now correctly show the result of the operation 2025-03-27 21:22:59 +01:00
Igor Zinken
f74df9098e Selection close outline now works zoom level independent 2025-03-27 15:31:32 +01:00
Igor Zinken
8dc5e715f3 Added support for freeform lasso selections 2025-03-27 12:12:56 +01:00
Igor Zinken
466da80f1c Fix bug where any non-double tap using the TouchDecorator would lock the canvas' interactivity 2025-03-27 12:00:08 +01:00
Igor Zinken
5a6abc8e70 Remove unused dependency, update vitest 2025-03-27 09:45:02 +01:00
Igor Zinken
e47c0dc297 Fixed bug where cropping would not update Layer dimensions appropriately 2025-03-25 22:08:26 +01:00
Igor Zinken
94cd300259 When reordering or deleting Layers in a Document using blend caching, the cache should be flushed 2025-03-25 21:52:06 +01:00
Igor Zinken
d4dac30a6c Document resize can now be undone in state history. Document crop now cuts pixels of source content 2025-03-23 11:26:55 +01:00
Igor Zinken
2b7bcb924d Auto select dragged layer on drag end 2025-03-22 11:54:22 +01:00
Igor Zinken
b765404704 Update to clipping context while drawing 2025-03-16 12:17:59 +01:00
Igor Zinken
dbafae9984 Clip brush lines while drawing on an offset or transformed Layer 2025-03-16 12:14:31 +01:00
Igor Zinken
9182be6555 Move render operations to separate sub folders 2025-03-16 11:37:21 +01:00
Igor Zinken
630ba35b40 Restructure and rename actor/renderers (#57)
* Restructure and rename actor/renderers
* Rename cache flushing functions to reflect their scope
* Move canvas instance management to dedicated service
* Type resize-canvas-window Vue file
2025-03-16 11:32:42 +01:00
Igor Zinken
3aa929f704 Separate brush outline rendering routines into separate cursor rendering file 2025-03-16 07:47:24 +01:00
Igor Zinken
5b79291faf Moving some functions out of class instances to more logical utilities 2025-03-16 07:18:18 +01:00
Igor Zinken
cc2ace1719 Restructure test mocks 2025-03-15 22:09:07 +01:00
Igor Zinken
e39317e47a Fix issue where eyedropper tool would lose accuracy on HDPI screens 2025-03-15 22:04:27 +01:00
Igor Zinken
cfbfbfae1f Show result during direct-to-mask drawing operations 2025-03-15 21:31:24 +01:00
Igor Zinken
5f191cf9cc Fix issue where bounding box was not correct when selecting the outline of a vertically flipped Layer 2025-03-15 19:28:41 +01:00
Igor Zinken
8c99aa2e41 Life restriction that prevents drawing inside a selection on mirrored Layers 2025-03-15 19:20:03 +01:00
Igor Zinken
c8b8826216 Guides and selection lines now render at equal thickness across zoom levels 2025-03-15 11:49:56 +01:00
Igor Zinken
b9843c3b43 Fix bug where copying offset, cropped Layers would not correctly copy selection content 2025-03-15 11:37:16 +01:00
Igor Zinken
875edf0d10 Improved performance of selection copying 2025-03-15 11:31:17 +01:00
Igor Zinken
201ddbd9e5 Select all now selects full Document size more logically. Alt + clicking on a Layer selects the Layer outline, respecting transformations 2025-03-15 11:06:05 +01:00
Igor Zinken
83d8e7af4d Address issue where drawing operations on offset, cropped Layers would not use correct coordinate space 2025-03-15 10:19:27 +01:00
Igor Zinken
9ca9bbb732 Copying selection content onto new Layers reuses the original selections Layer type 2025-03-15 09:53:07 +01:00
Igor Zinken
1d37781855 Prevent drawing outside of the mask on non-graphic Layer types 2025-03-15 09:21:26 +01:00
Igor Zinken
12b51efffa Updates to layer and mask position management 2025-03-15 08:16:02 +01:00
Igor Zinken
535a192db3 Added more clear distinction between editing Layer source or Layer mask 2025-03-15 07:17:49 +01:00
Igor Zinken
a94f27153d Fix issue affecting snap & align of transformed Layers 2025-03-15 07:04:16 +01:00
Igor Zinken
c2c3389f84 More appropriate calculation for rendering blended layer bitmaps 2025-03-15 06:43:41 +01:00
Igor Zinken
9d2e89bde1 Create blended layer cache minimising rendering overhead on Documents with blended content (#55)
* Create cache for blended layers to speed up rendering on Documents with blended content
* Manage blend mode caching state through layer changes in Document canvas
* Comments updated
* Moving files around
* Omit invisible layers in snapshot rendering
* Add pausing to blend layer cache
* Cleanups and tests for LayerSprite
* Remove logs
* Use actual LayerSprite in test
* Simplify pending check
* Omit flush calls on (un)pausing of cache
* Extend tests for LayerSprite
* Update modifier key tooltip
* Create reusable function for invalidating blend cache
* Updated tests
* Allow partial cache flushes
* Ensure blended layer cache is flushed appropriately on undo
* Pause blend caching while rotating or scaling
* Fix for Safari rendering issues
2025-03-14 22:54:25 +01:00
Igor Zinken
85692f3896 Style updates: font size and backgrounds 2025-03-14 19:18:55 +01:00
Igor Zinken
bb64219006 Optimise clone source performance 2025-03-10 21:07:35 +01:00
Igor Zinken
6afd0e1f96 Fixed issue affecting magic wand tool on HDPI screens 2025-03-09 21:41:24 +01:00
Igor Zinken
20f438be84 Updated README 2025-03-09 17:57:26 +01:00
Igor Zinken
12a1a0710a Refactor clone brush routine (#54)
* Improve performance of clone brush while drawing
* Reuse same cached paint canvas mechanism as used by all other brushed-based drawing mechanisms
2025-03-09 17:36:36 +01:00
Igor Zinken
75ff95725e Declutter paint routines and fill mode bugs (#52)
* Simplify temporary canvas setup in layer-sprite's `paint()` routine
* Ensure fill, clear and stroke operations work the same like brushed painting by using a temporary canvas and apply transformations at the end
2025-03-09 11:28:23 +01:00