aboutsummaryrefslogtreecommitdiffstats
path: root/include/components/texture.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/components/texture.hpp')
-rw-r--r--include/components/texture.hpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/include/components/texture.hpp b/include/components/texture.hpp
new file mode 100644
index 0000000..f4d414e
--- /dev/null
+++ b/include/components/texture.hpp
@@ -0,0 +1,33 @@
+#ifndef COMPONENTS_TEXTURE_HPP
+#define COMPONENTS_TEXTURE_HPP
+
+#include "window.hpp"
+
+class Texture
+{
+public:
+ Texture(const char *path) {
+ tex = sdl2LoadTexture(path);
+ }
+
+ ~Texture() {
+ if (tex != nullptr)
+ SDL_DestroyTexture(tex);
+ }
+
+ void operator()(SDL_Renderer *rend, Point p) const noexcept {
+ const int x = static_cast<int>(p.x);
+ const int y = static_cast<int>(p.y);
+ SDL_Rect rect {x, y, 0, 0};
+
+ /* TODO err check */
+ SDL_QueryTexture(tex, nullptr, nullptr, &rect.w, &rect.h);
+ SDL_RenderCopy(rend, tex, nullptr, &rect);
+ }
+
+private:
+ SDL_Texture *tex;
+};
+
+#endif // COMPONENTS_TEXTURE_HPP
+