80 lines
1.5 KiB
C++
80 lines
1.5 KiB
C++
#ifndef RAYLIB_CPP_INCLUDE_TEXTURE_HPP_
|
|
#define RAYLIB_CPP_INCLUDE_TEXTURE_HPP_
|
|
|
|
#include "./TextureUnmanaged.hpp"
|
|
|
|
namespace raylib {
|
|
/**
|
|
* Texture type
|
|
*
|
|
* The texture will be unloaded on object destruction. Use raylib::TextureUnmanaged if you're looking to not unload.
|
|
*
|
|
* @see raylib::TextureUnmanaged
|
|
*/
|
|
class Texture : public TextureUnmanaged {
|
|
public:
|
|
using TextureUnmanaged::TextureUnmanaged;
|
|
|
|
/**
|
|
* Explicitly forbid the copy constructor.
|
|
*/
|
|
Texture(const Texture&) = delete;
|
|
|
|
/**
|
|
* Explicitly forbid copy assignment.
|
|
*/
|
|
Texture& operator=(const Texture&) = delete;
|
|
|
|
/**
|
|
* Move constructor.
|
|
*/
|
|
Texture(Texture&& other) {
|
|
set(other);
|
|
|
|
other.id = 0;
|
|
other.width = 0;
|
|
other.height = 0;
|
|
other.mipmaps = 0;
|
|
other.format = 0;
|
|
}
|
|
|
|
/**
|
|
* On destruction, unload the Texture.
|
|
*/
|
|
~Texture() {
|
|
Unload();
|
|
}
|
|
|
|
/**
|
|
* Move assignment.
|
|
*/
|
|
Texture& operator=(Texture&& other) noexcept {
|
|
if (this == &other) {
|
|
return *this;
|
|
}
|
|
|
|
Unload();
|
|
set(other);
|
|
|
|
other.id = 0;
|
|
other.width = 0;
|
|
other.height = 0;
|
|
other.mipmaps = 0;
|
|
other.format = 0;
|
|
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// Create the Texture aliases.
|
|
typedef Texture Texture2D;
|
|
typedef Texture TextureCubemap;
|
|
|
|
} // namespace raylib
|
|
|
|
using RTexture = raylib::Texture;
|
|
using RTexture2D = raylib::Texture2D;
|
|
using RTextureCubemap = raylib::TextureCubemap;
|
|
|
|
#endif // RAYLIB_CPP_INCLUDE_TEXTURE_HPP_
|