This will allow us to implement shearing more easily. Also, for the non-SmearRotxel shaders, normalize their pivot in GDScript, before passing it to the script. Should probably be faster this way
Pixelize makes the image pixelated, and Palettize maps the color of the input to the nearest color in the selected palette. Useful for limiting color in pixel art and for artistic effects.
Probably temporary, it might be a good idea to add a third "Data" tab in the export dialog, if we add stuff like exporting to Godot resources, such as AnimatedSprite, AnimationPlayer etc.
Allows users to change project name and add custom user data. I was not sure where to put this, so I put it under the Edit menu. It might be a good idea to add a new "Project" menu in the future, and perhaps Scale Image, Resize Canvas and Crop to Content/Selection could be placed there, as they always affect the entire project.
Only load dialogs when they are needed and not at the start of the program. Right now only the new image, about, manage layouts and image effects dialogs are being loaded on demand, but more dialogs can be handled this way in future commits.
This way, Pixelorama remembers the changes users make to the UI, without them having to go to Window, Manage Layouts and clicking on Edit, which was an unintuitive and slow way. Needs testing because bugs may linger.
This commit also adds a new `save_on_change` variable and a `save` method on layout.gd of the dockable_container plugin. Perhaps I should also add this upstream as well.
I also need to add a way to create new layouts based off the default ones (which are permanently stored within Pixelorama's pck file and cannot be modified), so users will always have the option to resort to the default layouts.
* Basic mp4 exporting, needs ffmpeg
* Add avi, ogv and mkv file exporting
* Add webm exporting
* Set ffmpeg path in the preferences
* Show an error message if the video fails to export
* Make sure to delete the temp files even if video exporting fails
* Update 3DShapeEdit.tscn
Change the menu button to flat to indicate that it is a button that you can press and not a label
* Changed Signal names to make sense
Note: I did not change functions in the ExtensionsAPI
Changed signals in Global.gd (and everywhere else they are referenced) from *_changed to *_switched
* Bonus Signal
Added a signal in Global.gd that gets emitted just before the project is changed.
Added project_changed to Global.gd which also emits what project was changed by an action (not switched).
* Formatting
* Some static typing and use notification to check if the theme has changed in swatches
* Use Vector2i for scrolling, hide scrollbars in the node properties
* More static typing improvements
* More static typing & docstring improvements, remove some methods from Palettes.gd
* [WIP] Go back to json for palettes instead of tres
* Revert back to using dictionaries for palette colors instead of array
Reverts part of the previous commit
* Read width & height from files, don't store the name
* Fix palette renaming
* Copy non-json palettes into json files
* Fix palette duplication
* Add a new _fill_imported_palette_with_colors() to avoid duplicate code in import file methods
* Fix palette file importing when not initialising
* Export palettes as images
* Replace "tres" with "json" filter in the open sprite dialog
* When exporting a palette as an image, automatically set the file name to the palette name
* Replace default palette files with json
* Remove the Global.palette_panel variable, use signals instead.
* Static typing in signals
* Fix warning in Palettes.gd
* Fix formatting
* Add missing comments to the palette files
* Update Palettes.gd
* A few more static typing improvements