Merge branch 'develop' into develop_nutty_modify_framework_newrender

This commit is contained in:
CaiWenzhi 2013-12-25 17:29:30 +08:00
commit 570b6c95a7
79 changed files with 630 additions and 449 deletions

View File

@ -2053,7 +2053,7 @@ void Animate::startWithTarget(Node *target)
if (_animation->getRestoreOriginalFrame()) if (_animation->getRestoreOriginalFrame())
{ {
_origFrame = sprite->getDisplayFrame(); _origFrame = sprite->getSpriteFrame();
_origFrame->retain(); _origFrame->retain();
} }
_nextFrame = 0; _nextFrame = 0;
@ -2064,7 +2064,7 @@ void Animate::stop(void)
{ {
if (_animation->getRestoreOriginalFrame() && _target) if (_animation->getRestoreOriginalFrame() && _target)
{ {
static_cast<Sprite*>(_target)->setDisplayFrame(_origFrame); static_cast<Sprite*>(_target)->setSpriteFrame(_origFrame);
} }
ActionInterval::stop(); ActionInterval::stop();
@ -2097,7 +2097,7 @@ void Animate::update(float t)
if( splitTime <= t ) { if( splitTime <= t ) {
AnimationFrame* frame = frames.at(i); AnimationFrame* frame = frames.at(i);
frameToDisplay = frame->getSpriteFrame(); frameToDisplay = frame->getSpriteFrame();
static_cast<Sprite*>(_target)->setDisplayFrame(frameToDisplay); static_cast<Sprite*>(_target)->setSpriteFrame(frameToDisplay);
const ValueMap& dict = frame->getUserInfo(); const ValueMap& dict = frame->getUserInfo();
if ( !dict.empty() ) if ( !dict.empty() )

View File

@ -72,14 +72,14 @@ Component* Component::create(void)
return ret; return ret;
} }
const char* Component::getName() const const std::string& Component::getName() const
{ {
return _name.c_str(); return _name;
} }
void Component::setName(const char *name) void Component::setName(const std::string& name)
{ {
_name.assign(name); _name = name;
} }
Node* Component::getOwner() const Node* Component::getOwner() const

View File

@ -60,8 +60,8 @@ public:
virtual void setEnabled(bool b); virtual void setEnabled(bool b);
static Component* create(void); static Component* create(void);
const char* getName() const; const std::string& getName() const;
void setName(const char *name); void setName(const std::string& name);
void setOwner(Node *pOwner); void setOwner(Node *pOwner);
Node* getOwner() const; Node* getOwner() const;

View File

@ -40,12 +40,10 @@ ComponentContainer::~ComponentContainer(void)
CC_SAFE_DELETE(_components); CC_SAFE_DELETE(_components);
} }
Component* ComponentContainer::get(const char *name) const Component* ComponentContainer::get(const std::string& name) const
{ {
Component* ret = nullptr; Component* ret = nullptr;
CCASSERT(name != nullptr, "Argument must be non-nil");
do { do {
CC_BREAK_IF(nullptr == name);
CC_BREAK_IF(nullptr == _components); CC_BREAK_IF(nullptr == _components);
ret = _components->at(name); ret = _components->at(name);
@ -77,10 +75,9 @@ bool ComponentContainer::add(Component *com)
return ret; return ret;
} }
bool ComponentContainer::remove(const char *name) bool ComponentContainer::remove(const std::string& name)
{ {
bool ret = false; bool ret = false;
CCASSERT(name != nullptr, "Argument must be non-nil");
do do
{ {
CC_BREAK_IF(!_components); CC_BREAK_IF(!_components);

View File

@ -47,9 +47,9 @@ public:
* @lua NA * @lua NA
*/ */
virtual ~ComponentContainer(void); virtual ~ComponentContainer(void);
virtual Component* get(const char *name) const; virtual Component* get(const std::string& name) const;
virtual bool add(Component *com); virtual bool add(Component *com);
virtual bool remove(const char *name); virtual bool remove(const std::string& name);
virtual void removeAll(); virtual void removeAll();
virtual void visit(float delta); virtual void visit(float delta);
public: public:

View File

@ -284,7 +284,7 @@ void Configuration::setValue(const std::string& key, const Value& value)
// //
// load file // load file
// //
void Configuration::loadConfigFile(const char *filename) void Configuration::loadConfigFile(const std::string& filename)
{ {
ValueMap dict = FileUtils::getInstance()->getValueMapFromFile(filename); ValueMap dict = FileUtils::getInstance()->getValueMapFromFile(filename);
CCASSERT(!dict.empty(), "cannot create dictionary"); CCASSERT(!dict.empty(), "cannot create dictionary");
@ -312,14 +312,14 @@ void Configuration::loadConfigFile(const char *filename)
if (! validMetadata) if (! validMetadata)
{ {
CCLOG("Invalid config format for file: %s", filename); CCLOG("Invalid config format for file: %s", filename.c_str());
return; return;
} }
auto dataIter = dict.find("data"); auto dataIter = dict.find("data");
if (dataIter == dict.end() || dataIter->second.getType() != Value::Type::MAP) if (dataIter == dict.end() || dataIter->second.getType() != Value::Type::MAP)
{ {
CCLOG("Expected 'data' dict, but not found. Config file: %s", filename); CCLOG("Expected 'data' dict, but not found. Config file: %s", filename.c_str());
return; return;
} }

View File

@ -128,7 +128,7 @@ public:
void gatherGPUInfo(); void gatherGPUInfo();
/** Loads a config file. If the keys are already present, then they are going to be replaced. Otherwise the new keys are added. */ /** Loads a config file. If the keys are already present, then they are going to be replaced. Otherwise the new keys are added. */
void loadConfigFile(const char *filename); void loadConfigFile(const std::string& filename);
private: private:
Configuration(void); Configuration(void);

View File

@ -1038,7 +1038,7 @@ CC_DEPRECATED_ATTRIBUTE typedef __Integer CCInteger;
CC_DEPRECATED_ATTRIBUTE typedef __Bool Bool; CC_DEPRECATED_ATTRIBUTE typedef __Bool Bool;
CC_DEPRECATED_ATTRIBUTE typedef __Bool CCBool; CC_DEPRECATED_ATTRIBUTE typedef __Bool CCBool;
CC_DEPRECATED_ATTRIBUTE typedef __String CCString; CC_DEPRECATED_ATTRIBUTE typedef __String CCString;
//CC_DEPRECATED_ATTRIBUTE typedef __String String; CC_DEPRECATED_ATTRIBUTE typedef __String String;
CC_DEPRECATED_ATTRIBUTE typedef __RGBAProtocol RGBAProtocol; CC_DEPRECATED_ATTRIBUTE typedef __RGBAProtocol RGBAProtocol;
CC_DEPRECATED_ATTRIBUTE typedef __NodeRGBA NodeRGBA; CC_DEPRECATED_ATTRIBUTE typedef __NodeRGBA NodeRGBA;

View File

@ -30,7 +30,7 @@ NS_CC_BEGIN
std::unordered_map<std::string, FontAtlas *> FontAtlasCache::_atlasMap; std::unordered_map<std::string, FontAtlas *> FontAtlasCache::_atlasMap;
FontAtlas * FontAtlasCache::getFontAtlasTTF(const char *fontFileName, int size, GlyphCollection glyphs, const char *customGlyphs, bool useDistanceField) FontAtlas * FontAtlasCache::getFontAtlasTTF(const std::string& fontFileName, int size, GlyphCollection glyphs, const char *customGlyphs, bool useDistanceField)
{ {
std::string atlasName = generateFontName(fontFileName, size, glyphs, useDistanceField); std::string atlasName = generateFontName(fontFileName, size, glyphs, useDistanceField);
FontAtlas *tempAtlas = _atlasMap[atlasName]; FontAtlas *tempAtlas = _atlasMap[atlasName];
@ -49,7 +49,7 @@ FontAtlas * FontAtlasCache::getFontAtlasTTF(const char *fontFileName, int size,
return tempAtlas; return tempAtlas;
} }
FontAtlas * FontAtlasCache::getFontAtlasFNT(const char *fontFileName) FontAtlas * FontAtlasCache::getFontAtlasFNT(const std::string& fontFileName)
{ {
std::string atlasName = generateFontName(fontFileName, 0, GlyphCollection::CUSTOM,false); std::string atlasName = generateFontName(fontFileName, 0, GlyphCollection::CUSTOM,false);
FontAtlas *tempAtlas = _atlasMap[atlasName]; FontAtlas *tempAtlas = _atlasMap[atlasName];
@ -68,7 +68,7 @@ FontAtlas * FontAtlasCache::getFontAtlasFNT(const char *fontFileName)
return tempAtlas; return tempAtlas;
} }
std::string FontAtlasCache::generateFontName(const char *fontFileName, int size, GlyphCollection theGlyphs, bool useDistanceField) std::string FontAtlasCache::generateFontName(const std::string& fontFileName, int size, GlyphCollection theGlyphs, bool useDistanceField)
{ {
std::string tempName(fontFileName); std::string tempName(fontFileName);

View File

@ -38,14 +38,14 @@ class CC_DLL FontAtlasCache
public: public:
static FontAtlas * getFontAtlasTTF(const char *fontFileName, int size, GlyphCollection glyphs, const char *customGlyphs = 0, bool useDistanceField = false); static FontAtlas * getFontAtlasTTF(const std::string& fontFileName, int size, GlyphCollection glyphs, const char *customGlyphs = 0, bool useDistanceField = false);
static FontAtlas * getFontAtlasFNT(const char *fontFileName); static FontAtlas * getFontAtlasFNT(const std::string& fontFileName);
static bool releaseFontAtlas(FontAtlas *atlas); static bool releaseFontAtlas(FontAtlas *atlas);
private: private:
static std::string generateFontName(const char *fontFileName, int size, GlyphCollection theGlyphs, bool useDistanceField); static std::string generateFontName(const std::string& fontFileName, int size, GlyphCollection theGlyphs, bool useDistanceField);
static std::unordered_map<std::string, FontAtlas *> _atlasMap; static std::unordered_map<std::string, FontAtlas *> _atlasMap;
}; };

View File

@ -30,7 +30,7 @@
NS_CC_BEGIN NS_CC_BEGIN
FontAtlas * FontAtlasFactory::createAtlasFromTTF(const char* fntFilePath, int fontSize, GlyphCollection glyphs, const char *customGlyphs, bool useDistanceField) FontAtlas * FontAtlasFactory::createAtlasFromTTF(const std::string& fntFilePath, int fontSize, GlyphCollection glyphs, const char *customGlyphs, bool useDistanceField)
{ {
Font *font = Font::createWithTTF(fntFilePath, fontSize, glyphs, customGlyphs); Font *font = Font::createWithTTF(fntFilePath, fontSize, glyphs, customGlyphs);
@ -45,7 +45,7 @@ FontAtlas * FontAtlasFactory::createAtlasFromTTF(const char* fntFilePath, int fo
} }
} }
FontAtlas * FontAtlasFactory::createAtlasFromFNT(const char* fntFilePath) FontAtlas * FontAtlasFactory::createAtlasFromFNT(const std::string& fntFilePath)
{ {
Font *font = Font::createWithFNT(fntFilePath); Font *font = Font::createWithFNT(fntFilePath);

View File

@ -36,8 +36,8 @@ class CC_DLL FontAtlasFactory
public: public:
static FontAtlas * createAtlasFromTTF(const char* fntFilePath, int fontSize, GlyphCollection glyphs, const char *customGlyphs = 0, bool useDistanceField = false); static FontAtlas * createAtlasFromTTF(const std::string& fntFilePath, int fontSize, GlyphCollection glyphs, const char *customGlyphs = 0, bool useDistanceField = false);
static FontAtlas * createAtlasFromFNT(const char* fntFilePath); static FontAtlas * createAtlasFromFNT(const std::string& fntFilePath);
private: private:
}; };

View File

@ -154,18 +154,18 @@ bool GLProgram::initWithVertexShaderByteArray(const GLchar* vShaderByteArray, co
bool GLProgram::initWithVertexShaderFilename(const char* vShaderFilename, const char* fShaderFilename) bool GLProgram::initWithVertexShaderFilename(const char* vShaderFilename, const char* fShaderFilename)
{ {
const GLchar * vertexSource = (GLchar*) String::createWithContentsOfFile(FileUtils::getInstance()->fullPathForFilename(vShaderFilename).c_str())->getCString(); std::string vertexSource = FileUtils::getInstance()->getStringFromFile(FileUtils::getInstance()->fullPathForFilename(vShaderFilename).c_str());
const GLchar * fragmentSource = (GLchar*) String::createWithContentsOfFile(FileUtils::getInstance()->fullPathForFilename(fShaderFilename).c_str())->getCString(); std::string fragmentSource = FileUtils::getInstance()->getStringFromFile(FileUtils::getInstance()->fullPathForFilename(fShaderFilename).c_str());
return initWithVertexShaderByteArray(vertexSource, fragmentSource); return initWithVertexShaderByteArray(vertexSource.c_str(), fragmentSource.c_str());
} }
std::string GLProgram::getDescription() const std::string GLProgram::getDescription() const
{ {
return String::createWithFormat("<GLProgram = " return StringUtils::format("<GLProgram = "
CC_FORMAT_PRINTF_SIZE_T CC_FORMAT_PRINTF_SIZE_T
" | Program = %i, VertexShader = %i, FragmentShader = %i>", " | Program = %i, VertexShader = %i, FragmentShader = %i>",
(size_t)this, _program, _vertShader, _fragShader)->getCString(); (size_t)this, _program, _vertShader, _fragShader);
} }
bool GLProgram::compileShader(GLuint * shader, GLenum type, const GLchar* source) bool GLProgram::compileShader(GLuint * shader, GLenum type, const GLchar* source)

View File

@ -25,9 +25,11 @@ THE SOFTWARE.
#ifndef __CC_IME_DELEGATE_H__ #ifndef __CC_IME_DELEGATE_H__
#define __CC_IME_DELEGATE_H__ #define __CC_IME_DELEGATE_H__
#include <string>
#include "CCGeometry.h" #include "CCGeometry.h"
NS_CC_BEGIN NS_CC_BEGIN
extern const std::string STD_STRING_EMPTY;
/** /**
* @addtogroup input * @addtogroup input
@ -114,7 +116,7 @@ protected:
* @js NA * @js NA
* @lua NA * @lua NA
*/ */
virtual const char * getContentText() { return 0; } virtual const std::string& getContentText() { return STD_STRING_EMPTY; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// keyboard show/hide notification // keyboard show/hide notification

View File

@ -239,14 +239,13 @@ void IMEDispatcher::dispatchDeleteBackward()
} while (0); } while (0);
} }
const char * IMEDispatcher::getContentText() const std::string& IMEDispatcher::getContentText()
{ {
const char * contentText = 0;
if (_impl && _impl->_delegateWithIme) if (_impl && _impl->_delegateWithIme)
{ {
contentText = _impl->_delegateWithIme->getContentText(); return _impl->_delegateWithIme->getContentText();
} }
return (contentText) ? contentText : ""; return STD_STRING_EMPTY;
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////

View File

@ -77,7 +77,7 @@ public:
* @js NA * @js NA
* @lua NA * @lua NA
*/ */
const char * getContentText(); const std::string& getContentText();
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// dispatch keyboard notification // dispatch keyboard notification

View File

@ -320,7 +320,7 @@ MenuItemAtlasFont * MenuItemAtlasFont::create(const std::string& value, const st
} }
// XXX: deprecated // XXX: deprecated
MenuItemAtlasFont * MenuItemAtlasFont::create(const char* value, const char* charMapFile, int itemWidth, int itemHeight, char startCharMap, Object* target, SEL_MenuHandler selector) MenuItemAtlasFont * MenuItemAtlasFont::create(const std::string& value, const std::string& charMapFile, int itemWidth, int itemHeight, char startCharMap, Object* target, SEL_MenuHandler selector)
{ {
MenuItemAtlasFont *ret = new MenuItemAtlasFont(); MenuItemAtlasFont *ret = new MenuItemAtlasFont();
ret->initWithString(value, charMapFile, itemWidth, itemHeight, startCharMap, target, selector); ret->initWithString(value, charMapFile, itemWidth, itemHeight, startCharMap, target, selector);
@ -337,7 +337,7 @@ MenuItemAtlasFont * MenuItemAtlasFont::create(const std::string& value, const st
} }
// XXX: deprecated // XXX: deprecated
bool MenuItemAtlasFont::initWithString(const char* value, const char* charMapFile, int itemWidth, int itemHeight, char startCharMap, Object* target, SEL_MenuHandler selector) bool MenuItemAtlasFont::initWithString(const std::string& value, const std::string& charMapFile, int itemWidth, int itemHeight, char startCharMap, Object* target, SEL_MenuHandler selector)
{ {
_target = target; _target = target;
CC_SAFE_RETAIN(_target); CC_SAFE_RETAIN(_target);
@ -387,7 +387,7 @@ const std::string& MenuItemFont::getFontName()
} }
// XXX: deprecated // XXX: deprecated
MenuItemFont * MenuItemFont::create(const char *value, Object* target, SEL_MenuHandler selector) MenuItemFont * MenuItemFont::create(const std::string& value, Object* target, SEL_MenuHandler selector)
{ {
MenuItemFont *ret = new MenuItemFont(); MenuItemFont *ret = new MenuItemFont();
ret->initWithString(value, target, selector); ret->initWithString(value, target, selector);
@ -422,9 +422,9 @@ MenuItemFont::~MenuItemFont()
} }
// XXX: deprecated // XXX: deprecated
bool MenuItemFont::initWithString(const char *value, Object* target, SEL_MenuHandler selector) bool MenuItemFont::initWithString(const std::string& value, Object* target, SEL_MenuHandler selector)
{ {
CCASSERT( value != nullptr && strlen(value) != 0, "Value length must be greater than 0"); CCASSERT( !value.empty(), "Value length must be greater than 0");
_target = target; _target = target;
CC_SAFE_RETAIN(target); CC_SAFE_RETAIN(target);
@ -433,7 +433,7 @@ bool MenuItemFont::initWithString(const char *value, Object* target, SEL_MenuHan
bool MenuItemFont::initWithString(const std::string& value, const ccMenuCallback& callback) bool MenuItemFont::initWithString(const std::string& value, const ccMenuCallback& callback)
{ {
CCASSERT( value.size() >= 0, "Value length must be greater than 0"); CCASSERT( !value.empty(), "Value length must be greater than 0");
_fontName = _globalFontName; _fontName = _globalFontName;
_fontSize = _globalFontSize; _fontSize = _globalFontSize;
@ -710,7 +710,7 @@ MenuItemImage * MenuItemImage::create(const std::string& normalImage, const std:
} }
// XXX deprecated // XXX deprecated
MenuItemImage * MenuItemImage::create(const char *normalImage, const char *selectedImage, Object* target, SEL_MenuHandler selector) MenuItemImage * MenuItemImage::create(const std::string& normalImage, const std::string& selectedImage, Object* target, SEL_MenuHandler selector)
{ {
return MenuItemImage::create(normalImage, selectedImage, "", target, selector); return MenuItemImage::create(normalImage, selectedImage, "", target, selector);
} }
@ -721,7 +721,7 @@ MenuItemImage * MenuItemImage::create(const std::string& normalImage, const std:
} }
// XXX deprecated // XXX deprecated
MenuItemImage * MenuItemImage::create(const char *normalImage, const char *selectedImage, const char *disabledImage, Object* target, SEL_MenuHandler selector) MenuItemImage * MenuItemImage::create(const std::string& normalImage, const std::string& selectedImage, const std::string& disabledImage, Object* target, SEL_MenuHandler selector)
{ {
MenuItemImage *ret = new MenuItemImage(); MenuItemImage *ret = new MenuItemImage();
if (ret && ret->initWithNormalImage(normalImage, selectedImage, disabledImage, target, selector)) if (ret && ret->initWithNormalImage(normalImage, selectedImage, disabledImage, target, selector))
@ -758,7 +758,7 @@ MenuItemImage * MenuItemImage::create(const std::string& normalImage, const std:
} }
// XXX: deprecated // XXX: deprecated
bool MenuItemImage::initWithNormalImage(const char *normalImage, const char *selectedImage, const char *disabledImage, Object* target, SEL_MenuHandler selector) bool MenuItemImage::initWithNormalImage(const std::string& normalImage, const std::string& selectedImage, const std::string& disabledImage, Object* target, SEL_MenuHandler selector)
{ {
_target = target; _target = target;
CC_SAFE_RETAIN(_target); CC_SAFE_RETAIN(_target);

View File

@ -217,7 +217,7 @@ public:
/** creates a menu item from a string and atlas with a target/selector */ /** creates a menu item from a string and atlas with a target/selector */
static MenuItemAtlasFont* create(const std::string& value, const std::string& charMapFile, int itemWidth, int itemHeight, char startCharMap); static MenuItemAtlasFont* create(const std::string& value, const std::string& charMapFile, int itemWidth, int itemHeight, char startCharMap);
/** creates a menu item from a string and atlas. Use it with MenuItemToggle */ /** creates a menu item from a string and atlas. Use it with MenuItemToggle */
CC_DEPRECATED_ATTRIBUTE static MenuItemAtlasFont* create(const char* value, const char* charMapFile, int itemWidth, int itemHeight, char startCharMap, Object* target, SEL_MenuHandler selector); CC_DEPRECATED_ATTRIBUTE static MenuItemAtlasFont* create(const std::string& value, const std::string& charMapFile, int itemWidth, int itemHeight, char startCharMap, Object* target, SEL_MenuHandler selector);
/** creates a menu item from a string and atlas. Use it with MenuItemToggle */ /** creates a menu item from a string and atlas. Use it with MenuItemToggle */
static MenuItemAtlasFont* create(const std::string& value, const std::string& charMapFile, int itemWidth, int itemHeight, char startCharMap, const ccMenuCallback& callback); static MenuItemAtlasFont* create(const std::string& value, const std::string& charMapFile, int itemWidth, int itemHeight, char startCharMap, const ccMenuCallback& callback);
@ -233,7 +233,7 @@ protected:
virtual ~MenuItemAtlasFont(){} virtual ~MenuItemAtlasFont(){}
/** initializes a menu item from a string and atlas with a target/selector */ /** initializes a menu item from a string and atlas with a target/selector */
CC_DEPRECATED_ATTRIBUTE bool initWithString(const char *value, const char *charMapFile, int itemWidth, int itemHeight, char startCharMap, Object* target, SEL_MenuHandler selector); CC_DEPRECATED_ATTRIBUTE bool initWithString(const std::string& value, const std::string& charMapFile, int itemWidth, int itemHeight, char startCharMap, Object* target, SEL_MenuHandler selector);
/** initializes a menu item from a string and atlas with a target/selector */ /** initializes a menu item from a string and atlas with a target/selector */
bool initWithString(const std::string& value, const std::string& charMapFile, int itemWidth, int itemHeight, char startCharMap, const ccMenuCallback& callback); bool initWithString(const std::string& value, const std::string& charMapFile, int itemWidth, int itemHeight, char startCharMap, const ccMenuCallback& callback);
@ -251,7 +251,7 @@ public:
/** creates a menu item from a string without target/selector. To be used with MenuItemToggle */ /** creates a menu item from a string without target/selector. To be used with MenuItemToggle */
static MenuItemFont * create(const std::string& value = ""); static MenuItemFont * create(const std::string& value = "");
/** creates a menu item from a string with a target/selector */ /** creates a menu item from a string with a target/selector */
CC_DEPRECATED_ATTRIBUTE static MenuItemFont * create(const char *value, Object* target, SEL_MenuHandler selector); CC_DEPRECATED_ATTRIBUTE static MenuItemFont * create(const std::string& value, Object* target, SEL_MenuHandler selector);
/** creates a menu item from a string with a target/selector */ /** creates a menu item from a string with a target/selector */
static MenuItemFont * create(const std::string& value, const ccMenuCallback& callback); static MenuItemFont * create(const std::string& value, const ccMenuCallback& callback);
@ -306,7 +306,7 @@ protected:
virtual ~MenuItemFont(); virtual ~MenuItemFont();
/** initializes a menu item from a string with a target/selector */ /** initializes a menu item from a string with a target/selector */
CC_DEPRECATED_ATTRIBUTE bool initWithString(const char *value, Object* target, SEL_MenuHandler selector); CC_DEPRECATED_ATTRIBUTE bool initWithString(const std::string& value, Object* target, SEL_MenuHandler selector);
/** initializes a menu item from a string with a target/selector */ /** initializes a menu item from a string with a target/selector */
bool initWithString(const std::string& value, const ccMenuCallback& callback); bool initWithString(const std::string& value, const ccMenuCallback& callback);
@ -411,12 +411,12 @@ public:
/** creates a menu item with a normal,selected and disabled image*/ /** creates a menu item with a normal,selected and disabled image*/
static MenuItemImage* create(const std::string& normalImage, const std::string& selectedImage, const std::string& disabledImage); static MenuItemImage* create(const std::string& normalImage, const std::string& selectedImage, const std::string& disabledImage);
/** creates a menu item with a normal and selected image with target/selector */ /** creates a menu item with a normal and selected image with target/selector */
CC_DEPRECATED_ATTRIBUTE static MenuItemImage* create(const char *normalImage, const char *selectedImage, Object* target, SEL_MenuHandler selector); CC_DEPRECATED_ATTRIBUTE static MenuItemImage* create(const std::string& normalImage, const std::string& selectedImage, Object* target, SEL_MenuHandler selector);
/** creates a menu item with a normal and selected image with a callable object */ /** creates a menu item with a normal and selected image with a callable object */
static MenuItemImage* create(const std::string&normalImage, const std::string&selectedImage, const ccMenuCallback& callback); static MenuItemImage* create(const std::string&normalImage, const std::string&selectedImage, const ccMenuCallback& callback);
/** creates a menu item with a normal,selected and disabled image with target/selector */ /** creates a menu item with a normal,selected and disabled image with target/selector */
CC_DEPRECATED_ATTRIBUTE static MenuItemImage* create(const char *normalImage, const char *selectedImage, const char *disabledImage, Object* target, SEL_MenuHandler selector); CC_DEPRECATED_ATTRIBUTE static MenuItemImage* create(const std::string& normalImage, const std::string& selectedImage, const std::string& disabledImage, Object* target, SEL_MenuHandler selector);
/** creates a menu item with a normal,selected and disabled image with a callable object */ /** creates a menu item with a normal,selected and disabled image with a callable object */
static MenuItemImage* create(const std::string&normalImage, const std::string&selectedImage, const std::string&disabledImage, const ccMenuCallback& callback); static MenuItemImage* create(const std::string&normalImage, const std::string&selectedImage, const std::string&disabledImage, const ccMenuCallback& callback);
@ -440,7 +440,7 @@ protected:
bool init(); bool init();
/** initializes a menu item with a normal, selected and disabled image with target/selector */ /** initializes a menu item with a normal, selected and disabled image with target/selector */
CC_DEPRECATED_ATTRIBUTE bool initWithNormalImage(const char *normalImage, const char *selectedImage, const char *disabledImage, Object* target, SEL_MenuHandler selector); CC_DEPRECATED_ATTRIBUTE bool initWithNormalImage(const std::string& normalImage, const std::string& selectedImage, const std::string& disabledImage, Object* target, SEL_MenuHandler selector);
/** initializes a menu item with a normal, selected and disabled image with a callable object */ /** initializes a menu item with a normal, selected and disabled image with a callable object */
bool initWithNormalImage(const std::string& normalImage, const std::string& selectedImage, const std::string& disabledImage, const ccMenuCallback& callback); bool initWithNormalImage(const std::string& normalImage, const std::string& selectedImage, const std::string& disabledImage, const ccMenuCallback& callback);

View File

@ -65,7 +65,7 @@ MotionStreak::~MotionStreak()
CC_SAFE_FREE(_texCoords); CC_SAFE_FREE(_texCoords);
} }
MotionStreak* MotionStreak::create(float fade, float minSeg, float stroke, const Color3B& color, const char* path) MotionStreak* MotionStreak::create(float fade, float minSeg, float stroke, const Color3B& color, const std::string& path)
{ {
MotionStreak *ret = new MotionStreak(); MotionStreak *ret = new MotionStreak();
if (ret && ret->initWithFade(fade, minSeg, stroke, color, path)) if (ret && ret->initWithFade(fade, minSeg, stroke, color, path))
@ -91,9 +91,9 @@ MotionStreak* MotionStreak::create(float fade, float minSeg, float stroke, const
return nullptr; return nullptr;
} }
bool MotionStreak::initWithFade(float fade, float minSeg, float stroke, const Color3B& color, const char* path) bool MotionStreak::initWithFade(float fade, float minSeg, float stroke, const Color3B& color, const std::string& path)
{ {
CCASSERT(path != nullptr, "Invalid filename"); CCASSERT(!path.empty(), "Invalid filename");
Texture2D *texture = Director::getInstance()->getTextureCache()->addImage(path); Texture2D *texture = Director::getInstance()->getTextureCache()->addImage(path);
return initWithFade(fade, minSeg, stroke, color, texture); return initWithFade(fade, minSeg, stroke, color, texture);

View File

@ -50,7 +50,7 @@ class CC_DLL MotionStreak : public Node, public TextureProtocol
{ {
public: public:
/** creates and initializes a motion streak with fade in seconds, minimum segments, stroke's width, color, texture filename */ /** creates and initializes a motion streak with fade in seconds, minimum segments, stroke's width, color, texture filename */
static MotionStreak* create(float fade, float minSeg, float stroke, const Color3B& color, const char* path); static MotionStreak* create(float fade, float minSeg, float stroke, const Color3B& color, const std::string& path);
/** creates and initializes a motion streak with fade in seconds, minimum segments, stroke's width, color, texture */ /** creates and initializes a motion streak with fade in seconds, minimum segments, stroke's width, color, texture */
static MotionStreak* create(float fade, float minSeg, float stroke, const Color3B& color, Texture2D* texture); static MotionStreak* create(float fade, float minSeg, float stroke, const Color3B& color, Texture2D* texture);
@ -116,7 +116,7 @@ protected:
virtual ~MotionStreak(); virtual ~MotionStreak();
/** initializes a motion streak with fade in seconds, minimum segments, stroke's width, color and texture filename */ /** initializes a motion streak with fade in seconds, minimum segments, stroke's width, color and texture filename */
bool initWithFade(float fade, float minSeg, float stroke, const Color3B& color, const char* path); bool initWithFade(float fade, float minSeg, float stroke, const Color3B& color, const std::string& path);
/** initializes a motion streak with fade in seconds, minimum segments, stroke's width, color and texture */ /** initializes a motion streak with fade in seconds, minimum segments, stroke's width, color and texture */
bool initWithFade(float fade, float minSeg, float stroke, const Color3B& color, Texture2D* texture); bool initWithFade(float fade, float minSeg, float stroke, const Color3B& color, Texture2D* texture);

View File

@ -1346,7 +1346,7 @@ void Node::updateTransform()
child->updateTransform(); child->updateTransform();
} }
Component* Node::getComponent(const char *pName) Component* Node::getComponent(const std::string& pName)
{ {
if( _componentContainer ) if( _componentContainer )
return _componentContainer->get(pName); return _componentContainer->get(pName);
@ -1361,7 +1361,7 @@ bool Node::addComponent(Component *pComponent)
return _componentContainer->add(pComponent); return _componentContainer->add(pComponent);
} }
bool Node::removeComponent(const char *pName) bool Node::removeComponent(const std::string& pName)
{ {
if( _componentContainer ) if( _componentContainer )
return _componentContainer->remove(pName); return _componentContainer->remove(pName);

View File

@ -1322,7 +1322,7 @@ public:
/** /**
* gets a component by its name * gets a component by its name
*/ */
Component* getComponent(const char *pName); Component* getComponent(const std::string& pName);
/** /**
* adds a component * adds a component
@ -1332,7 +1332,7 @@ public:
/** /**
* removes a component by its name * removes a component by its name
*/ */
virtual bool removeComponent(const char *pName); virtual bool removeComponent(const std::string& pName);
/** /**
* removes all components * removes all components

View File

@ -74,7 +74,7 @@ void NotificationCenter::purgeNotificationCenter(void)
// //
// internal functions // internal functions
// //
bool NotificationCenter::observerExisted(Object *target,const char *name, Object *sender) bool NotificationCenter::observerExisted(Object *target, const std::string& name, Object *sender)
{ {
Object* obj = nullptr; Object* obj = nullptr;
CCARRAY_FOREACH(_observers, obj) CCARRAY_FOREACH(_observers, obj)
@ -83,7 +83,7 @@ bool NotificationCenter::observerExisted(Object *target,const char *name, Object
if (!observer) if (!observer)
continue; continue;
if (!strcmp(observer->getName(),name) && observer->getTarget() == target && observer->getSender() == sender) if (observer->getName() == name && observer->getTarget() == target && observer->getSender() == sender)
return true; return true;
} }
return false; return false;
@ -94,7 +94,7 @@ bool NotificationCenter::observerExisted(Object *target,const char *name, Object
// //
void NotificationCenter::addObserver(Object *target, void NotificationCenter::addObserver(Object *target,
SEL_CallFuncO selector, SEL_CallFuncO selector,
const char *name, const std::string& name,
Object *sender) Object *sender)
{ {
if (this->observerExisted(target, name, sender)) if (this->observerExisted(target, name, sender))
@ -108,7 +108,7 @@ void NotificationCenter::addObserver(Object *target,
_observers->addObject(observer); _observers->addObject(observer);
} }
void NotificationCenter::removeObserver(Object *target,const char *name) void NotificationCenter::removeObserver(Object *target, const std::string& name)
{ {
Object* obj = nullptr; Object* obj = nullptr;
CCARRAY_FOREACH(_observers, obj) CCARRAY_FOREACH(_observers, obj)
@ -117,7 +117,7 @@ void NotificationCenter::removeObserver(Object *target,const char *name)
if (!observer) if (!observer)
continue; continue;
if (!strcmp(observer->getName(),name) && observer->getTarget() == target) if (observer->getName() == name && observer->getTarget() == target)
{ {
_observers->removeObject(observer); _observers->removeObject(observer);
return; return;
@ -146,7 +146,7 @@ int NotificationCenter::removeAllObservers(Object *target)
return static_cast<int>(toRemove->count()); return static_cast<int>(toRemove->count());
} }
void NotificationCenter::registerScriptObserver( Object *target, int handler,const char* name) void NotificationCenter::registerScriptObserver( Object *target, int handler,const std::string& name)
{ {
if (this->observerExisted(target, name, nullptr)) if (this->observerExisted(target, name, nullptr))
@ -161,7 +161,7 @@ void NotificationCenter::registerScriptObserver( Object *target, int handler,con
_observers->addObject(observer); _observers->addObject(observer);
} }
void NotificationCenter::unregisterScriptObserver(Object *target,const char* name) void NotificationCenter::unregisterScriptObserver(Object *target,const std::string& name)
{ {
Object* obj = nullptr; Object* obj = nullptr;
CCARRAY_FOREACH(_observers, obj) CCARRAY_FOREACH(_observers, obj)
@ -170,14 +170,14 @@ void NotificationCenter::unregisterScriptObserver(Object *target,const char* nam
if (!observer) if (!observer)
continue; continue;
if ( !strcmp(observer->getName(),name) && observer->getTarget() == target) if ( observer->getName() == name && observer->getTarget() == target)
{ {
_observers->removeObject(observer); _observers->removeObject(observer);
} }
} }
} }
void NotificationCenter::postNotification(const char *name, Object *sender) void NotificationCenter::postNotification(const std::string& name, Object *sender)
{ {
__Array* ObserversCopy = __Array::createWithCapacity(_observers->count()); __Array* ObserversCopy = __Array::createWithCapacity(_observers->count());
ObserversCopy->addObjectsFromArray(_observers); ObserversCopy->addObjectsFromArray(_observers);
@ -188,11 +188,11 @@ void NotificationCenter::postNotification(const char *name, Object *sender)
if (!observer) if (!observer)
continue; continue;
if (!strcmp(name,observer->getName()) && (observer->getSender() == sender || observer->getSender() == nullptr || sender == nullptr)) if (observer->getName() == name && (observer->getSender() == sender || observer->getSender() == nullptr || sender == nullptr))
{ {
if (0 != observer->getHandler()) if (0 != observer->getHandler())
{ {
BasicScriptData data(this, (void*)name); BasicScriptData data(this, (void*)name.c_str());
ScriptEvent scriptEvent(kNotificationEvent,(void*)&data); ScriptEvent scriptEvent(kNotificationEvent,(void*)&data);
ScriptEngineManager::getInstance()->getScriptEngine()->sendEvent(&scriptEvent); ScriptEngineManager::getInstance()->getScriptEngine()->sendEvent(&scriptEvent);
} }
@ -204,14 +204,14 @@ void NotificationCenter::postNotification(const char *name, Object *sender)
} }
} }
void NotificationCenter::postNotification(const char *name) void NotificationCenter::postNotification(const std::string& name)
{ {
this->postNotification(name,nullptr); this->postNotification(name,nullptr);
} }
int NotificationCenter::getObserverHandlerByName(const char* name) int NotificationCenter::getObserverHandlerByName(const std::string& name)
{ {
if (nullptr == name || strlen(name) == 0) if (name.empty())
{ {
return 0; return 0;
} }
@ -223,7 +223,7 @@ int NotificationCenter::getObserverHandlerByName(const char* name)
if (nullptr == observer) if (nullptr == observer)
continue; continue;
if ( 0 == strcmp(observer->getName(),name) ) if ( observer->getName() == name )
{ {
return observer->getHandler(); return observer->getHandler();
break; break;
@ -240,7 +240,7 @@ int NotificationCenter::getObserverHandlerByName(const char* name)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
NotificationObserver::NotificationObserver(Object *target, NotificationObserver::NotificationObserver(Object *target,
SEL_CallFuncO selector, SEL_CallFuncO selector,
const char *name, const std::string& name,
Object *sender) Object *sender)
{ {
_target = target; _target = target;
@ -278,9 +278,9 @@ SEL_CallFuncO NotificationObserver::getSelector() const
return _selector; return _selector;
} }
const char* NotificationObserver::getName() const const std::string& NotificationObserver::getName() const
{ {
return _name.c_str(); return _name;
} }
Object* NotificationObserver::getSender() const Object* NotificationObserver::getSender() const

View File

@ -67,14 +67,14 @@ public:
*/ */
void addObserver(Object *target, void addObserver(Object *target,
SEL_CallFuncO selector, SEL_CallFuncO selector,
const char *name, const std::string& name,
Object *sender); Object *sender);
/** @brief Removes the observer by the specified target and name. /** @brief Removes the observer by the specified target and name.
* @param target The target of this notification. * @param target The target of this notification.
* @param name The name of this notification. * @param name The name of this notification.
*/ */
void removeObserver(Object *target,const char *name); void removeObserver(Object *target,const std::string& name);
/** @brief Removes all notifications registered by this target /** @brief Removes all notifications registered by this target
* @param target The target of this notification. * @param target The target of this notification.
@ -86,21 +86,21 @@ public:
* @note Only supports Lua Binding now. * @note Only supports Lua Binding now.
* @param handler The lua handler. * @param handler The lua handler.
*/ */
void registerScriptObserver(Object *target,int handler,const char* name); void registerScriptObserver(Object *target,int handler,const std::string& name);
/** Unregisters script observer */ /** Unregisters script observer */
void unregisterScriptObserver(Object *target,const char* name); void unregisterScriptObserver(Object *target,const std::string& name);
/** @brief Posts one notification event by name. /** @brief Posts one notification event by name.
* @param name The name of this notification. * @param name The name of this notification.
*/ */
void postNotification(const char *name); void postNotification(const std::string& name);
/** @brief Posts one notification event by name. /** @brief Posts one notification event by name.
* @param name The name of this notification. * @param name The name of this notification.
* @param sender The object posting the notification. Can be nullptr * @param sender The object posting the notification. Can be nullptr
*/ */
void postNotification(const char *name, Object *sender); void postNotification(const std::string& name, Object *sender);
/** @brief Gets script handler. /** @brief Gets script handler.
* @note Only supports Lua Binding now. * @note Only supports Lua Binding now.
@ -112,12 +112,12 @@ public:
* @param name The name of this notification. * @param name The name of this notification.
* @return The observer script handle. * @return The observer script handle.
*/ */
int getObserverHandlerByName(const char* name); int getObserverHandlerByName(const std::string& name);
private: private:
// internal functions // internal functions
// Check whether the observer exists by the specified target and name. // Check whether the observer exists by the specified target and name.
bool observerExisted(Object *target,const char *name, Object *sender); bool observerExisted(Object *target,const std::string& name, Object *sender);
// variables // variables
// //
@ -138,7 +138,7 @@ public:
*/ */
NotificationObserver(Object *target, NotificationObserver(Object *target,
SEL_CallFuncO selector, SEL_CallFuncO selector,
const char *name, const std::string& name,
Object *sender); Object *sender);
/** NotificationObserver destructor function /** NotificationObserver destructor function
@ -168,7 +168,7 @@ public:
* @js NA * @js NA
* @lua NA * @lua NA
*/ */
const char* getName() const; const std::string& getName() const;
/** /**
* @js NA * @js NA
* @lua NA * @lua NA

View File

@ -41,7 +41,7 @@ static Texture2D* getDefaultTexture()
do do
{ {
bool ret = false; bool ret = false;
const char* key = "/__firePngData"; const std::string key = "/__firePngData";
texture = Director::getInstance()->getTextureCache()->getTextureForKey(key); texture = Director::getInstance()->getTextureCache()->getTextureForKey(key);
CC_BREAK_IF(texture != nullptr); CC_BREAK_IF(texture != nullptr);

View File

@ -66,7 +66,7 @@ SpriteBatchNode* SpriteBatchNode::createWithTexture(Texture2D* tex, ssize_t capa
* creation with File Image * creation with File Image
*/ */
SpriteBatchNode* SpriteBatchNode::create(const char *fileImage, ssize_t capacity/* = DEFAULT_CAPACITY*/) SpriteBatchNode* SpriteBatchNode::create(const std::string& fileImage, ssize_t capacity/* = DEFAULT_CAPACITY*/)
{ {
SpriteBatchNode *batchNode = new SpriteBatchNode(); SpriteBatchNode *batchNode = new SpriteBatchNode();
batchNode->initWithFile(fileImage, capacity); batchNode->initWithFile(fileImage, capacity);
@ -112,7 +112,7 @@ bool SpriteBatchNode::init()
/* /*
* init with FileImage * init with FileImage
*/ */
bool SpriteBatchNode::initWithFile(const char* fileImage, ssize_t capacity) bool SpriteBatchNode::initWithFile(const std::string& fileImage, ssize_t capacity)
{ {
Texture2D *texture2D = Director::getInstance()->getTextureCache()->addImage(fileImage); Texture2D *texture2D = Director::getInstance()->getTextureCache()->addImage(fileImage);
return initWithTexture(texture2D, capacity); return initWithTexture(texture2D, capacity);

View File

@ -74,7 +74,7 @@ public:
The capacity will be increased in 33% in runtime if it run out of space. The capacity will be increased in 33% in runtime if it run out of space.
The file will be loaded using the TextureMgr. The file will be loaded using the TextureMgr.
*/ */
static SpriteBatchNode* create(const char* fileImage, ssize_t capacity = DEFAULT_CAPACITY); static SpriteBatchNode* create(const std::string& fileImage, ssize_t capacity = DEFAULT_CAPACITY);
/** /**
* @js ctor * @js ctor
*/ */
@ -95,7 +95,7 @@ public:
* @js init * @js init
* @lua init * @lua init
*/ */
bool initWithFile(const char* fileImage, ssize_t capacity); bool initWithFile(const std::string& fileImage, ssize_t capacity);
bool init(); bool init();
/** returns the TextureAtlas object */ /** returns the TextureAtlas object */

View File

@ -143,8 +143,8 @@ public:
/** Creates the tiles */ /** Creates the tiles */
void setupTiles(); void setupTiles();
inline const char* getLayerName(){ return _layerName.c_str(); } inline const std::string& getLayerName(){ return _layerName; }
inline void setLayerName(const char *layerName){ _layerName = layerName; } inline void setLayerName(const std::string& layerName){ _layerName = layerName; }
/** size of the layer in tiles */ /** size of the layer in tiles */
inline const Size& getLayerSize() const { return _layerSize; }; inline const Size& getLayerSize() const { return _layerSize; };

View File

@ -122,7 +122,7 @@ public:
* @js NA * @js NA
* @lua NA * @lua NA
*/ */
CC_DEPRECATED_ATTRIBUTE TMXLayer* layerNamed(const char *layerName) const { return getLayer(layerName); }; CC_DEPRECATED_ATTRIBUTE TMXLayer* layerNamed(const std::string& layerName) const { return getLayer(layerName); };
/** return the TMXObjectGroup for the specific group */ /** return the TMXObjectGroup for the specific group */
TMXObjectGroup* getObjectGroup(const std::string& groupName) const; TMXObjectGroup* getObjectGroup(const std::string& groupName) const;
@ -130,7 +130,7 @@ public:
* @js NA * @js NA
* @lua NA * @lua NA
*/ */
CC_DEPRECATED_ATTRIBUTE TMXObjectGroup* objectGroupNamed(const char *groupName) const { return getObjectGroup(groupName); }; CC_DEPRECATED_ATTRIBUTE TMXObjectGroup* objectGroupNamed(const std::string& groupName) const { return getObjectGroup(groupName); };
/** return the value for the specific property name */ /** return the value for the specific property name */
Value getProperty(const std::string& propertyName) const; Value getProperty(const std::string& propertyName) const;

View File

@ -236,9 +236,9 @@ void TextFieldTTF::deleteBackward()
setString(text); setString(text);
} }
const char * TextFieldTTF::getContentText() const std::string& TextFieldTTF::getContentText()
{ {
return _inputText.c_str(); return _inputText;
} }
void TextFieldTTF::draw() void TextFieldTTF::draw()

View File

@ -182,7 +182,7 @@ protected:
virtual bool canDetachWithIME() override; virtual bool canDetachWithIME() override;
virtual void insertText(const char * text, int len) override; virtual void insertText(const char * text, int len) override;
virtual void deleteBackward() override; virtual void deleteBackward() override;
virtual const char * getContentText() override; virtual const std::string& getContentText() override;
private: private:
class LengthStack; class LengthStack;
LengthStack * _lens; LengthStack * _lens;

View File

@ -673,7 +673,7 @@ bool Texture2D::initWithMipmaps(MipmapInfo* mipmaps, int mipmapsNum, PixelFormat
std::string Texture2D::getDescription() const std::string Texture2D::getDescription() const
{ {
return String::createWithFormat("<Texture2D | Name = %u | Dimensions = %ld x %ld | Coordinates = (%.2f, %.2f)>", _name, (long)_pixelsWide, (long)_pixelsHigh, _maxS, _maxT)->getCString(); return StringUtils::format("<Texture2D | Name = %u | Dimensions = %ld x %ld | Coordinates = (%.2f, %.2f)>", _name, (long)_pixelsWide, (long)_pixelsHigh, _maxS, _maxT);
} }
// implementation Texture2D (Image) // implementation Texture2D (Image)

View File

@ -110,7 +110,7 @@ void TextureAtlas::setQuads(V3F_C4B_T2F_Quad* quads)
// TextureAtlas - alloc & init // TextureAtlas - alloc & init
TextureAtlas * TextureAtlas::create(const char* file, ssize_t capacity) TextureAtlas * TextureAtlas::create(const std::string& file, ssize_t capacity)
{ {
TextureAtlas * textureAtlas = new TextureAtlas(); TextureAtlas * textureAtlas = new TextureAtlas();
if(textureAtlas && textureAtlas->initWithFile(file, capacity)) if(textureAtlas && textureAtlas->initWithFile(file, capacity))
@ -134,7 +134,7 @@ TextureAtlas * TextureAtlas::createWithTexture(Texture2D *texture, ssize_t capac
return nullptr; return nullptr;
} }
bool TextureAtlas::initWithFile(const char * file, ssize_t capacity) bool TextureAtlas::initWithFile(const std::string& file, ssize_t capacity)
{ {
// retained in property // retained in property
Texture2D *texture = Director::getInstance()->getTextureCache()->addImage(file); Texture2D *texture = Director::getInstance()->getTextureCache()->addImage(file);
@ -145,7 +145,7 @@ bool TextureAtlas::initWithFile(const char * file, ssize_t capacity)
} }
else else
{ {
CCLOG("cocos2d: Could not open file: %s", file); CCLOG("cocos2d: Could not open file: %s", file.c_str());
return false; return false;
} }
} }
@ -224,7 +224,7 @@ void TextureAtlas::listenBackToForeground(Object *obj)
std::string TextureAtlas::getDescription() const std::string TextureAtlas::getDescription() const
{ {
return String::createWithFormat("<TextureAtlas | totalQuads = %zd>", _totalQuads)->getCString(); return StringUtils::format("<TextureAtlas | totalQuads = %zd>", _totalQuads);
} }

View File

@ -59,7 +59,7 @@ public:
/** creates a TextureAtlas with an filename and with an initial capacity for Quads. /** creates a TextureAtlas with an filename and with an initial capacity for Quads.
* The TextureAtlas capacity can be increased in runtime. * The TextureAtlas capacity can be increased in runtime.
*/ */
static TextureAtlas* create(const char* file , ssize_t capacity); static TextureAtlas* create(const std::string& file , ssize_t capacity);
/** creates a TextureAtlas with a previously initialized Texture2D object, and /** creates a TextureAtlas with a previously initialized Texture2D object, and
* with an initial capacity for n Quads. * with an initial capacity for n Quads.
@ -81,7 +81,7 @@ public:
* *
* WARNING: Do not reinitialize the TextureAtlas because it will leak memory (issue #706) * WARNING: Do not reinitialize the TextureAtlas because it will leak memory (issue #706)
*/ */
bool initWithFile(const char* file, ssize_t capacity); bool initWithFile(const std::string& file, ssize_t capacity);
/** initializes a TextureAtlas with a previously initialized Texture2D object, and /** initializes a TextureAtlas with a previously initialized Texture2D object, and
* with an initial capacity for Quads. * with an initial capacity for Quads.

View File

@ -89,7 +89,7 @@ void TextureCache::purgeSharedTextureCache()
std::string TextureCache::getDescription() const std::string TextureCache::getDescription() const
{ {
return String::createWithFormat("<TextureCache | Number of textures = %lu>", _textures.size() )->getCString(); return StringUtils::format("<TextureCache | Number of textures = %lu>", _textures.size());
} }
void TextureCache::addImageAsync(const std::string &path, Object *target, SEL_CallFuncO selector) void TextureCache::addImageAsync(const std::string &path, Object *target, SEL_CallFuncO selector)
@ -193,13 +193,13 @@ void TextureCache::loadImage()
if (generateImage) if (generateImage)
{ {
const char *filename = asyncStruct->filename.c_str(); const std::string& filename = asyncStruct->filename;
// generate image // generate image
image = new Image(); image = new Image();
if (image && !image->initWithImageFileThreadSafe(filename)) if (image && !image->initWithImageFileThreadSafe(filename))
{ {
CC_SAFE_RELEASE(image); CC_SAFE_RELEASE(image);
CCLOG("can not load %s", filename); CCLOG("can not load %s", filename.c_str());
continue; continue;
} }
} }
@ -245,7 +245,7 @@ void TextureCache::addImageAsyncCallBack(float dt)
Object *target = asyncStruct->target; Object *target = asyncStruct->target;
SEL_CallFuncO selector = asyncStruct->selector; SEL_CallFuncO selector = asyncStruct->selector;
const char* filename = asyncStruct->filename.c_str(); const std::string& filename = asyncStruct->filename;
Texture2D *texture = nullptr; Texture2D *texture = nullptr;
if (image) if (image)
@ -326,7 +326,7 @@ Texture2D * TextureCache::addImage(const std::string &path)
{ {
#if CC_ENABLE_CACHE_TEXTURE_DATA #if CC_ENABLE_CACHE_TEXTURE_DATA
// cache the texture file name // cache the texture file name
VolatileTextureMgr::addImageTexture(texture, fullpath.c_str()); VolatileTextureMgr::addImageTexture(texture, fullpath);
#endif #endif
// texture already retained, no need to re-retain it // texture already retained, no need to re-retain it
_textures.insert( std::make_pair(fullpath, texture) ); _textures.insert( std::make_pair(fullpath, texture) );
@ -509,7 +509,7 @@ VolatileTexture::~VolatileTexture()
CC_SAFE_RELEASE(_uiImage); CC_SAFE_RELEASE(_uiImage);
} }
void VolatileTextureMgr::addImageTexture(Texture2D *tt, const char* imageFileName) void VolatileTextureMgr::addImageTexture(Texture2D *tt, const std::string& imageFileName)
{ {
if (_isReloading) if (_isReloading)
{ {

View File

@ -124,13 +124,13 @@ public:
* If "key" is nil, then a new texture will be created each time. * If "key" is nil, then a new texture will be created each time.
*/ */
Texture2D* addImage(Image *image, const std::string &key); Texture2D* addImage(Image *image, const std::string &key);
CC_DEPRECATED_ATTRIBUTE Texture2D* addUIImage(Image *image, const char *key) { return addImage(image,key); } CC_DEPRECATED_ATTRIBUTE Texture2D* addUIImage(Image *image, const std::string& key) { return addImage(image,key); }
/** Returns an already created texture. Returns nil if the texture doesn't exist. /** Returns an already created texture. Returns nil if the texture doesn't exist.
@since v0.99.5 @since v0.99.5
*/ */
Texture2D* getTextureForKey(const std::string& key) const; Texture2D* getTextureForKey(const std::string& key) const;
CC_DEPRECATED_ATTRIBUTE Texture2D* textureForKey(const char* key) const { return getTextureForKey(key); } CC_DEPRECATED_ATTRIBUTE Texture2D* textureForKey(const std::string& key) const { return getTextureForKey(key); }
/** Purges the dictionary of loaded textures. /** Purges the dictionary of loaded textures.
* Call this method if you receive the "Memory Warning" * Call this method if you receive the "Memory Warning"
@ -250,7 +250,7 @@ protected:
class VolatileTextureMgr class VolatileTextureMgr
{ {
public: public:
static void addImageTexture(Texture2D *tt, const char* imageFileName); static void addImageTexture(Texture2D *tt, const std::string& imageFileName);
static void addStringTexture(Texture2D *tt, const char* text, const FontDefinition& fontDefinition); static void addStringTexture(Texture2D *tt, const char* text, const FontDefinition& fontDefinition);
static void addDataTexture(Texture2D *tt, void* data, int dataLen, Texture2D::PixelFormat pixelFormat, const Size& contentSize); static void addDataTexture(Texture2D *tt, void* data, int dataLen, Texture2D::PixelFormat pixelFormat, const Size& contentSize);
static void addImage(Texture2D *tt, Image *image); static void addImage(Texture2D *tt, Image *image);

View File

@ -25,6 +25,7 @@
#include "ccTypes.h" #include "ccTypes.h"
NS_CC_BEGIN NS_CC_BEGIN
const std::string STD_STRING_EMPTY("");
/** /**
* Color3B * Color3B

View File

@ -471,6 +471,8 @@ public:
Acceleration(): x(0), y(0), z(0), timestamp(0) {} Acceleration(): x(0), y(0), z(0), timestamp(0) {}
}; };
extern const std::string STD_STRING_EMPTY;
NS_CC_END NS_CC_END
#endif //__CCTYPES_H__ #endif //__CCTYPES_H__

View File

@ -83,7 +83,7 @@ public:
{ {
} }
ValueMap dictionaryWithContentsOfFile(const char *fileName) ValueMap dictionaryWithContentsOfFile(const std::string& fileName)
{ {
_resultType = SAX_RESULT_DICT; _resultType = SAX_RESULT_DICT;
SAXParser parser; SAXParser parser;
@ -95,7 +95,7 @@ public:
return _rootDict; return _rootDict;
} }
ValueVector arrayWithContentsOfFile(const char* fileName) ValueVector arrayWithContentsOfFile(const std::string& fileName)
{ {
_resultType = SAX_RESULT_ARRAY; _resultType = SAX_RESULT_ARRAY;
SAXParser parser; SAXParser parser;
@ -555,10 +555,10 @@ Data FileUtils::getDataFromFile(const std::string& filename)
return getData(filename, false); return getData(filename, false);
} }
unsigned char* FileUtils::getFileData(const char* filename, const char* mode, ssize_t *size) unsigned char* FileUtils::getFileData(const std::string& filename, const char* mode, ssize_t *size)
{ {
unsigned char * buffer = nullptr; unsigned char * buffer = nullptr;
CCASSERT(filename != nullptr && size != nullptr && mode != nullptr, "Invalid parameters."); CCASSERT(!filename.empty() && size != nullptr && mode != nullptr, "Invalid parameters.");
*size = 0; *size = 0;
do do
{ {
@ -585,7 +585,7 @@ unsigned char* FileUtils::getFileData(const char* filename, const char* mode, ss
return buffer; return buffer;
} }
unsigned char* FileUtils::getFileDataFromZip(const char* zipFilePath, const char* filename, ssize_t *size) unsigned char* FileUtils::getFileDataFromZip(const std::string& zipFilePath, const std::string& filename, ssize_t *size)
{ {
unsigned char * buffer = nullptr; unsigned char * buffer = nullptr;
unzFile file = nullptr; unzFile file = nullptr;
@ -593,13 +593,12 @@ unsigned char* FileUtils::getFileDataFromZip(const char* zipFilePath, const char
do do
{ {
CC_BREAK_IF(!zipFilePath || !filename); CC_BREAK_IF(zipFilePath.empty());
CC_BREAK_IF(strlen(zipFilePath) == 0);
file = unzOpen(zipFilePath); file = unzOpen(zipFilePath.c_str());
CC_BREAK_IF(!file); CC_BREAK_IF(!file);
int ret = unzLocateFile(file, filename, 1); int ret = unzLocateFile(file, filename.c_str(), 1);
CC_BREAK_IF(UNZ_OK != ret); CC_BREAK_IF(UNZ_OK != ret);
char filePathA[260]; char filePathA[260];

View File

@ -96,7 +96,7 @@ public:
* @return Upon success, a pointer to the data is returned, otherwise NULL. * @return Upon success, a pointer to the data is returned, otherwise NULL.
* @warning Recall: you are responsible for calling free() on any Non-NULL pointer returned. * @warning Recall: you are responsible for calling free() on any Non-NULL pointer returned.
*/ */
CC_DEPRECATED_ATTRIBUTE virtual unsigned char* getFileData(const char* filename, const char* mode, ssize_t *size); CC_DEPRECATED_ATTRIBUTE virtual unsigned char* getFileData(const std::string& filename, const char* mode, ssize_t *size);
/** /**
* Gets resource file data from a zip file. * Gets resource file data from a zip file.
@ -106,7 +106,7 @@ public:
* @return Upon success, a pointer to the data is returned, otherwise nullptr. * @return Upon success, a pointer to the data is returned, otherwise nullptr.
* @warning Recall: you are responsible for calling free() on any Non-nullptr pointer returned. * @warning Recall: you are responsible for calling free() on any Non-nullptr pointer returned.
*/ */
virtual unsigned char* getFileDataFromZip(const char* zipFilePath, const char* filename, ssize_t *size); virtual unsigned char* getFileDataFromZip(const std::string& zipFilePath, const std::string& filename, ssize_t *size);
/** Returns the fullpath for a given filename. /** Returns the fullpath for a given filename.

View File

@ -111,7 +111,7 @@ public:
@param path the absolute file path. @param path the absolute file path.
@return true if loaded correctly. @return true if loaded correctly.
*/ */
bool initWithImageFile(const char *path); bool initWithImageFile(const std::string& path);
/** /**
@brief Load image from stream buffer. @brief Load image from stream buffer.
@ -246,7 +246,7 @@ private:
@param imageType the type of image, currently only supporting two types. @param imageType the type of image, currently only supporting two types.
@return true if loaded correctly. @return true if loaded correctly.
*/ */
bool initWithImageFileThreadSafe(const char *fullpath); bool initWithImageFileThreadSafe(const std::string& fullpath);
Format detectFormat(const unsigned char * data, ssize_t dataLen); Format detectFormat(const unsigned char * data, ssize_t dataLen);
bool isPng(const unsigned char * data, ssize_t dataLen); bool isPng(const unsigned char * data, ssize_t dataLen);

View File

@ -396,10 +396,10 @@ Image::~Image()
} }
} }
bool Image::initWithImageFile(const char * strPath) bool Image::initWithImageFile(const std::string& path)
{ {
bool bRet = false; bool ret = false;
_filePath = FileUtils::getInstance()->fullPathForFilename(strPath); _filePath = FileUtils::getInstance()->fullPathForFilename(path);
#ifdef EMSCRIPTEN #ifdef EMSCRIPTEN
// Emscripten includes a re-implementation of SDL that uses HTML5 canvas // Emscripten includes a re-implementation of SDL that uses HTML5 canvas
@ -409,7 +409,7 @@ bool Image::initWithImageFile(const char * strPath)
SDL_Surface *iSurf = IMG_Load(fullPath.c_str()); SDL_Surface *iSurf = IMG_Load(fullPath.c_str());
int size = 4 * (iSurf->w * iSurf->h); int size = 4 * (iSurf->w * iSurf->h);
bRet = initWithRawData((const unsigned char*)iSurf->pixels, size, iSurf->w, iSurf->h, 8, true); ret = initWithRawData((const unsigned char*)iSurf->pixels, size, iSurf->w, iSurf->h, 8, true);
unsigned int *tmp = (unsigned int *)_data; unsigned int *tmp = (unsigned int *)_data;
int nrPixels = iSurf->w * iSurf->h; int nrPixels = iSurf->w * iSurf->h;
@ -425,14 +425,14 @@ bool Image::initWithImageFile(const char * strPath)
if (!data.isNull()) if (!data.isNull())
{ {
bRet = initWithImageData(data.getBytes(), data.getSize()); ret = initWithImageData(data.getBytes(), data.getSize());
} }
#endif // EMSCRIPTEN #endif // EMSCRIPTEN
return bRet; return ret;
} }
bool Image::initWithImageFileThreadSafe(const char *fullpath) bool Image::initWithImageFileThreadSafe(const std::string& fullpath)
{ {
bool ret = false; bool ret = false;
_filePath = fullpath; _filePath = fullpath;

View File

@ -247,11 +247,11 @@ Data FileUtilsAndroid::getDataFromFile(const std::string& filename)
return getData(filename, false); return getData(filename, false);
} }
unsigned char* FileUtilsAndroid::getFileData(const char* filename, const char* mode, ssize_t * size) unsigned char* FileUtilsAndroid::getFileData(const std::string& filename, const char* mode, ssize_t * size)
{ {
unsigned char * data = 0; unsigned char * data = 0;
if ((! filename) || (! mode) || 0 == strlen(filename)) if ( filename.empty() || (! mode) )
{ {
return 0; return 0;
} }

View File

@ -57,7 +57,7 @@ public:
bool init(); bool init();
/** @deprecated Please use FileUtils::getDataFromFile or FileUtils::getStringFromFile instead. */ /** @deprecated Please use FileUtils::getDataFromFile or FileUtils::getStringFromFile instead. */
CC_DEPRECATED_ATTRIBUTE virtual unsigned char* getFileData(const char* filename, const char* mode, ssize_t * size) override; CC_DEPRECATED_ATTRIBUTE virtual unsigned char* getFileData(const std::string& filename, const char* mode, ssize_t * size) override;
/** /**
* Gets string from a file. * Gets string from a file.

View File

@ -74,7 +74,7 @@ extern "C" {
if (JniHelper::getJavaVM()->GetEnv((void**)&env, JNI_VERSION_1_4) != JNI_OK || ! env) { if (JniHelper::getJavaVM()->GetEnv((void**)&env, JNI_VERSION_1_4) != JNI_OK || ! env) {
return 0; return 0;
} }
const char * text = cocos2d::IMEDispatcher::sharedDispatcher()->getContentText(); const std::string& text = cocos2d::IMEDispatcher::sharedDispatcher()->getContentText();
return env->NewStringUTF(text); return env->NewStringUTF(text.c_str());
} }
} }

View File

@ -87,20 +87,20 @@ static CGSize _calculateStringSize(NSString *str, id font, CGSize *constrainSize
#define ALIGN_CENTER 3 #define ALIGN_CENTER 3
#define ALIGN_BOTTOM 2 #define ALIGN_BOTTOM 2
static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign, const char * pFontName, int nSize, tImageInfo* pInfo) static bool _initWithString(const char * text, cocos2d::Image::TextAlign align, const char * fontName, int size, tImageInfo* info)
{ {
bool bRet = false; bool bRet = false;
do do
{ {
CC_BREAK_IF(! pText || ! pInfo); CC_BREAK_IF(! text || ! info);
NSString * str = [NSString stringWithUTF8String:pText]; NSString * str = [NSString stringWithUTF8String:text];
NSString * fntName = [NSString stringWithUTF8String:pFontName]; NSString * fntName = [NSString stringWithUTF8String:fontName];
CGSize dim, constrainSize; CGSize dim, constrainSize;
constrainSize.width = pInfo->width; constrainSize.width = info->width;
constrainSize.height = pInfo->height; constrainSize.height = info->height;
// On iOS custom fonts must be listed beforehand in the App info.plist (in order to be usable) and referenced only the by the font family name itself when // On iOS custom fonts must be listed beforehand in the App info.plist (in order to be usable) and referenced only the by the font family name itself when
// calling [UIFont fontWithName]. Therefore even if the developer adds 'SomeFont.ttf' or 'fonts/SomeFont.ttf' to the App .plist, the font must // calling [UIFont fontWithName]. Therefore even if the developer adds 'SomeFont.ttf' or 'fonts/SomeFont.ttf' to the App .plist, the font must
@ -110,7 +110,7 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
fntName = [[fntName lastPathComponent] stringByDeletingPathExtension]; fntName = [[fntName lastPathComponent] stringByDeletingPathExtension];
// create the font // create the font
id font = [UIFont fontWithName:fntName size:nSize]; id font = [UIFont fontWithName:fntName size:size];
if (font) if (font)
{ {
@ -120,7 +120,7 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
{ {
if (!font) if (!font)
{ {
font = [UIFont systemFontOfSize:nSize]; font = [UIFont systemFontOfSize:size];
} }
if (font) if (font)
@ -136,7 +136,7 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
if (constrainSize.height > dim.height) if (constrainSize.height > dim.height)
{ {
// vertical alignment // vertical alignment
unsigned int vAlignment = ((int)eAlign >> 4) & 0x0F; unsigned int vAlignment = ((int)align >> 4) & 0x0F;
if (vAlignment == ALIGN_TOP) if (vAlignment == ALIGN_TOP)
{ {
startH = 0; startH = 0;
@ -166,16 +166,16 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
float shadowStrokePaddingX = 0.0f; float shadowStrokePaddingX = 0.0f;
float shadowStrokePaddingY = 0.0f; float shadowStrokePaddingY = 0.0f;
if ( pInfo->hasStroke ) if ( info->hasStroke )
{ {
shadowStrokePaddingX = ceilf(pInfo->strokeSize); shadowStrokePaddingX = ceilf(info->strokeSize);
shadowStrokePaddingY = ceilf(pInfo->strokeSize); shadowStrokePaddingY = ceilf(info->strokeSize);
} }
if ( pInfo->hasShadow ) if ( info->hasShadow )
{ {
shadowStrokePaddingX = std::max(shadowStrokePaddingX, (float)fabs(pInfo->shadowOffset.width)); shadowStrokePaddingX = std::max(shadowStrokePaddingX, (float)fabs(info->shadowOffset.width));
shadowStrokePaddingY = std::max(shadowStrokePaddingY, (float)fabs(pInfo->shadowOffset.height)); shadowStrokePaddingY = std::max(shadowStrokePaddingY, (float)fabs(info->shadowOffset.height));
} }
// add the padding (this could be 0 if no shadow and no stroke) // add the padding (this could be 0 if no shadow and no stroke)
@ -203,7 +203,7 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
} }
// text color // text color
CGContextSetRGBFillColor(context, pInfo->tintColorR, pInfo->tintColorG, pInfo->tintColorB, 1); CGContextSetRGBFillColor(context, info->tintColorR, info->tintColorG, info->tintColorB, 1);
// move Y rendering to the top of the image // move Y rendering to the top of the image
CGContextTranslateCTM(context, 0.0f, (dim.height - shadowStrokePaddingY) ); CGContextTranslateCTM(context, 0.0f, (dim.height - shadowStrokePaddingY) );
CGContextScaleCTM(context, 1.0f, -1.0f); //NOTE: NSString draws in UIKit referential i.e. renders upside-down compared to CGBitmapContext referential CGContextScaleCTM(context, 1.0f, -1.0f); //NOTE: NSString draws in UIKit referential i.e. renders upside-down compared to CGBitmapContext referential
@ -212,30 +212,30 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
UIGraphicsPushContext(context); UIGraphicsPushContext(context);
// measure text size with specified font and determine the rectangle to draw text in // measure text size with specified font and determine the rectangle to draw text in
unsigned uHoriFlag = (int)eAlign & 0x0f; unsigned uHoriFlag = (int)align & 0x0f;
UITextAlignment align = (UITextAlignment)((2 == uHoriFlag) ? UITextAlignmentRight UITextAlignment testAlign = (UITextAlignment)((2 == uHoriFlag) ? UITextAlignmentRight
: (3 == uHoriFlag) ? UITextAlignmentCenter : (3 == uHoriFlag) ? UITextAlignmentCenter
: UITextAlignmentLeft); : UITextAlignmentLeft);
// take care of stroke if needed // take care of stroke if needed
if ( pInfo->hasStroke ) if ( info->hasStroke )
{ {
CGContextSetTextDrawingMode(context, kCGTextFillStroke); CGContextSetTextDrawingMode(context, kCGTextFillStroke);
CGContextSetRGBStrokeColor(context, pInfo->strokeColorR, pInfo->strokeColorG, pInfo->strokeColorB, 1); CGContextSetRGBStrokeColor(context, info->strokeColorR, info->strokeColorG, info->strokeColorB, 1);
CGContextSetLineWidth(context, pInfo->strokeSize); CGContextSetLineWidth(context, info->strokeSize);
} }
// take care of shadow if needed // take care of shadow if needed
if ( pInfo->hasShadow ) if ( info->hasShadow )
{ {
CGSize offset; CGSize offset;
offset.height = pInfo->shadowOffset.height; offset.height = info->shadowOffset.height;
offset.width = pInfo->shadowOffset.width; offset.width = info->shadowOffset.width;
CGFloat shadowColorValues[] = {0, 0, 0, pInfo->shadowOpacity}; CGFloat shadowColorValues[] = {0, 0, 0, info->shadowOpacity};
CGColorRef shadowColor = CGColorCreate (colorSpace, shadowColorValues); CGColorRef shadowColor = CGColorCreate (colorSpace, shadowColorValues);
CGContextSetShadowWithColor(context, offset, pInfo->shadowBlur, shadowColor); CGContextSetShadowWithColor(context, offset, info->shadowBlur, shadowColor);
CGColorRelease (shadowColor); CGColorRelease (shadowColor);
} }
@ -266,7 +266,7 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
float textHeight = dim.height - shadowStrokePaddingY; float textHeight = dim.height - shadowStrokePaddingY;
if ( pInfo->shadowOffset.width < 0 ) if ( info->shadowOffset.width < 0 )
{ {
textOriginX = shadowStrokePaddingX; textOriginX = shadowStrokePaddingX;
} }
@ -275,7 +275,7 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
textOriginX = 0.0; textOriginX = 0.0;
} }
if (pInfo->shadowOffset.height > 0) if (info->shadowOffset.height > 0)
{ {
textOrigingY = startH; textOrigingY = startH;
} }
@ -289,7 +289,7 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
CGContextBeginTransparencyLayerWithRect(context, rect, nullptr); CGContextBeginTransparencyLayerWithRect(context, rect, nullptr);
// actually draw the text in the context // actually draw the text in the context
// XXX: ios7 casting // XXX: ios7 casting
[str drawInRect: rect withFont:font lineBreakMode:NSLineBreakByWordWrapping alignment:(NSTextAlignment)align]; [str drawInRect: rect withFont:font lineBreakMode:NSLineBreakByWordWrapping alignment:(NSTextAlignment)testAlign];
CGContextEndTransparencyLayer(context); CGContextEndTransparencyLayer(context);
@ -300,10 +300,10 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
CGContextRelease(context); CGContextRelease(context);
// output params // output params
pInfo->data = data; info->data = data;
pInfo->isPremultipliedAlpha = true; info->isPremultipliedAlpha = true;
pInfo->width = dim.width; info->width = dim.width;
pInfo->height = dim.height; info->height = dim.height;
bRet = true; bRet = true;
} while (0); } while (0);
@ -325,12 +325,12 @@ bool Image::initWithString(
} }
bool Image::initWithStringShadowStroke( bool Image::initWithStringShadowStroke(
const char * pText, const char * text,
int nWidth , int width ,
int nHeight , int height ,
TextAlign eAlignMask , TextAlign alignMask ,
const char * pFontName , const char * fontName ,
int nSize , int size ,
float textTintR, float textTintR,
float textTintG, float textTintG,
float textTintB, float textTintB,
@ -349,8 +349,8 @@ bool Image::initWithStringShadowStroke(
tImageInfo info = {0}; tImageInfo info = {0};
info.width = nWidth; info.width = width;
info.height = nHeight; info.height = height;
info.hasShadow = shadow; info.hasShadow = shadow;
info.shadowOffset.width = shadowOffsetX; info.shadowOffset.width = shadowOffsetX;
info.shadowOffset.height = shadowOffsetY; info.shadowOffset.height = shadowOffsetY;
@ -366,7 +366,7 @@ bool Image::initWithStringShadowStroke(
info.tintColorB = textTintB; info.tintColorB = textTintB;
if (! _initWithString(pText, eAlignMask, pFontName, nSize, &info)) if (! _initWithString(text, alignMask, fontName, size, &info))
{ {
return false; return false;
} }
@ -380,7 +380,7 @@ bool Image::initWithStringShadowStroke(
return true; return true;
} }
bool Image::saveToFile(const std::string& filename, bool bIsToRGB) bool Image::saveToFile(const std::string& filename, bool isToRGB)
{ {
bool saveToPNG = false; bool saveToPNG = false;
bool needToCopyPixels = false; bool needToCopyPixels = false;
@ -392,7 +392,7 @@ bool Image::saveToFile(const std::string& filename, bool bIsToRGB)
int bitsPerComponent = 8; int bitsPerComponent = 8;
int bitsPerPixel = hasAlpha() ? 32 : 24; int bitsPerPixel = hasAlpha() ? 32 : 24;
if ((! saveToPNG) || bIsToRGB) if ((! saveToPNG) || isToRGB)
{ {
bitsPerPixel = 24; bitsPerPixel = 24;
} }
@ -404,7 +404,7 @@ bool Image::saveToFile(const std::string& filename, bool bIsToRGB)
// The data has alpha channel, and want to save it with an RGB png file, // The data has alpha channel, and want to save it with an RGB png file,
// or want to save as jpg, remove the alpha channel. // or want to save as jpg, remove the alpha channel.
if ((saveToPNG && hasAlpha() && bIsToRGB) if ((saveToPNG && hasAlpha() && isToRGB)
|| (! saveToPNG)) || (! saveToPNG))
{ {
pixels = new unsigned char[myDataLength]; pixels = new unsigned char[myDataLength];
@ -424,7 +424,7 @@ bool Image::saveToFile(const std::string& filename, bool bIsToRGB)
// make data provider with data. // make data provider with data.
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault; CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
if (saveToPNG && hasAlpha() && (! bIsToRGB)) if (saveToPNG && hasAlpha() && (! isToRGB))
{ {
bitmapInfo |= kCGImageAlphaPremultipliedLast; bitmapInfo |= kCGImageAlphaPremultipliedLast;
} }

View File

@ -53,7 +53,7 @@ public:
/* /*
*frameZoomFactor for frame. This method is for debugging big resolution (e.g.new ipad) app on desktop. *frameZoomFactor for frame. This method is for debugging big resolution (e.g.new ipad) app on desktop.
*/ */
bool init(const char* viewName, float width, float height, float frameZoomFactor = 1.0f); bool init(const std::string& viewName, float width, float height, float frameZoomFactor = 1.0f);
public: public:
//void resize(int width, int height); //void resize(int width, int height);

View File

@ -325,7 +325,7 @@ EGLView::~EGLView()
s_pEglView = nullptr; s_pEglView = nullptr;
} }
bool EGLView::init(const char *viewName, float width, float height, float frameZoomFactor) bool EGLView::init(const std::string& viewName, float width, float height, float frameZoomFactor)
{ {
if(nullptr != _mainWindow) return true; if(nullptr != _mainWindow) return true;

View File

@ -122,7 +122,7 @@ __Array* __Array::createWithCapacity(int capacity)
return array; return array;
} }
__Array* __Array::createWithContentsOfFile(const char* fileName) __Array* __Array::createWithContentsOfFile(const std::string& fileName)
{ {
__Array* ret = __Array::createWithContentsOfFileThreadSafe(fileName); __Array* ret = __Array::createWithContentsOfFileThreadSafe(fileName);
if (ret != nullptr) if (ret != nullptr)
@ -132,7 +132,7 @@ __Array* __Array::createWithContentsOfFile(const char* fileName)
return ret; return ret;
} }
__Array* __Array::createWithContentsOfFileThreadSafe(const char* fileName) __Array* __Array::createWithContentsOfFileThreadSafe(const std::string& fileName)
{ {
return FileUtils::getInstance()->createArrayWithContentsOfFile(fileName); return FileUtils::getInstance()->createArrayWithContentsOfFile(fileName);
} }
@ -465,7 +465,7 @@ __Array* __Array::createWithCapacity(ssize_t capacity)
return array; return array;
} }
__Array* __Array::createWithContentsOfFile(const char* fileName) __Array* __Array::createWithContentsOfFile(const std::string& fileName)
{ {
__Array* ret = __Array::createWithContentsOfFileThreadSafe(fileName); __Array* ret = __Array::createWithContentsOfFileThreadSafe(fileName);
if (ret != nullptr) if (ret != nullptr)
@ -475,7 +475,7 @@ __Array* __Array::createWithContentsOfFile(const char* fileName)
return ret; return ret;
} }
__Array* __Array::createWithContentsOfFileThreadSafe(const char* fileName) __Array* __Array::createWithContentsOfFileThreadSafe(const std::string& fileName)
{ {
ValueVector arr = FileUtils::getInstance()->getValueVectorFromFile(fileName); ValueVector arr = FileUtils::getInstance()->getValueVectorFromFile(fileName);

View File

@ -261,7 +261,7 @@ public:
@return The Array pointer generated from the file @return The Array pointer generated from the file
* @js NA * @js NA
*/ */
static __Array* createWithContentsOfFile(const char* pFileName); static __Array* createWithContentsOfFile(const std::string& pFileName);
/* /*
@brief The same meaning as arrayWithContentsOfFile(), but it doesn't call autorelease, so the @brief The same meaning as arrayWithContentsOfFile(), but it doesn't call autorelease, so the
@ -269,7 +269,7 @@ public:
* @js NA * @js NA
* @lua NA * @lua NA
*/ */
static __Array* createWithContentsOfFileThreadSafe(const char* pFileName); static __Array* createWithContentsOfFileThreadSafe(const std::string& pFileName);
/** /**
* @js NA * @js NA
* @lua NA * @lua NA

View File

@ -205,7 +205,7 @@ public: virtual void set##funName(varType var) \
#define CC_BREAK_IF(cond) if(cond) break #define CC_BREAK_IF(cond) if(cond) break
#define __CCLOGWITHFUNCTION(s, ...) \ #define __CCLOGWITHFUNCTION(s, ...) \
log("%s : %s",__FUNCTION__, String::createWithFormat(s, ##__VA_ARGS__)->getCString()) log("%s : %s",__FUNCTION__, StringUtils::format(s, ##__VA_ARGS__).c_str())
// cocos2d debug // cocos2d debug
#if !defined(COCOS2D_DEBUG) || COCOS2D_DEBUG == 0 #if !defined(COCOS2D_DEBUG) || COCOS2D_DEBUG == 0

View File

@ -239,9 +239,6 @@ public:
}; };
CC_DEPRECATED_ATTRIBUTE typedef __String String;
// end of data_structure group // end of data_structure group
/// @} /// @}

View File

@ -40,25 +40,25 @@ using std::max;
namespace spine { namespace spine {
CCSkeleton* CCSkeleton::createWithData (spSkeletonData* skeletonData, bool isOwnsSkeletonData) { Skeleton* Skeleton::createWithData (spSkeletonData* skeletonData, bool isOwnsSkeletonData) {
CCSkeleton* node = new CCSkeleton(skeletonData, isOwnsSkeletonData); Skeleton* node = new Skeleton(skeletonData, isOwnsSkeletonData);
node->autorelease(); node->autorelease();
return node; return node;
} }
CCSkeleton* CCSkeleton::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) { Skeleton* Skeleton::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) {
CCSkeleton* node = new CCSkeleton(skeletonDataFile, atlas, scale); Skeleton* node = new Skeleton(skeletonDataFile, atlas, scale);
node->autorelease(); node->autorelease();
return node; return node;
} }
CCSkeleton* CCSkeleton::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) { Skeleton* Skeleton::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) {
CCSkeleton* node = new CCSkeleton(skeletonDataFile, atlasFile, scale); Skeleton* node = new Skeleton(skeletonDataFile, atlasFile, scale);
node->autorelease(); node->autorelease();
return node; return node;
} }
void CCSkeleton::initialize () { void Skeleton::initialize () {
atlas = 0; atlas = 0;
debugSlots = false; debugSlots = false;
debugBones = false; debugBones = false;
@ -73,23 +73,23 @@ void CCSkeleton::initialize () {
scheduleUpdate(); scheduleUpdate();
} }
void CCSkeleton::setSkeletonData (spSkeletonData *skeletonData, bool isOwnsSkeletonData) { void Skeleton::setSkeletonData (spSkeletonData *skeletonData, bool isOwnsSkeletonData) {
skeleton = spSkeleton_create(skeletonData); skeleton = spSkeleton_create(skeletonData);
rootBone = skeleton->bones[0]; rootBone = skeleton->bones[0];
this->ownsSkeletonData = isOwnsSkeletonData; this->ownsSkeletonData = isOwnsSkeletonData;
} }
CCSkeleton::CCSkeleton () { Skeleton::Skeleton () {
initialize(); initialize();
} }
CCSkeleton::CCSkeleton (spSkeletonData *skeletonData, bool isOwnsSkeletonData) { Skeleton::Skeleton (spSkeletonData *skeletonData, bool isOwnsSkeletonData) {
initialize(); initialize();
setSkeletonData(skeletonData, isOwnsSkeletonData); setSkeletonData(skeletonData, isOwnsSkeletonData);
} }
CCSkeleton::CCSkeleton (const char* skeletonDataFile, spAtlas* aAtlas, float scale) { Skeleton::Skeleton (const char* skeletonDataFile, spAtlas* aAtlas, float scale) {
initialize(); initialize();
spSkeletonJson* json = spSkeletonJson_create(aAtlas); spSkeletonJson* json = spSkeletonJson_create(aAtlas);
@ -101,7 +101,7 @@ CCSkeleton::CCSkeleton (const char* skeletonDataFile, spAtlas* aAtlas, float sca
setSkeletonData(skeletonData, true); setSkeletonData(skeletonData, true);
} }
CCSkeleton::CCSkeleton (const char* skeletonDataFile, const char* atlasFile, float scale) { Skeleton::Skeleton (const char* skeletonDataFile, const char* atlasFile, float scale) {
initialize(); initialize();
atlas = spAtlas_readAtlasFile(atlasFile); atlas = spAtlas_readAtlasFile(atlasFile);
@ -116,17 +116,17 @@ CCSkeleton::CCSkeleton (const char* skeletonDataFile, const char* atlasFile, flo
setSkeletonData(skeletonData, true); setSkeletonData(skeletonData, true);
} }
CCSkeleton::~CCSkeleton () { Skeleton::~Skeleton () {
if (ownsSkeletonData) spSkeletonData_dispose(skeleton->data); if (ownsSkeletonData) spSkeletonData_dispose(skeleton->data);
if (atlas) spAtlas_dispose(atlas); if (atlas) spAtlas_dispose(atlas);
spSkeleton_dispose(skeleton); spSkeleton_dispose(skeleton);
} }
void CCSkeleton::update (float deltaTime) { void Skeleton::update (float deltaTime) {
spSkeleton_update(skeleton, deltaTime * timeScale); spSkeleton_update(skeleton, deltaTime * timeScale);
} }
void CCSkeleton::draw () { void Skeleton::draw () {
CC_NODE_DRAW_SETUP(); CC_NODE_DRAW_SETUP();
GL::blendFunc(blendFunc.src, blendFunc.dst); GL::blendFunc(blendFunc.src, blendFunc.dst);
@ -168,7 +168,7 @@ void CCSkeleton::draw () {
textureAtlas = regionTextureAtlas; textureAtlas = regionTextureAtlas;
setFittedBlendingFunc(textureAtlas); setFittedBlendingFunc(textureAtlas);
int quadCount = textureAtlas->getTotalQuads(); ssize_t quadCount = textureAtlas->getTotalQuads();
if (textureAtlas->getCapacity() == quadCount) { if (textureAtlas->getCapacity() == quadCount) {
textureAtlas->drawQuads(); textureAtlas->drawQuads();
textureAtlas->removeAllQuads(); textureAtlas->removeAllQuads();
@ -222,11 +222,11 @@ void CCSkeleton::draw () {
} }
} }
TextureAtlas* CCSkeleton::getTextureAtlas (spRegionAttachment* regionAttachment) const { TextureAtlas* Skeleton::getTextureAtlas (spRegionAttachment* regionAttachment) const {
return (TextureAtlas*)((spAtlasRegion*)regionAttachment->rendererObject)->page->rendererObject; return (TextureAtlas*)((spAtlasRegion*)regionAttachment->rendererObject)->page->rendererObject;
} }
Rect CCSkeleton::getBoundingBox () const { Rect Skeleton::getBoundingBox () const {
float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN; float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN;
float scaleX = getScaleX(); float scaleX = getScaleX();
float scaleY = getScaleY(); float scaleY = getScaleY();
@ -259,50 +259,50 @@ Rect CCSkeleton::getBoundingBox () const {
// --- Convenience methods for Skeleton_* functions. // --- Convenience methods for Skeleton_* functions.
void CCSkeleton::updateWorldTransform () { void Skeleton::updateWorldTransform () {
spSkeleton_updateWorldTransform(skeleton); spSkeleton_updateWorldTransform(skeleton);
} }
void CCSkeleton::setToSetupPose () { void Skeleton::setToSetupPose () {
spSkeleton_setToSetupPose(skeleton); spSkeleton_setToSetupPose(skeleton);
} }
void CCSkeleton::setBonesToSetupPose () { void Skeleton::setBonesToSetupPose () {
spSkeleton_setBonesToSetupPose(skeleton); spSkeleton_setBonesToSetupPose(skeleton);
} }
void CCSkeleton::setSlotsToSetupPose () { void Skeleton::setSlotsToSetupPose () {
spSkeleton_setSlotsToSetupPose(skeleton); spSkeleton_setSlotsToSetupPose(skeleton);
} }
spBone* CCSkeleton::findBone (const char* boneName) const { spBone* Skeleton::findBone (const char* boneName) const {
return spSkeleton_findBone(skeleton, boneName); return spSkeleton_findBone(skeleton, boneName);
} }
spSlot* CCSkeleton::findSlot (const char* slotName) const { spSlot* Skeleton::findSlot (const char* slotName) const {
return spSkeleton_findSlot(skeleton, slotName); return spSkeleton_findSlot(skeleton, slotName);
} }
bool CCSkeleton::setSkin (const char* skinName) { bool Skeleton::setSkin (const char* skinName) {
return spSkeleton_setSkinByName(skeleton, skinName) ? true : false; return spSkeleton_setSkinByName(skeleton, skinName) ? true : false;
} }
spAttachment* CCSkeleton::getAttachment (const char* slotName, const char* attachmentName) const { spAttachment* Skeleton::getAttachment (const char* slotName, const char* attachmentName) const {
return spSkeleton_getAttachmentForSlotName(skeleton, slotName, attachmentName); return spSkeleton_getAttachmentForSlotName(skeleton, slotName, attachmentName);
} }
bool CCSkeleton::setAttachment (const char* slotName, const char* attachmentName) { bool Skeleton::setAttachment (const char* slotName, const char* attachmentName) {
return spSkeleton_setAttachment(skeleton, slotName, attachmentName) ? true : false; return spSkeleton_setAttachment(skeleton, slotName, attachmentName) ? true : false;
} }
// --- CCBlendProtocol // --- CCBlendProtocol
const cocos2d::BlendFunc& CCSkeleton::getBlendFunc () const { const cocos2d::BlendFunc& Skeleton::getBlendFunc () const {
return blendFunc; return blendFunc;
} }
void CCSkeleton::setBlendFunc (const cocos2d::BlendFunc& aBlendFunc) { void Skeleton::setBlendFunc (const cocos2d::BlendFunc& aBlendFunc) {
this->blendFunc = aBlendFunc; this->blendFunc = aBlendFunc;
} }
void CCSkeleton::setFittedBlendingFunc(cocos2d::TextureAtlas * nextRenderedTexture) void Skeleton::setFittedBlendingFunc(cocos2d::TextureAtlas * nextRenderedTexture)
{ {
if(nextRenderedTexture->getTexture() && nextRenderedTexture->getTexture()->hasPremultipliedAlpha()) if(nextRenderedTexture->getTexture() && nextRenderedTexture->getTexture()->hasPremultipliedAlpha())
{ {

View File

@ -42,7 +42,7 @@ namespace spine {
/** /**
Draws a skeleton. Draws a skeleton.
*/ */
class CCSkeleton: public cocos2d::Node, public cocos2d::BlendProtocol { class Skeleton: public cocos2d::Node, public cocos2d::BlendProtocol {
public: public:
spSkeleton* skeleton; spSkeleton* skeleton;
spBone* rootBone; spBone* rootBone;
@ -52,15 +52,15 @@ public:
bool premultipliedAlpha; bool premultipliedAlpha;
cocos2d::BlendFunc blendFunc; cocos2d::BlendFunc blendFunc;
static CCSkeleton* createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData = false); static Skeleton* createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData = false);
static CCSkeleton* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); static Skeleton* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0);
static CCSkeleton* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0); static Skeleton* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0);
CCSkeleton (spSkeletonData* skeletonData, bool ownsSkeletonData = false); Skeleton (spSkeletonData* skeletonData, bool ownsSkeletonData = false);
CCSkeleton (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); Skeleton (const char* skeletonDataFile, spAtlas* atlas, float scale = 0);
CCSkeleton (const char* skeletonDataFile, const char* atlasFile, float scale = 0); Skeleton (const char* skeletonDataFile, const char* atlasFile, float scale = 0);
virtual ~CCSkeleton (); virtual ~Skeleton ();
virtual void update (float deltaTime) override; virtual void update (float deltaTime) override;
virtual void draw() override; virtual void draw() override;
@ -93,7 +93,7 @@ public:
virtual void setBlendFunc(const cocos2d::BlendFunc& func) override; virtual void setBlendFunc(const cocos2d::BlendFunc& func) override;
protected: protected:
CCSkeleton (); Skeleton ();
void setSkeletonData (spSkeletonData* skeletonData, bool ownsSkeletonData); void setSkeletonData (spSkeletonData* skeletonData, bool ownsSkeletonData);
virtual cocos2d::TextureAtlas* getTextureAtlas (spRegionAttachment* regionAttachment) const; virtual cocos2d::TextureAtlas* getTextureAtlas (spRegionAttachment* regionAttachment) const;

View File

@ -43,28 +43,28 @@ using std::vector;
namespace spine { namespace spine {
static void callback (spAnimationState* state, int trackIndex, spEventType type, spEvent* event, int loopCount) { static void callback (spAnimationState* state, int trackIndex, spEventType type, spEvent* event, int loopCount) {
((CCSkeletonAnimation*)state->context)->onAnimationStateEvent(trackIndex, type, event, loopCount); ((SkeletonAnimation*)state->context)->onAnimationStateEvent(trackIndex, type, event, loopCount);
} }
CCSkeletonAnimation* CCSkeletonAnimation::createWithData (spSkeletonData* skeletonData) { SkeletonAnimation* SkeletonAnimation::createWithData (spSkeletonData* skeletonData) {
CCSkeletonAnimation* node = new CCSkeletonAnimation(skeletonData); SkeletonAnimation* node = new SkeletonAnimation(skeletonData);
node->autorelease(); node->autorelease();
return node; return node;
} }
CCSkeletonAnimation* CCSkeletonAnimation::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) { SkeletonAnimation* SkeletonAnimation::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) {
CCSkeletonAnimation* node = new CCSkeletonAnimation(skeletonDataFile, atlas, scale); SkeletonAnimation* node = new SkeletonAnimation(skeletonDataFile, atlas, scale);
node->autorelease(); node->autorelease();
return node; return node;
} }
CCSkeletonAnimation* CCSkeletonAnimation::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) { SkeletonAnimation* SkeletonAnimation::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) {
CCSkeletonAnimation* node = new CCSkeletonAnimation(skeletonDataFile, atlasFile, scale); SkeletonAnimation* node = new SkeletonAnimation(skeletonDataFile, atlasFile, scale);
node->autorelease(); node->autorelease();
return node; return node;
} }
void CCSkeletonAnimation::initialize () { void SkeletonAnimation::initialize () {
listenerInstance = 0; listenerInstance = 0;
listenerMethod = 0; listenerMethod = 0;
@ -74,27 +74,27 @@ void CCSkeletonAnimation::initialize () {
state->listener = callback; state->listener = callback;
} }
CCSkeletonAnimation::CCSkeletonAnimation (spSkeletonData *skeletonData) SkeletonAnimation::SkeletonAnimation (spSkeletonData *skeletonData)
: CCSkeleton(skeletonData) { : Skeleton(skeletonData) {
initialize(); initialize();
} }
CCSkeletonAnimation::CCSkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale) SkeletonAnimation::SkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale)
: CCSkeleton(skeletonDataFile, atlas, scale) { : Skeleton(skeletonDataFile, atlas, scale) {
initialize(); initialize();
} }
CCSkeletonAnimation::CCSkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale) SkeletonAnimation::SkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale)
: CCSkeleton(skeletonDataFile, atlasFile, scale) { : Skeleton(skeletonDataFile, atlasFile, scale) {
initialize(); initialize();
} }
CCSkeletonAnimation::~CCSkeletonAnimation () { SkeletonAnimation::~SkeletonAnimation () {
if (ownsAnimationStateData) spAnimationStateData_dispose(state->data); if (ownsAnimationStateData) spAnimationStateData_dispose(state->data);
spAnimationState_dispose(state); spAnimationState_dispose(state);
} }
void CCSkeletonAnimation::update (float deltaTime) { void SkeletonAnimation::update (float deltaTime) {
super::update(deltaTime); super::update(deltaTime);
deltaTime *= timeScale; deltaTime *= timeScale;
@ -103,7 +103,7 @@ void CCSkeletonAnimation::update (float deltaTime) {
spSkeleton_updateWorldTransform(skeleton); spSkeleton_updateWorldTransform(skeleton);
} }
void CCSkeletonAnimation::setAnimationStateData (spAnimationStateData* stateData) { void SkeletonAnimation::setAnimationStateData (spAnimationStateData* stateData) {
CCAssert(stateData, "stateData cannot be null."); CCAssert(stateData, "stateData cannot be null.");
if (ownsAnimationStateData) spAnimationStateData_dispose(state->data); if (ownsAnimationStateData) spAnimationStateData_dispose(state->data);
@ -115,46 +115,46 @@ void CCSkeletonAnimation::setAnimationStateData (spAnimationStateData* stateData
state->listener = callback; state->listener = callback;
} }
void CCSkeletonAnimation::setMix (const char* fromAnimation, const char* toAnimation, float duration) { void SkeletonAnimation::setMix (const char* fromAnimation, const char* toAnimation, float duration) {
spAnimationStateData_setMixByName(state->data, fromAnimation, toAnimation, duration); spAnimationStateData_setMixByName(state->data, fromAnimation, toAnimation, duration);
} }
void CCSkeletonAnimation::setAnimationListener (Object* instance, SEL_AnimationStateEvent method) { void SkeletonAnimation::setAnimationListener (Object* instance, SEL_AnimationStateEvent method) {
listenerInstance = instance; listenerInstance = instance;
listenerMethod = method; listenerMethod = method;
} }
spTrackEntry* CCSkeletonAnimation::setAnimation (int trackIndex, const char* name, bool loop) { spTrackEntry* SkeletonAnimation::setAnimation (int trackIndex, const char* name, bool loop) {
spAnimation* animation = spSkeletonData_findAnimation(skeleton->data, name); spAnimation* animation = spSkeletonData_findAnimation(skeleton->data, name);
if (!animation) { if (!animation) {
CCLog("Spine: Animation not found: %s", name); log("Spine: Animation not found: %s", name);
return 0; return 0;
} }
return spAnimationState_setAnimation(state, trackIndex, animation, loop); return spAnimationState_setAnimation(state, trackIndex, animation, loop);
} }
spTrackEntry* CCSkeletonAnimation::addAnimation (int trackIndex, const char* name, bool loop, float delay) { spTrackEntry* SkeletonAnimation::addAnimation (int trackIndex, const char* name, bool loop, float delay) {
spAnimation* animation = spSkeletonData_findAnimation(skeleton->data, name); spAnimation* animation = spSkeletonData_findAnimation(skeleton->data, name);
if (!animation) { if (!animation) {
CCLog("Spine: Animation not found: %s", name); log("Spine: Animation not found: %s", name);
return 0; return 0;
} }
return spAnimationState_addAnimation(state, trackIndex, animation, loop, delay); return spAnimationState_addAnimation(state, trackIndex, animation, loop, delay);
} }
spTrackEntry* CCSkeletonAnimation::getCurrent (int trackIndex) { spTrackEntry* SkeletonAnimation::getCurrent (int trackIndex) {
return spAnimationState_getCurrent(state, trackIndex); return spAnimationState_getCurrent(state, trackIndex);
} }
void CCSkeletonAnimation::clearTracks () { void SkeletonAnimation::clearTracks () {
spAnimationState_clearTracks(state); spAnimationState_clearTracks(state);
} }
void CCSkeletonAnimation::clearTrack (int trackIndex) { void SkeletonAnimation::clearTrack (int trackIndex) {
spAnimationState_clearTrack(state, trackIndex); spAnimationState_clearTrack(state, trackIndex);
} }
void CCSkeletonAnimation::onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount) { void SkeletonAnimation::onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount) {
if (listenerInstance) (listenerInstance->*listenerMethod)(this, trackIndex, type, event, loopCount); if (listenerInstance) (listenerInstance->*listenerMethod)(this, trackIndex, type, event, loopCount);
} }

View File

@ -40,25 +40,25 @@
namespace spine { namespace spine {
class CCSkeletonAnimation; class SkeletonAnimation;
typedef void (cocos2d::Object::*SEL_AnimationStateEvent)(spine::CCSkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount); typedef void (cocos2d::Object::*SEL_AnimationStateEvent)(spine::SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount);
#define animationStateEvent_selector(_SELECTOR) (SEL_AnimationStateEvent)(&_SELECTOR) #define animationStateEvent_selector(_SELECTOR) (SEL_AnimationStateEvent)(&_SELECTOR)
/** Draws an animated skeleton, providing an AnimationState for applying one or more animations and queuing animations to be /** Draws an animated skeleton, providing an AnimationState for applying one or more animations and queuing animations to be
* played later. */ * played later. */
class CCSkeletonAnimation: public CCSkeleton { class SkeletonAnimation: public Skeleton {
public: public:
spAnimationState* state; spAnimationState* state;
static CCSkeletonAnimation* createWithData (spSkeletonData* skeletonData); static SkeletonAnimation* createWithData (spSkeletonData* skeletonData);
static CCSkeletonAnimation* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); static SkeletonAnimation* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0);
static CCSkeletonAnimation* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0); static SkeletonAnimation* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0);
CCSkeletonAnimation (spSkeletonData* skeletonData); SkeletonAnimation (spSkeletonData* skeletonData);
CCSkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); SkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale = 0);
CCSkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale = 0); SkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale = 0);
virtual ~CCSkeletonAnimation (); virtual ~SkeletonAnimation ();
virtual void update (float deltaTime); virtual void update (float deltaTime);
@ -75,10 +75,10 @@ public:
virtual void onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount); virtual void onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount);
protected: protected:
CCSkeletonAnimation (); SkeletonAnimation ();
private: private:
typedef CCSkeleton super; typedef Skeleton super;
cocos2d::Object* listenerInstance; cocos2d::Object* listenerInstance;
SEL_AnimationStateEvent listenerMethod; SEL_AnimationStateEvent listenerMethod;
bool ownsAnimationStateData; bool ownsAnimationStateData;

