Not exposed somewhere in the UI yet, but users can now add custom dithering pattern as images in "user://dither_matrices". Right now only used for gradient generation.
* Fix Create Folder sub-dialog of Export > Browse being always behind (thus making it unusable)
* Add a dedicated tag (makes it easier to remove it if godot itself fixes this bug later), save and save as dialog are fixed
* the scenes themselves have the tag instead of in Main.tscn
* Fix browse->new folder of export dialog
* fix a typo
* Restore lines that were unintentionally changed by Godot
* simplify the code and move it to the Export Dialog
* fix artefacts of moving the code
Instead, add "Add Layout" and "Delete Layout" options in the layouts submenu. This makes layout management easier, more intuitive and quicker, as it now requires less clicks. This is similar to what Photoshop does with its Workspaces
By removing the manage layouts dialog, we also got rid of duplicate code that already existed in TopMenuContainer, and it should be less bug-prone now.
Finally expose the feature of importing custom shaders as image effects, and implement custom shader loading for layer effects as well. To load a shader, drag and drop a .gdshader file into Pixelorama and it will get copied into `user://shaders`. Then, in the Effects menu, a new "Loaded" submenu will appear, and the new shaders will also be available in the layer effects dialog. Since they are stored on a persistent location, the shaders will also be available on the next times Pixelorama will launch as well.
Massive thanks to Material Maker for the custom widget code. The color curves effect is still WIP, I need to make the tangent points visible (not yet sure why they aren't now), add some curve presets, and implement it as a layer effect as well.
* 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
* Set dynamics dialog to correct size after something is made visible or hidden
* fixed aspects of brush buttons
* Fixed wrong stretch mode
* improved rotation brush UI
* Update PaintSelect.tscn
* formatting
* fix all stretch modes
* fix export expand mode
* Fix more Stretch modes
* Fixed Resize canvas transparent checker
* removed an addition
The change: 625fe4cdd1
is moved over to a new pr
* moved some changes to another pr
* Moved some more changes to another pr
They were named this way due to the naming conventions of Godot 3, but Godot 4 automatically makes these method names be all lowercase. Eventually we should replace all methods in the codebase to be all lowercase.
"Trim images" should be a more fitting name for this option, as it's quite common to export multiple images and the use of plural makes it more clear that this option applies to all exported images.