123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734 |
- #ifndef __SPRITE_NODE_CCSPRITE_H__
- #define __SPRITE_NODE_CCSPRITE_H__
- #include <string>
- #include "2d/CCNode.h"
- #include "2d/CCDrawNode.h"
- #include "base/CCProtocols.h"
- #include "renderer/CCTextureAtlas.h"
- #include "renderer/CCTrianglesCommand.h"
- #include "renderer/CCCustomCommand.h"
- #include "2d/CCAutoPolygon.h"
- NS_CC_BEGIN
- class SpriteBatchNode;
- class SpriteFrame;
- class Animation;
- class Rect;
- class Size;
- class Texture2D;
- struct transformValues_;
- #ifdef SPRITE_RENDER_IN_SUBPIXEL
- #undef SPRITE_RENDER_IN_SUBPIXEL
- #endif
- #if CC_SPRITEBATCHNODE_RENDER_SUBPIXEL
- #define SPRITE_RENDER_IN_SUBPIXEL
- #else
- #define SPRITE_RENDER_IN_SUBPIXEL(__ARGS__) (ceil(__ARGS__))
- #endif
- class CC_DLL Sprite : public Node, public TextureProtocol
- {
- public:
- enum class RenderMode {
- QUAD,
- POLYGON,
- SLICE9,
- QUAD_BATCHNODE
- };
-
- static const int INDEX_NOT_INITIALIZED = -1;
-
-
-
- static Sprite* create();
-
- static Sprite* create(const std::string& filename);
-
-
- static Sprite* create(const PolygonInfo& info);
-
- static Sprite* create(const std::string& filename, const Rect& rect);
-
- static Sprite* createWithTexture(Texture2D *texture);
-
- static Sprite* createWithTexture(Texture2D *texture, const Rect& rect, bool rotated=false);
-
- static Sprite* createWithSpriteFrame(SpriteFrame *spriteFrame);
-
- static Sprite* createWithSpriteFrameName(const std::string& spriteFrameName);
-
-
-
-
-
- virtual void updateTransform() override;
-
- virtual SpriteBatchNode* getBatchNode() const;
-
- virtual void setBatchNode(SpriteBatchNode *spriteBatchNode);
-
-
-
-
- virtual void setTexture(const std::string &filename );
-
- virtual void setTexture(Texture2D *texture) override;
-
- virtual Texture2D* getTexture() const override;
-
- virtual void setTextureRect(const Rect& rect);
-
- virtual void setTextureRect(const Rect& rect, bool rotated, const Size& untrimmedSize);
-
- virtual void setVertexRect(const Rect& rect);
-
- virtual void setCenterRectNormalized(const Rect& rect);
-
- virtual Rect getCenterRectNormalized() const;
-
- virtual void setCenterRect(const Rect& rect);
-
- virtual Rect getCenterRect() const;
-
- virtual void setSpriteFrame(const std::string &spriteFrameName);
- virtual void setSpriteFrame(SpriteFrame* newFrame);
-
-
- CC_DEPRECATED_ATTRIBUTE virtual void setDisplayFrame(SpriteFrame *newFrame) { setSpriteFrame(newFrame); }
-
- virtual bool isFrameDisplayed(SpriteFrame *frame) const;
-
- virtual SpriteFrame* getSpriteFrame() const;
-
- CC_DEPRECATED_ATTRIBUTE virtual SpriteFrame* getDisplayFrame() const { return getSpriteFrame(); }
-
- CC_DEPRECATED_ATTRIBUTE virtual SpriteFrame* displayFrame() const { return getSpriteFrame(); };
-
-
-
-
- virtual void setDisplayFrameWithAnimationName(const std::string& animationName, ssize_t frameIndex);
-
-
-
-
- virtual bool isDirty() const { return _dirty; }
-
- virtual void setDirty(bool dirty) { _dirty = dirty; }
-
- V3F_C4B_T2F_Quad getQuad() const { return _quad; }
-
- bool isTextureRectRotated() const { return _rectRotated; }
-
- ssize_t getAtlasIndex() const { return _atlasIndex; }
-
- void setAtlasIndex(ssize_t atlasIndex) { _atlasIndex = atlasIndex; }
-
- const Rect& getTextureRect() const { return _rect; }
-
- TextureAtlas* getTextureAtlas() const { return _textureAtlas; }
-
- void setTextureAtlas(TextureAtlas *textureAtlas) { _textureAtlas = textureAtlas; }
-
- const Vec2& getOffsetPosition() const { return _offsetPosition; }
-
- bool isFlippedX() const;
-
- void setFlippedX(bool flippedX);
-
- CC_DEPRECATED_ATTRIBUTE bool isFlipX() { return isFlippedX(); };
-
- CC_DEPRECATED_ATTRIBUTE void setFlipX(bool flippedX) { setFlippedX(flippedX); };
-
- bool isFlippedY() const;
-
- void setFlippedY(bool flippedY);
-
-
- CC_DEPRECATED_ATTRIBUTE bool isFlipY() { return isFlippedY(); };
-
- CC_DEPRECATED_ATTRIBUTE void setFlipY(bool flippedY) { setFlippedY(flippedY); };
-
- const PolygonInfo& getPolygonInfo() const;
-
- void setPolygonInfo(const PolygonInfo& info);
-
- void setStretchEnabled(bool enabled);
-
- CC_DEPRECATED_ATTRIBUTE void setStrechEnabled(bool enabled);
-
- bool isStretchEnabled() const;
-
- CC_DEPRECATED_ATTRIBUTE bool isStrechEnabled() const;
-
-
-
-
-
-
- void setBlendFunc(const BlendFunc &blendFunc) override { _blendFunc = blendFunc; }
-
- const BlendFunc& getBlendFunc() const override { return _blendFunc; }
-
-
- virtual std::string getDescription() const override;
-
-
- virtual void setScaleX(float scaleX) override;
- virtual void setScaleY(float scaleY) override;
- virtual void setScale(float scaleX, float scaleY) override;
-
- virtual void setPosition(const Vec2& pos) override;
- virtual void setPosition(float x, float y) override;
- virtual void setRotation(float rotation) override;
- virtual void setRotationSkewX(float rotationX) override;
- virtual void setRotationSkewY(float rotationY) override;
- virtual void setSkewX(float sx) override;
- virtual void setSkewY(float sy) override;
- virtual void removeChild(Node* child, bool cleanup) override;
- virtual void removeAllChildrenWithCleanup(bool cleanup) override;
- virtual void reorderChild(Node *child, int zOrder) override;
- using Node::addChild;
- virtual void addChild(Node *child, int zOrder, int tag) override;
- virtual void addChild(Node *child, int zOrder, const std::string &name) override;
- virtual void sortAllChildren() override;
- virtual void setScale(float scale) override;
- virtual void setPositionZ(float positionZ) override;
- virtual void setAnchorPoint(const Vec2& anchor) override;
- virtual void setContentSize(const Size& size) override;
-
- virtual void setIgnoreAnchorPointForPosition(bool value) override;
-
- virtual void setVisible(bool bVisible) override;
- virtual void draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) override;
- virtual void setOpacityModifyRGB(bool modify) override;
- virtual bool isOpacityModifyRGB() const override;
-
- int getResourceType() const { return _fileType; }
- const std::string& getResourceName() const { return _fileName; }
- CC_CONSTRUCTOR_ACCESS :
-
- Sprite();
- virtual ~Sprite();
-
- virtual bool init() override;
-
- virtual bool initWithTexture(Texture2D *texture);
-
-
-
- virtual bool initWithPolygon(const PolygonInfo& info);
-
- virtual bool initWithTexture(Texture2D *texture, const Rect& rect);
-
- virtual bool initWithTexture(Texture2D *texture, const Rect& rect, bool rotated);
-
- virtual bool initWithSpriteFrame(SpriteFrame *spriteFrame);
-
- virtual bool initWithSpriteFrameName(const std::string& spriteFrameName);
-
- virtual bool initWithFile(const std::string& filename);
-
- virtual bool initWithFile(const std::string& filename, const Rect& rect);
-
- protected:
- virtual void updateColor() override;
- virtual void setTextureCoords(const Rect& rect);
- virtual void setTextureCoords(const Rect& rect, V3F_C4B_T2F_Quad* outQuad);
- virtual void setVertexCoords(const Rect& rect, V3F_C4B_T2F_Quad* outQuad);
- void populateTriangle(int quadIndex, const V3F_C4B_T2F_Quad& quad);
- virtual void updateBlendFunc();
- virtual void setReorderChildDirtyRecursively();
- virtual void setDirtyRecursively(bool value);
- void updatePoly();
- void updateStretchFactor();
-
-
-
- TextureAtlas* _textureAtlas;
- ssize_t _atlasIndex;
- SpriteBatchNode* _batchNode;
- bool _dirty;
- bool _recursiveDirty;
- bool _shouldBeHidden;
- Mat4 _transformToBatch;
-
-
-
- BlendFunc _blendFunc;
- Texture2D* _texture;
- SpriteFrame* _spriteFrame;
- TrianglesCommand _trianglesCommand;
- #if CC_SPRITE_DEBUG_DRAW
- DrawNode *_debugDrawNode;
- #endif
-
-
-
-
- Rect _rect;
- bool _rectRotated;
- Rect _centerRectNormalized;
- RenderMode _renderMode;
- Vec2 _stretchFactor;
- Size _originalContentSize;
-
- Vec2 _offsetPosition;
- Vec2 _unflippedOffsetPositionFromCenter;
-
- V3F_C4B_T2F_Quad _quad;
- V3F_C4B_T2F* _trianglesVertex;
- unsigned short* _trianglesIndex;
- PolygonInfo _polyInfo;
-
- bool _opacityModifyRGB;
-
- bool _flippedX;
- bool _flippedY;
- bool _insideBounds;
- std::string _fileName;
- int _fileType;
- bool _stretchEnabled;
- private:
- CC_DISALLOW_COPY_AND_ASSIGN(Sprite);
- };
- NS_CC_END
- #endif
|