View File

@ -65,7 +65,7 @@ void spSkeletonJson_dispose (spSkeletonJson* self) {
void _spSkeletonJson_setError (spSkeletonJson* self, Json* root, const char* value1, const char* value2) { void _spSkeletonJson_setError (spSkeletonJson* self, Json* root, const char* value1, const char* value2) {
char message[256]; char message[256];
int length; size_t length = 0;
FREE(self->error); FREE(self->error);
strcpy(message, value1); strcpy(message, value1);
length = strlen(value1); length = strlen(value1);

View File

@ -62,7 +62,7 @@ char* _readFile (const char* path, int* length) {
if (!file) return 0; if (!file) return 0;
fseek(file, 0, SEEK_END); fseek(file, 0, SEEK_END);
*length = ftell(file); *length = (int)ftell(file);
fseek(file, 0, SEEK_SET); fseek(file, 0, SEEK_SET);
data = MALLOC(char, *length); data = MALLOC(char, *length);

View File

@ -39,6 +39,6 @@
#include <spine/CCSkeleton.h> #include <spine/CCSkeleton.h>
#include <spine/CCSkeletonAnimation.h> #include <spine/CCSkeletonAnimation.h>
void spRegionAttachment_updateQuad (spRegionAttachment* self, spSlot* slot, cocos2d::ccV3F_C4B_T2F_Quad* quad, bool premultiplied = false); void spRegionAttachment_updateQuad (spRegionAttachment* self, spSlot* slot, cocos2d::V3F_C4B_T2F_Quad* quad, bool premultiplied = false);
#endif /* SPINE_COCOS2DX_H_ */ #endif /* SPINE_COCOS2DX_H_ */

@ -1 +1 @@
Subproject commit 46d0b761304efa3f22b768aaa61577a99a82c02d Subproject commit 2f60892e1053a2e7dabfbab9da1058063475eb97

View File

@ -2,6 +2,10 @@
#include "../testResource.h" #include "../testResource.h"
#include "cocos2d.h" #include "cocos2d.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCCustomCommand.h"
#include "renderer/CCGroupCommand.h"
static std::function<Layer*()> createFunctions[] = { static std::function<Layer*()> createFunctions[] = {
CL(ActionManual), CL(ActionManual),
@ -1284,14 +1288,23 @@ void ActionFollow::onEnter()
} }
void ActionFollow::draw() void ActionFollow::draw()
{
CustomCommand* cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(ActionFollow::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
}
void ActionFollow::onDraw()
{ {
auto winSize = Director::getInstance()->getWinSize(); auto winSize = Director::getInstance()->getWinSize();
float x = winSize.width*2 - 100; float x = winSize.width*2 - 100;
float y = winSize.height; float y = winSize.height;
Point vertices[] = { Point(5,5), Point(x-5,5), Point(x-5,y-5), Point(5,y-5) }; Point vertices[] = { Point(5,5), Point(x-5,5), Point(x-5,y-5), Point(5,y-5) };
DrawPrimitives::drawPoly(vertices, 4, true); DrawPrimitives::drawPoly(vertices, 4, true);
} }
std::string ActionFollow::subtitle() const std::string ActionFollow::subtitle() const
@ -1589,10 +1602,25 @@ void ActionCatmullRomStacked::draw()
// move to 50,50 since the "by" path will start at 50,50 // move to 50,50 since the "by" path will start at 50,50
kmGLPushMatrix(); kmGLPushMatrix();
kmGLTranslatef(50, 50, 0); kmGLTranslatef(50, 50, 0);
DrawPrimitives::drawCatmullRom(_array1,50); kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV1);
kmGLPopMatrix(); kmGLPopMatrix();
kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV2);
CustomCommand* cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(ActionCatmullRomStacked::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
}
void ActionCatmullRomStacked::onDraw()
{
kmMat4 oldMat;
kmGLGetMatrix(KM_GL_MODELVIEW, &oldMat);
kmGLLoadMatrix(&_modelViewMV1);
DrawPrimitives::drawCatmullRom(_array1,50);
kmGLLoadMatrix(&_modelViewMV2);
DrawPrimitives::drawCatmullRom(_array2,50); DrawPrimitives::drawCatmullRom(_array2,50);
kmGLLoadMatrix(&oldMat);
} }
std::string ActionCatmullRomStacked::title() const std::string ActionCatmullRomStacked::title() const
@ -1684,15 +1712,31 @@ void ActionCardinalSplineStacked::draw()
// move to 50,50 since the "by" path will start at 50,50 // move to 50,50 since the "by" path will start at 50,50
kmGLPushMatrix(); kmGLPushMatrix();
kmGLTranslatef(50, 50, 0); kmGLTranslatef(50, 50, 0);
DrawPrimitives::drawCardinalSpline(_array, 0, 100); kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV1);
kmGLPopMatrix(); kmGLPopMatrix();
auto s = Director::getInstance()->getWinSize(); auto s = Director::getInstance()->getWinSize();
kmGLPushMatrix(); kmGLPushMatrix();
kmGLTranslatef(s.width/2, 50, 0); kmGLTranslatef(s.width/2, 50, 0);
DrawPrimitives::drawCardinalSpline(_array, 1, 100); kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV2);
kmGLPopMatrix(); kmGLPopMatrix();
CustomCommand* cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(ActionCardinalSplineStacked::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
}
void ActionCardinalSplineStacked::onDraw()
{
kmMat4 oldMat;
kmGLGetMatrix(KM_GL_MODELVIEW, &oldMat);
kmGLLoadMatrix(&_modelViewMV1);
DrawPrimitives::drawCardinalSpline(_array, 0, 100);
kmGLLoadMatrix(&_modelViewMV2);
DrawPrimitives::drawCardinalSpline(_array, 1, 100);
kmGLLoadMatrix(&oldMat);
} }
std::string ActionCardinalSplineStacked::title() const std::string ActionCardinalSplineStacked::title() const
@ -2036,12 +2080,30 @@ void ActionCatmullRom::draw()
// move to 50,50 since the "by" path will start at 50,50 // move to 50,50 since the "by" path will start at 50,50
kmGLPushMatrix(); kmGLPushMatrix();
kmGLTranslatef(50, 50, 0); kmGLTranslatef(50, 50, 0);
DrawPrimitives::drawCatmullRom(_array1, 50); kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV1);
kmGLPopMatrix();
DrawPrimitives::drawCatmullRom(_array2,50); kmGLPopMatrix();
kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV2);
CustomCommand* cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(ActionCatmullRom::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
} }
void ActionCatmullRom::onDraw()
{
kmMat4 oldMat;
kmGLGetMatrix(KM_GL_MODELVIEW, &oldMat);
kmGLLoadMatrix(&_modelViewMV1);
DrawPrimitives::drawCatmullRom(_array1, 50);
kmGLLoadMatrix(&_modelViewMV2);
DrawPrimitives::drawCatmullRom(_array2,50);
kmGLLoadMatrix(&oldMat);
}
std::string ActionCatmullRom::title() const std::string ActionCatmullRom::title() const
{ {
return "CatmullRomBy / CatmullRomTo"; return "CatmullRomBy / CatmullRomTo";
@ -2114,15 +2176,31 @@ void ActionCardinalSpline::draw()
// move to 50,50 since the "by" path will start at 50,50 // move to 50,50 since the "by" path will start at 50,50
kmGLPushMatrix(); kmGLPushMatrix();
kmGLTranslatef(50, 50, 0); kmGLTranslatef(50, 50, 0);
DrawPrimitives::drawCardinalSpline(_array, 0, 100); kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV1);
kmGLPopMatrix(); kmGLPopMatrix();
auto s = Director::getInstance()->getWinSize(); auto s = Director::getInstance()->getWinSize();
kmGLPushMatrix(); kmGLPushMatrix();
kmGLTranslatef(s.width/2, 50, 0); kmGLTranslatef(s.width/2, 50, 0);
DrawPrimitives::drawCardinalSpline(_array, 1, 100); kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV2);
kmGLPopMatrix(); kmGLPopMatrix();
CustomCommand* cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(ActionCardinalSpline::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
}
void ActionCardinalSpline::onDraw()
{
kmMat4 oldMat;
kmGLGetMatrix(KM_GL_MODELVIEW, &oldMat);
kmGLLoadMatrix(&_modelViewMV1);
DrawPrimitives::drawCardinalSpline(_array, 0, 100);
kmGLLoadMatrix(&_modelViewMV2);
DrawPrimitives::drawCardinalSpline(_array, 1, 100);
kmGLLoadMatrix(&oldMat);
} }
std::string ActionCardinalSpline::title() const std::string ActionCardinalSpline::title() const

