1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-01-31 15:39:49 +00:00
Commit graph

979 commits

Author SHA1 Message Date
Emmanouil Papadeas a5a0ac103c Enable gestures and treat long press as right click for Android
Gestures are not yet working very smoothly, but that's something that can be improved after 1.0
2024-02-06 02:50:55 +02:00
Emmanouil Papadeas 5dfe1cc271 Set Selection.gd process input false by default, fix cursor still being set to a cross when entering the canvas if it's disabled in the preferences 2024-02-04 00:12:19 +02:00
Emmanouil Papadeas 6a7e060f73 Set the cursor to cross when entering the canvas and to resize when hovering selection gizmos 2024-02-04 00:05:20 +02:00
Emmanouil Papadeas 4c39e29b67 Fix UI not staying dimmed after opening a native file dialog 2024-02-03 13:55:17 +02:00
Emmanouil Papadeas 9a842ad33e Sort layouts alphabetically when adding a new one so that Pixelorama will remember the correct last used layout when opening again 2024-02-02 03:50:28 +02:00
Emmanouil Papadeas 5824d2a0eb Choose which layout to copy from when adding a new layout 2024-02-02 02:59:07 +02:00
Emmanouil Papadeas 534a7fd356 Change the selected UI layout every time it changes
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.
2024-02-02 02:31:29 +02:00
Emmanouil Papadeas da0066259e [WIP] Copy default layouts to the layout directory so they can be modified
Moved some logic away from TopMenuContainer to Main.gd and the layout array to Global.gd.
2024-02-02 01:42:29 +02:00
Emmanouil Papadeas ed072de84e Change the layouts array in TopMenuContainer to only contain DockableLayouts instead of being an array of arrays 2024-02-01 22:10:18 +02:00
Emmanouil Papadeas 606ce965f6 Remove unneeded layout code from TopMenuContainer 2024-02-01 21:41:32 +02:00
Emmanouil Papadeas 276a872f73 Rename "ui" variable to "main_ui" in Main.gd and TopMenuContainer.gd 2024-02-01 20:53:52 +02:00
Emmanouil Papadeas 2e8cf6a30a Minor code improvements in WindowOpacityDialog.gd 2024-02-01 20:51:26 +02:00
Emmanouil Papadeas 1dce3ebe22 Change get_tree().get_root() to get_window() in TransparentChecker.gd 2024-01-29 16:37:56 +02:00
Emmanouil Papadeas 508f8f0d15 Minor simplifications of some parts in Selection.gd 2024-01-26 02:31:38 +02:00
Emmanouil Papadeas b126e95b64 Almost made selection rotation with gizmos functional
Not exposed yet
2024-01-25 02:33:41 +02:00
Emmanouil Papadeas 3d04a8d276 Selection rotation with gizmos works on selections without content now
Still not ready and thus not exposed
2024-01-25 01:35:42 +02:00
Emmanouil Papadeas 964e9fbd26 Don't set the selection_map of the project to the original_bitmap, if the latter is empty
Shouldn't happen, but best to check in case it does. Setting empty data to the selection_map breaks selections.
2024-01-25 01:06:30 +02:00
Emmanouil Papadeas de5db85345 When resizing a selection with gizmos or from the tool options, only set the original_bitmap when we're not already transforming content 2024-01-25 00:59:53 +02:00
Emmanouil Papadeas f8b32762a1 Fix canceling selection content resizing breaking the selection 2024-01-25 00:45:49 +02:00
Emmanouil Papadeas 56fe1840e0 Make selections scale properly even if they don't transform any image content
Fixes #774.
2024-01-25 00:40:53 +02:00
Emmanouil Papadeas 3a0977ce21 Some code cleanup in Selection.gd 2024-01-25 00:11:19 +02:00
Emmanouil Papadeas f0a5637d8a Some recorder UI improvements
Removed the fps option completely as it doesn't have any effects to exported static images. Should be re-introduced once we add video exporting with ffmpeg though.
2024-01-24 14:41:15 +02:00
Emmanouil Papadeas 4bc0fba941 Add a variable in Global for setting file dialogs as native, and add a "FileDialogs" node group
This settings is not exposed in the preferences in this commit
2024-01-24 03:57:40 +02:00
Emmanouil Papadeas 4e9b657077 Remove Global.has_focus completely
Might be a risky change, but I haven't noticed any bugs so far
2024-01-24 03:14:11 +02:00
Emmanouil Papadeas 42de5ccb29 Remove unneeded has_focus checks 2024-01-24 03:06:09 +02:00
Emmanouil Papadeas d9c0cd7546 Remove Global.can_draw conditions from TopMenuContainer
These were needed with Godot 3 to ensure that you couldn't open any other dialog when a dialog is already open, by using keyboard shortcuts. This no longer seems to be required in Godot 4.
2024-01-24 02:37:28 +02:00
Emmanouil Papadeas 43d241a5c2
Video exporting by calling FFMPEG externally (#980)
* 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
2024-01-24 02:00:17 +02:00
Emmanouil Papadeas 519fa77791 Add a recent colors section to the color picker
Sort-of implements #859
2024-01-23 03:57:31 +02:00
Variable f43f80cee0
Integrate Extension Explorer (#910)
* Integration of ExtensionExplorer

---------

Co-authored-by: Emmanouil Papadeas <35376950+OverloadedOrama@users.noreply.github.com>
Co-authored-by: Emmanouil Papadeas <manoschool@yahoo.gr>
2024-01-23 03:25:37 +02:00
Variable ddce0393dd
Fixed some issues with perspective lines and removed unneeded code from the rotate image dialog (#979)
* fix drag gizmo of perspectice lines

* fix more stuff
2024-01-22 00:09:57 +02:00
Emmanouil Papadeas bec7ceb974 Fix Global.can_draw being set to true all the time
Note for the future, perhaps using _unhandled_input() might remove the need of this variable.
2024-01-21 19:46:01 +02:00
Variable 561a374cc0
Fixed rotation gixmo (#976) 2024-01-20 02:06:44 +02:00
Emmanouil Papadeas aa77dcb61f Selection rotation with gizmo improvements, still not usable and not exposed 2024-01-17 20:04:19 +02:00
Emmanouil Papadeas 9631527da6 Always show panel tabs if there are more than one
Bringing this feature back from 0.x. Not very happy that we're once again not synced with upstream dockable_container, so hopefully https://github.com/gilzoide/godot-dockable-container/pull/27 is merged soon.
2024-01-12 20:56:35 +02:00
Emmanouil Papadeas 80bcfe200d Don't use Global.main_viewport on guides, plus some static typing improvements 2024-01-11 16:23:00 +02:00
Emmanouil Papadeas 72bec41e63 Add icons to some Help menu items, add a new "Support Pixelorama's Development" item and remove "Donate" from the About dialog 2024-01-10 00:30:27 +02:00
Emmanouil Papadeas 3dd288f32f Hide PasteTagPopup 2024-01-09 20:47:00 +02:00
TheLsbt f373dae714
Better signal representation (#971)
* 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
2024-01-09 00:22:56 +02:00
Emmanouil Papadeas ae9449500a [AboutDialog] Remove "Developers", rename "Contributors" into "Authors" and put Erevoid's and mine names there
There's no need for our two names to be on their own, they should be together with the rest of the people who contributed to the project.
2024-01-08 22:13:54 +02:00
Emmanouil Papadeas 4f54ffc987 Rename "Crop Image" to "Crop to Selection" and "Trim Image" to "Crop to Content"
Same names as the GNU Image Manipulation Program, much more clear as to what each option does.
2024-01-04 16:28:39 +02:00
Emmanouil Papadeas 33ffa88a5b Remove unneeded signal connect from the rulers 2024-01-01 02:00:56 +02:00
Emmanouil Papadeas 08db10faad Clean Canvas.gd's _input() method a bit 2024-01-01 01:52:21 +02:00
TheLsbt c8f37943d8
Reference Image Improvements (#961)
* Reference Image Updates

* Fixed static typing

Fixed static typing in "src\UI
\ReferenceImages\ReferenceEditPanel.gd"
Changed "ri == null" to "!ri" in "src\UI\Canvas\ReferenceImages.gd"

* Tried fixing the static typing again

Removed lambda functions for the confirmation dialog.
Removed irrelevant print statement.

* Tried fixing static typing again

I think its fixed now

* Changed Spacing

* Fixed Trailing Whitespaces and tabs

* Fixed Final Trailing Whitespace

* Fixed styling and removed useless enum

* Removed double tabs left over from previous commit

* Fixed remove ConfirmDialog Showing on startusp

* Tried Fixing gdlint issues

* Fixed Linting

* Fixed Spelling issues

* Drag and drop to rearrange reference images

Added the ability to drag and drop Reference Images similar to dragging and dropping layers. These can be dragged or used with buttons (similar to the buttons that move frames). With full undo/redo support.

Added tool buttons these should help people who draw on tablets that cannot use keyboard shortcuts (icons still need to be created)

Renamed ReferenceEditPanel.gd to ReferenceEdit.gd (because it is no longer the script of a panel) and changed the base class of the Reference Panel.

Added some more translations.

Remade ReferenceImageButton.tscn to allow for drag and drop

Added drag highlight

* Added Icons

Added icons for the tools of the Reference Images

* Applied the icons to the UI

* Fix Scripting Issues

* Fixed Linting

* Rename Move.png to move.png

* Update Canvas.gd

* Updated the tooltips

Also added the correct translations

* Rename Select.png to select.png

* Rename Select.png.import to select.png.import

* Rename Move.png.import to move.png.import

* Rename Rotate.png to rotate.png

* Rename Rotate.png.import to rotate.png.import

* Fixed import files

* Rename Scale.png to scale.png

* Rename Scale.png.import to scale.png.import

* Added logic to update the reference panel when the project changes

Also fixed visual bugs related to highlighting the current reference image.

Made it so the reference image that was selected in a project get selected again when the project opens instead of going back to -1 (nothing)

* Update Project.gd
2023-12-31 14:12:37 +02:00
Variable 87b5a818bb
Improved the Paste tag system (#946)
* cloned frames only keep original selected cels as selected

* Fixed PasteTagPopup dialog, fixed tag created immediately after starting pixelorama not placed correctly

* formatting

* typo

* Pase tag popup 2.0

* improved code

* formatting

* Update PasteTagPopup.gd

* fixed code messed up while resolving conflict

* group sync achieved

* linting

* quality of life additions

* fixed projects not updating

---------

Co-authored-by: Emmanouil Papadeas <35376950+OverloadedOrama@users.noreply.github.com>
2023-12-30 14:53:45 +02:00
Clara Hobbs 3d2d9e47a8
Add support for InputEventMouseMotion.pen_inverted (#966)
* Add support for InputEventMouseMotion.pen_inverted

This commit adds support for stylus erasers, both for drawing and
choosing tools.  This may be supported on some styli by inverting them
as the property name suggests, or by holding a button while drawing with
the nib.

* Formatting fixes
2023-12-25 02:50:10 +02:00
Emmanouil Papadeas dffaf1d504 Fix bug where the wrong cel would be drawn on the canvas when undoing 2023-12-24 14:47:35 +02:00
Emmanouil Papadeas d36f89365c Change "Crop Image" to "Trim Image" and add a new "Crop Image" that actually crops the image based on the active selection 2023-12-24 01:11:12 +02:00
Emmanouil Papadeas 866de8b6ae Add transparent backgrounds to the color buttons 2023-12-23 22:05:51 +02:00
Emmanouil Papadeas 1b9e0c1ea0 Hide transparent background in cel buttons if they are empty
Since changing the self_modulate no longer seems to have any effect. Changing the alpha in the shader itself would be a bad idea, since it would require every button background to have its own material, instead of sharing the same one.
2023-12-23 21:57:18 +02:00
Emmanouil Papadeas 9bf8eb13c4 Align tool buttons to the center 2023-12-23 13:30:01 +02:00
Emmanouil Papadeas 65ab504e22 Add a MarginContainer in the onion skinning settings dialog 2023-12-23 13:26:38 +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 10ca31b916 Add "include blended images" in SaveSpriteHTML5.tscn, and use save_project() for both desktop and web platforms 2023-12-18 20:55:40 +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
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 6b5ba2bf0f Fix brush and palette importing not working 2023-12-10 14:23:14 +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 91bf44c4fb Make the RGB buttons pressed by default in Invert Colors & Desaturate dialogs 2023-12-07 00:21:58 +02:00
Emmanouil Papadeas df0cbe0bc2 Add margins to the palette container 2023-12-06 22:32:24 +02:00
Emmanouil Papadeas 30827461fd Add margins to the tool options 2023-12-06 21:55:13 +02:00
Emmanouil Papadeas f801b5bc07 Minor UI improvements
Replaced the "FX" text with a texture in the timeline's FX button, added left and right margins in the DockableContainer
2023-12-06 17:34:03 +02:00
Emmanouil Papadeas 8ca0e12b90 Attempt to fix the "add layer" button not working when pressed 2023-12-06 04:16:53 +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 f40ef6f329 Some more LayerButton.gd code improvements 2023-12-05 01:11:51 +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 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 1b22e75034 Some timeline UI improvements 2023-12-01 21:13:28 +02:00
Emmanouil Papadeas 5b1c79df05 Make undo/redo support echo again
Thanks to Godot 4.2!
2023-12-01 02:12:02 +02:00
Emmanouil Papadeas 4b84803456 Loop through frames when clicking on go to previous/next frame buttons on the timeline 2023-11-29 02:47:33 +02:00
Emmanouil Papadeas ab3fb9a975 Fix bug where using shortcuts to switch between frames also moved the selection, causing deletions 2023-11-26 14:04:11 +02:00
Emmanouil Papadeas 56264fda3b Fix not being able to transform if the selection size is bigger than the project size
Also introduces a new `return_cropped_copy()` method in SelectionMap to avoid duplicate code.
2023-11-25 00:18:44 +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 4024858292 Set the minimum size of the layer buttons container to be the same as the size of the layer options container 2023-11-22 17:44:38 +02:00
Emmanouil Papadeas 29a5994cec Fix canvas preview play button minimum size 2023-11-22 17:22:57 +02:00
Emmanouil Papadeas d5c520643b Fix layer button hierarchy lines being drawn in the wrong position 2023-11-22 17:12:30 +02:00
Emmanouil Papadeas d84c2dd6f3 Fix crash when deleting a layer that is being renamed 2023-11-22 15:18:55 +02:00
Emmanouil Papadeas 74273d5b59 Fix frame duration being set to x1.01 instead of x1.0 by default 2023-11-22 03:59:21 +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 60d4b1fd81
Make cloned frames only select a cel if it's coresponding original cel was selected as well (#942)
* cloned frames only keep original selected cels as selected

* Fixed PasteTagPopup dialog, fixed tag created immediately after starting pixelorama not placed correctly

* formatting

* typo
2023-11-21 16:48:48 +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
Emmanouil Papadeas 417102da22 Fix selection resizing when transforming content 2023-11-17 18:54:21 +02:00
Emmanouil Papadeas 16a2f524b3 Slightly optimize the start of transformations with selections 2023-11-17 17:24:19 +02:00
Emmanouil Papadeas 78ab0bf3db Remove comments left over by the previous commit
Oops
2023-11-15 04:04:41 +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 5d7da079cc Fix shader-based rotation not working 2023-11-14 03:27:05 +02:00
Emmanouil Papadeas e22794e611 Compress mirror image in undo/redo 2023-11-14 03:18:08 +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 94b3e75f30 Mark dialogs as popup_windows
So they can close when the user clicks outside the window on Godot 4.2
2023-11-11 03:12:49 +02:00
Emmanouil Papadeas 397e9e7c17 Fix recent projects submenu not working on Godot 4.2.beta5 2023-11-11 01:55:14 +02:00
Emmanouil Papadeas 90ef7c0d16 Resize image effect preview images to (1, 1) when the dialogs are being hidden
So that they do not waste RAM for no reason anymore
2023-11-10 23:15:24 +02:00