aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/graphics/graphic.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/graphics/graphic.h')
-rw-r--r--src/libjin/graphics/graphic.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/libjin/graphics/graphic.h b/src/libjin/graphics/graphic.h
new file mode 100644
index 0000000..ac2bc0e
--- /dev/null
+++ b/src/libjin/graphics/graphic.h
@@ -0,0 +1,97 @@
+#ifndef __JE_GRAPHIC_H__
+#define __JE_GRAPHIC_H__
+#include "../core/configuration.h"
+#if defined(jin_graphics)
+
+#include "../common/object.h"
+#include "../math/quad.h"
+#include "../math/vector2.hpp"
+#include "../math/transform.h"
+
+#include "renderable.h"
+#include "gl.h"
+#include "bitmap.h"
+
+namespace JinEngine
+{
+ namespace Graphics
+ {
+
+ ///
+ /// Class inherites Graphic doesn't keep any state such as origin, scale and other properties. Very low
+ /// level visualized resources.
+ ///
+ class Graphic : public Object, public Renderable
+ {
+ public:
+ ///
+ ///
+ ///
+ Graphic(int w = 0, int h = 0);
+
+ ///
+ ///
+ ///
+ Graphic(const Bitmap* bitmap);
+
+ ///
+ ///
+ ///
+ virtual ~Graphic();
+
+ ///
+ ///
+ ///
+ inline int getWidth() const { return mSize.w(); }
+
+ ///
+ ///
+ ///
+ inline int getHeight() const { return mSize.h(); }
+
+ ///
+ /// Get opengl texture token.
+ ///
+ /// @return OpenGL texture token.
+ ///
+ inline GLuint getGLTexture() const { return mTexture; }
+
+ ///
+ ///
+ ///
+ void setFilter(GLint min, GLint max);
+
+ ///
+ /// Render graphic single with given coordinates.
+ ///
+ void render(float x, float y, float sx = 1, float sy = 1, float r = 0, float ox = 0, float oy = 0) const;
+
+ ///
+ /// Render part of graphic single with given coordinates.
+ ///
+ void render(const Math::Quad& slice, float x, float y, float sx = 1, float sy = 1, float r = 0, float ox = 0, float oy = 0) const;
+
+ ///
+ /// Render with transform.
+ ///
+ void render(const Math::Transform& transform) const;
+
+ ///
+ ///
+ ///
+ void render(const Math::Quad& slice, const Math::Transform& transform) const;
+
+ protected:
+ Math::Vector2<uint> mSize;
+
+ private:
+ GLuint mTexture;
+
+ };
+
+ } // namespace Graphics
+} // namespace JinEngine
+
+#endif // defined(jin_graphics)
+
+#endif // __JE_GRAPHIC_H__ \ No newline at end of file