40 lines
1.2 KiB
GDScript3
40 lines
1.2 KiB
GDScript3
|
extends Node2D
|
||
|
|
||
|
@onready var camera = $Camera
|
||
|
@onready var image_viewport = $ImageViewport
|
||
|
@onready var image_sprite = $ImageViewport/ImageSprite
|
||
|
@onready var ui_container = $UI_Layer/UserInterfaceContainer
|
||
|
@onready var ui_control_fileopen = $UI_Layer/UserInterfaceContainer/OpenFileDialog
|
||
|
@onready var ui_control_filesave = $UI_Layer/UserInterfaceContainer/SaveFileDialog
|
||
|
|
||
|
func _ready():
|
||
|
GlitchShader.target_sprite = image_sprite
|
||
|
GlitchShader.shader = ShaderPresets.presets[ShaderPresets.default_preset]
|
||
|
|
||
|
func _on_open_image_button_pressed():
|
||
|
if OS.get_name() == "Android":
|
||
|
Engine.get_singleton("GodotGetImage").getGalleryImage()
|
||
|
else:
|
||
|
ui_control_fileopen.show()
|
||
|
|
||
|
func _on_open_file_dialog_file_selected(path):
|
||
|
var img = Image.new()
|
||
|
var err = img.load(path)
|
||
|
if err == OK:
|
||
|
image_viewport.set_original_image(img)
|
||
|
GlitchShader.apply()
|
||
|
camera.fit_image()
|
||
|
else:
|
||
|
print("An error occured!")
|
||
|
|
||
|
func _on_save_image_button_pressed():
|
||
|
ui_control_filesave.show()
|
||
|
|
||
|
func _on_save_file_dialog_file_selected(path):
|
||
|
# Get viewport texture
|
||
|
await RenderingServer.frame_post_draw # for good measure
|
||
|
var img = image_viewport.get_texture().get_image()
|
||
|
var err = img.save_png(path)
|
||
|
if err != OK:
|
||
|
print("An error occured!")
|