Commit Graph

650 Commits

Author SHA1 Message Date
Igor Zinken
1c39d482a6 Slight optimization to export window 2026-04-04 09:11:52 +02:00
Igor Zinken
b347321c89 Create new pixel brush, fill and draw operations on pixel art now no longer have aliased edges 2026-04-04 09:08:50 +02:00
Igor Zinken
c42cd0e662 Round selections in pixel art mode for consistency and more clear draw operations 2026-04-03 21:23:07 +02:00
Igor Zinken
aef7e7ad0b Keep selection outline animation speed more consistent across zoom levels 2026-04-03 21:01:01 +02:00
Igor Zinken
ace84b2e5b Adjust menu outline on large screens with single button width toolbox 2026-04-03 20:24:18 +02:00
Igor Zinken
111046f05f Remove rudimentary, conflicting escape listener in keyboard service 2026-03-30 22:59:41 +02:00
dependabot[bot]
b98bb1ab70 Bump the npm_and_yarn group across 1 directory with 2 updates (#85)
Bumps the npm_and_yarn group with 2 updates in the / directory: [picomatch](https://github.com/micromatch/picomatch) and [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser).


Updates `picomatch` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

Updates `picomatch` from 2.3.1 to 2.3.2
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

Updates `fast-xml-parser` from 5.4.1 to 5.5.8
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.4.1...v5.5.8)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: fast-xml-parser
  dependency-version: 5.5.8
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 21:32:53 +02:00
dependabot[bot]
f8fdb6a8cd Bump flatted in the npm_and_yarn group across 1 directory (#82)
Bumps the npm_and_yarn group with 1 update in the / directory: [flatted](https://github.com/WebReflection/flatted).


Updates `flatted` from 3.3.3 to 3.4.2
- [Commits](https://github.com/WebReflection/flatted/compare/v3.3.3...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 21:28:51 +02:00
Igor Zinken
b5e62020fb Fixed broken Dropbox integration 2026-03-28 18:46:12 +01:00
Igor Zinken
35e7fa195f Declutter global styles 2026-03-28 18:11:23 +01:00
Igor Zinken
e787663e51 Small quality of life improvements with regards to styling 2026-03-28 15:38:19 +01:00
Igor Zinken
a75ba07556 Catch NPE on selection update 2026-03-28 15:07:33 +01:00
Igor Zinken
40b66bb21f Rebuild all thumbnails when toggling the thumbnail display on 2026-03-28 15:07:14 +01:00
Igor Zinken
075c9f7a0d Rename action to be in line with format 2026-03-28 07:52:33 +01:00
Igor Zinken
e6ea6ea23f Sync tile cache when performing tile add/clone/delete operations 2026-03-28 07:46:44 +01:00
Igor Zinken
b311434156 Small images are now shown scaled up in export window 2026-03-27 22:18:39 +01:00
Igor Zinken
8acf7f4730 Add Document properties edit window 2026-03-27 21:34:59 +01:00
Igor Zinken
1712ba2068 Shuffling layer order now triggers a tile re-render 2026-03-27 19:21:04 +01:00
Igor Zinken
f37cf84ea4 Fix issue where moving between documents would not have a selected tile for a timeline document 2026-03-27 19:08:49 +01:00
Igor Zinken
b605317578 Optimised carbon copy rendering. Omit rendering Document background for carbon copy 2026-03-27 18:50:49 +01:00
Igor Zinken
3999c018e9 Unified crisp pixel rendering across rendering pipelines 2026-03-27 18:12:28 +01:00
Igor Zinken
baa00dc644 Add timeline mode for animation support (#83)
### Motivation

In order to be more useful as a spritesheet editor, BitMappery now contains a timeline view, a mode where content can be sub grouped into tiles, where each subsequent tile can be traced over the previous one. Each tile can have multiple layers of content for ease of editing.

### Changes

 * Introduced Document types `default` and `timeline`
 * Introduced LayerRef types (allow grouping Layers)
 * Introduced Timeline view for tile based drawing and tracing
 * Introduced Document background color (omits need to create background layer for each tile in a timeline)
 * Cleaned up some legacy overrides made superfluous by newer dependencies
 * Added document presets to document creation flow

### Commits

* Add rel to Layer structure
* Add Document type
* Initial scaffold for timeline view.
* Added initial utility to manage timelines
* Added action to clone all Layers in a tile group
* Moved Layer cloning to layer-util
* Converted zoom tool option panel to TypeScript
* Added action to add a new tile and layer to the Document
* Added action to remove a tile and its layers from the Document
* Added Layer grouping property to Document structure
* Update type check for test
* Initial timeline panel outline
* Created tiles now match Document dimensions
* Added tile cache
* Allow showing a semi transparent carbon copy trace of the previous tile
* Add animation preview window
* Add fps control to animation preview
* Store metadata property inside Documents (allows storing timeline framerate)
* Optimise mobile view for timeline
* Keep thumbnail ratios when previewing tiles and animations
* Button and animation preview window styling
* use RAF-based animation timing in animation preview
* Changes made to layer content now trigger a re-render of the Group tile
* Update Layer reordering logic to also work with subsets
* Optimised animated GIF export, updated pixel art definitions to be more sensible
* Code cleanups
* Added background color to Documents, omitting the need for a background layer on each animation tile
* Removing temp code, updating renderer factory test
* Update layer styling, added tooltip on drag behaviour
* Added document DPI and size unit to meta data
* Refactored deprecated event property from modal key handler
* Remove unused properties from animation preview window
* Update unit test for renderer factory
* Fix bug where closing modals would trigger click on canvas
* Add presets for all Document types
* Added setting to automatically choose appropriate anti-alias setting
* Invalidate tile and thumbnail caches on resize and crop functions. Adjust spritesheet export behaviour
2026-03-26 18:47:05 +01:00
Igor Zinken
4e8631d758 Prevent bounce when scrolling in export window preview using touch pad 2026-03-25 17:45:33 +01:00
Igor Zinken
5fd0502f08 Use ZoomableCanvas subclass instead of zCanvas class when creating temporary draw canvas 2026-03-21 15:07:34 +01:00
Igor Zinken
712c7abd71 Add layer preview thumbnails to layers panel (#84)
### Motivation

It'd be great if we could see a small thumbnail preview in the layers panel to more easily distinguish between layers visually.

In this changeset we introduce the thumbnail cache. When enabled, each layer is represented by a thumbnail which can be requested from multiple subscribed consumers (currently only the layer panel).

Thumbnail updates are deferred to keep CPU usage low and performance high.
2026-03-21 14:57:28 +01:00
Igor Zinken
9ae83c6402 Update Google Fonts consent message 2026-03-21 14:34:21 +01:00
dependabot[bot]
004b6afb68 Bump the npm_and_yarn group across 1 directory with 2 updates (#80)
Bumps the npm_and_yarn group with 2 updates in the / directory: [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) and [immutable](https://github.com/immutable-js/immutable-js).


Updates `fast-xml-parser` from 5.3.6 to 5.4.1
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.3.6...v5.4.1)

Updates `immutable` from 5.1.4 to 5.1.5
- [Release notes](https://github.com/immutable-js/immutable-js/releases)
- [Changelog](https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/immutable-js/immutable-js/compare/v5.1.4...v5.1.5)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.4.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: immutable
  dependency-version: 5.1.5
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-14 11:08:39 +01:00
Igor Zinken
c321d04374 Fix issue where history state factory would not store reference to pending timeouts 2026-03-03 21:25:09 +01:00
Igor Zinken
6a43e04db3 Improved scrollbar control 2026-03-01 18:22:49 +01:00
dependabot[bot]
b9daa84f9a Bump the npm_and_yarn group across 1 directory with 2 updates (#79)
Bumps the npm_and_yarn group with 2 updates in the / directory: [minimatch](https://github.com/isaacs/minimatch) and [rollup](https://github.com/rollup/rollup).


Updates `minimatch` from 3.1.2 to 3.1.5
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)

Updates `rollup` from 4.57.1 to 4.59.0
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v4.57.1...v4.59.0)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.5
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: rollup
  dependency-version: 4.59.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-28 07:05:18 +01:00
dependabot[bot]
8778453730 Bump fast-xml-parser in the npm_and_yarn group across 1 directory (#78)
Bumps the npm_and_yarn group with 1 update in the / directory: [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser).


Updates `fast-xml-parser` from 5.2.5 to 5.3.6
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.2.5...v5.3.6)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.3.6
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-27 22:41:09 +01:00
Igor Zinken
649ada2f89 Allow using alt when clone stamp is selected to re-select source coordinate 2026-02-16 21:04:01 +01:00
Igor Zinken
b0e68c3fd1 When there is an active selection when a mask is created, fill the mask with the selection 2026-02-15 20:23:53 +01:00
Igor Zinken
58da943179 Prevent creating holes from subtracted selections 2026-02-15 19:29:58 +01:00
Igor Zinken
06b39f8dc1 Update TypeScript compiler target 2026-02-03 21:42:37 +01:00
Igor Zinken
b385e61949 Support text parsing from PSD documents (#76) 2026-02-03 21:27:46 +01:00
Igor Zinken
a1ee891168 Optimizing selections: allowing merging and subtracting of overlapping shapes (#77)
* Allow merging and subtracting of selections
* Support selections with more than one other shape
* Allow subtraction using alt key
* Fix issue where stepping through selection state history would not restore merges and subtractions
* Preserve selection when switching between selection type tools
* Cleaner control of subtraction operation
2026-02-01 15:06:38 +01:00
Igor Zinken
c64f749189 Package updates 2026-01-31 09:33:45 +01:00
dependabot[bot]
f7aa153cdf Bump form-data from 4.0.1 to 4.0.4 (#71)
Bumps [form-data](https://github.com/form-data/form-data) from 4.0.1 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v4.0.1...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-24 21:18:24 +02:00
dependabot[bot]
c546b85d81 Bump vite from 6.2.5 to 6.3.4 (#68)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.5 to 6.3.4.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.4/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.3.4
  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-05-21 20:03:16 +02:00
Igor Zinken
0bd2ea4682 Address issue where export window would not display correct height on certain laptop screen sizes 2025-05-20 22:26:29 +02:00
Igor Zinken
dbcf9b92ce Refactored export window to show original and preview side by side. Improved performance of preview rendering 2025-05-19 16:31:50 +02:00
Igor Zinken
4d1e1a8fd6 Implement color inversion adjustment filter 2025-05-14 19:45:45 +02:00
Igor Zinken
c9ae39049c Mobile layout fixes and CSS cleanups 2025-04-12 14:25:53 +02:00
Igor Zinken
2a29dd6546 Split menu into separate reusable sections, introduced context menu actions to layer panel. Renamed tool-module to editor-module 2025-04-12 11:52:52 +02:00
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