View File

@ -343,6 +343,9 @@ public:
virtual void onEnter(); virtual void onEnter();
virtual void draw(); virtual void draw();
virtual std::string subtitle() const override; virtual std::string subtitle() const override;
protected:
void onDraw();
}; };
class ActionTargeted : public ActionsDemo class ActionTargeted : public ActionsDemo
@ -415,6 +418,11 @@ public:
virtual void onEnter(); virtual void onEnter();
virtual std::string title() const override; virtual std::string title() const override;
virtual std::string subtitle() const override; virtual std::string subtitle() const override;
protected:
//cached data and callback
kmMat4 _modelViewMV1;
kmMat4 _modelViewMV2;
void onDraw();
private: private:
PointArray* _array1; PointArray* _array1;
PointArray* _array2; PointArray* _array2;
@ -432,6 +440,10 @@ public:
virtual std::string subtitle() const override; virtual std::string subtitle() const override;
private: private:
PointArray* _array; PointArray* _array;
protected:
void onDraw();
kmMat4 _modelViewMV1;
kmMat4 _modelViewMV2;
}; };
class Issue1305 : public ActionsDemo class Issue1305 : public ActionsDemo
@ -522,6 +534,10 @@ public:
private: private:
PointArray *_array1; PointArray *_array1;
PointArray *_array2; PointArray *_array2;
protected:
void onDraw();
kmMat4 _modelViewMV1;
kmMat4 _modelViewMV2;
}; };
class ActionCardinalSpline : public ActionsDemo class ActionCardinalSpline : public ActionsDemo
@ -537,6 +553,10 @@ public:
virtual std::string title() const override; virtual std::string title() const override;
private: private:
PointArray *_array; PointArray *_array;
protected:
void onDraw();
kmMat4 _modelViewMV1;
kmMat4 _modelViewMV2;
}; };
class PauseResumeActions : public ActionsDemo class PauseResumeActions : public ActionsDemo

