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

1607 commits

Author SHA1 Message Date
Emmanouil Papadeas 6fa4a27589 Directly export the final blended images from the pxo, if they exist
This only happens when the pxo file contains the final blended images (happens when "include blended" is enabled when saving), project has been saved, it hasn't been changed and "Visible layers" is selected.
2024-04-01 19:39:10 +03:00
Emmanouil Papadeas 77bea9a6e3 Re-add old layer blending logic from 0.x, if running on headless mode
Only meant to prevent crashes when trying to export from headless mode. This blending logic does not support blend modes, clipping masks, and layer effects.
2024-04-01 17:31:10 +03:00
Emmanouil Papadeas 1cb4d22233 Fix the same frames being exported multiple times when "Selected frames" is selected, and multiple cels of the same frames are currently selected on the timeline - Fixes #1001 2024-03-31 00:55:55 +02:00
Emmanouil Papadeas 11a1428eef Add an Apply button to the font size slider in the Preferences, fix display scale not being applied on startup 2024-03-30 01:25:01 +02:00
Emmanouil Papadeas 963819a71a Fix color picker selecting fully transparent pixels that are not black 2024-03-26 02:11:21 +02:00
Emmanouil Papadeas d9888036f2 Hide the dynamics popup
Oops
2024-03-25 00:32:00 +02:00
Emmanouil Papadeas 94fdfd8f02 Hide and show dynamics properties when dynamics are enabled 2024-03-24 15:35:40 +02:00
Emmanouil Papadeas b620cf2a9e Lazy load the preferences dialog
Speeds up the initial loading time of Pixelorama. It's now almost as fast as 0.x on my computer (a bit more than 2 seconds). Lazy loading the preferences dialog also drastically reduces memory usage and node count (when preferences have not been opened), from 150MB, 13634 objects and 3680 nodes, to 94MB, 8207 objects and 1823 nodes. This essentially cuts the initial node count to half!
2024-03-24 02:46:57 +02:00
Emmanouil Papadeas 8c9a01feae Move theme handling code in a new Themes autoload
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.
2024-03-24 02:08:54 +02:00
Emmanouil Papadeas 11fb2c2b65 Move language handling code in Global, remove HandleLanguages.gd
This makes it possible to handle language without having the preferences dialog be in the middle.
2024-03-24 01:41:19 +02:00
Emmanouil Papadeas f3ca6d1c33 Separate extension handling code from the Preferences UI
The preferences code only handles the UI related stuff, while HandleExtensions is now solely responsible for extension enabling, loading and uninstalling. This makes it possible to handle extensions without having the preferences dialog be in the middle.
2024-03-24 01:20:51 +02:00
Emmanouil Papadeas ebfc3c04fe Lazy load the frame tag dialog 2024-03-24 00:14:57 +02:00
RorotoSic 8bfd474613
Add flip X and Flip Y, and Rotation (90, 180, 270) buttons to BaseTool (#988)
* Add Flip X, Flip Y, Rotate 90, Rotate 180, Rotate 270

* node placement

* flip_rotate for BrushButton

* flip corrected for BrushButton (x, y was reversed)

* code changed for github static checks

* github static checks

* github static checks 2

* remove " _ " before my variable name

hope this was the problem

* var brush_texture_rotation

* Hide Flip/Rotate buttons where it is unnecessary

* btns flip/rotate  hide when a non-image brush is selected

* rotate ButtonGroup (radio btn)

* expand button for flip/rotate

* radio btn grp 2

* expand button (forgot to add the tscn )

* cursor shape to pointing hand

* tooltip R90 R180 R270

i dont add txt to the Translations.pot bc not sure to understand and dont want to make mistake

* shading.tscn  (nodes placement debreaking)

back as before

* Revert "expand button (forgot to add the tscn )"

This reverts commit 3062afe73f.

* Revert "expand button for flip/rotate"

This reverts commit 51189ac793.

* Collapsible Container

change "expend buton" to the pixelorama custum node "CollapsibleContainer"

* remove thick white outline when CollapseContainer is pressed and focus

* styleboxflat when CollapseContainer is pressed and empty for checkbox

* Revert "styleboxflat when CollapseContainer is pressed and empty for checkbox"

This reverts commit 0af0e1f427.

* StyleboxEmpty for normal /  keep hover unchanged

* Revert "StyleboxEmpty for normal /  keep hover unchanged"

This reverts commit 14b3745053.

* Revert "remove thick white outline when CollapseContainer is pressed and focus"

This reverts commit b80ab1ad5c.

* "flip_rotateD" + "Flat CollapsibleContainer'"

* conflicts Resolved

signal color_changed(color: Color, button: int)

---------

Co-authored-by: Emmanouil Papadeas <35376950+OverloadedOrama@users.noreply.github.com>
2024-03-23 16:39:44 +02:00
Emmanouil Papadeas 6d2d09d222 More static typing improvements 2024-03-23 04:36:26 +02:00
Emmanouil Papadeas 572fabbe66 Remove Global.reference_panel
Slowly trying to remove nodes from Global
2024-03-23 02:52:27 +02:00
Emmanouil Papadeas 54142eb048 Add serialize() to AnimationTag 2024-03-23 02:17:55 +02:00
Emmanouil Papadeas acce1dda2e Move even more code away from Project.change_project()
Making Pixelorama more modular by relying more on signals
2024-03-23 02:12:28 +02:00
Emmanouil Papadeas 48145b7f61 Use signals to move some code away from Project.change_project()
WIP, more code can be moved
2024-03-22 21:05:00 +02:00
Emmanouil Papadeas dd8145d369 Greatly simplify backup code, got rid of OpenSave's current_save_paths and backup_save_paths
The previous backup code was unnecessarily complicated, hard to read/understand and prone to errors. The new system simply stores the save and backup paths in the `Project` class, and stores the backup files inside `user://backups`, instead of having their file paths be in `cache.ini`.
2024-03-22 18:24:41 +02:00
Emmanouil Papadeas 42bce917dc Never change window title and save path when loading a backup 2024-03-22 15:54:00 +02:00
Emmanouil Papadeas 2c985027b9 Fix backup dialog not appearing 2024-03-22 15:30:28 +02:00
Emmanouil Papadeas 6e0d4eb660 Fix Project.export_directory_path being set incorrectly in open_pxo_file() 2024-03-22 15:30:00 +02:00
Emmanouil Papadeas 4d077594ad Remove old Ubuntu Touch code, as it's no longer supported 2024-03-22 15:14:58 +02:00
Emmanouil Papadeas ad85c8dd3e Minor open/save dialog path related code cleaning 2024-03-22 15:12:27 +02:00
Emmanouil Papadeas 60af6b27e3 Remove duplicate code in Main's load_last_project() 2024-03-22 14:44:11 +02:00
Emmanouil Papadeas 6c8b2ae36b Rename Project.directory_path to Project.export_directory_path 2024-03-22 14:42:47 +02:00
Emmanouil Papadeas 64983b0404 Some static typing improvements 2024-03-22 03:07:21 +02:00
Emmanouil Papadeas 8f8e6b7e32 Lazy load Recorder's FileDialog 2024-03-22 02:49:31 +02:00
Emmanouil Papadeas fd4c7078b2 Lazy load create & edit palette dialogs 2024-03-21 17:29:00 +02:00
Emmanouil Papadeas 07fa1266d3 Remove three calls to Global.preferences_dialog 2024-03-21 03:00:21 +02:00
Emmanouil Papadeas 491d81f393 Minor config file section key re-organization 2024-03-21 01:51:19 +02:00
Emmanouil Papadeas 377c24c981 Make Pixelorama load slightly faster by not calling some setters of Global's variables if the value is the same 2024-03-21 00:02:54 +02:00
Emmanouil Papadeas c45ac70d2b Lazy load the splash dialog 2024-03-20 20:20:47 +02:00
Emmanouil Papadeas 722cb1a1e4 Lazy load the layer fx settings dialog 2024-03-20 19:03:46 +02:00
Emmanouil Papadeas 6f3796627f Add a flat property to CollapsibleContainer 2024-03-20 15:49:53 +02:00
Emmanouil Papadeas f1ef01bb87 Replace Camera2D with a custom CanvasCamera to reduce idle GPU usage
Necessary workaround because of https://github.com/godotengine/godot/issues/89514
2024-03-19 15:39:34 +02:00
Emmanouil Papadeas 9fa90ab3b1 Set license text in the About dialog to be uneditable 2024-03-16 22:49:22 +02:00
Emmanouil Papadeas 03b173b76e Optimize cel switching by avoiding changing the stylebox of every CelButton 2024-03-15 01:31:12 +02:00
Emmanouil Papadeas d3be746290 Change UI of layer buttons - bring the small buttons out of the main button
This makes the visible/lock/linked/expand buttons more clear that they are indeed buttons. This commit also slightly changes the look of child layers, as they only appear intended and they no longer change color.
2024-03-14 20:13:42 +02:00
Emmanouil Papadeas c1b78e4c01 Implement basic clipping masks
A very simple implementation, not as complex as something like #768 yet, but it can be done in the future.

The main current limitation is that it doesn't work with group layers as of right now.
2024-03-14 01:08:57 +02:00
Emmanouil Papadeas fdc92ccfc3 Fix group layer expand button not working 2024-03-13 01:22:46 +02:00
Emmanouil Papadeas 3c5c659f01 Disable 3D for the SubViewports
This doesn't affect 3D layers, as they are being rendered on another Viewport
2024-03-12 22:18:15 +02:00
Emmanouil Papadeas 6ea6df0e26 Fix size label not being updated on the Export dialog's spritesheet tab when the direction changes 2024-03-11 19:19:27 +02:00
Emmanouil Papadeas 3fb2877b73 Fix pattern sampler2D in shaders not repeating
When using the Bucket tool to fill with pattern in "Similar colors" and "Whole selection" modes, the pattern was not being repeated.
2024-03-10 14:59:55 +02:00
Emmanouil Papadeas 4614a648d1 Update hint tooltip of the alpha lock button 2024-03-09 02:51:29 +02:00
Emmanouil Papadeas dc9ba6dd9c Implement alpha lock as a global tool option 2024-03-09 02:47:13 +02:00
Emmanouil Papadeas c225553042 Fix linked cels not working when importing a pxo file
Godot 4 has changed how ImageTexture works, as now it doesn't work when the Image is empty. Thus, we need to add Images to PixelCels right when they are created, before the linked cel logic is being handled.
2024-03-08 02:15:58 +02:00
Emmanouil Papadeas 90f7df0f5d Exporting each layer as a different file is now possible 2024-03-07 16:08:20 +02:00
Emmanouil Papadeas cb58cf7163 Minor refactor of Export & ExportDialog to combine processed_images and durations into a single ProcessedImage class 2024-03-07 02:10:21 +02:00
Emmanouil Papadeas cd2787b373 Set opacity of multiple layers at once 2024-03-07 01:16:43 +02:00
Emmanouil Papadeas d17a151f8d Delete and change properties of multiple cels at once 2024-03-07 01:06:46 +02:00
Emmanouil Papadeas 20fecc5a7a Export spritesheets based on animation tags 2024-03-06 19:49:05 +02:00
Emmanouil Papadeas 55df23e400 Fix exporting not including the last frame of a tag and "Selected layers" not including the non-selected frames 2024-03-06 01:47:00 +02:00
Emmanouil Papadeas 36d4b0fa18 Fix crash when importing a corrupt pxo 2024-03-05 16:05:13 +02:00
Emmanouil Papadeas e726dcfc09 Fix static typing 2024-03-04 18:27:58 +02:00
Emmanouil Papadeas 2e9c4eb1b9 Add a timeline_updated() signal in Project
Used by https://github.com/Orama-Interactive/TeledrawingPixelorama extension
2024-03-04 18:25:03 +02:00
Emmanouil Papadeas b0a8ad17d4 Revert using Image.rotate_90() from the previous commit
Image.rotate_90() is also changing the size of the image, which we don't want to, at least not yet
2024-03-02 18:03:06 +02:00
Emmanouil Papadeas 4a404b2883 Use Image.rotate_90() and Image.rotate_180() on CPU rotation algorithms when the angle is 90, 180 or 270 degrees 2024-03-01 20:25:37 +02:00
Emmanouil Papadeas 57856ed327 Update ExtensionsApi.gd 2024-02-29 23:54:19 +02:00
Emmanouil Papadeas 9b439327b8 Fix ExtensionsAPI's new_project() not working, and add a new new_empty_project() method 2024-02-24 15:25:54 +02:00
Emmanouil Papadeas 03ce5d40a2 Set the window's minimum size only once in Main.gd 2024-02-23 20:24:37 +02:00
Emmanouil Papadeas d3db8f5be7 Rename project_changed to project_data_changed signal, add a new method for this signal in ExtensionsAPI 2024-02-22 17:43:47 +02:00
Emmanouil Papadeas a06d6a2909 Improve static typing in the ExtensionsAPI 2024-02-22 00:46:28 +02:00
Emmanouil Papadeas 22ddc96962 Use getters to lazy-load cleanEdge and OmniScale shaders 2024-02-19 02:09:35 +02:00
Emmanouil Papadeas 66ea1fcfe9 Update the DockableContainer plugin 2024-02-18 19:47:21 +02:00
Variable 81dbc0177d
Moved live preview code to ImageEffect Dialog (#978)
* live fixes

* added accidentally disconected signals

* Update RotateImage.tscn

* improved code

* Formatting
2024-02-17 00:23:31 +02:00
Emmanouil Papadeas 9a313821dc When exporting, Pixelorama now remembers the last exported path 2024-02-15 18:41:24 +02:00
Emmanouil Papadeas b3fa8870f8 Fix null instance error causing a crash on startup, originating from #974 2024-02-14 20:58:21 +02:00
Variable 909f38bd0c
Further Reference UI Improvements (#974)
* references UI refactor

* changed select icon

* fixed a bug
2024-02-14 19:53:35 +02:00
Emmanouil Papadeas f56d536b36 Create a get_mirrored_positions() method in Tools
Reduces some code replication across tools
2024-02-13 02:31:48 +02:00
OverloadedOrama 47fc659170 Add yet another MarginContainer in the timeline
To fix the outline of the first frame (when selected) from being cut off, while also keeping frames & cels glued to the layers
2024-02-12 05:02:07 +02:00
Emmanouil Papadeas 9f82c85b73 Fix issue when uploading a shader on the Web version 2024-02-12 00:29:30 +02:00
Emmanouil Papadeas 0a63664391 Remove some dialog parent nodes
Also removes the GIF warning in the ExportDialog, as #697 no longer occurs in 1.0
2024-02-12 00:28:50 +02:00
Emmanouil Papadeas 5c58562d6b Fix theme color preview spacing in the Preferences 2024-02-11 19:12:09 +02:00
Emmanouil Papadeas 85b255032f Keep the aspect ratio correctly in the image effect dialog previews 2024-02-11 18:44:22 +02:00
Emmanouil Papadeas 2b4d85ac3e Fix PointCollapseContainer's TextureRect being rotated incorrectly 2024-02-11 18:21:35 +02:00
Emmanouil Papadeas 0e4c9bad20 Remove CollapsibleContainer.tscn, only keep it as a script/node type 2024-02-11 18:20:46 +02:00
Emmanouil Papadeas 8d8a147142 Lazy load the window opacity dialog 2024-02-11 16:20:04 +02:00
Emmanouil Papadeas be7427fd9c Fix memory leak when previewing layouts in the ManageLayouts dialog 2024-02-11 16:02:15 +02:00
Emmanouil Papadeas c4a4bd4602 Implement lazy loading for some dialogs to make the initial loading of Pixelorama faster
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.
2024-02-11 16:01:59 +02:00
Emmanouil Papadeas a6060d9ff6 Remove unused variable from ReferencesPanel 2024-02-11 02:20:44 +02:00
Emmanouil Papadeas 8448dbd4ba Various theme improvements 2024-02-10 15:11:53 +02:00
Emmanouil Papadeas 8b91d95258 Make alpha affect all of the blend modes besides Normal and Screen 2024-02-09 20:09:25 +02:00
Emmanouil Papadeas bec6dfc256 Fix semi-transparent pixels being blended incorrectly in the BlendLayers shader
There may still be some semi-transparency issues in blend modes, some extra testing is required
2024-02-09 19:45:26 +02:00
Emmanouil Papadeas a05dbabf98 Slightly increase the layer container minimum size to match the layer buttons 2024-02-09 14:50:18 +02:00
Emmanouil Papadeas 3935bfd2d3 Control + wheel works on the line tool's thickness now 2024-02-09 14:42:10 +02:00
Emmanouil Papadeas b75573d19c Make CelProperties its own scene and put it in Main.tscn instead of having it as a child of each CelButton
This drastically reduces the number of nodes. Before, each cel would have its own property node which, when the project had many cels, drove the node count quite high.
2024-02-09 04:01:01 +02:00
Emmanouil Papadeas 7f1aad280c Fix cel buttons not changing colors when switching themes 2024-02-09 03:33:34 +02:00
OverloadedOrama d8d05c73de Add a new Rose theme, made changes to the other themes
Made by @Erevoid
2024-02-08 22:30:14 +02:00
OverloadedOrama 12036364b5 Timeline UI improvements, better visual indication of the cels that are selected and the cels that are linked 2024-02-08 20:46:07 +02:00
OverloadedOrama e11ecb2e8d Add get_position() and get_minimum_size() methods to AnimationTag 2024-02-07 03:17:39 +02:00
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 c9ddde7194 Use FFMPEG to import videos and gifs
Haven't tried large videos, but I imagine Pixelorama would run out of memory quickly. Maybe we should safeguard against that somehow. We also need to get the fps from the imported video and use it in the new project.
2024-02-05 03:32:43 +02:00
Emmanouil Papadeas 85ac0897a9 Remove unused method parameter in Palettes' copy_palette() 2024-02-05 00:17:56 +02:00
Emmanouil Papadeas fb948c33b4 Add a "Create a new palette" option on the sort palette button
Enabled by default, every time you sort a palette it creates a copy of the original palette and it sorts that, instead of sorting the original palette directly. This reduces the risk of destructive change, as the palette system does not have undo/redo support. If disabled, sorting affects the original palette directly, without creating a new one.
2024-02-05 00:16:22 +02:00
Emmanouil Papadeas afaae8ee4b Simplify guard conditions in Bucket's draw_start() 2024-02-04 14:45:16 +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 647ec29ab0 The crop tool can now be applied by pressing enter 2024-02-03 15:16:21 +02:00
Emmanouil Papadeas 978ddf3b45 Fix 3DShapeEdit import object not using native dialog 2024-02-03 13:57:05 +02:00