added Texture::get/set data for Color*

This commit is contained in:
Noel Berry 2022-02-12 00:15:07 -08:00
parent 1caa31032b
commit d559f1c8ee
2 changed files with 23 additions and 2 deletions

View File

@ -1,6 +1,7 @@
#pragma once
#include <blah/common.h>
#include <blah/filesystem.h>
#include <blah/math/color.h>
namespace Blah
{
@ -74,12 +75,20 @@ namespace Blah
// Sets the data of the Texture.
// Note that the data should be the same format and size as the Texture. There is no row padding.
virtual void set_data(unsigned char* data) = 0;
virtual void set_data(const u8* data) = 0;
// Sets the data of the Texture to the provided Color buffer.
// If the Texture Format is not RGBA, this won't do anything.
void set_data(const Color* data);
// Gets the data of the Texture.
// Note that the data will be written to in the same format as the Texture,
// and you should allocate enough space for the full texture. There is no row padding.
virtual void get_data(unsigned char* data) = 0;
virtual void get_data(u8* data) = 0;
// Gets the data of the Texture.
// If the Texture Format is not RGBA, this won't do anything.
void get_data(Color* data);
// Returns true if the Texture is part of a FrameBuffer
virtual bool is_framebuffer() const = 0;

View File

@ -39,3 +39,15 @@ TextureRef Texture::create(const FilePath& file)
{
return create(Image(file));
}
void Texture::set_data(const Color* data)
{
if (format() == TextureFormat::RGBA)
set_data((u8*)data);
}
void Texture::get_data(Color* data)
{
if (format() == TextureFormat::RGBA)
get_data((u8*)data);
}