View File

@ -1,6 +1,9 @@
#include "Box2dTest.h" #include "Box2dTest.h"
#include "../testResource.h" #include "../testResource.h"
#include "extensions/cocos-ext.h" #include "extensions/cocos-ext.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCCustomCommand.h"
USING_NS_CC_EXT; USING_NS_CC_EXT;
#define PTM_RATIO 32 #define PTM_RATIO 32
@ -144,13 +147,28 @@ void Box2DTestLayer::draw()
GL::enableVertexAttribs( cocos2d::GL::VERTEX_ATTRIB_FLAG_POSITION ); GL::enableVertexAttribs( cocos2d::GL::VERTEX_ATTRIB_FLAG_POSITION );
kmGLPushMatrix(); kmGLPushMatrix();
kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV);
world->DrawDebugData(); CustomCommand *cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(Box2DTestLayer::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
kmGLPopMatrix(); kmGLPopMatrix();
#endif #endif
} }
#if CC_ENABLE_BOX2D_INTEGRATION
void Box2DTestLayer::onDraw()
{
kmMat4 oldMV;
kmGLGetMatrix(KM_GL_MODELVIEW, &oldMV);
kmGLLoadMatrix(&_modelViewMV);
world->DrawDebugData();
kmGLLoadMatrix(&oldMV);
}
#endif
void Box2DTestLayer::addNewSpriteAtPosition(Point p) void Box2DTestLayer::addNewSpriteAtPosition(Point p)
{ {
CCLOG("Add sprite %0.2f x %02.f",p.x,p.y); CCLOG("Add sprite %0.2f x %02.f",p.x,p.y);

View File

@ -24,6 +24,11 @@ public:
void onTouchesEnded(const std::vector<Touch*>& touches, Event* event); void onTouchesEnded(const std::vector<Touch*>& touches, Event* event);
//CREATE_NODE(Box2DTestLayer); //CREATE_NODE(Box2DTestLayer);
#if CC_ENABLE_BOX2D_INTEGRATION
protected:
kmMat4 _modelViewMV;
void onDraw();
#endif
} ; } ;
class Box2DTestScene : public TestScene class Box2DTestScene : public TestScene

