1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-13 01:03:07 +00:00
Commit graph

648 commits

Author SHA1 Message Date
Emmanouil Papadeas c1fb706a33 Remove unnecessary variable from change_layer_automaticaly() 2024-08-16 13:57:51 +03:00
Emmanouil Papadeas cfbe851da5 Add a convolution matrix layer effect
Still WIP, could use some extra parameters such as RGBA channel, and I should also implement it as an image effect.
2024-08-16 04:24:43 +03:00
Emmanouil Papadeas 2e3f0a2696 Add <kbd>Control+Shift+Alt</kbd> as a shortcut that automatically selects a layer directly from the canvas when using tools 2024-08-15 20:16:43 +03:00
Emmanouil Papadeas 077c57c53a
Implement support for group layer blending (#1077)
* Blend group layers on `DrawingAlgos.blend_layers()`

* Support group layer blending on the canvas

* Allow editing of group layer properties

* Fix issues with group layer blending in canvas, and unite common code

* Group layers can now be used as clipping masks

* Make move tool preview work on child layers

* Change OffsetImage's `blend_layers()` to support group layer blending

* Support group layer blending in the canvas preview

* Fix layer blending mode, clipping mask opacity and cel opacity not being updated automatically if the layer/cel changed is not selected

* Add a pass through blending mode to layer groups

Fingers crossed that no bugs were introduced

* Fix issue with layers that belong to pass through groups not updating their textures on the canvas automatically on undo
2024-08-15 15:52:55 +03:00
Emmanouil Papadeas 1a99d524d1 Fix some buttons not being affected by the custom icon color on startup 2024-08-13 04:23:56 +03:00
Emmanouil Papadeas 9c170ee5a0 Fix group layer children blending not working with nested group layers and with layer effects 2024-08-11 01:38:18 +03:00
Emmanouil Papadeas f3ee00a944 Fix crashes when attempting to export specific layers or tags that have been deleted 2024-08-11 01:00:10 +03:00
Emmanouil Papadeas bdc1b5af11 Add a blend_layers_headless method to DrawingAlgos 2024-08-11 00:35:16 +03:00
Emmanouil Papadeas 19e4c94fe3 Add a resized signal to Project, remove the Global.tile_mode_offset_dialog variable
Continue to slowly remove nodes from `Global`.
2024-08-10 22:47:06 +03:00
Emmanouil Papadeas b0a284583b Add tolerance to the bucket's "similar area" mode, rename "similarity" to "tolerance" and make it work the inverse way
A slightly breaking change for a minor update, but one that needed to be done. The bucket tool's "similarity" (now renamed to "tolerance") used to work the opposite way from all other software, the maximum value meant exact color match and 0 meant no color match. Now it works the inverse way to make it be consistent with other software, and the range is now 0-255 instead of 0-100. 0 means exact color match, 255 means no color match. And tolerance also now works for the "similar area" mode as well.
2024-08-10 18:20:42 +03:00
Emmanouil Papadeas 699c9cda87 Fix the name of the new image effect 2024-08-05 13:18:12 +03:00
Emmanouil Papadeas 95d96b9b00 Manually write lines in the override.cfg file instead of using ProjectSettings.save_custom() 2024-08-03 22:04:32 +03:00
Emmanouil Papadeas 8c6bf08aef [skip ci] Fix typo in ExtensionsAPI 2024-08-02 21:43:57 +03:00
Emmanouil Papadeas c0c391674d [skip ci] Change instances of "yield" to "await" in comments 2024-08-02 00:42:14 +03:00
Emmanouil Papadeas 0ea0406233 Add an adjust brightness/contrast image effect
Thanks to https://godotshaders.com/shader/color-manipulator/

The shader has more options than just brightness and contrast though, but I didn't know how else to name the effect. "Adjust Brightness/Contrast" makes it immediately obvious as to what the effect is about.
2024-08-01 21:21:45 +03:00
Kiisu_Master f27d152cb3
Add setting for Godots low processor usage mode (#1056)
* Add setting for Godots low processor usage mode

* Update name and description of low processor usage mode setting in preferences

* Fix a tiny mistake
2024-07-30 19:02:10 +03:00
Variable bd42a0cba6
added palette docs, allow more than one dimentional ValueSlider, add … (#1044)
* added palette docs, allow more than one dimentional ValueSlider, add more error messages

* split into 3 functions
2024-07-26 16:27:54 +03:00
Emmanouil Papadeas 30dfb6aa58 Try to fix issue when certain languages are set to the OS system locale and some GUI elements are not being translated during startup
Only confirmed with Brazilian Portuguese at the moment
2024-07-23 19:34:49 +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 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
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 b3133130ad Include tag name even if we're exporting a single file 2024-07-19 17:24:58 +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 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
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 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 0601a4481a Make Voxelorama work 2024-07-01 17:22:32 +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 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 556fc4b467 Remove unused "manage_frame_tags" shortcut 2024-06-04 00:41:27 +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 260c906d92 Update docstring of ExtensionsAPI's add_export_option() method 2024-06-01 13:01:30 +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 d070f8c5f5 Put the effects menu shortcuts under an "Effects" group 2024-05-27 15:32:01 +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
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 a8440b80cc Rename config file from cache.ini to config.ini 2024-05-16 00:07:38 +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 85d73bdb5d Allow extensions to create new palettes 2024-04-19 18:50:27 +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 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 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 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 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 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 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 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
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 572fabbe66 Remove Global.reference_panel
Slowly trying to remove nodes from Global
2024-03-23 02:52:27 +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 6e0d4eb660 Fix Project.export_directory_path being set incorrectly in open_pxo_file() 2024-03-22 15:30:00 +02:00
Emmanouil Papadeas ad85c8dd3e Minor open/save dialog path related code cleaning 2024-03-22 15:12:27 +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 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 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 03b173b76e Optimize cel switching by avoiding changing the stylebox of every CelButton 2024-03-15 01:31:12 +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 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 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 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 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