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

2573 commits

Author SHA1 Message Date
Emmanouil Papadeas 5c8cf56f8f Make snapping distance change based on the zoom
Should work similarly to GIMP now
2023-04-16 21:15:40 +03:00
Emmanouil Papadeas 9cf82e7f71 [skip ci] Update Translations.pot 2023-04-15 16:53:52 +03:00
Emmanouil Papadeas 23198a84aa Small canvas preview UI changes and translation string additions 2023-04-15 13:46:42 +03:00
Chris Tsoychlakis db29ec9f0f
fixed mirrored drawing (#843)
* fixed mirrored drawing

* fix mirrored drawing
2023-04-14 15:56:08 +03:00
Emmanouil Papadeas 0349dccf04 [skip ci] Some more translation strings 2023-04-13 19:07:47 +03:00
Variable d40b9744ed
fix canvas preview only showing first layer (#844) 2023-04-12 13:24:19 +03:00
Emmanouil Papadeas 2bca2db27a Add more licenses to the AboutDialog 2023-04-08 00:34:38 +03:00
Emmanouil Papadeas 6700a72e73 Sort contributors and donors in AboutDialog in alphabetical order 2023-04-07 03:01:02 +03:00
Emmanouil Papadeas d68032fbda Fix previous commit to only show the notification once 2023-04-07 02:16:52 +03:00
Emmanouil Papadeas 272ea63615 Only show the "File(s) exported" notification on successful export 2023-04-07 02:09:49 +03:00
Emmanouil Papadeas 7e0bd46235 [skip ci] Update CHANGELOG.md 2023-04-05 19:01:01 +03:00
Emmanouil Papadeas 60997723e2 Create a parent scene for the image effects
This helps with shared nodes, such as the preview, the affect selection, cels etc options, and the animation properties
2023-04-04 04:19:18 +03:00
Emmanouil Papadeas b137762b1b
New Crowdin updates (#829)
* New translations Translations.pot (Indonesian)

* New translations Translations.pot (Latvian)

* New translations Translations.pot (Hindi)

* New translations Translations.pot (Esperanto)

* New translations Translations.pot (Malayalam)

* New translations Translations.pot (Sinhala)

* New translations Translations.pot (Norwegian Bokmal)

* New translations Translations.pot (Romanian)

* New translations Translations.pot (Greek)

* New translations Translations.pot (Japanese)

* New translations Translations.pot (Turkish)

* New translations Translations.pot (Ukrainian)

* New translations Translations.pot (German)

* New translations Translations.pot (German)

* New translations Translations.pot (Italian)

* New translations Translations.pot (French)

* New translations Translations.pot (Portuguese, Brazilian)

* New translations Translations.pot (Italian)

* New translations Translations.pot (Romanian)

* New translations Translations.pot (French)

* New translations Translations.pot (Spanish)

* New translations Translations.pot (Afrikaans)

* New translations Translations.pot (Arabic)

* New translations Translations.pot (Belarusian)

* New translations Translations.pot (Catalan)

* New translations Translations.pot (Czech)

* New translations Translations.pot (Danish)

* New translations Translations.pot (German)

* New translations Translations.pot (Greek)

* New translations Translations.pot (Finnish)

* New translations Translations.pot (Hebrew)

* New translations Translations.pot (Hungarian)

* New translations Translations.pot (Italian)

* New translations Translations.pot (Japanese)

* New translations Translations.pot (Korean)

* New translations Translations.pot (Dutch)

* New translations Translations.pot (Polish)

* New translations Translations.pot (Portuguese)

* New translations Translations.pot (Russian)

* New translations Translations.pot (Albanian)

* New translations Translations.pot (Serbian (Cyrillic))

* New translations Translations.pot (Swedish)

* New translations Translations.pot (Turkish)

* New translations Translations.pot (Ukrainian)

* New translations Translations.pot (Chinese Simplified)

* New translations Translations.pot (Chinese Traditional)

* New translations Translations.pot (Vietnamese)

* New translations Translations.pot (Portuguese, Brazilian)

* New translations Translations.pot (Indonesian)

* New translations Translations.pot (Latvian)

* New translations Translations.pot (Hindi)

* New translations Translations.pot (Esperanto)

* New translations Translations.pot (Malayalam)

* New translations Translations.pot (Sinhala)

* New translations Translations.pot (Norwegian Bokmal)

* New translations Translations.pot (Japanese)

* New translations Translations.pot (German)

* New translations Translations.pot (French)

* New translations Translations.pot (Turkish)

* New translations Translations.pot (Portuguese, Brazilian)

* New translations Translations.pot (Romanian)

* New translations Translations.pot (French)

* New translations Translations.pot (Spanish)

* New translations Translations.pot (Afrikaans)

* New translations Translations.pot (Arabic)

* New translations Translations.pot (Belarusian)

* New translations Translations.pot (Catalan)

* New translations Translations.pot (Czech)

* New translations Translations.pot (Danish)

* New translations Translations.pot (German)

* New translations Translations.pot (Greek)

* New translations Translations.pot (Finnish)

* New translations Translations.pot (Hebrew)

* New translations Translations.pot (Hungarian)

* New translations Translations.pot (Italian)

* New translations Translations.pot (Japanese)

* New translations Translations.pot (Korean)

* New translations Translations.pot (Dutch)

* New translations Translations.pot (Polish)

* New translations Translations.pot (Portuguese)

* New translations Translations.pot (Russian)

* New translations Translations.pot (Albanian)

* New translations Translations.pot (Serbian (Cyrillic))

* New translations Translations.pot (Swedish)

* New translations Translations.pot (Turkish)

* New translations Translations.pot (Ukrainian)

* New translations Translations.pot (Chinese Simplified)

* New translations Translations.pot (Chinese Traditional)

* New translations Translations.pot (Vietnamese)

* New translations Translations.pot (Portuguese, Brazilian)

* New translations Translations.pot (Indonesian)

* New translations Translations.pot (Latvian)

* New translations Translations.pot (Hindi)

* New translations Translations.pot (Esperanto)

* New translations Translations.pot (Malayalam)

* New translations Translations.pot (Sinhala)

* New translations Translations.pot (Norwegian Bokmal)

* New translations Translations.pot (Italian)

* New translations Translations.pot (Turkish)

* New translations Translations.pot (Japanese)

* New translations Translations.pot (Polish)

* New translations Translations.pot (Russian)

* New translations Translations.pot (Ukrainian)

* New translations Translations.pot (Romanian)

* New translations Translations.pot (Romanian)

* New translations Translations.pot (Chinese Simplified)

* New translations Translations.pot (Spanish)

* New translations Translations.pot (Spanish)

* New translations Translations.pot (Romanian)

* New translations Translations.pot (French)

* New translations Translations.pot (Spanish)

* New translations Translations.pot (Afrikaans)

* New translations Translations.pot (Arabic)

* New translations Translations.pot (Belarusian)

* New translations Translations.pot (Catalan)

* New translations Translations.pot (Czech)

* New translations Translations.pot (Danish)

* New translations Translations.pot (German)

* New translations Translations.pot (Greek)

* New translations Translations.pot (Finnish)

* New translations Translations.pot (Hebrew)

* New translations Translations.pot (Hungarian)

* New translations Translations.pot (Italian)

* New translations Translations.pot (Japanese)

* New translations Translations.pot (Korean)

* New translations Translations.pot (Dutch)

* New translations Translations.pot (Polish)

* New translations Translations.pot (Portuguese)

* New translations Translations.pot (Russian)

* New translations Translations.pot (Albanian)

* New translations Translations.pot (Serbian (Cyrillic))

* New translations Translations.pot (Swedish)

* New translations Translations.pot (Turkish)

* New translations Translations.pot (Ukrainian)

* New translations Translations.pot (Chinese Simplified)

* New translations Translations.pot (Chinese Traditional)

* New translations Translations.pot (Vietnamese)

* New translations Translations.pot (Portuguese, Brazilian)

* New translations Translations.pot (Indonesian)

* New translations Translations.pot (Latvian)

* New translations Translations.pot (Hindi)

* New translations Translations.pot (Esperanto)

* New translations Translations.pot (Malayalam)

* New translations Translations.pot (Sinhala)

* New translations Translations.pot (Norwegian Bokmal)

* New translations Translations.pot (Italian)

* New translations Translations.pot (Chinese Simplified)

* New translations Translations.pot (Turkish)

* New translations Translations.pot (Belarusian)

* New translations Translations.pot (Ukrainian)

* New translations Translations.pot (Belarusian)

* New translations Translations.pot (Portuguese, Brazilian)

* New translations Translations.pot (French)

* New translations Translations.pot (Japanese)

* New translations Translations.pot (Romanian)

* New translations Translations.pot (French)

* New translations Translations.pot (Spanish)

* New translations Translations.pot (Afrikaans)

* New translations Translations.pot (Arabic)

* New translations Translations.pot (Belarusian)

* New translations Translations.pot (Catalan)

* New translations Translations.pot (Czech)

* New translations Translations.pot (Danish)

* New translations Translations.pot (German)

* New translations Translations.pot (Greek)

* New translations Translations.pot (Finnish)

* New translations Translations.pot (Hebrew)

* New translations Translations.pot (Hungarian)

* New translations Translations.pot (Italian)

* New translations Translations.pot (Japanese)

* New translations Translations.pot (Korean)

* New translations Translations.pot (Dutch)

* New translations Translations.pot (Polish)

* New translations Translations.pot (Portuguese)

* New translations Translations.pot (Russian)

* New translations Translations.pot (Albanian)

* New translations Translations.pot (Serbian (Cyrillic))

* New translations Translations.pot (Swedish)

* New translations Translations.pot (Turkish)

* New translations Translations.pot (Ukrainian)

* New translations Translations.pot (Chinese Simplified)

* New translations Translations.pot (Chinese Traditional)

* New translations Translations.pot (Vietnamese)

* New translations Translations.pot (Portuguese, Brazilian)

* New translations Translations.pot (Indonesian)

* New translations Translations.pot (Latvian)

* New translations Translations.pot (Hindi)

* New translations Translations.pot (Esperanto)

* New translations Translations.pot (Malayalam)

* New translations Translations.pot (Sinhala)

* New translations Translations.pot (Norwegian Bokmal)

* New translations Translations.pot (Italian)

* New translations Translations.pot (Japanese)

* New translations Translations.pot (Turkish)

* New translations Translations.pot (Romanian)

* New translations Translations.pot (Belarusian)

* New translations Translations.pot (German)

* New translations Translations.pot (Ukrainian)

* New translations Translations.pot (Chinese Simplified)

* New translations Translations.pot (Romanian)

* New translations Translations.pot (Polish)

* New translations Translations.pot (Polish)

* New translations Translations.pot (Hungarian)

* New translations Translations.pot (Romanian)

* New translations Translations.pot (French)

* New translations Translations.pot (Spanish)

* New translations Translations.pot (Afrikaans)

* New translations Translations.pot (Arabic)

* New translations Translations.pot (Belarusian)

* New translations Translations.pot (Catalan)

* New translations Translations.pot (Czech)

* New translations Translations.pot (Danish)

* New translations Translations.pot (German)

* New translations Translations.pot (Greek)

* New translations Translations.pot (Finnish)

* New translations Translations.pot (Hebrew)

* New translations Translations.pot (Hungarian)

* New translations Translations.pot (Italian)

* New translations Translations.pot (Japanese)

* New translations Translations.pot (Korean)

* New translations Translations.pot (Dutch)

* New translations Translations.pot (Polish)

* New translations Translations.pot (Portuguese)

* New translations Translations.pot (Russian)

* New translations Translations.pot (Albanian)

* New translations Translations.pot (Serbian (Cyrillic))

* New translations Translations.pot (Swedish)

* New translations Translations.pot (Turkish)

* New translations Translations.pot (Ukrainian)

* New translations Translations.pot (Chinese Simplified)

* New translations Translations.pot (Chinese Traditional)

* New translations Translations.pot (Vietnamese)

* New translations Translations.pot (Portuguese, Brazilian)

* New translations Translations.pot (Indonesian)

* New translations Translations.pot (Latvian)

* New translations Translations.pot (Hindi)

* New translations Translations.pot (Esperanto)

* New translations Translations.pot (Malayalam)

* New translations Translations.pot (Sinhala)

* New translations Translations.pot (Norwegian Bokmal)

* New translations Translations.pot (Japanese)

* New translations Translations.pot (German)

* New translations Translations.pot (German)

* New translations Translations.pot (Portuguese, Brazilian)

* New translations Translations.pot (Greek)

* New translations Translations.pot (Italian)

* New translations Translations.pot (Turkish)

* New translations Translations.pot (French)

* New translations Translations.pot (Romanian)

* New translations Translations.pot (Romanian)
2023-04-03 17:58:15 +03:00
Emmanouil Papadeas 8ce68700dd 3D object optimizations 2023-04-02 01:36:02 +03:00
Emmanouil Papadeas 4943ab5eab Add pxo version to pxo files, starting from 2
Its value should increase every time there is a compatibility-breaking or a major change between previous pxo files, similar to extensionsAPI version.
2023-04-01 02:16:24 +03:00
Emmanouil Papadeas 91aea32864
Implement 3D layers (#840)
* Implement 3D layers

* Remove unneeded files

* Fix bug where a single hidden layer would ignore all of the layers on top when exporting

* Fix pxo loading

* Remove junk nodes from 3DShapeEdit

Seems like they were created when I copied from the old 3D Options.tscn panel to the new 3D Shape Edit tool.

* Make light gizmos half the size, and hide gizmos when rotating

* Fix crash when using the 3D shape edit tool on a group layer

* Remove unneeded code in Canvas.gd

* Add torus in the Cel3DObject.Type enumerator

Torus isn't currently supported in Godot 3.5, but it is in 3.6 and 4.0, so this is just future-proofing. May break compatibility with .pxo files that were exported with 3D layers before this change.

* Toggle 3D object visibility

* Change texts and some variable names

* Fill translation strings

* Fix crash on group blending, and make the code in Export.blend_layers() more general

* Fix errors when attempting to draw on a 3D cel

Can occur when multiple cels are selected, some of them 3D and some of them pixel

* Make scene properties and objects be per-cel instead of per-layer

Breaks compatibility with previous .pxo files that had 3D layers. Also introduces serialize() and deserialize() methods to BaseCel

* Use if not layer is get_script() in GroupLayer.blend_children()

* Flip the condition in GroupLayer.blend_children()

* Fix bug where locked/invisible layers could get drawn

Regression from c2f6bf0f3f

* Move gizmo code to 3DShapeEdit's draw_start(), move some undo/redo logic to 3DShapeEdit

* Move all of the undo/redo code to 3DShapeEdit, simplify code in Cel3D

* Store Cel3D image data to pxo, for easy usage by external software

This makes importing projects with 3D layers to other software, such as Godot using godot_pixelorama_importer easier.

* Make the linter happy

* Fix bug where the previously selected object would remain selected when it got removed with undo
2023-03-31 21:58:56 +03:00
Emmanouil Papadeas 5f290ae343 Change resize SpinBox to ValueSlider in ExportDialog 2023-03-30 18:20:55 +03:00
Emmanouil Papadeas 78fda42743 Remove unneeded lines in AnimationTimeline.gd 2023-03-29 15:24:30 +03:00
Emmanouil Papadeas 5c9f0d8c18 Fix bug where, if the bottom-most layer is invisible, selection can't transform content on other layers 2023-03-27 03:42:16 +03:00
Emmanouil Papadeas 6b587688f1 Fix bug where clicking on previous/next frame when only one frame exists makes the cel unselected
Apparently this bug exists at least since v0.10
2023-03-27 00:24:40 +03:00
Emmanouil Papadeas 2ce9f72c51 Use a ValueSliderV2 in the drop shadow dialog 2023-03-26 21:33:33 +03:00
Emmanouil Papadeas 4e9b4c33f7 Fix LayerButton drag and drop passing wrong parameter to BaseLayer.accepts_child()
It was passing the index of the layer as an integer instead of a BaseLayer class. Also made some code stylistic changes.
2023-03-25 18:42:50 +02:00
Variable b384e706a9
Animate image effect properties (#836)
* Added auto animation system

* Animation to dialog

* Added Animated properties

* animate ranges

* formatting

* Fix missing commit

* Formatting
2023-03-25 16:59:02 +02:00
Emmanouil Papadeas acf376865f Fix crash when there is no pixel layer in the timeline, only a group layer 2023-03-24 17:37:40 +02:00
Emmanouil Papadeas acb32844a1 Replace the Locked Aspect Ratio mode in the crop tool with a lock button next to the size sliders 2023-03-24 01:17:30 +02:00
Variable 2ad1391ca1
Spritesheet Animation Canvas Preview (#835)
* spritesheet preview

* formatting
2023-03-23 15:25:33 +02:00
Emmanouil Papadeas 4e7d5d34cf Keep aspect ratio when resizing a selection with gizmos, if the button is pressed next to the ValueSliders
Also fixes a bug with the inconsistent behavior caused by resizing a selection with gizmos without pressing Shift, while the keep ratio button was pressed.
2023-03-21 16:36:25 +02:00
Emmanouil Papadeas 99b014ef7f Fix segmentation fault when resizing canvas to a large size
For some reason, cel_texture.texture.get_data() seemed to cause a segmentation fault, and then a crash, when the image size was large. Also added some extra static typing to the drag and drop methods, but they are unrelated to the crash.
2023-03-21 02:06:57 +02:00
Emmanouil Papadeas d4ebf9c585 Use Vector2s for min and max values in ValueSliderV2
This lets us have different min/max values for x and y.
2023-03-21 01:45:09 +02:00
Emmanouil Papadeas a5496daa5b Add a ValueSliderV2 to the Pencil's spacing options 2023-03-20 20:28:01 +02:00
Emmanouil Papadeas 05fa436b12 Disable ValueSliderV2's ratio button when set to not editable
And use a NinePatchRect for the ratio guides, for proper scaling.
2023-03-20 01:59:15 +02:00
Emmanouil Papadeas e174f6e942 Add a new custom node, ValueSliderV2
ValueSliderV2 is a container for two ValueSliders and an optional lock ratio button, that helps with handling Vector2 values in the UI.
2023-03-20 00:56:43 +02:00
Emmanouil Papadeas 5ed91c6d8a Fix ValueSlider's text color from staying grayed out even if the slider is editable 2023-03-19 00:36:37 +02:00
Emmanouil Papadeas df00e43b84 Do not allow the ValueSlider's global shortcut to affect it if it's hidden 2023-03-18 14:29:11 +02:00
Emmanouil Papadeas b5388093ef Add a minimum size to CanvasPreviewContainer
Fixed issues with the UI system, when changing the tab to Reference Images and then back to Canvas Preview
2023-03-17 01:24:20 +02:00
Emmanouil Papadeas c43f28b323 Manage layout dialog UI changes 2023-03-17 01:20:17 +02:00
Emmanouil Papadeas e3a163b8c7 Update Default layout 2023-03-17 00:55:34 +02:00
Emmanouil Papadeas 1a769293fc Dim cel buttons based on whether the cel is transparent/empty or not
Should replace #817, but in a more optimized way, as it does not rely on _input().
2023-03-17 00:02:01 +02:00
Variable ad3a0155b6
Set tilemask automatically (#833)
* AutoCreate Tile Masks

* removed a print()

* Disable masking by default

* changed visibility

* Remove Godot's needless changes in Main.tscn

Godot pls

---------

Co-authored-by: Emmanouil Papadeas <35376950+OverloadedOrama@users.noreply.github.com>
2023-03-16 20:07:03 +02:00
mrtripie 0ad86816e5
Crop Tool (#830)
* Added intial crop tool

* [skip ci] Removed unneeeded LINE_WIDTH constant from CropRect

* Added DimensionsLabel

* Cleaned up CropRect._draw

* Hide the CropRect after switching to a different tool

* Sets the crop values to the entire canvas size on setup

* [skip ci] Added crop tool tooltip

* Made Crop tools synced with eachother by placing the crop settings on CropRect

* Added new modes, refactored, added rule of thirds lines and darkened background

* [skip ci] reset optimization

* Renames

* [skip ci] Tweaked the darkened background

* Fixed bug with top/bottom/left/right sliders after rect refactor

* Changing width/height on locked aspect ratio bug

* Aspect ratio sliders rounding/setting a min of 1 px height/width

* Fixed bugs with drawing the crop rect, especially with locked aspect ratio

* Save the mode to config_cache

* Added size lock and renamed mode

* Added tooltip for size lock. Not sure if I did the translation file right

* removed signal that wasn't used

* Formatting

* Removed old TODO comment from one of my previous PRs that isn't true anymore

* Fixed definition order for linter

* Changed locked size modes moving to offset by @Variable-ind, reordered methods

---------

Co-authored-by: MrTriPie <MrTriPie>
2023-03-16 19:50:45 +02:00
Variable e008c39286
Added color Averaging (#822) 2023-03-15 15:05:18 +02:00
Emmanouil Papadeas ad61ddc2c0 Fix crash when opening the rotate image dialog for the second time for large canvases 2023-03-14 15:34:06 +02:00
Emmanouil Papadeas 4bf7829b0a Fix swatch getting transparent on double click 2023-03-14 15:24:15 +02:00
Emmanouil Papadeas 30d279c494 Fix image brushes being drawn outside the selection 2023-03-14 14:59:22 +02:00
Variable 0cb0f9c1bd Added recent sizes to new project (#819)
* Added recen sizes to new project

* Formatting

* Limit list size to 10
2023-03-14 13:58:40 +02:00
Emmanouil Papadeas ebdffb026c [skip ci] Update CHANGELOG.md 2023-03-12 15:29:35 +02:00
Emmanouil Papadeas 5b2708a44f Add shortcut for the paint selection tool 2023-03-11 03:33:53 +02:00
Emmanouil Papadeas de7ef580f9 Fix dynamics hint tooltip and add some missing dynamic-related translation strings 2023-03-09 15:22:29 +02:00
Emmanouil Papadeas 598199eda5
New Crowdin updates (#756) 2023-03-08 14:51:58 +02:00
Emmanouil Papadeas cd4e9ef9bd
Use Godot 3.x's gdtoolkit.
gdtoolkit got updated to Godot 4.x, so we need to explicitly state that we are installing the Godot 3.x version.
2023-03-07 16:24:59 +02:00