View File

@ -1,4 +1,6 @@
#include "DrawPrimitivesTest.h" #include "DrawPrimitivesTest.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCCustomCommand.h"
using namespace std; using namespace std;
@ -114,113 +116,128 @@ DrawPrimitivesTest::DrawPrimitivesTest()
void DrawPrimitivesTest::draw() void DrawPrimitivesTest::draw()
{ {
CustomCommand * cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(DrawPrimitivesTest::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
}
CHECK_GL_ERROR_DEBUG(); void DrawPrimitivesTest::onDraw()
{
kmMat4 oldMat;
kmGLGetMatrix(KM_GL_MODELVIEW, &oldMat);
kmGLLoadMatrix(&_modelViewTransform);
// draw a simple line //draw
// The default state is: CHECK_GL_ERROR_DEBUG();
// Line Width: 1
// color: 255,255,255,255 (white, non-transparent) // draw a simple line
// Anti-Aliased // The default state is:
// glEnable(GL_LINE_SMOOTH); // Line Width: 1
// color: 255,255,255,255 (white, non-transparent)
// Anti-Aliased
// glEnable(GL_LINE_SMOOTH);
DrawPrimitives::drawLine( VisibleRect::leftBottom(), VisibleRect::rightTop() ); DrawPrimitives::drawLine( VisibleRect::leftBottom(), VisibleRect::rightTop() );
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
// line: color, width, aliased // line: color, width, aliased
// glLineWidth > 1 and GL_LINE_SMOOTH are not compatible // glLineWidth > 1 and GL_LINE_SMOOTH are not compatible
// GL_SMOOTH_LINE_WIDTH_RANGE = (1,1) on iPhone // GL_SMOOTH_LINE_WIDTH_RANGE = (1,1) on iPhone
// glDisable(GL_LINE_SMOOTH); // glDisable(GL_LINE_SMOOTH);
glLineWidth( 5.0f ); glLineWidth( 5.0f );
DrawPrimitives::setDrawColor4B(255,0,0,255); DrawPrimitives::setDrawColor4B(255,0,0,255);
DrawPrimitives::drawLine( VisibleRect::leftTop(), VisibleRect::rightBottom() ); DrawPrimitives::drawLine( VisibleRect::leftTop(), VisibleRect::rightBottom() );
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
// TIP: // TIP:
// If you are going to use always the same color or width, you don't // If you are going to use always thde same color or width, you don't
// need to call it before every draw // need to call it before every draw
// //
// Remember: OpenGL is a state-machine. // Remember: OpenGL is a state-machine.
// draw big point in the center // draw big point in the center
DrawPrimitives::setPointSize(64); DrawPrimitives::setPointSize(64);
DrawPrimitives::setDrawColor4B(0,0,255,128); DrawPrimitives::setDrawColor4B(0,0,255,128);
DrawPrimitives::drawPoint( VisibleRect::center() ); DrawPrimitives::drawPoint( VisibleRect::center() );
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
// draw 4 small points // draw 4 small points
Point points[] = { Point(60,60), Point(70,70), Point(60,70), Point(70,60) }; Point points[] = { Point(60,60), Point(70,70), Point(60,70), Point(70,60) };
DrawPrimitives::setPointSize(4); DrawPrimitives::setPointSize(4);
DrawPrimitives::setDrawColor4B(0,255,255,255); DrawPrimitives::setDrawColor4B(0,255,255,255);
DrawPrimitives::drawPoints( points, 4); DrawPrimitives::drawPoints( points, 4);
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
// draw a green circle with 10 segments // draw a green circle with 10 segments
glLineWidth(16); glLineWidth(16);
DrawPrimitives::setDrawColor4B(0, 255, 0, 255); DrawPrimitives::setDrawColor4B(0, 255, 0, 255);
DrawPrimitives::drawCircle( VisibleRect::center(), 100, 0, 10, false); DrawPrimitives::drawCircle( VisibleRect::center(), 100, 0, 10, false);
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
// draw a green circle with 50 segments with line to center // draw a green circle with 50 segments with line to center
glLineWidth(2); glLineWidth(2);
DrawPrimitives::setDrawColor4B(0, 255, 255, 255); DrawPrimitives::setDrawColor4B(0, 255, 255, 255);
DrawPrimitives::drawCircle( VisibleRect::center(), 50, CC_DEGREES_TO_RADIANS(90), 50, true); DrawPrimitives::drawCircle( VisibleRect::center(), 50, CC_DEGREES_TO_RADIANS(90), 50, true);
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
// draw a pink solid circle with 50 segments // draw a pink solid circle with 50 segments
glLineWidth(2); glLineWidth(2);
DrawPrimitives::setDrawColor4B(255, 0, 255, 255); DrawPrimitives::setDrawColor4B(255, 0, 255, 255);
DrawPrimitives::drawSolidCircle( VisibleRect::center() + Point(140,0), 40, CC_DEGREES_TO_RADIANS(90), 50, 1.0f, 1.0f); DrawPrimitives::drawSolidCircle( VisibleRect::center() + Point(140,0), 40, CC_DEGREES_TO_RADIANS(90), 50, 1.0f, 1.0f);
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
// open yellow poly // open yellow poly
DrawPrimitives::setDrawColor4B(255, 255, 0, 255); DrawPrimitives::setDrawColor4B(255, 255, 0, 255);
glLineWidth(10); glLineWidth(10);
Point vertices[] = { Point(0,0), Point(50,50), Point(100,50), Point(100,100), Point(50,100) }; Point vertices[] = { Point(0,0), Point(50,50), Point(100,50), Point(100,100), Point(50,100) };
DrawPrimitives::drawPoly( vertices, 5, false); DrawPrimitives::drawPoly( vertices, 5, false);
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
// filled poly // filled poly
glLineWidth(1); glLineWidth(1);
Point filledVertices[] = { Point(0,120), Point(50,120), Point(50,170), Point(25,200), Point(0,170) }; Point filledVertices[] = { Point(0,120), Point(50,120), Point(50,170), Point(25,200), Point(0,170) };
DrawPrimitives::drawSolidPoly(filledVertices, 5, Color4F(0.5f, 0.5f, 1, 1 ) ); DrawPrimitives::drawSolidPoly(filledVertices, 5, Color4F(0.5f, 0.5f, 1, 1 ) );
// closed purble poly // closed purble poly
DrawPrimitives::setDrawColor4B(255, 0, 255, 255); DrawPrimitives::setDrawColor4B(255, 0, 255, 255);
glLineWidth(2); glLineWidth(2);
Point vertices2[] = { Point(30,130), Point(30,230), Point(50,200) }; Point vertices2[] = { Point(30,130), Point(30,230), Point(50,200) };
DrawPrimitives::drawPoly( vertices2, 3, true); DrawPrimitives::drawPoly( vertices2, 3, true);
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
// draw quad bezier path // draw quad bezier path
DrawPrimitives::drawQuadBezier(VisibleRect::leftTop(), VisibleRect::center(), VisibleRect::rightTop(), 50); DrawPrimitives::drawQuadBezier(VisibleRect::leftTop(), VisibleRect::center(), VisibleRect::rightTop(), 50);
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
// draw cubic bezier path // draw cubic bezier path
DrawPrimitives::drawCubicBezier(VisibleRect::center(), Point(VisibleRect::center().x+30,VisibleRect::center().y+50), Point(VisibleRect::center().x+60,VisibleRect::center().y-50),VisibleRect::right(),100); DrawPrimitives::drawCubicBezier(VisibleRect::center(), Point(VisibleRect::center().x+30,VisibleRect::center().y+50), Point(VisibleRect::center().x+60,VisibleRect::center().y-50),VisibleRect::right(),100);
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
//draw a solid polygon //draw a solid polygon
Point vertices3[] = {Point(60,160), Point(70,190), Point(100,190), Point(90,160)}; Point vertices3[] = {Point(60,160), Point(70,190), Point(100,190), Point(90,160)};
DrawPrimitives::drawSolidPoly( vertices3, 4, Color4F(1,1,0,1) ); DrawPrimitives::drawSolidPoly( vertices3, 4, Color4F(1,1,0,1) );
// restore original values // restore original values
glLineWidth(1); glLineWidth(1);
DrawPrimitives::setDrawColor4B(255,255,255,255); DrawPrimitives::setDrawColor4B(255,255,255,255);
DrawPrimitives::setPointSize(1); DrawPrimitives::setPointSize(1);
CHECK_GL_ERROR_DEBUG(); CHECK_GL_ERROR_DEBUG();
//end draw
kmGLLoadMatrix(&oldMat);
} }
string DrawPrimitivesTest::title() const string DrawPrimitivesTest::title() const
@ -257,10 +274,10 @@ DrawNodeTest::DrawNodeTest()
const float w=20; const float w=20;
const float h=50; const float h=50;
Point star[] = { Point star[] = {
Point(o+w,o-h), Point(o+w*2, o), // lower spike Point(o+w,o-h), Point(o+w*2, o), // lower spike
Point(o + w*2 + h, o+w ), Point(o + w*2, o+w*2), // right spike Point(o + w*2 + h, o+w ), Point(o + w*2, o+w*2), // right spike
// {o +w, o+w*2+h}, {o,o+w*2}, // top spike // {o +w, o+w*2+h}, {o,o+w*2}, // top spike
// {o -h, o+w}, {o,o}, // left spike // {o -h, o+w}, {o,o}, // left spike
}; };
draw->drawPolygon(star, sizeof(star)/sizeof(star[0]), Color4F(1,0,0,0.5), 1, Color4F(0,0,1,1)); draw->drawPolygon(star, sizeof(star)/sizeof(star[0]), Color4F(1,0,0,0.5), 1, Color4F(0,0,1,1));
@ -272,9 +289,9 @@ DrawNodeTest::DrawNodeTest()
const float w=20; const float w=20;
const float h=50; const float h=50;
Point star[] = { Point star[] = {
Point(o,o), Point(o+w,o-h), Point(o+w*2, o), // lower spike Point(o,o), Point(o+w,o-h), Point(o+w*2, o), // lower spike
Point(o + w*2 + h, o+w ), Point(o + w*2, o+w*2), // right spike Point(o + w*2 + h, o+w ), Point(o + w*2, o+w*2), // right spike
Point(o +w, o+w*2+h), Point(o,o+w*2), // top spike Point(o +w, o+w*2+h), Point(o,o+w*2), // top spike
Point(o -h, o+w), // left spike Point(o -h, o+w), // left spike
}; };

View File

@ -28,6 +28,8 @@ public:
virtual std::string title() const override; virtual std::string title() const override;
virtual std::string subtitle() const override; virtual std::string subtitle() const override;
virtual void draw(); virtual void draw();
protected:
void onDraw();
}; };
class DrawNodeTest : public BaseLayer class DrawNodeTest : public BaseLayer

