00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "xrb_texture.hpp"
00012
00013 #include <string.h>
00014
00015 #include "xrb_pal.hpp"
00016
00017 namespace Xrb
00018 {
00019
00020 Texture::~Texture ()
00021 {
00022 DeleteArrayAndNullify(m_data);
00023 }
00024
00025 Texture *Texture::Create (std::string const &path)
00026 {
00027 return Singleton::Pal().LoadImage(path.c_str());
00028 }
00029
00030 Texture *Texture::Create (
00031 ScreenCoordVector2 const &size,
00032 bool const zero_out_the_data)
00033 {
00034 ASSERT1(size[Dim::X] > 0 && size[Dim::Y] > 0);
00035
00036 Texture *retval = Create(size, new Uint8[size[Dim::X]*size[Dim::Y]*4]);
00037 ASSERT1(retval->m_size == size);
00038 ASSERT1(retval->m_bit_depth == 32);
00039 ASSERT1(retval->m_data_length == Uint32(size[Dim::X]*size[Dim::Y]*4));
00040 if (zero_out_the_data)
00041 memset(retval->m_data, 0, retval->m_data_length);
00042
00043 return retval;
00044 }
00045
00046 Texture *Texture::Create (ScreenCoordVector2 const &size, Uint8 *data)
00047 {
00048 ASSERT1(data != NULL && "hand in non-NULL data");
00049
00050 ASSERT1(size[Dim::X] > 0 && size[Dim::Y] > 0);
00051
00052 Texture *retval = new Texture();
00053 retval->m_size = size;
00054 retval->m_bit_depth = 32;
00055 retval->m_data_length = size[Dim::X]*size[Dim::Y]*4;
00056 retval->m_data = data;
00057
00058 return retval;
00059 }
00060
00061 Texture::Texture ()
00062 :
00063 m_bit_depth(0),
00064 m_data_length(0),
00065 m_data(NULL)
00066 { }
00067
00068 }