aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api/Texture.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/crepe/api/Texture.cpp')
-rw-r--r--src/crepe/api/Texture.cpp35
1 files changed, 17 insertions, 18 deletions
diff --git a/src/crepe/api/Texture.cpp b/src/crepe/api/Texture.cpp
index de0d0ea..2b56271 100644
--- a/src/crepe/api/Texture.cpp
+++ b/src/crepe/api/Texture.cpp
@@ -1,22 +1,16 @@
-#include <SDL2/SDL_render.h>
-
#include "../facade/SDLContext.h"
#include "../util/Log.h"
#include "Asset.h"
#include "Texture.h"
+#include "types.h"
using namespace crepe;
using namespace std;
-Texture::Texture(unique_ptr<Asset> res) {
- dbg_trace();
- this->load(std::move(res));
-}
-
-Texture::Texture(const char * src) {
+Texture::Texture(const Asset & src) {
dbg_trace();
- this->load(make_unique<Asset>(src));
+ this->load(src);
}
Texture::~Texture() {
@@ -24,16 +18,21 @@ Texture::~Texture() {
this->texture.reset();
}
-void Texture::load(unique_ptr<Asset> res) {
- SDLContext & ctx = SDLContext::get_instance();
- this->texture = std::move(ctx.texture_from_path(res->get_canonical()));
+Texture::Texture(Texture && other) noexcept : texture(std::move(other.texture)) {}
+
+Texture & Texture::operator=(Texture && other) noexcept {
+ if (this != &other) {
+ texture = std::move(other.texture);
+ }
+ return *this;
}
-int Texture::get_width() const {
- if (this->texture == nullptr) return 0;
- return SDLContext::get_instance().get_width(*this);
+void Texture::load(const Asset & res) {
+ SDLContext & ctx = SDLContext::get_instance();
+ this->texture = ctx.texture_from_path(res.get_path());
}
-int Texture::get_height() const {
- if (this->texture == nullptr) return 0;
- return SDLContext::get_instance().get_width(*this);
+
+ivec2 Texture::get_size() const {
+ if (this->texture == nullptr) return {};
+ return SDLContext::get_instance().get_size(*this);
}