View File

@ -2,6 +2,8 @@
#include "../../testResource.h" #include "../../testResource.h"
#include "cocostudio/CocoStudio.h" #include "cocostudio/CocoStudio.h"
#include "CCNodeGrid.h" #include "CCNodeGrid.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCCustomCommand.h"
using namespace cocos2d; using namespace cocos2d;
@ -228,11 +230,6 @@ void ArmatureTestLayer::backCallback(Object *pSender)
Director::getInstance()->replaceScene(s); Director::getInstance()->replaceScene(s);
s->release(); s->release();
} }
void ArmatureTestLayer::draw()
{
Layer::draw();
}
void TestAsynchronousLoading::onEnter() void TestAsynchronousLoading::onEnter()
{ {
@ -1097,7 +1094,17 @@ std::string TestBoundingBox::title() const
} }
void TestBoundingBox::draw() void TestBoundingBox::draw()
{ {
CC_NODE_DRAW_SETUP(); CustomCommand *cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(TestBoundingBox::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
}
void TestBoundingBox::onDraw()
{
getShaderProgram()->use();
getShaderProgram()->setUniformsForBuiltins(_modelViewTransform);
rect = armature->getBoundingBox(); rect = armature->getBoundingBox();
@ -1105,8 +1112,6 @@ void TestBoundingBox::draw()
DrawPrimitives::drawRect(rect.origin, Point(rect.getMaxX(), rect.getMaxY())); DrawPrimitives::drawRect(rect.origin, Point(rect.getMaxX(), rect.getMaxY()));
} }
void TestAnchorPoint::onEnter() void TestAnchorPoint::onEnter()
{ {
ArmatureTestLayer::onEnter(); ArmatureTestLayer::onEnter();

View File

@ -62,7 +62,6 @@ public:
// overrides // overrides
virtual void onEnter() override; virtual void onEnter() override;
virtual void onExit() override; virtual void onExit() override;
virtual void draw() override;
protected: protected:
MenuItemImage *restartItem; MenuItemImage *restartItem;
@ -296,6 +295,8 @@ public:
cocostudio::Armature *armature; cocostudio::Armature *armature;
Rect rect; Rect rect;
protected:
void onDraw();
}; };
class TestAnchorPoint : public ArmatureTestLayer class TestAnchorPoint : public ArmatureTestLayer

View File

@ -1,5 +1,7 @@
#include "LabelTest.h" #include "LabelTest.h"
#include "../testResource.h" #include "../testResource.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCCustomCommand.h"
enum { enum {
kTagTileMap = 1, kTagTileMap = 1,
@ -207,12 +209,20 @@ void Atlas1::draw()
// GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY // GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY
// GL_TEXTURE_2D // GL_TEXTURE_2D
_textureAtlas->drawQuads(); CustomCommand *cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(Atlas1::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
// [textureAtlas drawNumberOfQuads:3]; // [textureAtlas drawNumberOfQuads:3];
} }
void Atlas1::onDraw()
{
_textureAtlas->drawQuads();
}
std::string Atlas1::title() const std::string Atlas1::title() const
{ {
return "CCTextureAtlas"; return "CCTextureAtlas";
@ -515,6 +525,14 @@ Atlas4::Atlas4()
} }
void Atlas4::draw() void Atlas4::draw()
{
CustomCommand *cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(Atlas4::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
}
void Atlas4::onDraw()
{ {
auto s = Director::getInstance()->getWinSize(); auto s = Director::getInstance()->getWinSize();
DrawPrimitives::drawLine( Point(0, s.height/2), Point(s.width, s.height/2) ); DrawPrimitives::drawLine( Point(0, s.height/2), Point(s.width, s.height/2) );
@ -1594,6 +1612,14 @@ std::string LabelBMFontBounds::subtitle() const
} }
void LabelBMFontBounds::draw() void LabelBMFontBounds::draw()
{
CustomCommand *cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(LabelBMFontBounds::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
}
void LabelBMFontBounds::onDraw()
{ {
auto labelSize = label1->getContentSize(); auto labelSize = label1->getContentSize();
auto origin = Director::getInstance()->getWinSize(); auto origin = Director::getInstance()->getWinSize();

View File

@ -36,6 +36,8 @@ public:
virtual std::string title() const override; virtual std::string title() const override;
virtual std::string subtitle() const override; virtual std::string subtitle() const override;
virtual void draw(); virtual void draw();
protected:
void onDraw();
}; };
class LabelAtlasTest : public AtlasDemo class LabelAtlasTest : public AtlasDemo
@ -102,6 +104,8 @@ public:
virtual std::string title() const override; virtual std::string title() const override;
virtual std::string subtitle() const override; virtual std::string subtitle() const override;
protected:
void onDraw();
}; };
class Atlas5 : public AtlasDemo class Atlas5 : public AtlasDemo
@ -372,6 +376,8 @@ public:
virtual void draw(); virtual void draw();
virtual std::string title() const override; virtual std::string title() const override;
virtual std::string subtitle() const override; virtual std::string subtitle() const override;
protected:
void onDraw();
private: private:
LabelBMFont *label1; LabelBMFont *label1;
}; };

