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

893 commits

Author SHA1 Message Date
Matteo Piovanelli 1a19c3a297
Further speed up of bucket fill (#672)
* Removed some calls to can_pixel_get_drawn by
managing has_selection condition differently

* Refactored `_set_pixel` to shortcircuit.
This allowed shortcircuiting away some tests to speed up common code
paths.

* Further refactor of `_set_pixel`
Removed unused functions. Made conditions for pattern-fills clearer.

* Refactor.

* Refactor.

* Removed dev timers.
2022-04-21 04:57:39 +03:00
Emmanouil Papadeas 7c6cdadb86 Optimize shader-based image effects when there is no selection 2022-04-20 03:06:58 +03:00
Emmanouil Papadeas 1e73ce5aa6 Fix export bug where the path is being changed if there's a folder with the same name as the file 2022-04-20 02:49:48 +03:00
Variable 77513b6ba3
Export conflict (#669)
* add limit change with brush

* Delete Draw.gd

* Delete BaseTool.gd

* added more info about export conflict

* more info about export conflict

* Update Export.gd

* Update ExportDialog.tscn

* fixed a small mistake
2022-04-19 19:29:21 +03:00
Manolis Papadeas bdd32a8239 Make marching ants shader ratio-independent 2022-04-18 15:32:14 +03:00
Matteo Piovanelli 6a7ee3407c
Upgrade/floodfill (#667)
* Implemented floodfill routine by Shawn Hargreaves

* Removed performance timers used for testing

* Reformatting file after setting "Trim Trailing
Whitespace On Save".

* Refactoring to respect code guidelines.

* More reformatting

* More refactoring

* Refactor: added # gdlint: ignore=max-line-length
to line the parser has me set to longer than 100 chars

* Manage selected areas
2022-04-16 12:22:51 +03:00
Manolis Papadeas f42f75aa28 Update TopMenuContainer.gd 2022-04-14 18:33:42 +03:00
Manolis Papadeas fc482831a8 Update tags to 0.10 2022-04-14 18:32:39 +03:00
Manolis Papadeas 93c122f07b Update Uch and Kalpar's social media links 2022-04-14 17:29:32 +03:00
Manolis Papadeas bc11dcfd4b Update the splash screen artworks 2022-04-14 01:13:42 +03:00
Manolis Papadeas 87c4d4c310 Update AboutDialog.gd 2022-04-11 00:43:44 +03:00
Manolis Papadeas b0e4636c66 Properly center the splash screen on application start 2022-04-10 15:41:07 +03:00
Manolis Papadeas d8830d7f06 bool support for shaders
Feature not exposed to the end user yet
2022-04-10 00:04:45 +03:00
Manolis Papadeas c7f9f1d23b vec2 support for shaders
Feature not exposed to the end user yet
2022-04-09 23:28:57 +03:00
Manolis Papadeas d579118bb1 Load textures for sampler2D uniforms in the experimental shader feature
Feature not exposed to the end user yet
2022-04-09 03:42:34 +03:00
Manolis Papadeas 41d9add6a7 Change shader color in the experimental shader feature
Feature not exposed to the end user yet
2022-04-08 02:57:58 +03:00
Manolis Papadeas 8e9243b8c1 Update Main.gd 2022-04-06 00:30:34 +03:00
Manolis Papadeas 980b39d21b Update AboutDialog.gd 2022-04-02 17:10:16 +03:00
Manolis Papadeas 44e5fcfb87 Change global tool option textures 2022-04-01 13:45:24 +03:00
Manolis Papadeas d01d0a287a Make cut not work on locked/invisible layers 2022-03-31 17:30:25 +03:00
Manolis Papadeas 11b6af07f1 Update Translations 2022-03-31 02:29:23 +03:00
Manolis Papadeas a79f368f41 Fix aspect ratio in scale image to work as it does in create image 2022-03-30 16:12:19 +03:00
Manolis Papadeas 8a5cc6860f Move layer and frame initial creation code to Main.gd
From Global.gd
2022-03-29 03:14:41 +03:00
Manolis Papadeas 66ad745c52 Minor code changes 2022-03-29 02:35:32 +03:00
Manolis Papadeas 4cdd20a2fe Fix issue with export preview not working when importing an image 2022-03-27 04:19:47 +03:00
Manolis Papadeas e901fc774a Replace "Export" with "Overwrite" when importing a png
When exporting an imported image, the export will happen immediately, without having the export dialog appear, unless "Export as..." is selected. For .png imported images, the menu option will display "Overwrite" instead of "Export". This makes it clear that if Control + E is pressed on an imported png, that file will be overwritten.
2022-03-25 02:00:40 +02:00
Manolis Papadeas bd6f850ab5 Rename "Flip" into "Mirror Image" 2022-03-24 20:01:31 +02:00
Manolis Papadeas 3727caf9c4 Revert "Use L8 format for selection texture"
This reverts commit 8a3414f83a.
2022-03-23 03:56:47 +02:00
Manolis Papadeas 8a3414f83a Use L8 format for selection texture
Instead of LA8. This should result in slightly less memory usage and is more on par with Godot's BitMap "convert_to_image" method, which will be exposed in Godot 3.5.
2022-03-23 01:48:58 +02:00
Manolis Papadeas 8624ed6da8 Fix macOS shortcuts 2022-03-22 01:48:14 +02:00
Manolis Papadeas 9648b48a96 Remove empty project when importing an image
This should no longer keep empty canvases when importing images
2022-03-21 23:33:45 +02:00
Manolis Papadeas 4cf9c57e84 Don't reset export status when a pxo is saved 2022-03-21 23:07:57 +02:00
Manolis Papadeas 57729ef4e9 Move Moveable Panels to the Panels submenu 2022-03-21 18:04:26 +02:00
Manolis Papadeas bf98dd18e6 Remove the "Palettes" label from the Palettes panel 2022-03-21 16:24:03 +02:00
Manolis Papadeas 1c3103e06b Scale custom cursor with UI size - closes #642 2022-03-21 02:24:13 +02:00
Manolis Papadeas 0e79138d87 Another canvas texture optimization + bug fix with resizing 2022-03-20 18:52:48 +02:00
ArthyChaux 9e5db16994
Optimize canvas texture updates (#661)
In this line, a new texture is generated each time the canvas is updated it seems :
But it is mentionned in the documentation to use `void set_data(image: Image)` instead for slightly faster results, which updates the texture instead of creating a new one.

I hope that it is relevant !

Also, if it is approved, this change should be applied to everywhere it is used (except when initializing the texture)
2022-03-19 19:21:07 +02:00
Manolis Papadeas 9411f37a47 Add a confirmation dialog when deleting a layout 2022-03-18 04:21:38 +02:00
Manolis Papadeas 9128b455e6 Transparent canvas now works properly with scaled UI 2022-03-18 01:08:00 +02:00
Manolis Papadeas 4059cb018b In ResizeCanvas, always set the spinbox values to the current project size 2022-03-18 00:07:40 +02:00
Manolis Papadeas 790cd8533a Changes to ManageLayouts dialog 2022-03-18 00:03:53 +02:00
Manolis Papadeas 21b4f3369f Select layer when clicking a layer button (visible, lock, etc) 2022-03-17 00:12:00 +02:00
Manolis Papadeas bffc36a018 Change Layout menu and rename Edit Mode to Moveable Panels 2022-03-16 00:30:24 +02:00
Manolis Papadeas 5d3963d495 Make panel tabs always visible if there are 2 or more tabs in a single panel 2022-03-12 20:46:17 +02:00
Manolis Papadeas 6d641259d5 Make it possible for extensions to add menu items
With metadata
2022-03-11 01:59:12 +02:00
Manolis Papadeas f2a24aaffd Set grayscale vision node properties instead of in code 2022-03-11 01:48:50 +02:00
Manolis Papadeas 5995788ef7 Update donors & translators 2022-03-11 00:45:48 +02:00
Manolis Papadeas c00aac944e Translate the panel tab names 2022-03-10 19:17:28 +02:00
Manolis Papadeas 294738e48a Disable "From Current Palette" preset option when creating a new palette, if there is no current palette
Fixes #659
2022-03-07 19:33:23 +02:00
Manolis Papadeas 07473bea95 Update UI.gd 2022-03-06 00:15:25 +02:00
Variable 57ea4d25f1
Draw optimizer (#657)
* draw optimizer

* improvements

* some memory improvements

don't think this one's needed but doing it just in case...

* formatting

* add limit change with brush

* fixed a small bug

cache was being kept when frames were changed

* formatting

* change `_cache_limit` on changing `_brush_size`
2022-03-03 14:54:27 +02:00
Manolis Papadeas ce026395df Remember layout on app exit 2022-03-02 00:41:22 +02:00
Manolis Papadeas 2f9de65805 Zen mode no longer makes invisible elements visible again 2022-03-02 00:01:28 +02:00
Manolis Papadeas 175eb0b250 Set minimum size in tools, tool options and timeline 2022-03-01 21:39:07 +02:00
Manolis Papadeas da34f0ae7b Center the global tool options 2022-03-01 02:16:53 +02:00
Manolis Papadeas 092ddc0a7a Fix crash when we change a non-existant texture in a TextureRect
This should never happen, but just in case.
2022-02-28 20:40:13 +02:00
Manolis Papadeas 68414f5bd9 Made pixel perfect into a global tool option
More global tool options will most likely be added soon, most notably tablet pen pressure sensitivity options.
2022-02-28 19:24:14 +02:00
Manolis Papadeas b316cadfb8 Separate global tool options from the color pickers 2022-02-28 18:59:30 +02:00
Variable bec30112f6
improvements to copy\delete methods and (some) tag workflow (#648)
* improvements to copy and delete methods

To allow cloning/deleting an array of frames

* formatting

* adapt to the new copy/delete methods

* Update AnimationTimeline.gd

* removed some bugs

* changed old tag behaviour

tags ahead get further by 1 frame on add_frame()

* modified tag behaviour

* formatting

* removed tag interaction
2022-02-28 03:31:17 +02:00
Manolis Papadeas e05ee53839 Fix mirror button textures having the opposite file name 2022-02-26 19:50:43 +02:00
Variable de2d7b7748
A simple id for extensions (#653)
* A simple id for extensions

A simple id system for extensions using the benefit of groups

* formatting
2022-02-26 16:14:13 +02:00
Variable 906123bab1
Sync import options (#624)
* sync import options (1/2)

* sync import options (2/2)

* resolve format check

* a minor improvement +

some code formatting

* some more formatting

* Some  more formatting

...the checks becoming a pain...

* again you guessed it!

CODE FORMATTING

* used checkbutton instead of simple button

* formatting
2022-02-25 16:08:11 +02:00
Manolis Papadeas 8e126c3bab Load shaders by dragging and dropping and support hint_range values
This is for the experimental shader feature, which isn't exposed to the user yet.
2022-02-24 03:38:13 +02:00
Manolis Papadeas d4373a680b Use preload on the tool scenes again
This makes the initial app load time fast again, as it used to be before the tool logic changes. The code is uglier to read now but it's worth it.

Also optimize update_tool_cursors()
2022-02-23 00:10:16 +02:00
Manolis Papadeas 63a9f2485c Support tools that don't have shortcuts
Might be useful for Extensions that add tools and for the future where we allow users more freedom with shortcut binding, including unbinding shortcuts.
2022-02-22 23:38:47 +02:00
Manolis Papadeas 77f598d969 Added remove_tool() method in Tools
May be useful for extensions that add new tools
2022-02-22 02:58:52 +02:00
Manolis Papadeas 4d3cb86800 Change the look of the mirror buttons 2022-02-21 20:04:39 +02:00
Manolis Papadeas 200d1c73a1 Add a clear_color property to the themes 2022-02-21 18:44:46 +02:00
Manolis Papadeas add9ba926e Remove pre-set tool button nodes, tool setup now being done only in the Tools singleton
Now when making a new tool we only have to set it up in Tools.gd, along with its button and cursor textures and its tool options scene. Previously, we also had to put it in ToolButtons.gd and manually create a button in Tools.tscn
2022-02-21 18:02:02 +02:00
Manolis Papadeas 5bf9da243f Add the Extensions parent node to Main.tscn 2022-02-21 15:46:08 +02:00
Manolis Papadeas 8d0418fe21 Don't do anything if the user adds an already existing extension
The .pck file gets replaced but changes will only be visible on app restart, as there's no way (I think) to unload and then reload the .pck file.
2022-02-21 03:33:05 +02:00
Manolis Papadeas 375f3d4cb6 Implement a basic extension system
Importing .pck or .zip Godot resource pack files into Pixelorama is now possible. This needs to be documented properly, but here's the basic idea, for now at least. This is super early work and I haven't tested it with a proper extension yet, so all of this could be a subject of change. I tested it with a custom theme extension though and it seems to be working perfectly.

Importing resource pack files, either by dragging and dropping them into the app window or by going to Edit>Preferences>Extensions>Add Extension, copies the files into user://extensions/. Extensions can be enabled/disabled and uninstalled. Uninstalling them deletes the resource pack files from user://extensions/.

The extension project source files need to be in a folder inside src/Extensions/ with the same name as the .pck or .zip file. **This is required for now, otherwise it will not work.** Inside that folder there also needs to be an extension.json file, with a structure similar to this:

{
	"name": "ExtensionName",
	"display_name": "Extension Name",
	"description": "A Pixelorama extension",
	"author": "Orama Interactive",
	"version": "0.1",
	"license": "MIT",
	"nodes": [
		"ExtensionExample.tscn"
	]
}

The `nodes` array leads to the packed scene files with the nodes that are to be instantiated. **The root nodes of these scenes need to have the same name as the .tscn files they belong to.** The scripts of these nodes should have _enter_tree() and _exit_tree() methods to handle the extension enabling/disabling (or even uninstalling) logic. Note that .json files need to be included in the export options while exporting the extension from Godot.

Enabling an extension means that the scenes found in the extension.json's "nodes" array get instantiated, and disabling gets rid of these nodes from Pixelorama's SceneTree.
2022-02-19 03:21:08 +02:00
Manolis Papadeas bafcb2620a Tidy up preferences code
Use a Preference class instead of a nested array. Lines of code reduced from 461 to 330. Also fixed a minor bug in the Web version where, when the user changed language, "Interface" was being selected instead.
2022-02-18 01:47:05 +02:00
Manolis Papadeas d37d3c5d3d Even more theme code tidying 2022-02-17 20:57:54 +02:00
Manolis Papadeas 71dcb9807d Theme code cleaning and tidying 2022-02-17 20:36:10 +02:00
Manolis Papadeas 290e8cdb18 Remove mirror nodes from the tool scenes 2022-02-17 16:12:07 +02:00
Manolis Papadeas 93622d5761 Mirroring buttons now affect both left & right tools 2022-02-17 16:07:03 +02:00
Manolis Papadeas 9e7748d2ec Fix rare issue where the splash screen never appears and the program is unresponsive 2022-02-17 15:22:34 +02:00
Manolis Papadeas 8b53773d2d Split View menu into View and Window menus 2022-02-17 00:54:09 +02:00
Manolis Papadeas e0d2393eb2 Fix crash when importing .tres files that are not palettes 2022-02-16 18:23:32 +02:00
Variable 008683a33a
Novhack fill shader (#649)
* Get same color pixels shader (#2)

* Replace same color pixels bucket code with a shader

* Add pattern fill

Co-authored-by: novhack <42614907+novhack@users.noreply.github.com>

* formatting

* some minor changes and fixed a bug

* added similarity feature

* formatting

* Update Bucket.gd

* added similarity feature in shader

Co-authored-by: novhack <42614907+novhack@users.noreply.github.com>
2022-02-16 00:15:53 +02:00
Manolis Papadeas 196c5c2d5d Make the second canvas a separate panel and have it hidden by default 2022-02-15 01:48:49 +02:00
Manolis Papadeas a29aadd519 Use deferred mode for gradient color pickers - Closes #645 2022-02-14 15:37:18 +02:00
Manolis Papadeas 88578fe260 Set the min size of the tools to be a bit smaller 2022-02-13 00:12:47 +02:00
Manolis Papadeas d26d1e294b Fix cursor always being a cross on the canvas even if it's toggled off 2022-02-12 04:25:08 +02:00
Variable f7e866e9cb
Shader vision - Grayscale view (#646)
* ShaderVision Funcionality

* reference to ShaderVision

* Greyscale shader

* A minor code improvement

* decided on a checkbox

* decided on a checkbox

i foresaw the earlier implementation isn't required so i decided on a checkbox

* removed unneeded code

* reverted a mistake commit

* Update TopMenuContainer.gd

* Precieved Brightness
2022-02-12 00:47:26 +02:00
Variable 25fd6026be
Move Guides without moving mouse outside canvas (#647)
* guide movement enhancement

* Gave more access to pan tool

* Update Guide.gd

* Update Guide.gd

* Update Tools.gd
2022-02-11 03:16:33 +02:00
Manolis Papadeas 74df57ed70 Add extra cursor options to the Preferences
Changes "Indicators" to "Cursors" and adds options that let the user use the native mouse cursors of the OS and toggle the cross cursor on or off for the canvas
2022-02-10 22:32:55 +02:00
Manolis Papadeas 1285fa89c5 Added a Scrollcontainer in the timeline
This fixes the issue with the timeline UI nodes affecting the rest of the panels if the timeline becomes too small. Kind of an ugly fix because there can now be two scrollbars visible if there are many frames, eventually we may need to redesign the timeline.
2022-02-10 19:15:57 +02:00
Manolis Papadeas a3e933cf4f Fix a bug where the selection got stuck to the canvas boundaries when they were 1px away from them 2022-02-09 16:14:16 +02:00
Manolis Papadeas a331d697ed Move some variables in AnimationTimeline
No functional changes
2022-02-07 18:10:29 +02:00
Manolis Papadeas 4fe65fabf7 Rename "Dockers" to "Panels" and update Translations.pot 2022-02-07 01:18:19 +02:00
Manolis Papadeas 8394f252f7 Implemented a system that lets the user make and delete their own UI layouts
Layouts are being saved as .tres files in user://layouts
2022-02-06 01:49:54 +02:00
Manolis Papadeas 26d5b8de40 Added MysteryStudio to the splash screen 2022-02-05 23:50:02 +02:00
Manolis Papadeas 1dd7d23682 Minor timeline UI fix 2022-02-04 17:03:57 +02:00
Manolis Papadeas ad9d8cfdbc Properly fix the palette panel initialization issue
And remove the hacky way. The issue is that the swatches were being created and then queue_freed at the end of the frame and not immediately.
2022-02-03 19:57:53 +02:00
Manolis Papadeas f96879012d Fix orphan node 2022-02-03 02:41:14 +02:00
Manolis Papadeas 0893a5b481 Added frame duration appear in the frame button tooltips
Code provided by @Variable-ind
2022-02-02 18:14:16 +02:00
Manolis Papadeas 13229031ed Turn zen mode off when switching between layouts 2022-02-02 02:51:43 +02:00
Variable 4369869e1f
Some Popup changes and added Self Awareness ;) (#644)
* Some Popup changes and added self awareness

start/end is automatically determined by selected cels boundary

* Update FrameTagDialog.gd

* some more code formatting
2022-02-02 00:40:37 +02:00