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

Use JavaScript.download_buffer() for file downloading in the Web version

This commit makes Pixelorama unable to run in Godot versions prior to 3.4.

I wonder if there are plans for an upload_buffer() method as well...
This commit is contained in:
Manolis Papadeas 2021-11-10 20:16:25 +02:00
parent 1278553c80
commit 0c1fcdea89
3 changed files with 4 additions and 27 deletions

View file

@ -185,7 +185,7 @@ func export_processed_images(ignore_overwrites: bool, export_dialog: AcceptDialo
else:
for i in range(processed_images.size()):
if OS.get_name() == "HTML5":
Html5FileExchange.save_image(processed_images[i], export_paths[i].get_file())
JavaScript.download_buffer(processed_images[i].save_png_to_buffer(), export_paths[i].get_file(), "image/png")
else:
var err = processed_images[i].save_png(export_paths[i])
if err != OK:
@ -228,7 +228,7 @@ func export_gif(args: Dictionary) -> void:
write_frame_to_gif(processed_images[i], Global.current_project.frames[i].duration * (1 / Global.current_project.fps), exporter, args["export_dialog"])
if OS.get_name() == "HTML5":
Html5FileExchange.save_gif(exporter.export_file_data(), args["export_paths"][0])
JavaScript.download_buffer(exporter.export_file_data(), args["export_paths"][0], "image/gif")
else:
var file: File = File.new()

View file

@ -90,14 +90,6 @@ func _define_js() -> void:
}
});
}
function download(fileName, byte, type) {
var buffer = Uint8Array.from(byte);
var blob = new Blob([buffer], { type: type});
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
link.click();
};
""", true)
@ -193,21 +185,6 @@ func load_palette() -> void:
return
func save_image(image : Image, file_name : String = "export") -> void:
if OS.get_name() != "HTML5" or !OS.has_feature('JavaScript'):
return
var png_data = Array(image.save_png_to_buffer())
JavaScript.eval("download('%s', %s, 'image/png');" % [file_name, str(png_data)], true)
func save_gif(data, file_name : String = "export") -> void:
if OS.get_name() != "HTML5" or !OS.has_feature('JavaScript'):
return
JavaScript.eval("download('%s', %s, 'image/gif');" % [file_name, str(Array(data))], true)
func load_shader() -> void:
if OS.get_name() != "HTML5" or !OS.has_feature('JavaScript'):
return

View file

@ -314,11 +314,11 @@ func save_pxo_file(path : String, autosave : bool, use_zstd_compression := true,
file.close()
if OS.get_name() == "HTML5" and !autosave:
if OS.get_name() == "HTML5" and OS.has_feature('JavaScript') and !autosave:
err = file.open(path, File.READ)
if !err:
var file_data = Array(file.get_buffer(file.get_len()))
JavaScript.eval("download('%s', %s, '');" % [path.get_file(), str(file_data)], true)
JavaScript.download_buffer(file_data, path.get_file())
file.close()
# Remove the .pxo file from memory, as we don't need it anymore
var dir = Directory.new()