51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#include "game/scenes/surface_handle.hpp"
|
|
|
|
namespace scenes {
|
|
|
|
SurfaceHandle::SurfaceHandle(const char* file)
|
|
: surface_(Jd8::loadSurface(file)) {}
|
|
|
|
SurfaceHandle::~SurfaceHandle() {
|
|
if (surface_ != nullptr) {
|
|
Jd8::freeSurface(surface_);
|
|
}
|
|
}
|
|
|
|
SurfaceHandle::SurfaceHandle(SurfaceHandle&& other) noexcept
|
|
: surface_(other.surface_) {
|
|
other.surface_ = nullptr;
|
|
}
|
|
|
|
auto SurfaceHandle::operator=(SurfaceHandle&& other) noexcept -> SurfaceHandle& {
|
|
if (this != &other) {
|
|
if (surface_ != nullptr) {
|
|
Jd8::freeSurface(surface_);
|
|
}
|
|
surface_ = other.surface_;
|
|
other.surface_ = nullptr;
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
void SurfaceHandle::reset(const char* file) {
|
|
if (surface_ != nullptr) {
|
|
Jd8::freeSurface(surface_);
|
|
}
|
|
surface_ = (file != nullptr) ? Jd8::loadSurface(file) : nullptr;
|
|
}
|
|
|
|
void SurfaceHandle::adopt(Jd8::Surface raw) {
|
|
if (surface_ != nullptr) {
|
|
Jd8::freeSurface(surface_);
|
|
}
|
|
surface_ = raw;
|
|
}
|
|
|
|
auto SurfaceHandle::release() -> Jd8::Surface {
|
|
Jd8::Surface r = surface_;
|
|
surface_ = nullptr;
|
|
return r;
|
|
}
|
|
|
|
} // namespace scenes
|