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.
* Initial work on audio layers
* Load ogg audio files
* Fix playback position
* Support mp3 files
* Play audio at the appropriate position when the animation runs, and stop when the pause button is pressed
* Change audio cel textures for the cels where audio is playing
* Fix audio not playing at the appropriate position
* Don't play audio is layer is invisible
* Set the audio layer names to be the imported audio file names
* Import audio from videos
* Export videos with audio
Only works with mp3 for now
* Remove support for ogg audio files as they cannot be saved
At least until I find a way to save them. Wav files will be supported with Godot 4.4
* Fix adding/removing in-between frames breaking the visual indication of audio cels
* Minor code improvements
* Export audio in videos with custom delay
* Support frame delay
* Change the frame where the audio plays at
* Fix crashes when the audio layer has no track
* Remove unneeded cel properties for audio cels
* Pxo loading/saving
* Load audio files from the audio layer properties
* Change the audio driver to Dummy from the Preferences for performance reasons
* Clone audio layers, disable layer merge and FX buttons when an audio layer is selected
* Easily change the playback frame of an audio layer from the right click menu of cel buttons
* Update Translations.pot
* Some code improvements and documentation
* Stop audio from playing when looping, and the audio does not play at the first frame
* Update audio cel buttons when changing the audio of the layer
* Mute audio layer when hiding it mid-play
* Only plays the portion of the sound that corresponds to the specific frame so maybe we should do that as well
When the animation is not running. If it is running, play the sound properly.
* Some code changes to allow for potential negative frames placement for audio
This woud allow audio to be placed in negative frames, which essentially means that audio would start before the first frame. This is not yet supported, however, because I don't know how to make it work with FFMPEG.
* 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
* Initial port of the text tool to Godot 4
* Change font (WIP)
* Add antialiasing option and remove some old unneeded lines
* Remove outline code
* Add horizontal alignment and update the text edit font size
* Improve the text edit
* Don't activate tools while typing
* Format
* Give input priority to the text edit so the key X and shortcuts such as control-z work in the text edit
* Add style settings for bold and italic
* Fix text going blank when changing font
* Use `font.draw_multiline_string()`
* Change the move behavior of the text tool, add confirm and cancel buttons
* Compress images on undo/redo
* Fix text position
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.
Thanks to https://godotshaders.com/shader/color-manipulator/
The shader has more options than just brightness and contrast though, but I didn't know how else to name the effect. "Adjust Brightness/Contrast" makes it immediately obvious as to what the effect is about.
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.
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.
The preferences code only handles the UI related stuff, while the Themes autoload is now solely responsible for theme adding, removing and changing. This makes it possible to handle themes without having the preferences dialog be in the middle.