aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/graphics/je_sprite.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/graphics/je_sprite.h')
-rw-r--r--src/libjin/graphics/je_sprite.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/libjin/graphics/je_sprite.h b/src/libjin/graphics/je_sprite.h
new file mode 100644
index 0000000..faf16df
--- /dev/null
+++ b/src/libjin/graphics/je_sprite.h
@@ -0,0 +1,81 @@
+#ifndef __JE_SPRITE_H__
+#define __JE_SPRITE_H__
+
+#include "../common/je_types.h"
+#include "../math/je_vector2.hpp"
+
+#include "shaders/je_shader.h"
+#include "je_color.h"
+
+namespace JinEngine
+{
+ namespace Graphics
+ {
+
+ ///
+ /// A sprite is unit of rendering. Animation is based on sprite, but not texture or other graphic stuff.
+ ///
+ class Sprite
+ {
+ public:
+ Sprite();
+ virtual ~Sprite();
+
+ enum Origin
+ {
+ TopLeft,
+ TopCenter,
+ TopRight,
+ MiddleLeft,
+ MiddleCenter,
+ MiddleRight,
+ BottomLeft,
+ BottomCenter,
+ BottomRight
+ };
+
+ void setQuad(int x, int y, int w, int h);
+ void setRotation(float r);
+ void setOrigin(Origin origin);
+ void setOrigin(int x, int y);
+ void setPosition(float x, float y);
+ void setScale(float sx, float sy);
+ void setColor(Color color);
+ void setGraphic(const Graphic* graphic);
+
+ void move(float x, float y);
+ void rotate(float r);
+ void scale(float sx, float sy);
+
+ float getRotation() { return mTransform.getRotation(); }
+ Math::Vector2<int> getSize() { return Math::Vector2<int>(mQuad.w, mQuad.h); }
+ const Math::Quad& getQuad() { return mQuad; }
+ const Math::Vector2<float>& getPosition() { return mTransform.getPosition(); }
+ const Math::Vector2<float>& getOrigin() { return mTransform.getOrigin(); }
+ const Math::Vector2<float>& getScale() { return mTransform.getScale(); }
+ const Color& getColor() { return mColor; }
+ const Graphic* getGraphic() { return mGraphic; }
+
+ void render();
+
+ private:
+ ///
+ /// Origin must be 0~1 float value.
+ ///
+ Math::Transform mTransform;
+
+ Color mColor;
+
+ Math::Quad mQuad;
+
+ bool mIsOriginEnum;
+ Origin mOriginEnum;
+
+ const Graphic* mGraphic;
+
+ };
+
+ } // namespace Graphics
+} // namespace JinEngine
+
+#endif \ No newline at end of file