View File

@ -1,6 +1,8 @@
#include "CCConfiguration.h" #include "CCConfiguration.h"
#include "RenderTextureTest.h" #include "RenderTextureTest.h"
#include "../testBasic.h" #include "../testBasic.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCCustomCommand.h"
// Test #1 by Jason Booth (slipster216) // Test #1 by Jason Booth (slipster216)
// Test #3 by David Deaco (ddeaco) // Test #3 by David Deaco (ddeaco)
@ -586,6 +588,17 @@ SpriteRenderTextureBug::SimpleSprite* SpriteRenderTextureBug::SimpleSprite::crea
} }
void SpriteRenderTextureBug::SimpleSprite::draw() void SpriteRenderTextureBug::SimpleSprite::draw()
{
CustomCommand *cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(SpriteRenderTextureBug::SimpleSprite::onBeforeDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
Sprite::draw();
}
void SpriteRenderTextureBug::SimpleSprite::onBeforeDraw()
{ {
if (_rt == nullptr) if (_rt == nullptr)
{ {
@ -595,36 +608,6 @@ void SpriteRenderTextureBug::SimpleSprite::draw()
} }
_rt->beginWithClear(0.0f, 0.0f, 0.0f, 1.0f); _rt->beginWithClear(0.0f, 0.0f, 0.0f, 1.0f);
_rt->end(); _rt->end();
CC_NODE_DRAW_SETUP();
BlendFunc blend = getBlendFunc();
GL::blendFunc(blend.src, blend.dst);
GL::bindTexture2D(getTexture()->getName());
//
// Attributes
//
GL::enableVertexAttribs(cocos2d::GL::VERTEX_ATTRIB_FLAG_POS_COLOR_TEX);
#define kQuadSize sizeof(_quad.bl)
long offset = (long)&_quad;
// vertex
int diff = offsetof( V3F_C4B_T2F, vertices);
glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 3, GL_FLOAT, GL_FALSE, kQuadSize, (void*) (offset + diff));
// texCoods
diff = offsetof( V3F_C4B_T2F, texCoords);
glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_TEX_COORDS, 2, GL_FLOAT, GL_FALSE, kQuadSize, (void*)(offset + diff));
// color
diff = offsetof( V3F_C4B_T2F, colors);
glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, kQuadSize, (void*)(offset + diff));
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
} }
SpriteRenderTextureBug::SpriteRenderTextureBug() SpriteRenderTextureBug::SpriteRenderTextureBug()

