Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 5725f49

Browse files
committedJan 23, 2025··
Add GIF import
Add GIF file loading Add `ResourceFormatLoader` for `AnimatedTexture` Add `ImageFrames` resource for handling image sequence Add `ImageFramesLoader` for resource loading image sequences Add `ResourceFormatLoader` for `ImageFrames` Add GIF image load test assertions Add ImageFrames test cases
1 parent 46ff1e1 commit 5725f49

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+5882
-0
lines changed
 

‎COPYRIGHT.txt

+5
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,11 @@ Comment: The FreeType Project
269269
Copyright: 1996-2023, David Turner, Robert Wilhelm, and Werner Lemberg.
270270
License: FTL
271271

272+
Files: thirdparty/giflib/*
273+
Comment: giflib
274+
Copyright: 1997-2024, Eric S. Raymond
275+
License: Expat
276+
272277
Files: thirdparty/glad/*
273278
Comment: glad
274279
Copyright: 2013-2022, David Herberth

‎core/io/image.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ ImageMemLoadFunc Image::_tga_mem_loader_func = nullptr;
107107
ImageMemLoadFunc Image::_bmp_mem_loader_func = nullptr;
108108
ScalableImageMemLoadFunc Image::_svg_scalable_mem_loader_func = nullptr;
109109
ImageMemLoadFunc Image::_ktx_mem_loader_func = nullptr;
110+
ImageMemLoadFunc Image::_gif_mem_loader_func = nullptr;
110111

111112
// External VRAM compression function pointers.
112113

@@ -3579,6 +3580,7 @@ void Image::_bind_methods() {
35793580
ClassDB::bind_method(D_METHOD("load_tga_from_buffer", "buffer"), &Image::load_tga_from_buffer);
35803581
ClassDB::bind_method(D_METHOD("load_bmp_from_buffer", "buffer"), &Image::load_bmp_from_buffer);
35813582
ClassDB::bind_method(D_METHOD("load_ktx_from_buffer", "buffer"), &Image::load_ktx_from_buffer);
3583+
ClassDB::bind_method(D_METHOD("load_gif_from_buffer", "buffer"), &Image::load_gif_from_buffer);
35823584

35833585
ClassDB::bind_method(D_METHOD("load_svg_from_buffer", "buffer", "scale"), &Image::load_svg_from_buffer, DEFVAL(1.0));
35843586
ClassDB::bind_method(D_METHOD("load_svg_from_string", "svg_str", "scale"), &Image::load_svg_from_string, DEFVAL(1.0));
@@ -4104,6 +4106,14 @@ Error Image::load_ktx_from_buffer(const Vector<uint8_t> &p_array) {
41044106
return _load_from_buffer(p_array, _ktx_mem_loader_func);
41054107
}
41064108

4109+
Error Image::load_gif_from_buffer(const Vector<uint8_t> &p_array) {
4110+
ERR_FAIL_NULL_V_MSG(
4111+
_gif_mem_loader_func,
4112+
ERR_UNAVAILABLE,
4113+
"The GIF module isn't enabled. Recompile the Redot editor or export template binary with the `module_gif_enabled=yes` SCons option.");
4114+
return _load_from_buffer(p_array, _gif_mem_loader_func);
4115+
}
4116+
41074117
void Image::convert_rg_to_ra_rgba8() {
41084118
ERR_FAIL_COND(format != FORMAT_RGBA8);
41094119
ERR_FAIL_COND(data.is_empty());

0 commit comments

Comments
 (0)
Please sign in to comment.