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

538 commits

Author SHA1 Message Date
Manolis Papadeas f70efe3076 Move new_empty_frame() to Project.gd from Canvas.gd
This commit also changes the behavior of the fill color. The new cels now only get filled with the Project.fill_color if they are on the bottom layer.
2021-12-01 20:50:50 +02:00
Manolis Papadeas 4c60ef144f Fixed project not having the correct size if the default image size has been changed in the Preferences
Ideally, the new_empty_frame() method should be removed from Canvas and should probably go to Frame or Project.
2021-12-01 20:02:39 +02:00
Manolis Papadeas f7ef4a4283 Remove handle_undo() and handle_redo() from Canvas.gd
Getting rid of some old, unneeded code.
2021-12-01 17:49:22 +02:00
Manolis Papadeas f3d696ef81 Clear code from ShaderEffect.gd
Now inherits from ImageEffect and uses a ShaderImageEffect to generate the image. We get to clear duplicate code that was shared between ShaderEffect.gd and ShaderImageEffect.gd this way, and it also uses the undo/redo logic from ImageEffect instead of Canvas.gd.
2021-12-01 03:41:20 +02:00
Manolis Papadeas 2cab2af561 Preload image effect shaders 2021-12-01 03:04:40 +02:00
Manolis Papadeas 72aef23cce UI changes to the onion skinning settings
Also changed the ignore text to the "_io" suffix instead of "ignore_onion", because this is quicker to type.
2021-12-01 02:28:12 +02:00
Manolis Papadeas 15d987ebae Changed behavior of flip image to make it work as expected with selections
The selection itself also gets flipped, if there is any
2021-11-30 02:42:35 +02:00
Manolis Papadeas e2a68c4ba4 Add an underscore to private method's names
As a way to differentiate between public and private methods, as per the official GDScript naming convention. Haven't changed all of the codebase yet, just some scripts that had a lot of public methods. This fixed 4 of the 7 errors of the linter.
2021-11-29 17:12:30 +02:00
Manolis Papadeas 540a61ae4d Merge onion skinning past and future into one script 2021-11-26 03:38:00 +02:00
Variable 159a821dd2
Better Onion Skinning (#600)
* better onion part (1/3)

changed code and added scripts

* better onion part (2/3)

added some onion variables

* better onion part (3/3)

Added to onion dialog

* removed whitespace that gave static error
2021-11-26 02:55:08 +02:00
Manolis Papadeas c6b9a1fb82
Format code and add static checks (#599)
* gdformat .

* Lint code - Part 1

* Format code - Part 2

* Lint code - Part 2

Trying to fix the max allowed line length errors

* Add normal_map_invert_y to the image .import files

Because of Godot 3.4

* Do not call private methods outside of the script's scope

Lint code - Part 3

* Format code - Part 3

* Fixed more line length exceeded errors - Lint code Part 3

* Export array of licenses - Lint code part 4

* Clean hint_tooltip code from Global

Removes a lot of lines of code

* Create static-checks.yml

* Fix FreeType's license
2021-11-25 14:48:30 +02:00
Manolis Papadeas 536250f517 Moved some variables away from Global 2021-11-23 02:36:22 +02:00
Manolis Papadeas 79ff0a8d45 Optimize _input() methods 2021-11-22 21:32:39 +02:00
Manolis Papadeas 4931e50213 Move cursot tool icon visibility to ViewportContainer
I have no idea what I was thinking when I put that code inside Canvas' _input()
2021-11-22 18:43:06 +02:00
Manolis Papadeas 36680795ee Move even more code away from Global
The idea is to make the project less dependant on Global. Global should strictly be used for reusable code in multiple places, not as a second Main. I just hope I'm not breaking anything during this process.
2021-11-22 17:37:06 +02:00
Manolis Papadeas 19c062fa07 Move some PopupMenu code away from Global's _ready() 2021-11-22 16:15:36 +02:00
Manolis Papadeas 88365301fb Change window opacity settings to a dedicated dialog with a slider and a spinbox
Changed from a popupmenu with fixed settings. This should give more freedom to the user while improving UX.
2021-11-22 04:47:41 +02:00
Manolis Papadeas f4c903771d Remove some unneeded yield() calls
And minor changes to make the code a tiny bit more clean. I tested this PR, but it still might be a bit risky.
2021-11-17 19:59:14 +02:00
mrtripie 0081aa365a
Guide Color Improvements (#561)
* Symmetry guide color work

* Changed to semi-transparent guides from red, blend slight blue into symmetry guides for variation

Co-authored-by: MrTriPie <MrTriPie>
2021-11-17 01:48:21 +02:00
Variable 3e88efc118
Improvements to Animation Tags (#560)
* Animation tag fix (a)

fixed tag behavior in "Project.gd"

* Animation tag fix (b)

fixed tag behavior in "AnimationTimeline.gd"

* Animation tag fix (c)

fix top part of line not visible

* Animation tag fix (d)

a fix i forgot about earlier

* added a randomizer...

... to auto select colors of new tags

* Fix Tag scrolling without cels when scrolled on it

* removed randomize() cause it's not needed
2021-11-17 00:21:29 +02:00
mrtripie 969aed8070
Cache Save/Open Sprite Dialog's directory, and keep dialogs synced (#559)
* Open/Save Sprite Dialogs now have their directory cached so when reopening Pixelorama they will be set to that directory. Load last project and load recent project also syncs with the open/save dialogs and caches that directory

* Sets a projects default file path to the cached file directory (not sure about) and if the export directory is blank, use the cached file directory

* Changed 'file_dialog_dir' to 'current_dir'

Co-authored-by: MrTriPie <MrTriPie>
2021-11-17 00:17:02 +02:00
Manolis Papadeas 752703878d Use onready vars for nodes in Global.gd
I have no idea why I didn't do that sooner. This cleared over 80 lines of code.
2021-11-16 00:04:50 +02:00
mrtripie a9039cccd5
Canvas Rotation (#558)
* Implemented canvas rotation

Co-authored-by: MrTriPie <MrTriPie>
2021-11-13 20:43:37 +02:00
Manolis Papadeas 24d25d49ea Implement #429 2021-11-11 03:21:34 +02:00
Manolis Papadeas 056cb76a46 Minor code cleanups 2021-11-06 17:23:54 +02:00
Manolis Papadeas 87261e93c6 Disable "New Brush" in the Edit menu if there is no selection 2021-11-06 17:19:20 +02:00
Manolis Papadeas 18ed5b2a05 Update CHANGELOG & AboutDialog 2021-10-07 16:57:26 +03:00
Manolis Papadeas b7e598c438 Fix issue with copying and pasting to a different project that has a smaller canvas
Fixes a bug caused by 86e66495b1
2021-10-06 02:02:56 +03:00
Manolis Papadeas 845bf2bab7 Fixes critical bug that is caused by removing a project tab that is to the left of the currently active tab 2021-10-06 01:51:39 +03:00
Variable da070db27e
Log Option (#546)
* Added Log button option
2021-10-05 23:37:16 +03:00
Manolis Papadeas 721cab8765 Minor changes that make Pixelorama work with Android
Just planting the seeds of a possible Android version, probably tablet-only, at least at first. I do not know when that will happen yet.
2021-10-02 15:08:58 +03:00
Manolis Papadeas 3b7ac1eddf Fix guides not working properly when the UI is scaled 2021-09-27 01:30:53 +03:00
Manolis Papadeas 86e66495b1 Fix issue with copying and pasting to a different project that has a bigger canvas 2021-09-24 19:23:59 +03:00
Manolis Papadeas f948c24430 Fix Changelog URL 2021-09-24 17:39:02 +03:00
Variable 41d88c1839
Boost HSV and Rotation sliders (#531)
* Added a timer to filter out useless values

This timer will determine if you actually want to view these changes or just want to skip ahead

* a live preview checkbox

* Some dialog improvements

* Minor changes/adjustments
2021-09-23 21:25:35 +03:00
Manolis Papadeas 8f115a726e Fix #541 2021-09-22 21:54:16 +03:00
Laurenz Reinthaler ad37c67690
Add buttons for looking at different splash-screen artworks (#538)
Fix overlooked line of code
2021-09-22 16:06:30 +03:00
Manolis Papadeas d584ae0839 Launch of version 0.9 - selections & shapes update 2021-09-18 18:59:15 +03:00
Manolis Papadeas dc413eb724 Update the splash screen with 3 new artworks for v0.9
Art by Wishdream, Roroto and Kamilayza
2021-09-17 16:37:16 +03:00
Manolis Papadeas 3d0d0b0335 Bump version to v0.9-rc3 2021-09-06 17:21:10 +03:00
Manolis Papadeas da8bc0d057 Added a "Licenses" tab in the About menu, which displays Pixelorama's license as well as the software it depends on, such as Godot 2021-09-05 01:07:12 +03:00
Manolis Papadeas 47b20ff5c3 Fix the canvas preview having incorrect zoom when switching between projects 2021-09-04 15:32:44 +03:00
Manolis Papadeas e4ba665c2a Always display the close button in tabs and let users close projects other than the current 2021-09-01 18:07:36 +03:00
Variable fb93143906
Dialog improvements (#530)
* Dialog Improvements

Preview now scales with resizing Dialog
2021-08-31 05:38:11 -07:00
Variable 32dc69fee6
Guide corrections (#528)
* Fixed guide size
2021-08-30 15:00:04 -07:00
Variable 75059b5b12
Selection fixes (#527)
* Fix for multiple cel selection issue

Now it will only apply selection to the selected cels that are **visible and unlocked**

* Fix for loss of selection data

This will hopefully fix the selection data loss on toggling layer buttons
2021-08-30 03:24:48 -07:00
Manolis Papadeas 680ab481f3 Don't transform content if layer is locked or invisible 2021-08-30 01:22:13 +03:00
Variable ab18e8bdb6
Transparency updates (#525)
* Update with theme instead of only value change

instantly updates with theme (old version updated on value change only)

* shortened some paths
2021-08-29 10:19:08 -07:00
Manolis Papadeas e088820c74 Bump version to v0.9-rc1 2021-08-28 20:01:05 +03:00
Manolis Papadeas 79e1ab5e61 Remove unneeded Global.update_hint_tooltips() call 2021-08-27 00:49:01 +03:00
Variable ddc69b8282
Editable zoom (#523)
* editable zoom change 1

* editable zoom change 2

* editable zoom change 3

* editable zoom change 4

* editable zoom change 4 part b

added upper limit automation for zoom
2021-08-26 14:23:51 -07:00
Manolis Papadeas 180c775b72 Disable per pixel transparency for OSX
As a temporary workaround for #491
2021-08-24 17:34:58 +03:00
Manolis Papadeas e7f8417d0d Subtle toolbar UI changes 2021-08-18 20:13:56 +03:00
Martin Novák 9ef7818c77
Tweak UI to use less empty space (#514)
* Tweak right side panels to use less empty space

* Add fake grabber to tools panel. Add a bottom margin. Fix a few issues with resizing.

* Fix tallscreen mode. Set a bit smaller animation timeline min height.

* Change Preferences visibility settings

* Update Main.tscn

* Fix crash when changing to tallscreen and then switching themes

Co-authored-by: Manolis Papadeas <35376950+OverloadedOrama@users.noreply.github.com>
2021-08-16 16:56:19 -07:00
Martin Novák b95496c57d
Fix dialog sizes (#512) 2021-07-30 16:05:50 -07:00
Manolis Papadeas 1d20295f7d Keep images unlocked after editing them - Should close #331
Not sure if this actually solves the issue or just makes it more rare, but I haven't been able to reproduce any PoolVector locking issues so far. The problem was that images were remained locked essentially all the time, which seemed to cause issues. Maybe other PoolVectors could not get locked?
2021-07-25 21:49:37 +03:00
Manolis Papadeas c6a056bba6 Made cloning frames create linked cels if the linked cel button is toggled on - suggestion of #402 2021-07-22 03:10:00 +03:00
Manolis Papadeas 57bb7929df Fixed issue with linked cels where, if you had linked cels in one layer and then linked more cels of the same frame in another layer, their previews did not update automatically
Cel's image_texture was being reset due to the creation of new Cel instances in CelButton.gd (line 113)
2021-07-22 02:25:00 +03:00
Manolis Papadeas 9bec8f1b09 Preload more resources
Had to remove references to Brushes and Patterns classes from BrushesButton.gd and PatternButton.gd due to GDScript's cyclic reference bug
2021-07-21 18:29:52 +03:00
Manolis Papadeas 28b8e000f9 Rewrite the crop image method
Should be a bit faster, but I still get weird bugs at random
2021-07-20 22:06:18 +03:00
Manolis Papadeas d0433bed6f Preload layer and cel button nodes in Project.gd
Just a minor optimization to avoid unnecessary loading
2021-07-20 21:03:15 +03:00
Manolis Papadeas ad4b377bc8 Only click the layer button with the left mouse button 2021-07-10 05:19:09 +03:00
Manolis Papadeas 983d14c0d1 Fix deleting content not working with undo 2021-07-09 12:59:01 +03:00
Manolis Papadeas 55c5688f16 Fix changing cel opacity calling project.frames_changed()
It shouldn't happen
2021-07-09 03:38:06 +03:00
Manolis Papadeas 2760049cfd Fix content transformation not getting confirmed when changes were done to frames and layers
Also fixes issue where frame/layer copying does not copy the transformed data
2021-07-08 20:46:56 +03:00
Manolis Papadeas a46f21265e Update CHANGELOG & AboutDialog 2021-07-06 14:03:41 +03:00
Manolis Papadeas 0bcb65db62 Update AboutDialog.gd 2021-07-05 19:32:12 +03:00
Manolis Papadeas 4b191139f6 Fix timeline's resize grabber not responding immediatly
It seems that the Canvas-Timeline SplitContainer's split offset had a hardcoded value
2021-07-04 16:09:21 +03:00
Manolis Papadeas 21e2cd6bd0 Dragging and dropping frames to re-arrange them no longer makes selected_cels empty 2021-06-27 18:15:06 +03:00
Manolis Papadeas 98d41fca14 Remove Global.find_node_by_name()
Use the built-in find_node() method instead.
2021-06-26 14:01:07 +03:00
Manolis Papadeas e4aff633bb Change "Current cel" strings to "Selected cels"
Because now we have the ability to select multiple cels
2021-06-25 17:58:41 +03:00
Manolis Papadeas f5d07e660d Do not clear content from selection in selected cels when moving if Alt has been pressed beforehand
This is about Alt + mouse click when moving a selection. See https://github.com/Orama-Interactive/Pixelorama/issues/129#issuecomment-756799706 for more info
2021-06-23 20:38:17 +03:00
Manolis Papadeas 5b74a4292d Fix pasting not working properly on multiple selected cels 2021-06-22 01:46:52 +03:00
Manolis Papadeas db0799bc12 Added Ukrainian 2021-06-21 00:24:39 +03:00
Manolis Papadeas ac631e3e3d Transform selected content of multiple selected cels
Does not work with rotation. It might be a good idea to replace this whole system with one that uses a transformation matrix, to handle rotation and skewing more easily in the future. I'm not a huge fan of this current code.
2021-06-19 19:29:32 +03:00
Manolis Papadeas 18592ed7c0 Minor UI changes 2021-06-15 01:03:46 +03:00
Manolis Papadeas 79b37a95b3 Fix palette importing not including all colors if they have more than 64 colors 2021-06-14 20:38:46 +03:00
Manolis Papadeas 791e966a71 Update Previews on all mouse events 2021-06-14 19:21:58 +03:00
Manolis Papadeas bdd06d42ce Added tool button size option in the Preferences 2021-06-14 02:14:31 +03:00
Manolis Papadeas de850ce8a1 Ability to select multiple cels and edit them all at once
A rather significant change, so, while I have tested it, it might still be buggy. Implements a part of #306.
2021-06-12 01:06:13 +03:00
Manolis Papadeas 73cce5b740 Set frame delay's min value at 0.01, does not let it become 0 2021-06-11 22:56:38 +03:00
Manolis Papadeas feece75935 Added Norwegian Bokmål 2021-06-11 19:38:34 +03:00
Manolis Papadeas f1ea8e30b2 Fix animation tag spacing 2021-06-09 17:17:53 +03:00
Manolis Papadeas e9bf310934 Implement layer and frame dragging and dropping to re-arrange them in the timeline
Part of #306
2021-06-06 02:19:34 +03:00
Manolis Papadeas 1a87321437 Added a Delete option in cel's right click menu
Delete doesn't actually delete a cel, it just clears its contents. Maybe renaming it to something else would be a good idea.
2021-06-05 13:38:32 +03:00
Manolis Papadeas e7a5b45536 Clicking on a layer button now selects the layer. Double clicking it allows renaming 2021-06-05 03:06:07 +03:00
Manolis Papadeas ecd08ce132 Add a right click popup menu on the frame buttons and move most of the frame related options there
These options used to be on the right click popup menu of the cel buttons. Now, cel options only contain Link/Unlink Cel, for now.
2021-06-05 02:37:33 +03:00
Manolis Papadeas 39b0baca84 Frame numbers in the timeline above the cels are now clickable buttons 2021-06-05 02:11:22 +03:00
Manolis Papadeas ec1b29eb5e Let the user change icon colors regardless of theme 2021-06-04 21:44:05 +03:00
Manolis Papadeas 12ce12a292 Replace button icons with single-color textures that change color automatically depending on the theme
There is no longer any need for having specific graphics for each theme, as white colored textures can change their modulation to any color.
2021-06-03 22:42:08 +03:00
Manolis Papadeas 489749e305 Fix division by zero crash 2021-06-01 18:43:23 +03:00
Manolis Papadeas 5e1c9dc73b Fix bug where you couldn't resize the selection after pasting 2021-06-01 18:19:16 +03:00
Manolis Papadeas ed229565ad Resize selection with gizmo from center by holding Control after clicking 2021-05-31 03:04:10 +03:00
Manolis Papadeas 2a9420700b Fix image effect preview background not keeping its aspect ratio 2021-05-30 19:20:56 +03:00
Manolis Papadeas 207b3a5630 Update ShaderEffect.gd 2021-05-30 17:42:50 +03:00
Manolis Papadeas 6d2f02b782 Let the user change border color and toggle the marching ants effect in the preferences 2021-05-28 03:46:16 +03:00
Manolis Papadeas bd84fbbe39 Rename the Lighten/Darken tool to Shading tool 2021-05-26 02:17:49 +03:00
Manolis Papadeas bd085786d5 Fixed issue when pasting and the clipboard image is empty 2021-05-25 22:50:35 +03:00
Manolis Papadeas a77cc05446 Made brush creation from selection a separate menu option
Also works with Ctrl+B. Copying no longer creates a project brush.
2021-05-25 22:48:37 +03:00
Manolis Papadeas 4e8acdf002 Updated Translations.pot and some tool hint tooltips 2021-05-25 02:51:10 +03:00
Variable 0257adb97b
Set project name (#490)
* Set project name. Also fixed a bug

Added ability to set project name also fixed a bug that "if the aspect ratio button is pressed and a template of different width and height were selected, then the button also applied on them e.g a template of (but it shouldn't)"
Example: write 1 in width, 2 in height, enable aspect ratio, and then try to change template... a template of 256x240 will give 120x240

* Add files via upload

* Adjust save name to project name

* Add files via upload
2021-05-24 07:03:56 -07:00
Manolis Papadeas 5b6f4ebe3e Added Polygon selection tool
Cursor icon is temporary. It works by clicking multiple times on the places you want to create edges, and to complete the polygon you either have to click at the first edge (if you hover the mouse, a circle appears in that position), or you can auto-fill by double clicking.
2021-05-18 01:56:55 +03:00
Manolis Papadeas 6499c0d3d5 Auto invert preview colors based on the screen color
Basically, when the background color of the screen at certain points is dark, the preview at that spot is white, and when it is bright, the preview is white at that spot. This helps to keep the previews always distinguishable, regardless of the background color.
2021-05-17 02:24:49 +03:00
Manolis Papadeas b8d055fe01 Added lasso / free select tool
Temporary icon, probably. Should work without problems, but more testing would be nice.
2021-05-16 03:52:13 +03:00
Manolis Papadeas d13c5c1063 Added ellipse selection tool
Icons most likely temporary. A bit problematic when the selection is in negative coords and the preview does not work well with mirroring and mirror view. Same is true for the shape tools.
2021-05-14 03:48:33 +03:00
Manolis Papadeas b28e89e5c4 Users can now resize the left tool bar
Useful since the number of tools has started to grow a lot, and some monitors may not have enough vertical space for all of them.
2021-05-13 01:15:11 +03:00
Manolis Papadeas 336594272c Fix selection resizing issue after having moved the content first 2021-05-12 16:27:35 +03:00
Manolis Papadeas 99ce07b3ab Added a new line tool
One of the most requested tools has finally been added!
2021-05-12 04:35:20 +03:00
Manolis Papadeas 9e7de0022e Change strings of the select menu 2021-05-11 19:48:16 +03:00
Manolis Papadeas 969b096efc Alt + mouse click when resizing with gizmos now works as intended when there is an active transformation occurring 2021-05-11 04:15:42 +03:00
Manolis Papadeas c859834f7c Fix crash when deleting a frame or layer and there is a transformation occurring 2021-05-10 22:34:40 +03:00
Manolis Papadeas 24da4bd703 Fix selection resizing not keeping the original bitmap after gizmo release 2021-05-10 19:59:55 +03:00
Manolis Papadeas e86dde2fb5 Do not require confirmation when transforming a selection with invisible contents 2021-05-10 18:44:12 +03:00
Variable 729c3ae1af
Tall wide screen corrections (#478)
* a minor visibility change.

made the nodes that were not needed in wide-screen "Invicible"
the visibility will now be controlled procedurally

* Added some lines of code in "change_ui_layout()"

The added lines will control node visibility changes to adjust to current screen mode

* added a line to fix tall-screen "zen-mode"
2021-05-10 08:05:15 -07:00
Manolis Papadeas 70d5fad9fd Make selection tool options not editable when there is no selection 2021-05-09 00:56:23 +03:00
Manolis Papadeas 6adb01aac1 Cursor shape no longer changes when a gizmo is being dragged and the mouse cursor goes above another gizmo 2021-05-08 16:06:02 +03:00
Manolis Papadeas 9b54f8a387 Resize selection without contents if Alt is pressed before clicking on a gizmo 2021-05-08 03:54:32 +03:00
Manolis Papadeas 3876c97674 Resizing gizmos with Shift keeps the aspect ratio of the selection
This was harder to implement than I thought. It may need some more testing.
2021-05-08 03:40:28 +03:00
Manolis Papadeas 356ddc0038 Implement moving selections with arrow keys
Moves selection with contents by default.
Control + arrow keys = Moves & snaps selection to grid.
Alt + arrow keys = Moves the selection itself without the contents.
2021-05-07 04:33:28 +03:00
Manolis Papadeas ea8bfcd25d Remove drawn_rect from Selection.gd and use draw_preview() in RectSelect.gd instead 2021-05-04 19:26:06 +03:00
Manolis Papadeas 5f84629144 Update AboutDialog.gd 2021-05-04 13:57:40 +03:00
Manolis Papadeas 3db2673309 Prepare for v0.8.3-stable 2021-05-04 13:44:06 +03:00
Manolis Papadeas 6203b3a71c Minor UI changes in the tool options of shape tools 2021-05-04 13:26:07 +03:00
Manolis Papadeas 8f846fe04a Fix out of bounds errors with selection intersection 2021-05-03 03:09:32 +03:00
Manolis Papadeas 3ad3697c84 Fix issue with gizmos not working if the user has moved the selection with contents first 2021-05-03 02:08:53 +03:00
Manolis Papadeas 8f1c6bb3d3 Move selection with contents by default with all selection tools
Now, if you want to move the selection itself without its contents, you have to do Ctrl + Alt + Mouse click. Works the same with all selection tools.
2021-05-03 02:00:07 +03:00
Manolis Papadeas 4a1fcc4ca7 Add position and size as selection tool options
This allows the user to easily move and resize selections
2021-05-01 03:10:23 +03:00
Manolis Papadeas a7cec3424a Restore project brush creation when copying 2021-04-24 14:50:36 +03:00
Manolis Papadeas 320c538bc3 Add enter and escape as input actions 2021-04-23 23:47:42 +03:00
Manolis Papadeas afd7cc43c9 Rename move_content methods to transform_content 2021-04-23 23:37:07 +03:00
Manolis Papadeas 83d9800fc1 Fix selection being moved by one pixel when being resized & temp_rect has negative size 2021-04-23 19:18:41 +03:00
Manolis Papadeas 4412671a08 Add selection intersection with Ctrl + Shift + Mouse click 2021-04-22 18:12:45 +03:00
Manolis Papadeas 58ef2420c9 Fix issue when resizing selection after moving it 2021-04-22 03:50:16 +03:00
Manolis Papadeas 687f2619a1 Change the order of the top menus 2021-04-22 03:34:04 +03:00
Manolis Papadeas 28cfe9bf77 Got rid of the deprecated enabled_focus_mode
Godot 3.3 has arrived!
2021-04-22 02:11:35 +03:00
Manolis Papadeas 515e75f3dd Gizmos resizing no longer re-flips the image when temp_rect is negative 2021-04-21 18:16:42 +03:00
Manolis Papadeas b420bebb3e Fix gizmos being able to get edited when there is no selection 2021-04-21 17:35:37 +03:00
Darshan Phaldesai dca76afe17
Shader based invert, desaturate and HSV dialogs (#475)
* Shader based invert, desaturate and HSV dialogs

* Bug fixes
2021-04-21 05:31:33 -07:00
Manolis Papadeas a712f822d7 Fixed bug when copying while moving content 2021-04-21 15:25:17 +03:00
Manolis Papadeas 3852b419dd Image effects will not longer get applied to locked and/or hidden layers. 2021-04-21 00:48:36 +03:00
Manolis Papadeas ea606a072a Make layers uneditable when they're invisible 2021-04-21 00:12:05 +03:00
Manolis Papadeas d70c6a22c4 New tool: Magic Wand (temporary icon) 2021-04-20 15:53:16 +03:00
Manolis Papadeas 1d5b44fad2 Fix Copy & Delete to work on the currently selected parts of the image
This also fixed a crash when deleting while content is being moved/resized
2021-04-19 19:05:05 +03:00
Manolis Papadeas fccd37360a New tool: Select by Color (temporary icon)
When the user clicks on a pixel, all pixels of the same color are being selected. Shift adds to the selection, Ctrl subtracts. The icon and the hint tooltip are temporary.
2021-04-19 18:50:43 +03:00
Manolis Papadeas dd2bec4c19 Pasting does not directly paste on the canvas, it is now confirmable instead
This lets the user easily cancel the pasting and move just the pasted area around.
2021-04-19 14:39:58 +03:00
Manolis Papadeas baba43d274 Change the way of how tool icon blue-orange backgrounds work
Instead of having a gazillion icons for each tool and its blue-orange variations, which led us to create 4 different textures for each tool, now we only need one texture for each tool and each theme. The blue-orange background has been made into a different TextureRect for each button.

This makes it easier for people to create new tools. Now, each new tool requires 3 textures (to cover every theme), instead of 12(!). I'm hoping to bring the number down to 1 in a future commit, by automating the theme color converting process.
2021-04-18 15:36:08 +03:00
Manolis Papadeas b735bc760f Optimize Project.get_selection_rectangle
It doesn't call bitmap_to_image() anymore.
2021-04-18 15:26:15 +03:00
Manolis Papadeas 27cb0d2d2f
New selection system (#474)
* Basic move tool

* Added marching ants effect on the selection borders

* Rename SelectionRectangle to SelectionShape, make it have non-rectangular shape and multiple SelectionShapes can exist

- Create multiple selection rectangles
- Merge them together if they intersect
- Move the selections (without contents as of right now)
- Gizmos are being drawn but they are not functional yet

Code is very ugly.

* Sort vectors counter-clockwise to be used as polygon borders

I did this, no idea if it works properly, probably won't be used but I thought I'd keep it saved somewhere

* More experiments I may or may not need

Trying to generate a polygon from the individual selected pixels

* Change default rectangle select behavior and ability to clip polygons using Control

* Fix rectangle selection clipping

* Split polygon into two with selection subtracting

* Move selection with contents with the move tool

Code is still a mess, don't bother looking.

* Move some methods from SelectionShape.gd to Selection.gd

The purpose of this is to generalize some selection code, so that it applies to all polygons, the entire selection. More will follow.

* UndoRedo for border moving

Nothing else in the selections system works properly in UndoRedo right now. Needs:

- UR support for creating selections
- UR support for modifying selections (merging and cutting selections together)
- UR support for removing selection
- UR support for moving content

& for all the rest of the remaining features

* Moving all of the selection shape logic to Selection.gd

Handle all of the polygons there instead of having them as individual nodes. Should be easier to handle undo/redo this way. This commit probably breaks move tool + selection tool and undo/redo. Code is still a mess. For your sanity, I hope you are not reading this. I promise I will clean up.

* Move tool works again

Buggy and messy, of course.

* Remove unneeded code and restore selection move undoredo logic

* Made Selection.gd have one big preview_image for when moving content, instead of each polygon having its own image

Could be further optimized for some specific cases. We could also remove selected_pixels from SelectionPolygon.

* UndoRedo support for creating, deleting, merging and clipping selections

UndoRedo support for moving content not added in this commit. Should work but needs more testing. This PR also removes selected_pixels from the SelectionPolygon class.

* Confirm & cancel selection movement, should support undoredo properly too

Press Enter or do any editing to confirm movement, Escape to cancel. I will most likely add UI buttons for confirm and cancel too.

* Mirror View affects selection

* Restore Cut, Copy, Paste and Clear Selection

Pasting now no longer requires a pre-existing selection and instead copies the selections themselves too.

* Created a new Select menu, which has Select All and Clear Selection as options

Clear Selection now also confirms content moving. TopMenuContainer code has changed to no longer rely on Global for the menu buttons.

* Draw gizmos as rectangles

No functionality yet. They may need to be turned to nodes, so that they can easily resize based on zoom level and check for mouse enter/exit events.

* Made gizmos get drawn in the sides and corners of the big bounding rectangle instead of individual selection parts

Still no functionality yet.

* Restore label text

* Minor optimization when clipping selections

This will execute the for loop less times

* Made a Gizmo class, cursor change on hover, has_focus = false on mouse click

Now I should actually make them resize when dragged, aye?

* Very basic gizmo resizing, still a WIP, does not work properly yet

* Start replacing the array of selected pixels with a BitMap

This should optimize the selection making a lot, and it also allows for easy border drawing without having to deal with polygons, thanks to the MarchingAntsOutline.shader

Still commit is still a WIP, image effects and brushes may not work properly yet.

Because the BitMap has a fixed size, the size of the project, moving the selection outside of canvas boundaries has proven to be a bit tricky. I did implement a hacky way of handling it, but it may be buggy and problematic. I'm still unsure whether this is the best way to handle the situation.

* Selection works with mirror view

* Draw a black rectangle when the user is making a rectangular selection

After they release the mouse, the black rectangle becomes the selection

* Make Selection.gd update when undoing/redoing

* Fix brushes not working properly with non-rectangular selections

* Added invert selection

* Cache has_selection as a variable for a speedup

* Fix conflict issues with the shape tools

* Made the bitmap image squared so the marching ants effect will be the same on both dimensions

There may be a better way to fix the issue, perhaps inside the shader itself.

* Some optimizations to call selection_bitmap_changed() less times

* Restored almost all of the image effects

Left to do:
- Change gradient's behavior. Unsure of how it will work with non-rectangular selections yet, but it should not generate pixels outside of the selection.
- Restore rotation
- Resize bitmap on image resize
- Remove the `pixels` array from the ImageEffect

* Fix Selection.gd not updating when changing project

* Resize the selection bitmap along with image resize

* Restored rotation's old behavior and finally got rid of the selected_pixels array

The rotation does not yet work properly with selections, but at least it now "works".

* Resize selection too when using gizmos

Left to do for gizmos:
- Proper cancel transformation
- Begin transformation
(currently named move_content_start but it should be renamed to something more general) when resizing gizmos
- Keep the original image and selection in memory and resize them. Meaning, gizmos should not resize the already resized data, but only resize the original. This is less destructive as there is no danger of data loss.
- Always resize on InputEventMouseMotion. This is going to be worse for performance, but it will look better for the user.

* Image and bitmap resizing now uses the original data and begin transformation on gizmo click

No matter how many times the user resizes on the current transformation, the original data will not be lost until they either confirm or cancel, so there is no data loss before confirmation/cancel.

* Cancel transformation now works properly when the selection has been resized

* Made gizmos resize on mouse motion, fix issues with negative bounding rectangle and when combined with the move tool

* Resizing can now get out of positive bounds, clearing and inverting now gets limited to the canvas bounds

Resizing currently does not work properly with negative (left & up) canvas boundaries

* Flip image when resizing and the bounding rectangle gets flipped

* Call move_content_confirm() when inverting selection

* Attempt to implement selection resizing that goes outside of the canvas boundaries (not working properly yet)

* Flip selection when resizing to negative bounding rectangle sizes

And fix preview_image vertical flipping

* Fix rotation so that it works (almost) properly with selections

Rotation algorithms now accept and only work with a given image, and the pivot has been added as a parameter

* Experimental gizmo rotation - does not work properly yet

Transforming the selection outside of the canvas is still broken.

* Fix some issues with moving selection out of canvas bounds

* Fix more issues with selection getting resized outside of canvas bounds

* Update marching ants effect properly when switching between projects

And make sure the frequency of the marching ants effect always looks roughly the same on all project sizes

* Made the rotation gizmo part of the gizmos array and resize them based on camera zoom

* Remove unneeded parameter from move_bitmap_values()

* Remove more unneeded parameters

* Move the selection only if the cursor is above it and neither shift nor control are currently pressed

* Gradient generation now works on non-rectangular selections

Although this behavior might not be the intended one

* Copy/paste marching ants effect offset

Useful for when the selection is in negative coords

* Fix issue with clear selection & UndoRedo

* Restore the ability to move selection when it's in negative coords

* Made the marching ants offset a Project variable

This fixes the issue of project switching and keeping the previous project's offset. Again, this is only relevant for when the selection is in negative coords.

* Made the "from current selection" palette preset work with the new selection system

* Fix out of bounds error when using the rectangular select tool on negative coords

* Some code cleanup

* Comment out the rotation gizmo for now, since it does not work properly

* Update marching ants shader params and gizmo sizes when the bitmap changes

* Move some methods around in Selection.gd
2021-04-17 11:30:12 -07:00
Manolis Papadeas 0c54470209 Update CHANGELOG & AboutDialog 2021-04-16 22:07:38 +03:00
Martin Novák 42696e7b37
Replace old palette system with a new one (#447)
* Replace old palette system with a new one

* Replace default json palettes with new resource versions

* Add missing translation strings

* Fix Erevoid's issues 2, 3 and 4

* Rewrite palette grid to improve performance
Add middle click scrolling

* Fix index conversion functions

* Fix palettes editing by copying them to XDG user write path

* Add Windows specific fixes

* Add import support for old json palette format

* Add create/edit palette settings check.
Hide add/delete color buttons when no palette is displayed.
2021-04-16 11:09:03 -07:00