1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-21 04:53:14 +00:00
Commit graph

319 commits

Author SHA1 Message Date
Emmanouil Papadeas
5b50270ee2 Undo/redo now removes tiles and re-indexes tilemap tiles 2024-12-04 01:21:54 +02:00
Emmanouil Papadeas
664197c9f3 Implement placing tiles for pencil tool
Still needs undo support
2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
0678fd8719 Tileset panel UI improvements 2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
12eda32176 Properly update the tileset when using any tool 2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
6b77e30e08 Improve tileset panel UI updating logic 2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
6c79136f09 Prevent from drawing on empty image portions on manual mode. 2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
cd6212d892 Make the manual mode work, kind of 2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
d95c3f7555 Properly implement the auto tile editing mode
Should work well now.
2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
9187d8a9be Don't delete tiles that have been added using the stack mode 2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
dd4f6b7b6c Change tile editing mode from the UI 2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
27c0787f26 Make manual mode work when the tileset is empty 2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
f42454ef03 Improve tileset editing logic 2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
a8755bd92f Support ImageExtended 2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
4f1ee0e828 Add a tileset panel
Code is a bit meh, needs to be written better.
2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
e119a91f5b Add tilemap layers 2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
062889b4bb Implement all draw modes (untested) 2024-12-04 01:21:53 +02:00
Emmanouil Papadeas
174f7d4b9f Initial work for tilemap layers 2024-12-04 01:21:53 +02:00
Variable
ff5713ae91
When picking color, ensure that the correct index is selected in palette (#1144)
* When picking color, ensure that the correct index is selected

* if drawing over same color in index mode, check and update index as well

* revert an optimization (croping indices image before display)

* typo
2024-12-02 19:44:52 +02:00
Emmanouil Papadeas
be8b7728e4 [skip ci] Fix typo in ImageExtended docstrings 2024-11-29 20:19:19 +02:00
Variable
31981a1def
Added a way to see index of color (plus bugfixes) (#1143)
* add a way to see indices

* fix some things

* Fixed more than one swatch selected if there is the same color available in an earlier swatch

* fixed wrong index drawn when moved to an smpty swatch

* make active_button public

* fixed wrong color getting stored in   array (similar fix to #1108.)

* If the color selected in the palette is the same then it should take prioity.

* formatting

* hide 0 index
2024-11-29 19:10:02 +02:00
Emmanouil Papadeas
01b55aca07 Fix crash when using indexed mode without a palette 2024-11-23 14:17:41 +02:00
Emmanouil Papadeas
b87a8e2ab8 Fix cel copying not working with indexed mode 2024-11-22 21:00:38 +02:00
Emmanouil Papadeas
e6c4a72158 Fix crash when using indexed mode and the palette has empty swatches between colors 2024-11-22 20:47:38 +02:00
Emmanouil Papadeas
bd7d3b19cc Add a crop_image boolean parameter to Palette.convert_to_image()
Fixes some issues with the Palettize effect where the output would be different if the palette size changed and empty swatches were added, even if the colors themselves stayed the same.
2024-11-22 17:56:39 +02:00
Emmanouil Papadeas
d0ecf3b03d Center diagonal symmetry guides when initializing a new project
The guides appear centered, but the symmetry itself is not working properly yet
2024-11-21 16:33:19 +02:00
Emmanouil Papadeas
3d65e48c92 Add backend for diagonal mirror buttons
The buttons are not yet visible
2024-11-21 12:48:52 +02:00
Emmanouil Papadeas
aa1731b701 Initial work on diagonal symmetry guides
Still no buttons yet, and they cannot be moved yet.
2024-11-21 04:00:40 +02:00
Emmanouil Papadeas
558140b309 Add partial logic for diagonal mirroring
Still WIP, no buttons and guides exposed yet.
2024-11-21 03:25:41 +02:00
Emmanouil Papadeas
2d28136449
Implement indexed mode (#1136)
* Create a custom PixeloramaImage class, initial support for indexed mode

* Convert opened projects and images to indexed mode

* Use shaders for RGB to Indexed conversion and vice versa

* Add `is_indexed` variable in PixeloramaImage

* Basic undo/redo support for indexed mode when drawing

* Make image effects respect indexed mode

* Move code from image effects to ShaderImageEffect instead

* Bucket tool works with indexed mode

* Move and selection tools works with indexed mode

* Brushes respect indexed mode

* Add color_mode variable and some helper methods in Project

Replace hard-coded cases of Image.FORMAT_RGBA8 with `Project.get_image_format()` just in case we want to add more formats in the future

* Add a helper new_empty_image() method to Project

* Set new images to indexed if the project is indexed

* Change color modes from the Image menu

* Fix open image to replace cel

* Load/save indices in pxo files

* Merging layers works with indexed mode

* Layer effects respect indexed mode

* Add an `other_image` parameter to `PixeloramaImage.add_data_to_dictionary()`

* Scale image works with indexed mode

* Resizing works with indexed mode

* Fix non-shader rotation not working with indexed mode

* Minor refactor of PixeloramaImage's set_pixelv_custom()

* Make the text tool work with indexed mode

* Remove print from PixeloramaImage

* Rename "PixeloramaImage" to "ImageExtended"

* Add docstrings in ImageExtended

* Set color mode from the create new image dialog

* Update Translations.pot

* Show the color mode in the project properties dialog
2024-11-20 14:41:37 +02:00
Emmanouil Papadeas
0d6b140dea Add border selection, fix some missing translation strings 2024-11-15 01:41:44 +02:00
Emmanouil Papadeas
dec698024c Implement selection expanding and shrinking via the Select menu 2024-11-14 17:59:53 +02:00
Emmanouil Papadeas
b0b1361722 Fix layer effect slider values being rounded to the nearest integer 2024-11-12 00:47:53 +02:00
Emmanouil Papadeas
ec17e970e0 The Recorder panel now automatically records for the current project
Making its behavior more intuitive and consistent with the other panels. This also allows for multiple projects to be recorder at the same time, something that was not previous before. Changing projects now also changes the UI accordingly, depending on whether the current project is being recorded or not.

This change also fixes a memory leak, where either the first ever project or the last recorded one, stayed forever referenced in memory by the `project` variable.

Also fixed an issue where the recorder's settings size label was not showing the correct project size.
2024-11-03 18:54:08 +02:00
Emmanouil Papadeas
dd8d217dc3 Changes in formatting due to gdtoolkit's new update
https://github.com/Scony/godot-gdscript-toolkit/releases/tag/4.3.2
2024-10-22 15:54:59 +03:00
Emmanouil Papadeas
e2b54f70f7 Bump pxo file version to 4 to fix blend mode compatibility with older pxo files
The addition of the erase blend mode from #1117 resulted in loading pxo files from v1.0-v1.0.3 to have incorrect blend modes in their layers, if they are set to anything below normal, because the values of the `BaseLayer.BlendModes` enumerator changed.
2024-10-22 15:39:30 +03:00
Variable
c21e089e58
Add alpha erase blend mode (#1117)
* Add alpha erase blend mode

* implemented suggestions
2024-10-13 01:57:10 +03:00
Emmanouil Papadeas
1ed52903b3 Implement the ability to change the font of a 3D text
This code will also be useful for the text tool
2024-10-12 16:30:16 +03:00
Emmanouil Papadeas
9fcb06aa72 Add a 3D text line spacing option 2024-10-12 14:31:15 +03:00
Emmanouil Papadeas
bbf0ae8040 Add a 3D text depth option 2024-10-12 01:14:37 +03:00
Emmanouil Papadeas
dcd93b4366 Remove Global.open_sprites_dialog and Global.save_sprites_dialog. 2024-10-11 17:12:55 +03:00
Emmanouil Papadeas
9824aef893 Attempt to fix the preview of the move tool not being aligned to the pixel grid 2024-09-19 00:38:46 +03:00
Emmanouil Papadeas
a5efb97d58 Set the group layer's default blend mode to Pass through
Mostly for performance reasons, but also to make it consistent with Photoshop and Photopea
2024-09-10 02:03:07 +03:00
Emmanouil Papadeas
b3021ceb67 Add a gaussian blur layer effect 2024-09-08 02:40:28 +03:00
Variable
4a7f7cbde5
Added a way to modify shader textures (#1096)
* experimental support for texture changes

* fix some typos

* formatting + some improvements

* Some final touches, i think it's ready now

* moved a function to the shaderloader

* formatting

* add a void
2024-09-03 03:38:56 +03:00
Variable
a7f1486ec3
Index Map (#1093)
* Index Map

* Formatting

* improve description a bit.
2024-08-31 02:53:27 +03:00
Emmanouil Papadeas
d531e9ace8 Create a new ShaderLoader class to move some code away from Global 2024-08-16 18:43:25 +03:00
Emmanouil Papadeas
b0aabe4e8a Add a preference to change max undo steps 2024-08-16 14:28:54 +03:00
Emmanouil Papadeas
077c57c53a
Implement support for group layer blending (#1077)
* Blend group layers on `DrawingAlgos.blend_layers()`

* Support group layer blending on the canvas

* Allow editing of group layer properties

* Fix issues with group layer blending in canvas, and unite common code

* Group layers can now be used as clipping masks

* Make move tool preview work on child layers

* Change OffsetImage's `blend_layers()` to support group layer blending

* Support group layer blending in the canvas preview

* Fix layer blending mode, clipping mask opacity and cel opacity not being updated automatically if the layer/cel changed is not selected

* Add a pass through blending mode to layer groups

Fingers crossed that no bugs were introduced

* Fix issue with layers that belong to pass through groups not updating their textures on the canvas automatically on undo
2024-08-15 15:52:55 +03:00
Emmanouil Papadeas
1d5de2ed86 Implement the ability to move all selected cels on between different frames, but on the same layer
You currently cannot move multiple cels on different layers, they still act as swapping. Eventually I'd also like to implement moving cels between different layers, but they would also have to be on the same frame. I don't think moving cels between different layers and frames at the same time is possible.
2024-08-13 23:25:29 +03:00
Emmanouil Papadeas
9c170ee5a0 Fix group layer children blending not working with nested group layers and with layer effects 2024-08-11 01:38:18 +03:00