/*
typedef enum {
	//! Translate with it's parent
	CC_HONOR_PARENT_TRANSFORM_TRANSLATE =  1 << 0,
	//! Rotate with it's parent
	CC_HONOR_PARENT_TRANSFORM_ROTATE	=  1 << 1,
	//! Scale with it's parent
	CC_HONOR_PARENT_TRANSFORM_SCALE		=  1 << 2,
	//! Skew with it's parent
	CC_HONOR_PARENT_TRANSFORM_SKEW		=  1 << 3,

	//! All possible transformation enabled. Default value.
	CC_HONOR_PARENT_TRANSFORM_ALL		=  CC_HONOR_PARENT_TRANSFORM_TRANSLATE | CC_HONOR_PARENT_TRANSFORM_ROTATE | CC_HONOR_PARENT_TRANSFORM_SCALE | CC_HONOR_PARENT_TRANSFORM_SKEW,

} ccHonorParentTransform;
*/
class CCSprite : public CCNode
{
	void setDirty(bool bDirty);
	bool isDirty(void);

	ccV3F_C4B_T2F_Quad getQuad(void);

	CCRect getTextureRect(void);
	//bool isUsesBatchNode(void);
	bool isTextureRectRotated(void);

	void setAtlasIndex(unsigned int uAtlasIndex);
	unsigned int getAtlasIndex(void);
	//void setUsesSpriteBatchNode(bool bUsesSpriteBatchNode);
	void setTextureAtlas(CCTextureAtlas *pobTextureAtlas);
	CCTextureAtlas* getTextureAtlas(void);
	//void setSpriteBatchNode(CCSpriteBatchNode *pobSpriteBatchNode);
	//CCSpriteBatchNode* getSpriteBatchNode(void);
	//void setHonorParentTransform(ccHonorParentTransform eHonorParentTransform);
	//ccHonorParentTransform getHonorParentTransform(void);
	void setBlendFunc(ccBlendFunc blendFunc);
	ccBlendFunc getBlendFunc(void);

	CCPoint getOffsetPosition(void);

	void ignoreAnchorPointForPosition(bool newValue);
	void setFlipX(bool bFlipX);
	void setFlipY(bool bFlipY);
	bool isFlipX(void);
	bool isFlipY(void);

	void removeChild(CCNode* pChild, bool bCleanUp);
	void removeAllChildrenWithCleanup(bool bCleanup);
	void reorderChild(CCNode* pChild, int zOrder);
	void addChild(CCNode* pChild);
	void addChild(CCNode* pChild, int zOrder);
	void addChild(CCNode* pChild, int zOrder, int tag);
	void sortAllChildren();
	//void setPosition(CCPoint pos);
	void setRotation(float rotation);
	void setSkewX(float sx);
	void setSkewY(float sy);
	void setScale(float fScale);
	void setScaleX(float fScaleX);
	void setScaleY(float fScaleY);
	void setVertexZ(float fVertexZ);
	void setAnchorPoint(const CCPoint & anchor);
	void setVisible(bool bVisible);

	void setOpacity(GLubyte opacity);
	GLubyte getOpacity(void);

	void setColor(ccColor3B color3);
	ccColor3B getColor(void);
	void setOpacityModifyRGB(bool bValue);
	bool isOpacityModifyRGB(void);

	void setTexture(CCTexture2D *texture);
	CCTexture2D* getTexture(void);

	void updateTransform(void);
	//void useSelfRender(void);
	void setTextureRect(CCRect rect);
	void setTextureRect(CCRect rect, bool rotated, CCSize size);
	void setVertexRect(CCRect rect);
	//void useBatchNode(CCSpriteBatchNode *batchNode);
	void setDisplayFrame(CCSpriteFrame *pNewFrame);
	bool isFrameDisplayed(CCSpriteFrame *pFrame);
	CCSpriteFrame* displayFrame(void);
	void setBatchNode(CCSpriteBatchNode* pBatchNode);
	CCSpriteBatchNode* getBatchNode();
	void setDisplayFrameWithAnimationName(const char *animationName, int frameIndex);

	static CCSprite* createWithTexture(CCTexture2D *pTexture);
	static CCSprite* createWithTexture(CCTexture2D *pTexture, CCRect rect);
	static CCSprite* createWithSpriteFrame(CCSpriteFrame *pSpriteFrame);
	static CCSprite* createWithSpriteFrameName(const char *pszSpriteFrameName);
	static CCSprite* create(const char *pszFileName, CCRect rect);
	static CCSprite* create(const char *pszFileName);
	static CCSprite* create();
};