Add return value for texture loading

This commit is contained in:
Shylie
2024-05-29 07:16:01 -04:00
parent ae2052f8a9
commit cf9ab6c0a1
3 changed files with 25 additions and 8 deletions

View File

@@ -815,29 +815,41 @@ void glerminal_layer_scale(unsigned char layer, float scale)
GLERMINAL_G->layer_scale(layer, scale);
}
void glerminal_load_sprites_file(const char* filename)
int glerminal_load_sprites_file(const char* filename)
{
if (!GLERMINAL_G) { return; }
if (!GLERMINAL_G) { return false; }
bool success = false;
int w, h;
stbi_uc* const buffer = stbi_load(filename, &w, &h, nullptr, 4);
// verify atlas size is a multiple of CELL_SIZE in each dimension
if (w % glerminal::CELL_SIZE == 0 && h % glerminal::CELL_SIZE == 0)
if (buffer && w % glerminal::CELL_SIZE == 0 && h % glerminal::CELL_SIZE == 0)
{
GLERMINAL_G->load_atlas(w / glerminal::CELL_SIZE, h / glerminal::CELL_SIZE, reinterpret_cast<unsigned int*>(buffer));
success = true;
}
stbi_image_free(buffer);
return success;
}
void glerminal_load_sprites_buffer(unsigned char width, unsigned char height, const unsigned int* buffer)
int glerminal_load_sprites_buffer(unsigned char width, unsigned char height, const unsigned int* buffer)
{
if (!GLERMINAL_G) { return; }
if (!GLERMINAL_G) { return false; }
// verify atlas size is a multiple of CELL_SIZE in each dimension
if (width % glerminal::CELL_SIZE == 0 && height % glerminal::CELL_SIZE == 0)
{
GLERMINAL_G->load_atlas(width / glerminal::CELL_SIZE, height / glerminal::CELL_SIZE, buffer);
return true;
}
else
{
return false;
}
}