mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-03-16 16:25:17 +00:00
Compare commits
No commits in common. "64b2b7b9afa745245e979d167bdd38ae093bf72d" and "dbfd4d84120731b5cfa1c95109ea9990799cac2c" have entirely different histories.
64b2b7b9af
...
dbfd4d8412
18 changed files with 20 additions and 275 deletions
Translations
project.godotsrc
Autoload
Classes
Palette
Shaders/Effects
Tools/3DTools
UI
Canvas
Dialogs/ImageEffects
Nodes
Timeline
TopMenuContainer
|
@ -978,14 +978,6 @@ msgstr ""
|
|||
msgid "Steps:"
|
||||
msgstr ""
|
||||
|
||||
#. An image effect. It 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.
|
||||
msgid "Palettize"
|
||||
msgstr ""
|
||||
|
||||
#. An image effect. It makes the input image pixelated.
|
||||
msgid "Pixelize"
|
||||
msgstr ""
|
||||
|
||||
#. An image effect. For more details about what it does, you can refer to GIMP's documentation https://docs.gimp.org/2.8/en/gimp-tool-posterize.html
|
||||
msgid "Posterize"
|
||||
msgstr ""
|
||||
|
|
|
@ -845,14 +845,6 @@ project_properties={
|
|||
"deadzone": 0.5,
|
||||
"events": []
|
||||
}
|
||||
palettize={
|
||||
"deadzone": 0.5,
|
||||
"events": []
|
||||
}
|
||||
pixelize={
|
||||
"deadzone": 0.5,
|
||||
"events": []
|
||||
}
|
||||
|
||||
[input_devices]
|
||||
|
||||
|
|
|
@ -59,8 +59,6 @@ enum EffectsMenu {
|
|||
INVERT_COLORS,
|
||||
DESATURATION,
|
||||
HSV,
|
||||
PALETTIZE,
|
||||
PIXELIZE,
|
||||
POSTERIZE,
|
||||
GRADIENT,
|
||||
GRADIENT_MAP,
|
||||
|
@ -741,8 +739,6 @@ func _initialize_keychain() -> void:
|
|||
"adjust_hsv": Keychain.InputAction.new("", "Effects menu", true),
|
||||
"gradient": Keychain.InputAction.new("", "Effects menu", true),
|
||||
"gradient_map": Keychain.InputAction.new("", "Effects menu", true),
|
||||
&"palettize": Keychain.InputAction.new("", "Effects menu", true),
|
||||
&"pixelize": Keychain.InputAction.new("", "Effects menu", true),
|
||||
"posterize": Keychain.InputAction.new("", "Effects menu", true),
|
||||
"mirror_view": Keychain.InputAction.new("", "View menu", true),
|
||||
"show_grid": Keychain.InputAction.new("", "View menu", true),
|
||||
|
@ -1148,16 +1144,14 @@ func create_ui_for_shader_uniforms(
|
|||
hbox.add_child(label)
|
||||
hbox.add_child(slider)
|
||||
parent_node.add_child(hbox)
|
||||
elif u_type == "vec2" or u_type == "ivec2" or u_type == "uvec2":
|
||||
elif u_type == "vec2":
|
||||
var label := Label.new()
|
||||
label.text = humanized_u_name
|
||||
label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
var vector2 := _vec2str_to_vector2(u_value)
|
||||
var slider := VALUE_SLIDER_V2_TSCN.instantiate() as ValueSliderV2
|
||||
slider.show_ratio = true
|
||||
slider.allow_greater = true
|
||||
if u_type != "uvec2":
|
||||
slider.allow_lesser = true
|
||||
slider.allow_lesser = true
|
||||
slider.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
slider.value = vector2
|
||||
if params.has(u_name):
|
||||
|
@ -1192,17 +1186,6 @@ func create_ui_for_shader_uniforms(
|
|||
elif u_type == "sampler2D":
|
||||
if u_name == "selection":
|
||||
continue
|
||||
if u_name == "palette_texture":
|
||||
var palette := Palettes.current_palette
|
||||
var palette_texture := ImageTexture.create_from_image(palette.convert_to_image())
|
||||
value_changed.call(palette_texture, u_name)
|
||||
Palettes.palette_selected.connect(
|
||||
func(_name): _shader_change_palette(value_changed, u_name)
|
||||
)
|
||||
palette.data_changed.connect(
|
||||
func(): _shader_update_palette_texture(palette, value_changed, u_name)
|
||||
)
|
||||
continue
|
||||
var label := Label.new()
|
||||
label.text = humanized_u_name
|
||||
label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
|
@ -1258,8 +1241,6 @@ func create_ui_for_shader_uniforms(
|
|||
|
||||
|
||||
func _vec2str_to_vector2(vec2: String) -> Vector2:
|
||||
vec2 = vec2.replace("uvec2", "vec2")
|
||||
vec2 = vec2.replace("ivec2", "vec2")
|
||||
vec2 = vec2.replace("vec2(", "")
|
||||
vec2 = vec2.replace(")", "")
|
||||
var vec_values := vec2.split(",")
|
||||
|
@ -1291,18 +1272,3 @@ func _vec4str_to_color(vec4: String) -> Color:
|
|||
alpha = float(rgba_values[3])
|
||||
var color := Color(red, green, blue, alpha)
|
||||
return color
|
||||
|
||||
|
||||
func _shader_change_palette(value_changed: Callable, parameter_name: String) -> void:
|
||||
var palette := Palettes.current_palette
|
||||
_shader_update_palette_texture(palette, value_changed, parameter_name)
|
||||
#if not palette.data_changed.is_connected(_shader_update_palette_texture):
|
||||
palette.data_changed.connect(
|
||||
func(): _shader_update_palette_texture(palette, value_changed, parameter_name)
|
||||
)
|
||||
|
||||
|
||||
func _shader_update_palette_texture(
|
||||
palette: Palette, value_changed: Callable, parameter_name: String
|
||||
) -> void:
|
||||
value_changed.call(ImageTexture.create_from_image(palette.convert_to_image()), parameter_name)
|
||||
|
|
|
@ -7,16 +7,6 @@ signal done
|
|||
|
||||
func generate_image(img: Image, shader: Shader, params: Dictionary, size: Vector2i) -> void:
|
||||
# duplicate shader before modifying code to avoid affecting original resource
|
||||
var resized_width := false
|
||||
var resized_height := false
|
||||
if size.x == 1:
|
||||
size.x = 2
|
||||
img.crop(2, img.get_height())
|
||||
resized_width = true
|
||||
if size.y == 1:
|
||||
size.y = 2
|
||||
img.crop(img.get_width(), 2)
|
||||
resized_height = true
|
||||
shader = shader.duplicate()
|
||||
shader.code = shader.code.replace("unshaded", "unshaded, blend_premul_alpha")
|
||||
var vp := RenderingServer.viewport_create()
|
||||
|
@ -56,8 +46,4 @@ func generate_image(img: Image, shader: Shader, params: Dictionary, size: Vector
|
|||
RenderingServer.free_rid(texture)
|
||||
viewport_texture.convert(Image.FORMAT_RGBA8)
|
||||
img.copy_from(viewport_texture)
|
||||
if resized_width:
|
||||
img.crop(img.get_width() - 1, img.get_height())
|
||||
if resized_height:
|
||||
img.crop(img.get_width(), img.get_height() - 1)
|
||||
done.emit()
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
class_name Palette
|
||||
extends RefCounted
|
||||
|
||||
signal data_changed
|
||||
|
||||
const DEFAULT_WIDTH := 8
|
||||
const DEFAULT_HEIGHT := 8
|
||||
|
||||
|
@ -174,7 +172,6 @@ func add_color(new_color: Color, start_index := 0) -> void:
|
|||
if not colors.has(i):
|
||||
colors[i] = PaletteColor.new(new_color, i)
|
||||
break
|
||||
data_changed.emit()
|
||||
|
||||
|
||||
## Returns color at index or null if no color exists
|
||||
|
@ -189,13 +186,11 @@ func get_color(index: int):
|
|||
func set_color(index: int, new_color: Color) -> void:
|
||||
if colors.has(index):
|
||||
colors[index].color = new_color
|
||||
data_changed.emit()
|
||||
|
||||
|
||||
## Removes a color at the specified index
|
||||
func remove_color(index: int) -> void:
|
||||
colors.erase(index)
|
||||
data_changed.emit()
|
||||
|
||||
|
||||
## Inserts a color to the specified index
|
||||
|
@ -205,13 +200,12 @@ func insert_color(index: int, new_color: Color) -> void:
|
|||
# If insert happens on non empty swatch recursively move the original color
|
||||
# and every other color to its right one swatch to right
|
||||
if colors[index] != null:
|
||||
_move_right(index)
|
||||
move_right(index)
|
||||
colors[index] = c
|
||||
data_changed.emit()
|
||||
|
||||
|
||||
## Recursive function that moves every color to right until one of them is moved to empty swatch
|
||||
func _move_right(index: int) -> void:
|
||||
func move_right(index: int) -> void:
|
||||
# Moving colors to right would overflow the size of the palette
|
||||
# so increase its height automatically
|
||||
if index + 1 == colors_max:
|
||||
|
@ -220,7 +214,7 @@ func _move_right(index: int) -> void:
|
|||
|
||||
# If swatch to right to this color is not empty move that color right too
|
||||
if colors[index + 1] != null:
|
||||
_move_right(index + 1)
|
||||
move_right(index + 1)
|
||||
|
||||
colors[index + 1] = colors[index]
|
||||
|
||||
|
@ -243,7 +237,6 @@ func swap_colors(from_index: int, to_index: int) -> void:
|
|||
colors[to_index].index = to_index
|
||||
colors[from_index] = to_color
|
||||
colors[from_index].index = from_index
|
||||
data_changed.emit()
|
||||
|
||||
|
||||
## Copies color
|
||||
|
@ -252,7 +245,6 @@ func copy_colors(from_index: int, to_index: int) -> void:
|
|||
if colors[from_index] != null:
|
||||
colors[to_index] = colors[from_index].duplicate()
|
||||
colors[to_index].index = to_index
|
||||
data_changed.emit()
|
||||
|
||||
|
||||
func reverse_colors() -> void:
|
||||
|
@ -262,7 +254,6 @@ func reverse_colors() -> void:
|
|||
for i in reversed_colors.size():
|
||||
reversed_colors[i].index = i
|
||||
colors[i] = reversed_colors[i]
|
||||
data_changed.emit()
|
||||
|
||||
|
||||
func sort(option: Palettes.SortOptions) -> void:
|
||||
|
@ -288,7 +279,6 @@ func sort(option: Palettes.SortOptions) -> void:
|
|||
for i in sorted_colors.size():
|
||||
sorted_colors[i].index = i
|
||||
colors[i] = sorted_colors[i]
|
||||
data_changed.emit()
|
||||
|
||||
|
||||
## True if all swatches are occupied
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
// Maps the color of the input to the nearest color in the selected palette.
|
||||
// Similar to Krita's Palettize filter
|
||||
shader_type canvas_item;
|
||||
|
||||
uniform sampler2D palette_texture : filter_nearest;
|
||||
uniform sampler2D selection;
|
||||
|
||||
vec4 swap_color(vec4 color) {
|
||||
if (color.a <= 0.01) {
|
||||
return color;
|
||||
}
|
||||
int color_index = 0;
|
||||
int n_of_colors = textureSize(palette_texture, 0).x;
|
||||
float smaller_distance = distance(color, texture(palette_texture, vec2(0.0)));
|
||||
for (int i = 0; i <= n_of_colors; i++) {
|
||||
vec2 uv = vec2(float(i) / float(n_of_colors), 0.0);
|
||||
vec4 palette_color = texture(palette_texture, uv);
|
||||
float dist = distance(color, palette_color);
|
||||
if (dist < smaller_distance) {
|
||||
smaller_distance = dist;
|
||||
color_index = i;
|
||||
}
|
||||
}
|
||||
return texture(palette_texture, vec2(float(color_index) / float(n_of_colors), 0.0));
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
vec4 original_color = texture(TEXTURE, UV);
|
||||
vec4 selection_color = texture(selection, UV);
|
||||
vec4 color = swap_color(original_color);
|
||||
COLOR = mix(original_color.rgba, color, selection_color.a);
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
/*
|
||||
Shader from Godot Shaders - the free shader library.
|
||||
https://godotshaders.com/shader/pixelate-2/
|
||||
|
||||
This shader is under MIT license
|
||||
*/
|
||||
shader_type canvas_item;
|
||||
|
||||
uniform uvec2 pixel_size = uvec2(4);
|
||||
uniform sampler2D selection;
|
||||
|
||||
void fragment() {
|
||||
vec4 original_color = texture(TEXTURE, UV);
|
||||
vec4 selection_color = texture(selection, UV);
|
||||
ivec2 size = textureSize(TEXTURE, 0);
|
||||
int xRes = size.x;
|
||||
int yRes = size.y;
|
||||
float xFactor = float(xRes) / float(pixel_size.x);
|
||||
float yFactor = float(yRes) / float(pixel_size.y);
|
||||
float grid_uv_x = round(UV.x * xFactor) / xFactor;
|
||||
float grid_uv_y = round(UV.y * yFactor) / yFactor;
|
||||
vec4 pixelated_color = texture(TEXTURE, vec2(grid_uv_x, grid_uv_y));
|
||||
|
||||
COLOR = mix(original_color.rgba, pixelated_color, selection_color.a);
|
||||
}
|
|
@ -463,15 +463,8 @@ func _fill_object_option_button() -> void:
|
|||
return
|
||||
object_option_button.clear()
|
||||
object_option_button.add_item("None", 0)
|
||||
var existing_names := {}
|
||||
for id in _cel.object_properties:
|
||||
var item_name: String = _object_names[_cel.object_properties[id]["type"]]
|
||||
if item_name in existing_names:
|
||||
# If there is already an object with the same name, under a number next to it
|
||||
existing_names[item_name] += 1
|
||||
item_name += " (%s)" % existing_names[item_name]
|
||||
else:
|
||||
existing_names[item_name] = 1
|
||||
object_option_button.add_item(item_name, id + 1)
|
||||
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ enum { X, Y, Z }
|
|||
|
||||
const ARROW_LENGTH := 14
|
||||
const LIGHT_ARROW_LENGTH := 25
|
||||
const GIZMO_WIDTH := 0.4
|
||||
const GIZMO_WIDTH := 1.1
|
||||
const SCALE_CIRCLE_LENGTH := 8
|
||||
const SCALE_CIRCLE_RADIUS := 1
|
||||
const CHAR_SCALE := 0.16
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
extends ImageEffect
|
||||
|
||||
var shader := preload("res://src/Shaders/Effects/Palettize.gdshader")
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
var sm := ShaderMaterial.new()
|
||||
sm.shader = shader
|
||||
preview.set_material(sm)
|
||||
|
||||
|
||||
func commit_action(cel: Image, project := Global.current_project) -> void:
|
||||
var selection_tex: ImageTexture
|
||||
if selection_checkbox.button_pressed and project.has_selection:
|
||||
selection_tex = ImageTexture.create_from_image(project.selection_map)
|
||||
|
||||
if not is_instance_valid(Palettes.current_palette):
|
||||
return
|
||||
var palette_image := Palettes.current_palette.convert_to_image()
|
||||
var palette_texture := ImageTexture.create_from_image(palette_image)
|
||||
|
||||
var params := {"palette_texture": palette_texture, "selection": selection_tex}
|
||||
if !has_been_confirmed:
|
||||
for param in params:
|
||||
preview.material.set_shader_parameter(param, params[param])
|
||||
else:
|
||||
var gen := ShaderImageEffect.new()
|
||||
gen.generate_image(cel, shader, params, project.size)
|
|
@ -1,11 +0,0 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://d4gbo50bjenut"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bybqhhayl5ay5" path="res://src/UI/Dialogs/ImageEffects/ImageEffectParent.tscn" id="1_cux3a"]
|
||||
[ext_resource type="Script" path="res://src/UI/Dialogs/ImageEffects/PalettizeDialog.gd" id="2_4517g"]
|
||||
|
||||
[node name="PalettizeDialog" instance=ExtResource("1_cux3a")]
|
||||
title = "Palettize"
|
||||
script = ExtResource("2_4517g")
|
||||
|
||||
[node name="ShowAnimate" parent="VBoxContainer" index="0"]
|
||||
visible = false
|
|
@ -1,30 +0,0 @@
|
|||
extends ImageEffect
|
||||
|
||||
var shader := preload("res://src/Shaders/Effects/Pixelize.gdshader")
|
||||
var pixel_size := Vector2i.ONE
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
var sm := ShaderMaterial.new()
|
||||
sm.shader = shader
|
||||
preview.set_material(sm)
|
||||
|
||||
|
||||
func commit_action(cel: Image, project := Global.current_project) -> void:
|
||||
var selection_tex: ImageTexture
|
||||
if selection_checkbox.button_pressed and project.has_selection:
|
||||
selection_tex = ImageTexture.create_from_image(project.selection_map)
|
||||
|
||||
var params := {"pixel_size": pixel_size, "selection": selection_tex}
|
||||
if !has_been_confirmed:
|
||||
for param in params:
|
||||
preview.material.set_shader_parameter(param, params[param])
|
||||
else:
|
||||
var gen := ShaderImageEffect.new()
|
||||
gen.generate_image(cel, shader, params, project.size)
|
||||
|
||||
|
||||
func _on_pixel_size_value_changed(value: Vector2) -> void:
|
||||
pixel_size = value
|
||||
update_preview()
|
|
@ -1,31 +0,0 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://ts831nyvn6y7"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bybqhhayl5ay5" path="res://src/UI/Dialogs/ImageEffects/ImageEffectParent.tscn" id="1_eiotn"]
|
||||
[ext_resource type="Script" path="res://src/UI/Dialogs/ImageEffects/PixelizeDialog.gd" id="2_x5pd6"]
|
||||
[ext_resource type="PackedScene" path="res://src/UI/Nodes/ValueSliderV2.tscn" id="3_s7ey1"]
|
||||
|
||||
[node name="PixelizeDialog" instance=ExtResource("1_eiotn")]
|
||||
title = "Pixelize"
|
||||
script = ExtResource("2_x5pd6")
|
||||
|
||||
[node name="ShowAnimate" parent="VBoxContainer" index="0"]
|
||||
visible = false
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer" index="2"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer" index="0"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Pixel size:"
|
||||
|
||||
[node name="PixelSize" parent="VBoxContainer/HBoxContainer" index="1" instance=ExtResource("3_s7ey1")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
value = Vector2(1, 1)
|
||||
min_value = Vector2(1, 1)
|
||||
max_value = Vector2(255, 255)
|
||||
allow_greater = true
|
||||
show_ratio = true
|
||||
|
||||
[connection signal="value_changed" from="VBoxContainer/HBoxContainer/PixelSize" to="." method="_on_pixel_size_value_changed"]
|
|
@ -4,7 +4,7 @@ extends HBoxContainer
|
|||
## A class that combines two ValueSlider nodes, for easy usage with Vector2 values.
|
||||
## Also supports aspect ratio locking.
|
||||
|
||||
signal value_changed(value: Vector2)
|
||||
signal value_changed(value: float)
|
||||
signal ratio_toggled(button_pressed: bool)
|
||||
|
||||
@export var editable := true:
|
||||
|
|
|
@ -45,7 +45,7 @@ func _ready() -> void:
|
|||
for child in get_children():
|
||||
if not child is Button:
|
||||
continue
|
||||
var texture := child.get_child(0)
|
||||
var texture = child.get_child(0)
|
||||
if not texture is TextureRect:
|
||||
continue
|
||||
texture.modulate = Global.modulate_icon_color
|
||||
|
|
|
@ -18,12 +18,7 @@ size_flags_horizontal = 3
|
|||
theme_override_constants/separation = 0
|
||||
script = ExtResource("1_6hlpe")
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
||||
custom_minimum_size = Vector2(84, 0)
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 0
|
||||
|
||||
[node name="VisibilityButton" type="Button" parent="HBoxContainer" groups=["UIButtons"]]
|
||||
[node name="VisibilityButton" type="Button" parent="." groups=["UIButtons"]]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(28, 22)
|
||||
layout_mode = 2
|
||||
|
@ -31,7 +26,7 @@ tooltip_text = "Toggle layer's visibility"
|
|||
focus_mode = 0
|
||||
mouse_default_cursor_shape = 2
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/VisibilityButton"]
|
||||
[node name="TextureRect" type="TextureRect" parent="VisibilityButton"]
|
||||
layout_mode = 0
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
|
@ -45,7 +40,7 @@ size_flags_horizontal = 0
|
|||
size_flags_vertical = 0
|
||||
texture = ExtResource("2_ef6fb")
|
||||
|
||||
[node name="LockButton" type="Button" parent="HBoxContainer" groups=["UIButtons"]]
|
||||
[node name="LockButton" type="Button" parent="." groups=["UIButtons"]]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(28, 22)
|
||||
layout_mode = 2
|
||||
|
@ -53,7 +48,7 @@ tooltip_text = "Lock/unlock layer"
|
|||
focus_mode = 0
|
||||
mouse_default_cursor_shape = 2
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/LockButton"]
|
||||
[node name="TextureRect" type="TextureRect" parent="LockButton"]
|
||||
layout_mode = 0
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
|
@ -67,7 +62,7 @@ size_flags_horizontal = 0
|
|||
size_flags_vertical = 0
|
||||
texture = ExtResource("3_ah1my")
|
||||
|
||||
[node name="LinkButton" type="Button" parent="HBoxContainer" groups=["UIButtons"]]
|
||||
[node name="LinkButton" type="Button" parent="." groups=["UIButtons"]]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
custom_minimum_size = Vector2(28, 22)
|
||||
|
@ -78,7 +73,7 @@ Linked cels share content across multiple frames"
|
|||
focus_mode = 0
|
||||
mouse_default_cursor_shape = 2
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/LinkButton"]
|
||||
[node name="TextureRect" type="TextureRect" parent="LinkButton"]
|
||||
layout_mode = 0
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
|
@ -92,7 +87,7 @@ size_flags_horizontal = 0
|
|||
size_flags_vertical = 0
|
||||
texture = ExtResource("4_058qm")
|
||||
|
||||
[node name="ExpandButton" type="Button" parent="HBoxContainer" groups=["UIButtons"]]
|
||||
[node name="ExpandButton" type="Button" parent="." groups=["UIButtons"]]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
custom_minimum_size = Vector2(28, 22)
|
||||
|
@ -101,7 +96,7 @@ tooltip_text = "Expand/collapse group"
|
|||
focus_mode = 0
|
||||
mouse_default_cursor_shape = 2
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/ExpandButton"]
|
||||
[node name="TextureRect" type="TextureRect" parent="ExpandButton"]
|
||||
layout_mode = 0
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
|
@ -175,10 +170,10 @@ item_1/text = "Clipping mask"
|
|||
item_1/checkable = 1
|
||||
item_1/id = 1
|
||||
|
||||
[connection signal="pressed" from="HBoxContainer/VisibilityButton" to="." method="_on_visibility_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/LockButton" to="." method="_on_lock_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/LinkButton" to="." method="_on_link_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/ExpandButton" to="." method="_on_expand_button_pressed"]
|
||||
[connection signal="pressed" from="VisibilityButton" to="." method="_on_visibility_button_pressed"]
|
||||
[connection signal="pressed" from="LockButton" to="." method="_on_lock_button_pressed"]
|
||||
[connection signal="pressed" from="LinkButton" to="." method="_on_link_button_pressed"]
|
||||
[connection signal="pressed" from="ExpandButton" to="." method="_on_expand_button_pressed"]
|
||||
[connection signal="gui_input" from="LayerMainButton" to="." method="_on_main_button_gui_input"]
|
||||
[connection signal="focus_exited" from="LayerMainButton/LayerName/LayerNameLineEdit" to="." method="_on_layer_name_line_edit_focus_exited"]
|
||||
[connection signal="id_pressed" from="PopupMenu" to="." method="_on_popup_menu_id_pressed"]
|
||||
|
|
|
@ -13,8 +13,6 @@ var effects: Array[LayerEffect] = [
|
|||
LayerEffect.new(
|
||||
"Adjust Hue/Saturation/Value", preload("res://src/Shaders/Effects/HSV.gdshader")
|
||||
),
|
||||
LayerEffect.new("Palettize", preload("res://src/Shaders/Effects/Palettize.gdshader")),
|
||||
LayerEffect.new("Pixelize", preload("res://src/Shaders/Effects/Pixelize.gdshader")),
|
||||
LayerEffect.new("Posterize", preload("res://src/Shaders/Effects/Posterize.gdshader")),
|
||||
LayerEffect.new("Gradient Map", preload("res://src/Shaders/Effects/GradientMap.gdshader")),
|
||||
]
|
||||
|
|
|
@ -29,8 +29,6 @@ var drop_shadow_dialog := Dialog.new("res://src/UI/Dialogs/ImageEffects/DropShad
|
|||
var hsv_dialog := Dialog.new("res://src/UI/Dialogs/ImageEffects/HSVDialog.tscn")
|
||||
var gradient_dialog := Dialog.new("res://src/UI/Dialogs/ImageEffects/GradientDialog.tscn")
|
||||
var gradient_map_dialog := Dialog.new("res://src/UI/Dialogs/ImageEffects/GradientMapDialog.tscn")
|
||||
var palettize_dialog := Dialog.new("res://src/UI/Dialogs/ImageEffects/PalettizeDialog.tscn")
|
||||
var pixelize_dialog := Dialog.new("res://src/UI/Dialogs/ImageEffects/PixelizeDialog.tscn")
|
||||
var posterize_dialog := Dialog.new("res://src/UI/Dialogs/ImageEffects/Posterize.tscn")
|
||||
var shader_effect_dialog := Dialog.new("res://src/UI/Dialogs/ImageEffects/ShaderEffect.tscn")
|
||||
var manage_layouts_dialog := Dialog.new("res://src/UI/Dialogs/ManageLayouts.tscn")
|
||||
|
@ -366,8 +364,6 @@ func _setup_effects_menu() -> void:
|
|||
"Invert Colors": "invert_colors",
|
||||
"Desaturation": "desaturation",
|
||||
"Adjust Hue/Saturation/Value": "adjust_hsv",
|
||||
"Palettize": "palettize",
|
||||
"Pixelize": "pixelize",
|
||||
"Posterize": "posterize",
|
||||
"Gradient": "gradient",
|
||||
"Gradient Map": "gradient_map",
|
||||
|
@ -775,10 +771,6 @@ func effects_menu_id_pressed(id: int) -> void:
|
|||
gradient_dialog.popup()
|
||||
Global.EffectsMenu.GRADIENT_MAP:
|
||||
gradient_map_dialog.popup()
|
||||
Global.EffectsMenu.PALETTIZE:
|
||||
palettize_dialog.popup()
|
||||
Global.EffectsMenu.PIXELIZE:
|
||||
pixelize_dialog.popup()
|
||||
Global.EffectsMenu.POSTERIZE:
|
||||
posterize_dialog.popup()
|
||||
#Global.EffectsMenu.SHADER:
|
||||
|
|
Loading…
Add table
Reference in a new issue