| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #pragma once
- #include "oxygine-include.h"
- #include "math/Rect.h"
- #include "core/Texture.h"
- #include "core/NativeTexture.h"
- namespace oxygine
- {
- class Diffuse
- {
- public:
- Diffuse(): premultiplied(true) {}
- spNativeTexture base;
- spNativeTexture alpha;
- bool premultiplied;
- };
- class HitTestData
- {
- public:
- HitTestData(): data(0), w(0), h(0), pitch(0) {}
- const unsigned char* data;
- short w, h;
- unsigned char pitch;
- };
- class AnimationFrame
- {
- public:
- AnimationFrame() : _srcRect(0, 0, 1, 1), _destRect(0, 0, 1, 1), _resAnim(0), _row(0), _column(0) {}
- AnimationFrame(spNativeTexture t);
- void init(ResAnim* rs, const Diffuse& df,
- const RectF& srcRect, const RectF& destRect, const Vector2& frame_size);
- void init2(ResAnim* rs, short column, short row, const Diffuse& df,
- const RectF& srcRect, const RectF& destRect, const Vector2& frame_size);
- /**ResAnim should be valid!*/
- AnimationFrame getClipped(const RectF& rect) const;
- AnimationFrame getFlipped(bool vertical, bool horizontal) const;
- /**Returns size of frame in pixels*/
- const Vector2& getSize() const {return _frameSize;}
- float getWidth() const {return _frameSize.x;}
- float getHeight() const {return _frameSize.y;}
- ResAnim* getResAnim() const {return _resAnim;}
- short getColumn() const {return _column;}
- short getRow() const {return _row;}
- const RectF& getSrcRect() const {return _srcRect;}
- const RectF& getDestRect() const {return _destRect;}
- const Diffuse& getDiffuse() const {return _diffuse;}
- const HitTestData& getHitTestData()const { return _hittest; }
- void setSrcRect(const RectF& r) {_srcRect = r;}
- void setDestRect(const RectF& r) {_destRect = r;}
- void setResAnim(ResAnim* rs) {_resAnim = rs;}
- void setDiffuse(const Diffuse& d) { _diffuse = d; }
- void setSize(const Vector2& size) {_frameSize = size;}
- void setSize(float w, float h) { setSize(Vector2(w, h)); }
- void setHitTestData(const HitTestData& ad) { _hittest = ad; }
- void setRow(int v) {_row = v;}
- void setColumn(int v) {_column = v;}
- void flipX();
- void flipY();
- private:
- enum flags
- {
- clipped = 0x01,
- };
- Diffuse _diffuse;
- RectF _srcRect;
- RectF _destRect;
- Vector2 _frameSize;//real size without clipping
- ResAnim* _resAnim;
- short _row;
- short _column;
- HitTestData _hittest;
- //unsigned short _flags;
- };
- }
|