axmol/cocos2dx/extensions/CCControlExtension/CCScale9Sprite.h

381 lines
14 KiB
C
Raw Normal View History

2012-04-16 18:58:43 +08:00
//
// CCScale9Sprite.h
// PlantCaring
//
// Created by Jung Sang-Taik on 12. 3. 16..
// Copyright (c) 2012 Neofect. All rights reserved.
//
#ifndef __CCScale9Sprite_H__
#define __CCScale9Sprite_H__
#include "base_nodes/CCNode.h"
#include "CCProtocols.h"
2012-04-16 18:58:43 +08:00
namespace cocos2d { class CCSprite; }
namespace cocos2d { class CCSpriteBatchNode; }
namespace cocos2d { class CCSpriteFrame; }
NS_CC_EXT_BEGIN
2012-04-16 18:58:43 +08:00
enum positions
{
pCentre = 0,
pTop,
pLeft,
pRight,
pBottom,
pTopRight,
pTopLeft,
pBottomRight,
pBottomLeft
2012-04-16 18:58:43 +08:00
};
2012-04-16 23:16:03 +08:00
class CC_DLL CCScale9Sprite : public CCNode, CCRGBAProtocol
2012-04-16 18:58:43 +08:00
{
public:
CCScale9Sprite();
virtual ~CCScale9Sprite();
2012-04-16 18:58:43 +08:00
public:
/** Original sprite's size. */
CC_SYNTHESIZE(CCSize, m_originalSize, OriginalSize);
/** Prefered sprite's size. By default the prefered size is the original size. */
2012-04-16 18:58:43 +08:00
//if the preferredSize component is given as -1, it is ignored
CC_PROPERTY(CCSize, m_preferredSize, PreferredSize);
/**
* The end-cap insets.
* On a non-resizeable sprite, this property is set to CGRectZero; the sprite
* does not use end caps and the entire sprite is subject to stretching.
*/
/** Opacity: conforms to CCRGBAProtocol protocol */
CC_PROPERTY(GLubyte, m_cOpacity, Opacity)
/** Color: conforms to CCRGBAProtocol protocol */
CC_PROPERTY_PASS_BY_REF(ccColor3B, m_tColor, Color)
CC_PROPERTY(CCRect, m_capInsets, CapInsets);
CC_PROPERTY(float, m_insetLeft, InsetLeft);
CC_PROPERTY(float, m_insetTop, InsetTop);
CC_PROPERTY(float, m_insetRight, InsetRight);
CC_PROPERTY(float, m_insetBottom, InsetBottom);
2012-04-16 18:58:43 +08:00
protected:
CCRect m_spriteRect;
CCRect m_capInsetsInternal;
bool m_positionsAreDirty;
2012-04-16 18:58:43 +08:00
CCSpriteBatchNode* scale9Image;
CCSprite* topLeft;
CCSprite* top;
CCSprite* topRight;
CCSprite* left;
CCSprite* centre;
CCSprite* right;
CCSprite* bottomLeft;
CCSprite* bottom;
CCSprite* bottomRight;
/** Conforms to CocosNodeRGBA protocol. */
ccColor3B m_sColorUnmodified;
bool m_bIsOpacityModifyRGB;
void updateCapInset();
void updatePositions();
2012-04-16 18:58:43 +08:00
public:
virtual void setContentSize(const CCSize & size);
virtual void visit();
virtual bool init();
virtual bool initWithBatchNode(CCSpriteBatchNode* batchnode, CCRect rect, CCRect capInsets);
/**
* Initializes a 9-slice sprite with a texture file, a delimitation zone and
* with the specified cap insets.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @param file The name of the texture file.
* @param rect The rectangle that describes the sub-part of the texture that
* is the whole image. If the shape is the whole texture, set this to the
* texture's full rect.
* @param capInsets The values to use for the cap insets.
*/
virtual bool initWithFile(const char* file, CCRect rect, CCRect capInsets);
/**
* Creates a 9-slice sprite with a texture file, a delimitation zone and
* with the specified cap insets.
*
* @see initWithFile:rect:centerRegion:
@deprecated: This interface will be deprecated sooner or later.
*/
CC_DEPRECATED_ATTRIBUTE static CCScale9Sprite* spriteWithFile(const char* file, CCRect rect, CCRect capInsets);
/**
* Creates a 9-slice sprite with a texture file, a delimitation zone and
* with the specified cap insets.
*
* @see initWithFile:rect:centerRegion:
*/
static CCScale9Sprite* create(const char* file, CCRect rect, CCRect capInsets);
/**
* Initializes a 9-slice sprite with a texture file and a delimitation zone. The
* texture will be broken down into a 3×3 grid of equal blocks.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @param file The name of the texture file.
* @param rect The rectangle that describes the sub-part of the texture that
* is the whole image. If the shape is the whole texture, set this to the
* texture's full rect.
*/
virtual bool initWithFile(const char* file, CCRect rect);
/**
* Creates a 9-slice sprite with a texture file and a delimitation zone. The
* texture will be broken down into a 3×3 grid of equal blocks.
*
* @see initWithFile:rect:
@deprecated: This interface will be deprecated sooner or later.
*/
2012-06-14 17:18:05 +08:00
static CCScale9Sprite* spriteWithFile(const char* file, CCRect rect);
/**
* Creates a 9-slice sprite with a texture file and a delimitation zone. The
* texture will be broken down into a 3×3 grid of equal blocks.
*
* @see initWithFile:rect:
*/
static CCScale9Sprite* create(const char* file, CCRect rect);
/**
* Initializes a 9-slice sprite with a texture file and with the specified cap
* insets.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @param file The name of the texture file.
* @param capInsets The values to use for the cap insets.
*/
virtual bool initWithFile(CCRect capInsets, const char* file);
/**
* Creates a 9-slice sprite with a texture file. The whole texture will be
* broken down into a 3×3 grid of equal blocks.
*
* @see initWithFile:capInsets:
@deprecated: This interface will be deprecated sooner or later.
*/
CC_DEPRECATED_ATTRIBUTE static CCScale9Sprite* spriteWithFile(CCRect capInsets, const char* file);
/**
* Creates a 9-slice sprite with a texture file. The whole texture will be
* broken down into a 3×3 grid of equal blocks.
*
* @see initWithFile:capInsets:
*/
static CCScale9Sprite* create(CCRect capInsets, const char* file);
/**
* Initializes a 9-slice sprite with a texture file. The whole texture will be
* broken down into a 3×3 grid of equal blocks.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @param file The name of the texture file.
*/
virtual bool initWithFile(const char* file);
/**
* Creates a 9-slice sprite with a texture file. The whole texture will be
* broken down into a 3×3 grid of equal blocks.
*
* @see initWithFile:
@deprecated: This interface will be deprecated sooner or later.
*/
CC_DEPRECATED_ATTRIBUTE static CCScale9Sprite* spriteWithFile(const char* file);
/**
* Creates a 9-slice sprite with a texture file. The whole texture will be
* broken down into a 3×3 grid of equal blocks.
*
* @see initWithFile:
*/
static CCScale9Sprite* create(const char* file);
/**
* Initializes a 9-slice sprite with an sprite frame and with the specified
* cap insets.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @param spriteFrame The sprite frame object.
* @param capInsets The values to use for the cap insets.
*/
virtual bool initWithSpriteFrame(CCSpriteFrame* spriteFrame, CCRect capInsets);
/**
* Creates a 9-slice sprite with an sprite frame and the centre of its zone.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @see initWithSpriteFrame:centerRegion:
@deprecated: This interface will be deprecated sooner or later.
*/
CC_DEPRECATED_ATTRIBUTE static CCScale9Sprite* spriteWithSpriteFrame(CCSpriteFrame* spriteFrame, CCRect capInsets);
/**
* Creates a 9-slice sprite with an sprite frame and the centre of its zone.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @see initWithSpriteFrame:centerRegion:
*/
static CCScale9Sprite* createWithSpriteFrame(CCSpriteFrame* spriteFrame, CCRect capInsets);
/**
* Initializes a 9-slice sprite with an sprite frame.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @param spriteFrame The sprite frame object.
*/
virtual bool initWithSpriteFrame(CCSpriteFrame* spriteFrame);
/**
* Creates a 9-slice sprite with an sprite frame.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @see initWithSpriteFrame:
@deprecated: This interface will be deprecated sooner or later.
*/
CC_DEPRECATED_ATTRIBUTE static CCScale9Sprite* spriteWithSpriteFrame(CCSpriteFrame* spriteFrame);
/**
* Creates a 9-slice sprite with an sprite frame.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @see initWithSpriteFrame:
*/
static CCScale9Sprite* createWithSpriteFrame(CCSpriteFrame* spriteFrame);
/**
* Initializes a 9-slice sprite with an sprite frame name and with the specified
* cap insets.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @param spriteFrameName The sprite frame name.
* @param capInsets The values to use for the cap insets.
*/
virtual bool initWithSpriteFrameName(const char*spriteFrameName, CCRect capInsets);
/**
* Creates a 9-slice sprite with an sprite frame name and the centre of its
* zone.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @see initWithSpriteFrameName:centerRegion:
@deprecated: This interface will be deprecated sooner or later.
*/
CC_DEPRECATED_ATTRIBUTE static CCScale9Sprite* spriteWithSpriteFrameName(const char*spriteFrameName, CCRect capInsets);
/**
* Creates a 9-slice sprite with an sprite frame name and the centre of its
* zone.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @see initWithSpriteFrameName:centerRegion:
*/
static CCScale9Sprite* createWithSpriteFrameName(const char*spriteFrameName, CCRect capInsets);
/**
* Initializes a 9-slice sprite with an sprite frame name.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @param spriteFrameName The sprite frame name.
*/
virtual bool initWithSpriteFrameName(const char*spriteFrameName);
/**
* Creates a 9-slice sprite with an sprite frame name.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @see initWithSpriteFrameName:
@deprecated: This interface will be deprecated sooner or later.
*/
CC_DEPRECATED_ATTRIBUTE static CCScale9Sprite* spriteWithSpriteFrameName(const char*spriteFrameName);
/**
* Creates a 9-slice sprite with an sprite frame name.
* Once the sprite is created, you can then call its "setContentSize:" method
* to resize the sprite will all it's 9-slice goodness intract.
* It respects the anchorPoint too.
*
* @see initWithSpriteFrameName:
*/
static CCScale9Sprite* createWithSpriteFrameName(const char*spriteFrameName);
/**
* Creates and returns a new sprite object with the specified cap insets.
* You use this method to add cap insets to a sprite or to change the existing
* cap insets of a sprite. In both cases, you get back a new image and the
* original sprite remains untouched.
*
* @param capInsets The values to use for the cap insets.
*/
CCScale9Sprite* resizableSpriteWithCapInsets(CCRect capInsets);
//@deprecated: This interface will be deprecated sooner or later.
CC_DEPRECATED_ATTRIBUTE static CCScale9Sprite* node();
static CCScale9Sprite* create();
// optional
/** sets the premultipliedAlphaOpacity property.
If set to NO then opacity will be applied as: glColor(R,G,B,opacity);
If set to YES then oapcity will be applied as: glColor(opacity, opacity, opacity, opacity );
Textures with premultiplied alpha will have this property by default on YES. Otherwise the default value is NO
@since v0.8
*/
virtual void setOpacityModifyRGB(bool bValue);
/** returns whether or not the opacity will be applied using glColor(R,G,B,opacity) or glColor(opacity, opacity, opacity, opacity);
@since v0.8
*/
virtual bool isOpacityModifyRGB(void);
virtual bool updateWithBatchNode(CCSpriteBatchNode* batchnode, CCRect rect, CCRect capInsets);
virtual void setSpriteFrame(CCSpriteFrame * spriteFrame);
2012-04-16 18:58:43 +08:00
};
NS_CC_EXT_END
2012-04-16 18:58:43 +08:00
#endif // __CCScale9Sprite_H__