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

1914 commits

Author SHA1 Message Date
Emmanouil Papadeas 899fa521eb Fix crash when adding a new layer to a collapsed group layer 2024-07-23 17:58:19 +03:00
Emmanouil Papadeas c6d24d458e Replace some Vector2s with Vector2is 2024-07-23 13:51:02 +03:00
Variable 75bdc6d9be
Added some ambience to Splash backgrounds (#1039)
* splash ambient

* change fill to radial
2024-07-22 14:56:03 +03:00
Emmanouil Papadeas f84f15b8ae Experiment with Steam achievements, using a new SteamManager class
This has no effect on non-Steam builds. Steam achievements are mostly for fun, but can also be educational because they can let users know of certain features and functionalities. It's using the GodotSteam GDExtension, but because I do not want to bloat the GitHub repository with things that are not needed for most builds, I decided not to include the GDExtension files, and instead check if the `Steam` class exists in `ClassDB`. The new SteamManager class pretty much does nothing on non-Steam builds, so do not worry about bloat.

In the future we could even take advantage of more of Steam's features, such as Cloud storage for pxo files.
2024-07-22 03:11:29 +03:00
Emmanouil Papadeas d58da13493 Bump version to v1.0-rc1 2024-07-22 01:00:25 +03:00
Emmanouil Papadeas d82a40f9f9 Remove Global.main_window variable 2024-07-21 21:25:03 +03:00
Emmanouil Papadeas 774786ab44 Remove unused variables 2024-07-21 21:17:18 +03:00
Emmanouil Papadeas b8af094529 Add the 1.0 splash screen artworks 2024-07-21 03:23:25 +03:00
Variable 3df7a67b9b
fix some stuff in extension explorer, and changed (open logs folder) to (open editor data folder) (#1038) 2024-07-20 23:09:38 +03:00
Emmanouil Papadeas 6b23c51e12 Fix some typos 2024-07-19 19:41:31 +03:00
Emmanouil Papadeas 64ced35bac Move the dynamics-related code into a new script
This also fixes the dynamics previews not working, as `_input()` is now handled locally in the dynamics popup panel.
2024-07-19 19:39:13 +03:00
Emmanouil Papadeas 506004b2a3 Fix checker background not appearing in the drop shadow dialog 2024-07-19 19:23:46 +03:00
Emmanouil Papadeas b3133130ad Include tag name even if we're exporting a single file 2024-07-19 17:24:58 +03:00
Variable 237eeef4d1
show extension info on hover (#1037)
* show extension info on hover

* formatting
2024-07-19 00:48:23 +03:00
Emmanouil Papadeas 4bc4ed1299 Change the extension repository link 2024-07-16 17:33:31 +03:00
Emmanouil Papadeas 3ea0ef0b5a Make the size of the text of rulers and guides be affected by the font size 2024-07-15 00:31:52 +03:00
Emmanouil Papadeas bcbd0ea7da Fix crash when the theme has no default font, by using Godot's fallback font instead 2024-07-14 16:08:18 +03:00
Emmanouil Papadeas 5d06af39b2 Fix rulers being incorrect at the start 2024-07-14 16:02:16 +03:00
Emmanouil Papadeas 919d0117ca Update AboutDialog.gd 2024-07-14 01:30:56 +03:00
Emmanouil Papadeas 3358d59f6f Implement filling while moving the mouse in the bucket tool
Probably the last new feature for version 1.0
2024-07-14 00:15:38 +03:00
Emmanouil Papadeas b4e54afa76 Fix bug where the exported files had the wrong tag name, if "Include frame tags in the file name" is enabled 2024-07-14 00:15:03 +03:00
Variable e1649a064e
Fixes to perspective editor (#1034)
* removed some redundant code

(not sure how it got there), made tracker toggle obey the variable

* Changed perspective editor from Control to PanelContainer to avoid some UI issues
2024-07-13 20:52:32 +03:00
Emmanouil Papadeas b4384f4085 When using the canvas, release focus of other GUI elements of the application 2024-07-13 20:38:29 +03:00
Emmanouil Papadeas d685177918 Restore diagonal movement of selections with arrow keys 2024-07-13 20:38:04 +03:00
Emmanouil Papadeas d50ae3b00e Fix canvas no longer remaining in the drag state even when the mouse is outside of it 2024-07-12 14:49:11 +03:00
Emmanouil Papadeas f4f0e4047e Fix gradient map layer effect being purple when it's first created 2024-07-12 14:45:24 +03:00
Emmanouil Papadeas fae89ed2a1 Increase the slider bounds of the crop tool and the scale slider max value of the 3DShapeEdit tool 2024-07-12 12:53:37 +03:00
Emmanouil Papadeas 547f307b53 Fix crash on Godot 4.3 when the mouse is inside the window when Pixelorama is starting 2024-07-09 15:04:16 +03:00
Emmanouil Papadeas 158e0fa18b Validate the extension file SHA-256 hash when downloading for security purposes
This is just an added step for security. Now, if an extension file gets compromised, Pixelorama can detect the mismatch between the file's SHA256 and the SHA256 from the extension repository, and refuse to install the extension.

For example, someone with malicious intent could gain access in the repository where the extension file is hosted, and replace it with a different file. Before this commit, the malicious file would be downloaded normally, but now, since the file will change, so will its SHA-256 hash, so Pixelorama will be able detect the mismatch and recognize that it is potentially malicious.
2024-07-07 18:29:10 +03:00
Emmanouil Papadeas b04c502470 Fix bug in import preview dialog of the apply all button being unpressed when the import options change
Most likely caused by #957. The line `setup_smart_slice(false)` was caused the bug, hopefully I'm not breaking anything by removing it.
2024-07-07 16:26:23 +03:00
Emmanouil Papadeas e0a6727223 If the OS is sandboxed, set Global.use_native_file_dialogs to true and remove the option entirely from the Preferences 2024-07-03 20:53:01 +03:00
Emmanouil Papadeas dd6332b75a [skip ci] Fix Voxelorama link 2024-07-01 18:03:40 +03:00
Emmanouil Papadeas 6601f83332 Rename store_info.md to extension_repository.md, add Voxelorama and remove other store links
The reason for removing the other store link is because I am worried that adding more links by default, can make it easier to compromise security. Extensions can be dangerous, and even if one link gets injected by malware, users are in danger, so I think it's better to keep the extensions is one, centralized place. I included all of the extensions listed in Variable's store link in this file.

I also renamed it from store to repository, as I think it's a more fitting name.
2024-07-01 17:49:59 +03:00
Emmanouil Papadeas 0601a4481a Make Voxelorama work 2024-07-01 17:22:32 +03:00
Emmanouil Papadeas 896d714a9e Make "similar colors" mode in the Bucket tool change the same color in all selected cels 2024-06-30 13:27:15 +03:00
Emmanouil Papadeas 7a13e4c3eb Refactor SplashDialog.gd to make a class for the artworks, update the version text in the splash screen 2024-06-29 20:41:56 +03:00
Emmanouil Papadeas b146c88a5e Fix shape tools indicator being reset after drawing 2024-06-27 01:25:17 +03:00
Emmanouil Papadeas d73ab82e04 Remember display layer effects and snap settings between sessions 2024-06-15 15:58:10 +03:00
Emmanouil Papadeas bc26557219 Remove Renderer from the Preferences
Not currently needed, as it's not possible to change between OpenGL and Vulkan drivers. We could implement this is https://github.com/godotengine/godot/issues/80565 is fixed.
2024-06-14 17:00:26 +03:00
Emmanouil Papadeas fc10d600a5 Remove Crop tool's apply button shortcut
The issue is that by default it's mapped to Enter, which is also used to confirm editing of a slider. If we want to keep the shortcut, we need to check if something else does not have focus first.
2024-06-14 16:33:52 +03:00
Emmanouil Papadeas f3823ef6dd Replace strings with StringNames in initialize_keychain() 2024-06-11 00:15:36 +03:00
Anaminus f69e2d06eb
Implement Columns field of imported .gpl palettes. (#1025)
* Implement Columns field of imported .gpl palettes.

- Fixes Columns field being ignored when imported.
- _fill_imported_palette_with_colors is modified to accept an optional
   width parameter, which defaults to Palette.DEFAULT_WIDTH instead of
   a hard-coded 8.
- A maximum of width of 16384 is enforced to mitigate maliciously large
  values.

* Run gdformat.

* Run gdlint.

* Consume all whitespace between field and value.
2024-06-09 14:19:06 +03:00
Emmanouil Papadeas 8ec5653d67 Make the backup confirmation dialog slightly bigger 2024-06-08 23:29:05 +03:00
Emmanouil Papadeas f79ae7e333 Fix canvas not updating when switching between projects that have the same size and amount of cels
Also fixes issue with tile mode not being updated properly when switching project
2024-06-07 14:49:08 +03:00
Emmanouil Papadeas 1a0f82753e Actually fix pixel perfect and alpha lock buttons having different shortcuts 2024-06-04 00:41:42 +03:00
Emmanouil Papadeas 556fc4b467 Remove unused "manage_frame_tags" shortcut 2024-06-04 00:41:27 +03:00
Emmanouil Papadeas aa2a2bdce8 Immediately disable the delete layer button when locking a layer 2024-06-03 20:41:48 +03:00
Emmanouil Papadeas 14e73ae33b Fix palette swatch white border being shown on non-selected swatches, if the user has scrolled down 2024-06-03 20:36:39 +03:00
Emmanouil Papadeas 8c073dbe63 Fix the palette swatch white border not being shown when selecting a color that exists in the active palette 2024-06-03 19:18:25 +03:00
Emmanouil Papadeas 0b96e3aa6f Make zoom slider slightly bigger to prevent the percentage from overlapping with the buttons 2024-06-03 19:15:58 +03:00
Emmanouil Papadeas debbbf34d1 Try to fix Pixelorama's locale not loading when the OS locale is not set to English 2024-06-03 15:23:33 +03:00
Emmanouil Papadeas 1c3780c94c Change the locale by finding the nearest loaded locale instead of looking for a hard match
Should fix issues where the OS was returning, for example, "fr" for the system locale, and it was not mapped to "fr_FR".
2024-06-01 23:21:23 +03:00
Emmanouil Papadeas fecb9b5803 Fix changing the tablet driver on Windows
Plus, it should also no longer require a restart
2024-06-01 23:13:50 +03:00
Emmanouil Papadeas 429d3469fd Fix issue with layers on the timeline having the wrong size on Greek 2024-06-01 18:29:38 +03:00
Emmanouil Papadeas 26da9070f8 Make the create new image a bit taller 2024-06-01 18:28:16 +03:00
Emmanouil Papadeas 770e04c550 Fix issue where Pixelorama was quitting on save, if the user attempted to save on exit before and cancelled the save file dialog
And replace instances of `Global.save_sprites_dialog` with a local `save_sprite_dialog` variable
2024-06-01 17:56:50 +03:00
Emmanouil Papadeas b7a77a2ceb Clear polygon select tool when switching projects 2024-06-01 16:03:39 +03:00
Emmanouil Papadeas 006be19464 Switch Square and Circle patterns in the outline effect
Not sure how they got out of order in the first place, they were fine in v0.11.4
2024-06-01 13:09:55 +03:00
Emmanouil Papadeas 260c906d92 Update docstring of ExtensionsAPI's add_export_option() method 2024-06-01 13:01:30 +03:00
Emmanouil Papadeas 2afb087b7a When switching projects and the curve tool is active, clear it
Instead of applying it. This also fixes a crash when the curve tool is active and the current project closes
2024-06-01 12:59:22 +03:00
Emmanouil Papadeas e1a53ed905 Fix alpha lock having the same shortcut as pixel perfect 2024-06-01 00:49:01 +03:00
Emmanouil Papadeas d8a17abd1d Use the default Godot 4 version property in project.godot
The custom one we used was because Godot 3 has no version property, but this is no longer the case.
2024-05-31 16:01:36 +03:00
Emmanouil Papadeas 6c8e058164 Fix recorder mode button do the opposite from what it suggests 2024-05-31 14:40:05 +03:00
Emmanouil Papadeas 10d3eac253 Add a confirmation dialog to confirm whether a user wants to enable an extension
For security purposes. Extensions can be dangerous, the user must know what they are doing. Better safe than sorry.
2024-05-29 03:27:54 +03:00
Kiisu_Master 2613e02cd2
Fix ruler text not getting clipped (#1023) 2024-05-28 00:38:35 +03:00
Emmanouil Papadeas d070f8c5f5 Put the effects menu shortcuts under an "Effects" group 2024-05-27 15:32:01 +03:00
Emmanouil Papadeas b9c289e742 [Curve tool] Don't draw a circle when hovering over the first point, if there is only one point in the curve 2024-05-26 14:27:02 +03:00
Emmanouil Papadeas 7b17262c85 Show a confirmation dialog when attempting to drag and drop an image from a browser, for security purposes 2024-05-25 16:16:32 +03:00
Emmanouil Papadeas 8c5aba0083 Implement dragging and dropping images directly from the browser to download them and import them 2024-05-25 15:02:13 +03:00
Emmanouil Papadeas b25ae8b4cc Fix curve being immediately applied if the user presses and releases immediately 2024-05-25 00:42:34 +03:00
Emmanouil Papadeas 72a2c59986 Fix codespell errors 2024-05-25 00:41:57 +03:00
Emmanouil Papadeas dc94f76d6a Update the ratio of the AspectRatioContainer in the Import Preview dialog, plus some code cleaning 2024-05-23 01:29:16 +03:00
Emmanouil Papadeas 0a38345376 [Curve tool] Only control the out control point when holding Shift
Needed to make curves with sharp edges. Inspired by Krita's Bezier curve tool
2024-05-21 19:37:47 +03:00
Emmanouil Papadeas e5d0a661f7 Properly fix polygon select tool circle radius not scaling properly with zoom
For real this time
2024-05-21 03:01:23 +03:00
Emmanouil Papadeas 3f8799f25a When hovering above the first position when using the curve tool, apply the curve shape 2024-05-21 02:59:37 +03:00
Emmanouil Papadeas 318b381938 Add a fill shape checkbox in the curve tool options
Now the curve tool can also be used as a polygon tool
2024-05-21 02:28:40 +03:00
Variable 601c25f2dd
Curve tool implementation (#1019)
* curve tool

* formatting

* formatting

* saving my progress

* update to kirita mode

* Formatting

* fixes for mirror mode

* added way to remove point, added tool shortcut

* Add translation strings

* Use Curve2D instead of a control_points array

---------

Co-authored-by: Emmanouil Papadeas <35376950+OverloadedOrama@users.noreply.github.com>
2024-05-20 03:46:40 +03:00
Emmanouil Papadeas fe4fc8b0a2 [skip ci] Set a default name for the CollapsibleContainers, if they have none
Mostly useful for debugging CollapsibleContainers made with code
2024-05-19 23:35:27 +03:00
Emmanouil Papadeas 0fc60168e8 Fix polygon select tool circle radius not scaling properly with zoom 2024-05-18 15:01:21 +03:00
Emmanouil Papadeas 7cc820fcf4 Change the accent color of the dark theme to a lighter gray 2024-05-17 02:11:17 +03:00
Emmanouil Papadeas a8440b80cc Rename config file from cache.ini to config.ini 2024-05-16 00:07:38 +03:00
Emmanouil Papadeas 3a4517abf4 [skip ci] Update the Lospec Palette Importer extension version 2024-05-13 19:32:31 +03:00
Emmanouil Papadeas 0fb89bf888 [skip ci] Minor static typing and docstring improvements 2024-05-11 17:02:33 +03:00
Emmanouil Papadeas 6b1329ff1f Set color picker's expand button focus mode to none 2024-05-09 02:45:48 +03:00
Emmanouil Papadeas 4ec7259c63 Optimize non-shader rotation by clearing non-selected pixels with masking 2024-05-09 01:36:11 +03:00
Emmanouil Papadeas e15b207993 Pass a transformation matrix in CommonRotation shaders instead of an angle
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
2024-05-09 00:44:52 +03:00
Emmanouil Papadeas 25f7192573 Pass angles in radians in SmearRotxel
Should be a slight optimization, since angles are being converted to radians only once, and that calculation is done in the CPU
2024-05-08 23:31:03 +03:00
Emmanouil Papadeas fe54f943e9 Change the color picker panel's expand button to be bigger and have text 2024-05-08 16:32:51 +03:00
Emmanouil Papadeas a2539c34f8 Add a minimum size to the Color Picker panel 2024-05-08 15:46:08 +03:00
Emmanouil Papadeas e3ee931059 Move and resize tags by dragging their edges 2024-05-08 03:44:26 +03:00
Emmanouil Papadeas 5a64dde3e5 Remove frame tag button & make onion skinning settings into general timeline settings
The "Animation plays only on frames of the same tag" button has been moved to the general timeline settings, along with a new slider that resizes the cel buttons in the timeline.
2024-05-08 01:09:20 +03:00
Emmanouil Papadeas ecb1890024 Change AnimationTagUI to be a Control instead of a VBoxContainer 2024-05-07 23:20:15 +03:00
Emmanouil Papadeas 592260ef93 Minor tag code improvements 2024-05-07 17:38:45 +03:00
Emmanouil Papadeas e60ec8528b Fix issue with the export dialog closing when the path dialog closes and native file dialogs are enabled 2024-05-07 01:27:51 +03:00
Emmanouil Papadeas 7b7da476b6 Various small translation-related fixes 2024-05-07 01:09:26 +03:00
Emmanouil Papadeas cabe6234b1 Set the menu's MarginContainer horizontal grow direction to right 2024-05-07 00:41:51 +03:00
Emmanouil Papadeas 002d5cae86 Add a "New Tag" option in the frame menu to easily create new tags 2024-05-06 20:50:12 +03:00
Emmanouil Papadeas c6e9b1621d Implement the ability to edit a tag by clicking on it from the timeline
Editing tags now is faster! Just click on it from the timeline to bring out the edit dialog.
2024-05-06 20:29:37 +03:00
Emmanouil Papadeas 02f85ade06 Make TagOptions its own scene 2024-05-06 20:13:09 +03:00
Emmanouil Papadeas d8704fdf5d Change tag color, text and size in AnimationTagUI.gd 2024-05-06 16:30:10 +03:00
Emmanouil Papadeas 8414f3deaf Fix integer camera zoom going smaller than 100% 2024-05-05 18:14:17 +03:00
Emmanouil Papadeas 645e09701e Add snap step to the zoom and rotation canvas sliders 2024-05-05 18:13:50 +03:00
Emmanouil Papadeas d734ae24a5 Allow negative values in shading as requested in #1015 2024-05-04 15:08:21 +03:00
Emmanouil Papadeas b1857fea7c Update names of donors, contributors & translators 2024-05-01 15:52:02 +03:00
Emmanouil Papadeas aa47a47b3c Make patterns not be copied on the main directory - Fixes #1010 2024-05-01 03:04:02 +03:00
Ivan Kruger 8e9ba696f1
Make default palettes available for clean installs on MacOS (#1008)
* resolved issue where pixelorama_data folder is to registered on MacOS builds

* Reverted changes to workflows and added Mac Resource directory to search path for palettes

* format Global.gd with gdtoolkit
2024-04-30 14:21:19 +03:00
Emmanouil Papadeas 489344866b Hide some preferences in non-desktop versions
Properties such as FFMPEG, native file dialog & single window don't make sense to exist in Web & potentially mobile platforms.
2024-04-30 01:57:20 +03:00
OverloadedOrama 05d08c661f Enable aspect ratio in scale image dialog by default 2024-04-25 19:44:11 +03:00
Emmanouil Papadeas 324fdc9fc8 Hide Split Layers checkbox on the Export dialog when the Spritesheet tab is selected
Spritesheet exporting does not currently support layer splitting
2024-04-22 17:15:25 +03:00
Emmanouil Papadeas 074fed10bf [skip ci] Fix typos and replace tabs with a single space in store_info.md 2024-04-21 15:04:37 +03:00
Emmanouil Papadeas 1d89064efb [skip ci] Fix wrong tag in store_info.md 2024-04-20 20:02:21 +03:00
Emmanouil Papadeas b3ef4f1ff3 Add OpenDyslexicFont to the Extensions explorer 2024-04-20 19:57:15 +03:00
Emmanouil Papadeas d75c2be6c5
[skip ci] Update store_info.md 2024-04-19 21:06:16 +03:00
Emmanouil Papadeas d0c58e249a Add LospecPaletteImporter extension in store_info.md 2024-04-19 21:00:58 +03:00
Emmanouil Papadeas 85d73bdb5d Allow extensions to create new palettes 2024-04-19 18:50:27 +03:00
Emmanouil Papadeas 9fa9c01a93 Fix extensions not being listed in the Preferences 2024-04-19 16:08:13 +03:00
Emmanouil Papadeas 6c002756c7 Move all selected layers with drag & drop
Similar to 7507206726 but for layers. Layer swapping (with control) only works when one layer is selected. The move up/down buttons in the timeline only work with one layer as of this commit.
2024-04-15 02:10:52 +03:00
Emmanouil Papadeas 4ddcf37d0b Fix crash when dropping frames to re-arrange them
Also don't allow dropping on a selected frame
2024-04-14 16:03:22 +03:00
Emmanouil Papadeas 0d375631b8 Better static typing in the timeline related methods in Project 2024-04-14 00:57:53 +03:00
Emmanouil Papadeas dc6efe02bb Fix issue where shader-based effects were not respecting the selection bounds, when the selection was out of the canvas 2024-04-13 19:51:12 +03:00
Emmanouil Papadeas c3bb85f6c9 Fix dimension label showing fractions in the final image size in the Export dialog 2024-04-13 19:15:37 +03:00
Emmanouil Papadeas 9a1464f73b Move selection offset code inside SelectionMap.is_pixel_selected() 2024-04-13 17:57:51 +03:00
Emmanouil Papadeas 9184b25c01 Fix Lasso Vector2 appending to array of type Vector2i error 2024-04-13 15:39:42 +03:00
Emmanouil Papadeas 1e83173697 Fix regression where interecting selections was not working 2024-04-13 15:34:36 +03:00
Emmanouil Papadeas 79b18fc242 Fix brushes being able to get drawn outside of the selection, if the selection is outside the canvas 2024-04-13 14:31:48 +03:00
Emmanouil Papadeas edf7b1f5e5 Set the selection texture's filter to nearest in shaders 2024-04-12 01:26:46 +03:00
Emmanouil Papadeas 7507206726 Move all selected frames - implements #743
This only works for frames at the moment, not layers and cels. Layers may be harder to support because they also have children. Supports both the "move left/right" options and drag and dropping. Frame swapping (with control) only works when one frame is selected, because I am unsure how they should be handled, especially when the selected frames are not continuous.

Didn't encounter any issues on my testing, but more testing is always welcome.
2024-04-11 18:03:43 +03:00
Emmanouil Papadeas 529962f91f Layer effect UI improvements & implement dragging to re-arrange 2024-04-11 00:31:50 +03:00
Emmanouil Papadeas 92e8666da2 Change layers with Control + Up/Down arrow keys
We already have Control + Left/Right for changing frames, so it makes sense to have Up/Down for layers
2024-04-10 16:58:04 +03:00
Emmanouil Papadeas 4e8a02c1a4 Fix issue with the TopMenuContainer where menu options weren't clickable in some languages 2024-04-10 16:42:23 +03:00
Emmanouil Papadeas 64b2b7b9af Make 3D rotation gizmos lines a bit thinner 2024-04-10 02:24:21 +03:00
Emmanouil Papadeas 97a1de6db2 Fix bug where images with width or height 1 are unable to be exported/affected by image effects
For some reason, ShaderImageEffect does not like images with width/height of 1.
2024-04-10 02:15:11 +03:00
Emmanouil Papadeas 018f95158e If there's already a 3D object with the same name in the 3DShapeEdit selected object OptionButton, add a number next to it 2024-04-10 02:09:18 +03:00
Emmanouil Papadeas a4f06d8cbe Fix 3D layer buttons not having the same offset as the other layer type buttons 2024-04-10 01:25:57 +03:00
Emmanouil Papadeas 1c9c8bf4e3 Add Palettize and Pixelize effects
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.
2024-04-10 01:20:28 +03:00
Emmanouil Papadeas dbfd4d8412 When merging layers, automatically make the bottom layer visible
If the bottom layer is invisible, it becomes visible now. Consistent with behavior seen in Krita and Photopea.
2024-04-09 02:30:50 +03:00
Emmanouil Papadeas 8f395b2be7 Create a new Effects menu and move all of the cel-specific effects there, away from the Image menu
Also moves Project properties into Image
2024-04-09 01:52:12 +03:00
Emmanouil Papadeas 25a69a99d6 Fix texture loading in LayerEffectsSettings 2024-04-08 02:43:01 +03:00
Emmanouil Papadeas 785701b093 Add an option to export a JSON file with the project data
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.
2024-04-06 03:30:50 +03:00
Emmanouil Papadeas 8c0a194468 Update camera when the viewport size changes 2024-04-06 00:09:58 +03:00
Emmanouil Papadeas 971fb67db1 When running in headless mode, don't set a custom cursor and don't save window data on exit 2024-04-05 20:36:03 +03:00
Emmanouil Papadeas 1062f88e4c Automatically load an image as a new project, when there is only one empty project
This is also useful for the CLI
2024-04-05 20:16:54 +03:00
Emmanouil Papadeas 0ac7789bf9 Store image data in undo/redo of the move tool, reverts 4f5f37a522
This fixes an issue where, if the user moves pixels outside the canvas and then undos, those cut pixels will not be restored.
2024-04-05 18:02:46 +03:00
Emmanouil Papadeas 596c174c92 Add a project properties dialog
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.
2024-04-05 02:24:47 +03:00
Emmanouil Papadeas c5c421bd28 Add layer properties 2024-04-04 03:21:07 +03:00
Emmanouil Papadeas 2cdd426a45 Update Translations and minor UI improvement in cel, frame and tag properties 2024-04-04 02:46:50 +03:00
Emmanouil Papadeas 14a13a2161 Add user data for cels, frames and tags
Projects and layers are next, once I add project and layer setting dialogs respectively.
2024-04-04 01:27:50 +03:00
Emmanouil Papadeas bc4b4dff0f Fix CLI exporting even though an unknown option has been provided
Allowing exporting even if an unknown option has been provided could lead to unexpected results
2024-04-04 00:27:20 +03:00
Variable 04caa5f7f5
Experimental refactor of the CLI (#1006)
* experimental refactor

* some fixes, some improvements

* some formatting and add check for invalid argument

* formatting

* added similarity option

* linting
2024-04-04 00:22:05 +03:00
Emmanouil Papadeas 1c8d81d1b7 [CLI] Make arguments case sensitive, add support for OS.get_cmdline_user_args(), add short form flags as alternatives for the long form arguments 2024-04-03 16:25:34 +03:00
Emmanouil Papadeas af01234470 Implement a basic CLI
Supports exporting images & spritesheets with frame, direction, scale and output file name specification. Also added some informative arguments that simply print out some data.
2024-04-02 00:36:33 +03:00
Emmanouil Papadeas 183bee6a0f Load preferences from the config file before waiting for process_frame 2024-04-02 00:02:20 +03:00
Emmanouil Papadeas 53e4ebc668 Fix spritesheet exporting from bug introduced in 6fa4a27589 2024-04-01 23:50:50 +03:00
Emmanouil Papadeas ea8748ca55 Use a dictionary in Export to group FileFormat enums and their respective file extensions and descriptions 2024-04-01 23:16:12 +03:00
Emmanouil Papadeas 473dabf004 Replace "{name}" with the project name when exporting 2024-04-01 21:45:39 +03:00
Emmanouil Papadeas bf14ac1565 Add an ExportFrames enum in Export to make code clearer 2024-04-01 21:45:11 +03:00
Emmanouil Papadeas 1d262c62f7 Don't include the ".pxo" extension in the project's name, when opening or saving 2024-04-01 20:11:27 +03:00
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