View File

@ -113,7 +113,8 @@ public:
SimpleSprite(); SimpleSprite();
virtual void draw(); virtual void draw();
protected:
void onBeforeDraw();
public: public:
RenderTexture *_rt; RenderTexture *_rt;
}; };

View File

@ -1,6 +1,8 @@
#include "ShaderTest.h" #include "ShaderTest.h"
#include "../testResource.h" #include "../testResource.h"
#include "cocos2d.h" #include "cocos2d.h"
#include "renderer/CCCustomCommand.h"
#include "renderer/CCRenderer.h"
static int sceneIdx = -1; static int sceneIdx = -1;
@ -193,6 +195,14 @@ void ShaderNode::setPosition(const Point &newPosition)
} }
void ShaderNode::draw() void ShaderNode::draw()
{
CustomCommand *cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(ShaderNode::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
}
void ShaderNode::onDraw()
{ {
CC_NODE_DRAW_SETUP(); CC_NODE_DRAW_SETUP();
@ -217,7 +227,6 @@ void ShaderNode::draw()
CC_INCREMENT_GL_DRAWS(1); CC_INCREMENT_GL_DRAWS(1);
} }
/// ShaderMonjori /// ShaderMonjori
ShaderMonjori::ShaderMonjori() ShaderMonjori::ShaderMonjori()
@ -438,6 +447,8 @@ public:
GLuint blurLocation; GLuint blurLocation;
GLuint subLocation; GLuint subLocation;
protected:
void onDraw();
}; };
SpriteBlur::~SpriteBlur() SpriteBlur::~SpriteBlur()
@ -520,6 +531,14 @@ void SpriteBlur::initProgram()
} }
void SpriteBlur::draw() void SpriteBlur::draw()
{
CustomCommand *cmd = CustomCommand::getCommandPool().generateCommand();
cmd->init(0, _vertexZ);
cmd->func = CC_CALLBACK_0(SpriteBlur::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(cmd);
}
void SpriteBlur::onDraw()
{ {
GL::enableVertexAttribs(cocos2d::GL::VERTEX_ATTRIB_FLAG_POS_COLOR_TEX ); GL::enableVertexAttribs(cocos2d::GL::VERTEX_ATTRIB_FLAG_POS_COLOR_TEX );
BlendFunc blend = getBlendFunc(); BlendFunc blend = getBlendFunc();

View File

@ -126,6 +126,9 @@ public:
static ShaderNode* shaderNodeWithVertex(const char *vert, const char *frag); static ShaderNode* shaderNodeWithVertex(const char *vert, const char *frag);
protected:
void onDraw();
private: private:
Vertex2F _center; Vertex2F _center;

View File

@ -49,7 +49,7 @@ void SpineTestScene::runThisTest()
bool SpineTestLayer::init () { bool SpineTestLayer::init () {
if (!Layer::init()) return false; if (!Layer::init()) return false;
skeletonNode = CCSkeletonAnimation::createWithFile("spine/spineboy.json", "spine/spineboy.atlas"); skeletonNode = SkeletonAnimation::createWithFile("spine/spineboy.json", "spine/spineboy.atlas");
skeletonNode->setMix("walk", "jump", 0.2f); skeletonNode->setMix("walk", "jump", 0.2f);
skeletonNode->setMix("jump", "walk", 0.4f); skeletonNode->setMix("jump", "walk", 0.4f);
@ -82,7 +82,7 @@ void SpineTestLayer::update (float deltaTime) {
} }
void SpineTestLayer::animationStateEvent (CCSkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount) { void SpineTestLayer::animationStateEvent (SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount) {
spTrackEntry* entry = spAnimationState_getCurrent(node->state, trackIndex); spTrackEntry* entry = spAnimationState_getCurrent(node->state, trackIndex);
const char* animationName = (entry && entry->animation) ? entry->animation->name : 0; const char* animationName = (entry && entry->animation) ? entry->animation->name : 0;

View File

@ -38,13 +38,13 @@ public:
class SpineTestLayer: public cocos2d::Layer { class SpineTestLayer: public cocos2d::Layer {
private: private:
spine::CCSkeletonAnimation* skeletonNode; spine::SkeletonAnimation* skeletonNode;
public: public:
virtual bool init (); virtual bool init ();
virtual void update (float deltaTime); virtual void update (float deltaTime);
void animationStateEvent (spine::CCSkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount); void animationStateEvent (spine::SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount);
CREATE_FUNC (SpineTestLayer); CREATE_FUNC (SpineTestLayer);
}; };

View File

@ -76,7 +76,7 @@
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat> <DebugInformationFormat>OldStyle</DebugInformationFormat>
<DisableSpecificWarnings>4267;4251;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4267;4251;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>

@ -1 +1 @@
Subproject commit fda861cde4387948e95811966d9c4ceea04dc758 Subproject commit ff3a95b059be8421677ed6817b73ae2ac577781d

View File

@ -1,7 +1,7 @@
[cocos2dx_spine] [cocos2dx_spine]
prefix = cocos2dx_spine prefix = cocos2dx_spine
target_namespace = cc target_namespace = sp
android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include
android_flags = -D_SIZE_T_DEFINED_ android_flags = -D_SIZE_T_DEFINED_
@ -20,12 +20,12 @@ extra_arguments = %(android_headers)s %(clang_headers)s %(cxxgenerator_headers)s
headers = %(cocosdir)s/cocos/editor-support/spine/spine-cocos2dx.h headers = %(cocosdir)s/cocos/editor-support/spine/spine-cocos2dx.h
skip = CCSkeleton::[createWithData], skip = Skeleton::[createWithData],
CCSkeletonAnimation::[createWithData] SkeletonAnimation::[createWithData]
classes = CCSkeleton CCSkeletonAnimation classes = Skeleton SkeletonAnimation
remove_prefix = CC remove_prefix =
classes_have_no_parents = classes_have_no_parents =