1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-08 11:29:47 +00:00
Commit graph

464 commits

Author SHA1 Message Date
Emmanouil Papadeas 06b405dae8 Implements palette sorting 2023-12-23 19:00:24 +02:00
Emmanouil Papadeas 0cb98f6e2e
Revert palette file format back to JSON (#967)
* 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
2023-12-23 00:28:35 +02:00
Variable 54604fa0af
Allow Internal extensions (#963)
* Moved tools to Extension

* removed accidental change

* code re-arrangement

* some improvements

* Restored tools and some improvements

* typo

* re-arranged tools

* formatting
2023-12-20 16:23:20 +02:00
Emmanouil Papadeas 42e8c8cb50 When saving, don't include ".pxo" in the project name 2023-12-18 20:56:38 +02:00
Emmanouil Papadeas 89b17177a1 Show multiple save confirmation dialogs on quit for each project that has changes 2023-12-18 20:23:55 +02:00
Emmanouil Papadeas 9034b32d44 Use a MenuBar node in the top menu container
I didn't know this was a new node in Godot 4, very cool
2023-12-16 22:25:06 +02:00
Emmanouil Papadeas b42c2d4cae Fix crash reported in #960 2023-12-15 18:54:10 +02:00
Variable 8d09713774
ExtensionApi Improvements (#959)
* Improved signal api

* added two more signals

* Improved debug messaging system

* fix typo
2023-12-14 03:44:50 +02:00
Variable 17ee10a131
[ExtensionsAPI] Implement an Import API (#957)
* Added ImportAPI

* Delete src/UI/Dialogs/PreviewDialog.gd

* Delete src/UI/Dialogs/PreviewDialog.tscn
2023-12-12 16:04:49 +02:00
Emmanouil Papadeas 495c3b8ebe Don't call project_changed() whenever a reference image gets imported 2023-12-07 16:09:00 +02:00
Emmanouil Papadeas aacd41f2e5 More z-index layer ordering fixes 2023-12-06 15:11:04 +02:00
Emmanouil Papadeas c8bead14b2 Fix crash when the palette directory doesn't exist 2023-12-06 03:57:26 +02:00
Emmanouil Papadeas 359f509d57 Make the opacity slider affect layer opacity instead of cel opacity
And move cel opacity inside the cel properties.
2023-12-06 03:44:55 +02:00
Emmanouil Papadeas c0a8202145 Add cel properties and z-index to individual cels 2023-12-06 03:22:33 +02:00
Emmanouil Papadeas f893e68d59 Move even more code away from Global and Project to AnimationTimeline
This time related to layer buttons
2023-12-05 02:04:34 +02:00
Emmanouil Papadeas 80e351a2a1 Move some code away from Global and Project to AnimationTimeline 2023-12-05 01:46:42 +02:00
Emmanouil Papadeas d60c686368 Fix typo 2023-12-05 01:13:46 +02:00
Emmanouil Papadeas 5ece616a9a Only use one LayerButton scene instead of using inheritence
And make some code improvements in LayerButton.gd
2023-12-05 01:08:26 +02:00
Emmanouil Papadeas a627cff107 Only have one CelButton scene instead of using inheritance 2023-12-05 00:40:16 +02:00
Emmanouil Papadeas 29f4f52600
Change the file format of pxo to be a ZIP (#952)
* Save pxos as zip files in disguise

* Load pxo files as zip

* Add a checkbox in save dialog to let users include the final blended images in the pxo or not
2023-12-05 00:12:05 +02:00
Emmanouil Papadeas 9a85de74b5
Make the color picker be always visible in the UI instead of a popup (#953)
* Initial work of a color picker that is always visible

* Make the new color picker fully functional

* Minor UI fixes

* Change the UI a bit so the color picker buttons look like they used to

To save horizontal space

* Add sliders as a separate panel and rename some file names

* Move the left/right color buttons next to the hex text edit

* Add color picker sliders to the same panel as the rest of the color picker, as an expandable/collapsible area

* Change default layout

* Some minor UI improvements

* Remove guides from ColorPicker.tscn

* Reduce the lines of code that calculate the average color

* Make Pixelorama remember if the color picker is expanded and its color mode

* Update tallscreen.tres

* Update tallscreen.tres

* Pixelorama now also remembers the last used picker shape

* Add some extra comments in the code

* Fix typo

* Add some translation strings
2023-12-05 00:10:42 +02:00
Emmanouil Papadeas d2734ab044 Add a basic stabilizer
Not as powerful as other art software, but should be enough for pixel art
2023-12-04 14:55:38 +02:00
Emmanouil Papadeas bc8a9de4db Optimize layer blending modes and make them work on all GPUs (hopefully) - Fixes #938 2023-11-25 00:10:19 +02:00
Emmanouil Papadeas 768869b519 Limit outline width step to 1 and allow lesser/greater values for shader-generated sliders 2023-11-22 17:18:37 +02:00
Emmanouil Papadeas 08b03ae0e5
Implement layer effects (#940)
* Basic logic for layer effects

* Add an FX button and the ability to add effects, no way to remove or change properties of effects yet

* Basic and ugly UI for adding and removing effects, no property changing yet

* Swap effects

* Fix preload shader paths

* Change parameters for layer effects

* Change gradient parameter in layer effect shaders, and other fixes

* Use CollapsibleContainers for the shader properties

* Set the correct gradient interpolation mode and color space in the UI

* Make effects of group layers apply to children

* Change `apply_fx` to `apply_effects`, formatting, some extra doc comments

* Apply effects to other canvases, when merging layers and when exporting

* Display humanized names of the shader unifrms

* Some UI improvements to the LayerEffectsSettings

* Add an Enabled button in the layer effects window, and change checkboxes to checkbuttons

* Change BaseLayer.apply_effects() to take a cel as a parameter instead

* Make layer effect buttons be affected by the modulate icon color

* Add option in the View menu whether layer effects are displayed in the canvas or not

* Rename `apply_effects()` to `display_effects()`

* Add translation strings

* Add nearest filter to the gradient map

* Don't change Main.tscn

* Fix more translations

* Change the default cursor shape of the generated UI elements of the layer effects

* Add undo/redo and effect application (apply effect destructively)

There are some errors due to the usage of anonymous lambda methods in undo/redo, but it seems to be working well regardless.

* Make layer effect application work on all cels
2023-11-22 01:06:25 +02:00
Variable d532aee550
Added Measurements to move tool (and other fixes) (#932)
* fixed mouse guide, added measurements

* typo

* code improvements

* change width

* fixed accidental uneven indentation

* minor fixes

* formatting

* formatting

* fixed ui of canvas preview container

* centered labels of tool names

* changed text overrun behaviour of Mode to Ellipsis

* use grid container

* Revert "use grid container"

This reverts commit 8ac9ac2aae.

* Revert "changed text overrun behaviour of Mode to Ellipsis"

This reverts commit eec1482e5f.

* Revert "centered labels of tool names"

This reverts commit 9720e37ef8.

* Revert "fixed ui of canvas preview container"

This reverts commit 9809fa3336.
2023-11-21 16:54:03 +02:00
Variable 07fe676f4f
Exposed get_enclosed_image() to API (#944)
* Exposed get_enclosed_image() to API

* minor adjustments

* did the suggested changes
2023-11-20 14:43:40 +02:00
Variable 5d858eb0ec
revised project api (#945) 2023-11-20 14:30:26 +02:00
Variable b71353cd75
fixed some typos (#943) 2023-11-19 14:04:19 +02:00
Emmanouil Papadeas e6d5329254 [Undo/Redo] Compress SelectionMaps stored in memory, get rid of a lot of selection_map_copy instances 2023-11-15 03:53:52 +02:00
Emmanouil Papadeas 2c5ece53dd [Undo/Redo] Compress images when replacing cels and merging layers 2023-11-14 17:08:09 +02:00
Emmanouil Papadeas 9279a8e0ab Save compressed images in undo/redo memory when scaling and centering frames 2023-11-14 03:57:02 +02:00
Emmanouil Papadeas 4f5f37a522 For the move tool, only store the difference vector in undo/redo
Instead of storing copies of entire images. This is a bit slower on the CPU side, mostly on larger canvases, but it is a massive RAM optimization. Perhaps it could be move optimal to use a shader here.
2023-11-14 00:58:53 +02:00
Emmanouil Papadeas e62548517f Compress image data saved in undo/redo for image effects, buckets and selection transformations 2023-11-14 00:48:02 +02:00
Emmanouil Papadeas e2fce61980 Change some statements in ExtensionsApi's PanelAPI to check for class names instead 2023-11-12 02:02:02 +02:00
Variable 7fbc3aa210
documenting global.gd autoload (#937)
* added some docs to global

* more docs

* completed preference docs

* removing typos

* added more docs

* some more docs

* some doc revisions

* typo

* removed typos

* added more docs

* completed global doc

* fix typos

* changed some stuff

* replaced (Preference Variable) with "Found in preferences"
2023-11-12 01:16:51 +02:00
Emmanouil Papadeas ffd9d2bca8 Update tile mode opacity when changed from the preferences, and remove unused variables 2023-11-08 19:01:31 +02:00
Emmanouil Papadeas be83c94693 Change OS.has_feature("standalone") to "template" instead
Which is the new name for the tag for exported builds in Godot 4
2023-11-08 15:57:01 +02:00
Variable 45736cf624
Added Godot generated documentation to the ExtensionsApi and some classes (#925)
* ExtensionsAPI.gd to ExtensionsApi.gd

* added docs to outer Api

* added empty line

* added docs to GeneralAPI

* added docs to MenuAPI

* added docs to DialogAPI

* added docs to PanelAPI

* added docs to ThemeAPI

* added docs to ToolAPI

* added docs to SelectionAPI

* added docs to the remaining APIs

* fix typo

* formatting

* linting

* linting

* documented AnimationTag class

* documented BaseCel class

* more accurate instructions to generate api

* improve/clean docs a bit

* documented BaseLayer class

* linting

* added some more docs

* Update BaseLayer.gd

* typo

* added some more info
2023-11-08 01:22:55 +02:00
Emmanouil Papadeas 79ff486c7b Put all of the image effect shaders in an Effects folder 2023-11-07 00:52:25 +02:00
Emmanouil Papadeas 895636272b Fix canvas not immediately updating when adding/removing 3D objects 2023-10-23 01:54:36 +03:00
Emmanouil Papadeas 8de9697be0
Layer blend modes (#911)
* Preview blend modes

No support for exporting and layer merging yet. Also need to fix the move tool preview.

* Preview blend modes on tile mode

* Raise layer limit to 1024

* Export images with layer blending modes

* Save blend modes in pxo files

* Merge layers with blending modes

* Fix crash when adding a new layer

* Preview blending in the other canvases

* Update DrawingAlgos.gd

* Move tool preview

* Re-arrange blend menu and add lighten, darken, linear burn and exclusion

* Add divide blend mode

* Add hue, saturation, color & luminosity blend modes

* Undo/redo when changing blend modes
2023-10-22 01:57:45 +03:00
Variable 5e64491bee
Re-implement the ability to add custom export formats from extensions and allow preview display (#924)
* Fixed ExportApi

* Added ability for custom exporters to show their preview

* renamed a function

* Formatting

* Linting
2023-10-18 16:06:19 +03:00
Variable a5151bf739
Added new signals (#922)
* Added new signals

* fixed some kinks
2023-10-15 14:32:58 +03:00
Variable 90dd325b08
If "Save & Exit" is pressed while quitting, don't close the software if the project failed to save (#920)
* Dont quit if project failed to save

* Formatting

* spell Formatting
2023-10-14 14:25:34 +03:00
Variable fd5adef1d9
Allow user to move Palettes to Trash/Recycle Bin instead of deleting them permanently (#914)
* move paletes to bin instead of deleting them permanently

* changed emit_signal to deleted.emit()

* allow user to choose between permanent and temporary deletion

* added translation for "Move to bin"

* changed delete dialog to a confirmation dialog

* added "Delete Permanently"
2023-10-11 19:20:05 +03:00
Emmanouil Papadeas 078c212bd6 Fix some typos in the code 2023-10-04 18:25:49 +03:00
Emmanouil Papadeas 331c46c8ee Fix undo/redo history not working when the tool changes 2023-10-02 17:20:24 +03:00
Emmanouil Papadeas 8fb29e050e Fix formatting 2023-09-05 02:39:01 +03:00
Emmanouil Papadeas 1901078d98 Some static typing and docstring improvements 2023-09-05 02:36:25 +03:00