You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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_