mirror of https://github.com/axmolengine/axmol.git
Merge pull request #4631 from boyu0/const_char_star_to_std_string
Change const char* to const std::string&
This commit is contained in:
commit
55b0ef85d8
|
@ -72,14 +72,14 @@ Component* Component::create(void)
|
|||
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
|
||||
|
|
|
@ -60,8 +60,8 @@ public:
|
|||
virtual void setEnabled(bool b);
|
||||
static Component* create(void);
|
||||
|
||||
const char* getName() const;
|
||||
void setName(const char *name);
|
||||
const std::string& getName() const;
|
||||
void setName(const std::string& name);
|
||||
|
||||
void setOwner(Node *pOwner);
|
||||
Node* getOwner() const;
|
||||
|
|
|
@ -40,12 +40,10 @@ ComponentContainer::~ComponentContainer(void)
|
|||
CC_SAFE_DELETE(_components);
|
||||
}
|
||||
|
||||
Component* ComponentContainer::get(const char *name) const
|
||||
Component* ComponentContainer::get(const std::string& name) const
|
||||
{
|
||||
Component* ret = nullptr;
|
||||
CCASSERT(name != nullptr, "Argument must be non-nil");
|
||||
do {
|
||||
CC_BREAK_IF(nullptr == name);
|
||||
CC_BREAK_IF(nullptr == _components);
|
||||
ret = _components->at(name);
|
||||
|
||||
|
@ -77,10 +75,9 @@ bool ComponentContainer::add(Component *com)
|
|||
return ret;
|
||||
}
|
||||
|
||||
bool ComponentContainer::remove(const char *name)
|
||||
bool ComponentContainer::remove(const std::string& name)
|
||||
{
|
||||
bool ret = false;
|
||||
CCASSERT(name != nullptr, "Argument must be non-nil");
|
||||
do
|
||||
{
|
||||
CC_BREAK_IF(!_components);
|
||||
|
|
|
@ -47,9 +47,9 @@ public:
|
|||
* @lua NA
|
||||
*/
|
||||
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 remove(const char *name);
|
||||
virtual bool remove(const std::string& name);
|
||||
virtual void removeAll();
|
||||
virtual void visit(float delta);
|
||||
public:
|
||||
|
|
|
@ -284,7 +284,7 @@ void Configuration::setValue(const std::string& key, const Value& value)
|
|||
//
|
||||
// load file
|
||||
//
|
||||
void Configuration::loadConfigFile(const char *filename)
|
||||
void Configuration::loadConfigFile(const std::string& filename)
|
||||
{
|
||||
ValueMap dict = FileUtils::getInstance()->getValueMapFromFile(filename);
|
||||
CCASSERT(!dict.empty(), "cannot create dictionary");
|
||||
|
@ -312,14 +312,14 @@ void Configuration::loadConfigFile(const char *filename)
|
|||
|
||||
if (! validMetadata)
|
||||
{
|
||||
CCLOG("Invalid config format for file: %s", filename);
|
||||
CCLOG("Invalid config format for file: %s", filename.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
auto dataIter = dict.find("data");
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -128,7 +128,7 @@ public:
|
|||
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. */
|
||||
void loadConfigFile(const char *filename);
|
||||
void loadConfigFile(const std::string& filename);
|
||||
|
||||
private:
|
||||
Configuration(void);
|
||||
|
|
|
@ -30,7 +30,7 @@ NS_CC_BEGIN
|
|||
|
||||
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);
|
||||
FontAtlas *tempAtlas = _atlasMap[atlasName];
|
||||
|
@ -49,7 +49,7 @@ FontAtlas * FontAtlasCache::getFontAtlasTTF(const char *fontFileName, int size,
|
|||
return tempAtlas;
|
||||
}
|
||||
|
||||
FontAtlas * FontAtlasCache::getFontAtlasFNT(const char *fontFileName)
|
||||
FontAtlas * FontAtlasCache::getFontAtlasFNT(const std::string& fontFileName)
|
||||
{
|
||||
std::string atlasName = generateFontName(fontFileName, 0, GlyphCollection::CUSTOM,false);
|
||||
FontAtlas *tempAtlas = _atlasMap[atlasName];
|
||||
|
@ -68,7 +68,7 @@ FontAtlas * FontAtlasCache::getFontAtlasFNT(const char *fontFileName)
|
|||
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);
|
||||
|
||||
|
|
|
@ -38,14 +38,14 @@ class CC_DLL FontAtlasCache
|
|||
|
||||
public:
|
||||
|
||||
static FontAtlas * getFontAtlasTTF(const char *fontFileName, int size, GlyphCollection glyphs, const char *customGlyphs = 0, bool useDistanceField = false);
|
||||
static FontAtlas * getFontAtlasFNT(const char *fontFileName);
|
||||
static FontAtlas * getFontAtlasTTF(const std::string& fontFileName, int size, GlyphCollection glyphs, const char *customGlyphs = 0, bool useDistanceField = false);
|
||||
static FontAtlas * getFontAtlasFNT(const std::string& fontFileName);
|
||||
|
||||
static bool releaseFontAtlas(FontAtlas *atlas);
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
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);
|
||||
|
@ -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);
|
||||
|
||||
|
|
|
@ -36,8 +36,8 @@ class CC_DLL FontAtlasFactory
|
|||
|
||||
public:
|
||||
|
||||
static FontAtlas * createAtlasFromTTF(const char* fntFilePath, int fontSize, GlyphCollection glyphs, const char *customGlyphs = 0, bool useDistanceField = false);
|
||||
static FontAtlas * createAtlasFromFNT(const char* fntFilePath);
|
||||
static FontAtlas * createAtlasFromTTF(const std::string& fntFilePath, int fontSize, GlyphCollection glyphs, const char *customGlyphs = 0, bool useDistanceField = false);
|
||||
static FontAtlas * createAtlasFromFNT(const std::string& fntFilePath);
|
||||
|
||||
private:
|
||||
};
|
||||
|
|
|
@ -25,9 +25,11 @@ THE SOFTWARE.
|
|||
#ifndef __CC_IME_DELEGATE_H__
|
||||
#define __CC_IME_DELEGATE_H__
|
||||
|
||||
#include <string>
|
||||
#include "CCGeometry.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
extern const std::string STD_STRING_EMPTY;
|
||||
|
||||
/**
|
||||
* @addtogroup input
|
||||
|
@ -114,7 +116,7 @@ protected:
|
|||
* @js NA
|
||||
* @lua NA
|
||||
*/
|
||||
virtual const char * getContentText() { return 0; }
|
||||
virtual const std::string& getContentText() { return STD_STRING_EMPTY; }
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// keyboard show/hide notification
|
||||
|
|
|
@ -239,14 +239,13 @@ void IMEDispatcher::dispatchDeleteBackward()
|
|||
} while (0);
|
||||
}
|
||||
|
||||
const char * IMEDispatcher::getContentText()
|
||||
const std::string& IMEDispatcher::getContentText()
|
||||
{
|
||||
const char * contentText = 0;
|
||||
if (_impl && _impl->_delegateWithIme)
|
||||
{
|
||||
contentText = _impl->_delegateWithIme->getContentText();
|
||||
return _impl->_delegateWithIme->getContentText();
|
||||
}
|
||||
return (contentText) ? contentText : "";
|
||||
return STD_STRING_EMPTY;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -77,7 +77,7 @@ public:
|
|||
* @js NA
|
||||
* @lua NA
|
||||
*/
|
||||
const char * getContentText();
|
||||
const std::string& getContentText();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// dispatch keyboard notification
|
||||
|
|
|
@ -320,7 +320,7 @@ MenuItemAtlasFont * MenuItemAtlasFont::create(const std::string& value, const st
|
|||
}
|
||||
|
||||
// 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();
|
||||
ret->initWithString(value, charMapFile, itemWidth, itemHeight, startCharMap, target, selector);
|
||||
|
@ -337,7 +337,7 @@ MenuItemAtlasFont * MenuItemAtlasFont::create(const std::string& value, const st
|
|||
}
|
||||
|
||||
// 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;
|
||||
CC_SAFE_RETAIN(_target);
|
||||
|
@ -387,7 +387,7 @@ const std::string& MenuItemFont::getFontName()
|
|||
}
|
||||
|
||||
// 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();
|
||||
ret->initWithString(value, target, selector);
|
||||
|
@ -422,9 +422,9 @@ MenuItemFont::~MenuItemFont()
|
|||
}
|
||||
|
||||
// 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;
|
||||
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)
|
||||
{
|
||||
CCASSERT( value.size() >= 0, "Value length must be greater than 0");
|
||||
CCASSERT( !value.empty(), "Value length must be greater than 0");
|
||||
|
||||
_fontName = _globalFontName;
|
||||
_fontSize = _globalFontSize;
|
||||
|
@ -710,7 +710,7 @@ MenuItemImage * MenuItemImage::create(const std::string& normalImage, const std:
|
|||
}
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
@ -721,7 +721,7 @@ MenuItemImage * MenuItemImage::create(const std::string& normalImage, const std:
|
|||
}
|
||||
|
||||
// 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();
|
||||
if (ret && ret->initWithNormalImage(normalImage, selectedImage, disabledImage, target, selector))
|
||||
|
@ -758,7 +758,7 @@ MenuItemImage * MenuItemImage::create(const std::string& normalImage, const std:
|
|||
}
|
||||
|
||||
// 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;
|
||||
CC_SAFE_RETAIN(_target);
|
||||
|
|
|
@ -217,7 +217,7 @@ public:
|
|||
/** 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);
|
||||
/** 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 */
|
||||
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(){}
|
||||
|
||||
/** 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 */
|
||||
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 */
|
||||
static MenuItemFont * create(const std::string& value = "");
|
||||
/** 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 */
|
||||
static MenuItemFont * create(const std::string& value, const ccMenuCallback& callback);
|
||||
|
||||
|
@ -306,7 +306,7 @@ protected:
|
|||
virtual ~MenuItemFont();
|
||||
|
||||
/** 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 */
|
||||
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*/
|
||||
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 */
|
||||
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 */
|
||||
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 */
|
||||
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 */
|
||||
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();
|
||||
/** 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 */
|
||||
bool initWithNormalImage(const std::string& normalImage, const std::string& selectedImage, const std::string& disabledImage, const ccMenuCallback& callback);
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ MotionStreak::~MotionStreak()
|
|||
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();
|
||||
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;
|
||||
}
|
||||
|
||||
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);
|
||||
return initWithFade(fade, minSeg, stroke, color, texture);
|
||||
|
|
|
@ -50,7 +50,7 @@ class CC_DLL MotionStreak : public Node, public TextureProtocol
|
|||
{
|
||||
public:
|
||||
/** 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 */
|
||||
static MotionStreak* create(float fade, float minSeg, float stroke, const Color3B& color, Texture2D* texture);
|
||||
|
||||
|
@ -116,7 +116,7 @@ protected:
|
|||
virtual ~MotionStreak();
|
||||
|
||||
/** 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 */
|
||||
bool initWithFade(float fade, float minSeg, float stroke, const Color3B& color, Texture2D* texture);
|
||||
|
||||
|
|
|
@ -1346,7 +1346,7 @@ void Node::updateTransform()
|
|||
child->updateTransform();
|
||||
}
|
||||
|
||||
Component* Node::getComponent(const char *pName)
|
||||
Component* Node::getComponent(const std::string& pName)
|
||||
{
|
||||
if( _componentContainer )
|
||||
return _componentContainer->get(pName);
|
||||
|
@ -1361,7 +1361,7 @@ bool Node::addComponent(Component *pComponent)
|
|||
return _componentContainer->add(pComponent);
|
||||
}
|
||||
|
||||
bool Node::removeComponent(const char *pName)
|
||||
bool Node::removeComponent(const std::string& pName)
|
||||
{
|
||||
if( _componentContainer )
|
||||
return _componentContainer->remove(pName);
|
||||
|
|
|
@ -1322,7 +1322,7 @@ public:
|
|||
/**
|
||||
* gets a component by its name
|
||||
*/
|
||||
Component* getComponent(const char *pName);
|
||||
Component* getComponent(const std::string& pName);
|
||||
|
||||
/**
|
||||
* adds a component
|
||||
|
@ -1332,7 +1332,7 @@ public:
|
|||
/**
|
||||
* removes a component by its name
|
||||
*/
|
||||
virtual bool removeComponent(const char *pName);
|
||||
virtual bool removeComponent(const std::string& pName);
|
||||
|
||||
/**
|
||||
* removes all components
|
||||
|
|
|
@ -74,7 +74,7 @@ void NotificationCenter::purgeNotificationCenter(void)
|
|||
//
|
||||
// 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;
|
||||
CCARRAY_FOREACH(_observers, obj)
|
||||
|
@ -83,7 +83,7 @@ bool NotificationCenter::observerExisted(Object *target,const char *name, Object
|
|||
if (!observer)
|
||||
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 false;
|
||||
|
@ -94,7 +94,7 @@ bool NotificationCenter::observerExisted(Object *target,const char *name, Object
|
|||
//
|
||||
void NotificationCenter::addObserver(Object *target,
|
||||
SEL_CallFuncO selector,
|
||||
const char *name,
|
||||
const std::string& name,
|
||||
Object *sender)
|
||||
{
|
||||
if (this->observerExisted(target, name, sender))
|
||||
|
@ -108,7 +108,7 @@ void NotificationCenter::addObserver(Object *target,
|
|||
_observers->addObject(observer);
|
||||
}
|
||||
|
||||
void NotificationCenter::removeObserver(Object *target,const char *name)
|
||||
void NotificationCenter::removeObserver(Object *target, const std::string& name)
|
||||
{
|
||||
Object* obj = nullptr;
|
||||
CCARRAY_FOREACH(_observers, obj)
|
||||
|
@ -117,7 +117,7 @@ void NotificationCenter::removeObserver(Object *target,const char *name)
|
|||
if (!observer)
|
||||
continue;
|
||||
|
||||
if (!strcmp(observer->getName(),name) && observer->getTarget() == target)
|
||||
if (observer->getName() == name && observer->getTarget() == target)
|
||||
{
|
||||
_observers->removeObject(observer);
|
||||
return;
|
||||
|
@ -146,7 +146,7 @@ int NotificationCenter::removeAllObservers(Object *target)
|
|||
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))
|
||||
|
@ -161,7 +161,7 @@ void NotificationCenter::registerScriptObserver( Object *target, int handler,con
|
|||
_observers->addObject(observer);
|
||||
}
|
||||
|
||||
void NotificationCenter::unregisterScriptObserver(Object *target,const char* name)
|
||||
void NotificationCenter::unregisterScriptObserver(Object *target,const std::string& name)
|
||||
{
|
||||
Object* obj = nullptr;
|
||||
CCARRAY_FOREACH(_observers, obj)
|
||||
|
@ -170,14 +170,14 @@ void NotificationCenter::unregisterScriptObserver(Object *target,const char* nam
|
|||
if (!observer)
|
||||
continue;
|
||||
|
||||
if ( !strcmp(observer->getName(),name) && observer->getTarget() == target)
|
||||
if ( observer->getName() == name && observer->getTarget() == target)
|
||||
{
|
||||
_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());
|
||||
ObserversCopy->addObjectsFromArray(_observers);
|
||||
|
@ -188,11 +188,11 @@ void NotificationCenter::postNotification(const char *name, Object *sender)
|
|||
if (!observer)
|
||||
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())
|
||||
{
|
||||
BasicScriptData data(this, (void*)name);
|
||||
BasicScriptData data(this, (void*)name.c_str());
|
||||
ScriptEvent scriptEvent(kNotificationEvent,(void*)&data);
|
||||
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);
|
||||
}
|
||||
|
||||
int NotificationCenter::getObserverHandlerByName(const char* name)
|
||||
int NotificationCenter::getObserverHandlerByName(const std::string& name)
|
||||
{
|
||||
if (nullptr == name || strlen(name) == 0)
|
||||
if (name.empty())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -223,7 +223,7 @@ int NotificationCenter::getObserverHandlerByName(const char* name)
|
|||
if (nullptr == observer)
|
||||
continue;
|
||||
|
||||
if ( 0 == strcmp(observer->getName(),name) )
|
||||
if ( observer->getName() == name )
|
||||
{
|
||||
return observer->getHandler();
|
||||
break;
|
||||
|
@ -240,7 +240,7 @@ int NotificationCenter::getObserverHandlerByName(const char* name)
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
NotificationObserver::NotificationObserver(Object *target,
|
||||
SEL_CallFuncO selector,
|
||||
const char *name,
|
||||
const std::string& name,
|
||||
Object *sender)
|
||||
{
|
||||
_target = target;
|
||||
|
@ -278,9 +278,9 @@ SEL_CallFuncO NotificationObserver::getSelector() const
|
|||
return _selector;
|
||||
}
|
||||
|
||||
const char* NotificationObserver::getName() const
|
||||
const std::string& NotificationObserver::getName() const
|
||||
{
|
||||
return _name.c_str();
|
||||
return _name;
|
||||
}
|
||||
|
||||
Object* NotificationObserver::getSender() const
|
||||
|
|
|
@ -67,14 +67,14 @@ public:
|
|||
*/
|
||||
void addObserver(Object *target,
|
||||
SEL_CallFuncO selector,
|
||||
const char *name,
|
||||
const std::string& name,
|
||||
Object *sender);
|
||||
|
||||
/** @brief Removes the observer by the specified target and name.
|
||||
* @param target The target 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
|
||||
* @param target The target of this notification.
|
||||
|
@ -86,21 +86,21 @@ public:
|
|||
* @note Only supports Lua Binding now.
|
||||
* @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 */
|
||||
void unregisterScriptObserver(Object *target,const char* name);
|
||||
void unregisterScriptObserver(Object *target,const std::string& name);
|
||||
|
||||
/** @brief Posts one notification event by name.
|
||||
* @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.
|
||||
* @param name The name of this notification.
|
||||
* @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.
|
||||
* @note Only supports Lua Binding now.
|
||||
|
@ -112,12 +112,12 @@ public:
|
|||
* @param name The name of this notification.
|
||||
* @return The observer script handle.
|
||||
*/
|
||||
int getObserverHandlerByName(const char* name);
|
||||
int getObserverHandlerByName(const std::string& name);
|
||||
private:
|
||||
// internal functions
|
||||
|
||||
// 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
|
||||
//
|
||||
|
@ -138,7 +138,7 @@ public:
|
|||
*/
|
||||
NotificationObserver(Object *target,
|
||||
SEL_CallFuncO selector,
|
||||
const char *name,
|
||||
const std::string& name,
|
||||
Object *sender);
|
||||
|
||||
/** NotificationObserver destructor function
|
||||
|
@ -168,7 +168,7 @@ public:
|
|||
* @js NA
|
||||
* @lua NA
|
||||
*/
|
||||
const char* getName() const;
|
||||
const std::string& getName() const;
|
||||
/**
|
||||
* @js NA
|
||||
* @lua NA
|
||||
|
|
|
@ -41,7 +41,7 @@ static Texture2D* getDefaultTexture()
|
|||
do
|
||||
{
|
||||
bool ret = false;
|
||||
const char* key = "/__firePngData";
|
||||
const std::string key = "/__firePngData";
|
||||
texture = Director::getInstance()->getTextureCache()->getTextureForKey(key);
|
||||
CC_BREAK_IF(texture != nullptr);
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ SpriteBatchNode* SpriteBatchNode::createWithTexture(Texture2D* tex, ssize_t capa
|
|||
* 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();
|
||||
batchNode->initWithFile(fileImage, capacity);
|
||||
|
@ -112,7 +112,7 @@ bool SpriteBatchNode::init()
|
|||
/*
|
||||
* 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);
|
||||
return initWithTexture(texture2D, capacity);
|
||||
|
|
|
@ -74,7 +74,7 @@ public:
|
|||
The capacity will be increased in 33% in runtime if it run out of space.
|
||||
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
|
||||
*/
|
||||
|
@ -95,7 +95,7 @@ public:
|
|||
* @js init
|
||||
* @lua init
|
||||
*/
|
||||
bool initWithFile(const char* fileImage, ssize_t capacity);
|
||||
bool initWithFile(const std::string& fileImage, ssize_t capacity);
|
||||
bool init();
|
||||
|
||||
/** returns the TextureAtlas object */
|
||||
|
|
|
@ -143,8 +143,8 @@ public:
|
|||
/** Creates the tiles */
|
||||
void setupTiles();
|
||||
|
||||
inline const char* getLayerName(){ return _layerName.c_str(); }
|
||||
inline void setLayerName(const char *layerName){ _layerName = layerName; }
|
||||
inline const std::string& getLayerName(){ return _layerName; }
|
||||
inline void setLayerName(const std::string& layerName){ _layerName = layerName; }
|
||||
|
||||
/** size of the layer in tiles */
|
||||
inline const Size& getLayerSize() const { return _layerSize; };
|
||||
|
|
|
@ -122,7 +122,7 @@ public:
|
|||
* @js 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 */
|
||||
TMXObjectGroup* getObjectGroup(const std::string& groupName) const;
|
||||
|
@ -130,7 +130,7 @@ public:
|
|||
* @js 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 */
|
||||
Value getProperty(const std::string& propertyName) const;
|
||||
|
|
|
@ -236,9 +236,9 @@ void TextFieldTTF::deleteBackward()
|
|||
setString(text);
|
||||
}
|
||||
|
||||
const char * TextFieldTTF::getContentText()
|
||||
const std::string& TextFieldTTF::getContentText()
|
||||
{
|
||||
return _inputText.c_str();
|
||||
return _inputText;
|
||||
}
|
||||
|
||||
void TextFieldTTF::draw()
|
||||
|
|
|
@ -182,7 +182,7 @@ protected:
|
|||
virtual bool canDetachWithIME() override;
|
||||
virtual void insertText(const char * text, int len) override;
|
||||
virtual void deleteBackward() override;
|
||||
virtual const char * getContentText() override;
|
||||
virtual const std::string& getContentText() override;
|
||||
private:
|
||||
class LengthStack;
|
||||
LengthStack * _lens;
|
||||
|
|
|
@ -110,7 +110,7 @@ void TextureAtlas::setQuads(V3F_C4B_T2F_Quad* quads)
|
|||
|
||||
// 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();
|
||||
if(textureAtlas && textureAtlas->initWithFile(file, capacity))
|
||||
|
@ -134,7 +134,7 @@ TextureAtlas * TextureAtlas::createWithTexture(Texture2D *texture, ssize_t capac
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
bool TextureAtlas::initWithFile(const char * file, ssize_t capacity)
|
||||
bool TextureAtlas::initWithFile(const std::string& file, ssize_t capacity)
|
||||
{
|
||||
// retained in property
|
||||
Texture2D *texture = Director::getInstance()->getTextureCache()->addImage(file);
|
||||
|
@ -145,7 +145,7 @@ bool TextureAtlas::initWithFile(const char * file, ssize_t capacity)
|
|||
}
|
||||
else
|
||||
{
|
||||
CCLOG("cocos2d: Could not open file: %s", file);
|
||||
CCLOG("cocos2d: Could not open file: %s", file.c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ public:
|
|||
/** creates a TextureAtlas with an filename and with an initial capacity for Quads.
|
||||
* 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
|
||||
* 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)
|
||||
*/
|
||||
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
|
||||
* with an initial capacity for Quads.
|
||||
|
|
|
@ -193,13 +193,13 @@ void TextureCache::loadImage()
|
|||
|
||||
if (generateImage)
|
||||
{
|
||||
const char *filename = asyncStruct->filename.c_str();
|
||||
const std::string& filename = asyncStruct->filename;
|
||||
// generate image
|
||||
image = new Image();
|
||||
if (image && !image->initWithImageFileThreadSafe(filename))
|
||||
{
|
||||
CC_SAFE_RELEASE(image);
|
||||
CCLOG("can not load %s", filename);
|
||||
CCLOG("can not load %s", filename.c_str());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -245,7 +245,7 @@ void TextureCache::addImageAsyncCallBack(float dt)
|
|||
|
||||
Object *target = asyncStruct->target;
|
||||
SEL_CallFuncO selector = asyncStruct->selector;
|
||||
const char* filename = asyncStruct->filename.c_str();
|
||||
const std::string& filename = asyncStruct->filename;
|
||||
|
||||
Texture2D *texture = nullptr;
|
||||
if (image)
|
||||
|
@ -326,7 +326,7 @@ Texture2D * TextureCache::addImage(const std::string &path)
|
|||
{
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
// cache the texture file name
|
||||
VolatileTextureMgr::addImageTexture(texture, fullpath.c_str());
|
||||
VolatileTextureMgr::addImageTexture(texture, fullpath);
|
||||
#endif
|
||||
// texture already retained, no need to re-retain it
|
||||
_textures.insert( std::make_pair(fullpath, texture) );
|
||||
|
@ -509,7 +509,7 @@ VolatileTexture::~VolatileTexture()
|
|||
CC_SAFE_RELEASE(_uiImage);
|
||||
}
|
||||
|
||||
void VolatileTextureMgr::addImageTexture(Texture2D *tt, const char* imageFileName)
|
||||
void VolatileTextureMgr::addImageTexture(Texture2D *tt, const std::string& imageFileName)
|
||||
{
|
||||
if (_isReloading)
|
||||
{
|
||||
|
|
|
@ -124,13 +124,13 @@ public:
|
|||
* If "key" is nil, then a new texture will be created each time.
|
||||
*/
|
||||
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.
|
||||
@since v0.99.5
|
||||
*/
|
||||
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.
|
||||
* Call this method if you receive the "Memory Warning"
|
||||
|
@ -250,7 +250,7 @@ protected:
|
|||
class VolatileTextureMgr
|
||||
{
|
||||
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 addDataTexture(Texture2D *tt, void* data, int dataLen, Texture2D::PixelFormat pixelFormat, const Size& contentSize);
|
||||
static void addImage(Texture2D *tt, Image *image);
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "ccTypes.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
const std::string STD_STRING_EMPTY("");
|
||||
|
||||
/**
|
||||
* Color3B
|
||||
|
|
|
@ -471,6 +471,8 @@ public:
|
|||
Acceleration(): x(0), y(0), z(0), timestamp(0) {}
|
||||
};
|
||||
|
||||
extern const std::string STD_STRING_EMPTY;
|
||||
|
||||
NS_CC_END
|
||||
|
||||
#endif //__CCTYPES_H__
|
||||
|
|
|
@ -83,7 +83,7 @@ public:
|
|||
{
|
||||
}
|
||||
|
||||
ValueMap dictionaryWithContentsOfFile(const char *fileName)
|
||||
ValueMap dictionaryWithContentsOfFile(const std::string& fileName)
|
||||
{
|
||||
_resultType = SAX_RESULT_DICT;
|
||||
SAXParser parser;
|
||||
|
@ -95,7 +95,7 @@ public:
|
|||
return _rootDict;
|
||||
}
|
||||
|
||||
ValueVector arrayWithContentsOfFile(const char* fileName)
|
||||
ValueVector arrayWithContentsOfFile(const std::string& fileName)
|
||||
{
|
||||
_resultType = SAX_RESULT_ARRAY;
|
||||
SAXParser parser;
|
||||
|
@ -555,10 +555,10 @@ Data FileUtils::getDataFromFile(const std::string& filename)
|
|||
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;
|
||||
CCASSERT(filename != nullptr && size != nullptr && mode != nullptr, "Invalid parameters.");
|
||||
CCASSERT(!filename.empty() && size != nullptr && mode != nullptr, "Invalid parameters.");
|
||||
*size = 0;
|
||||
do
|
||||
{
|
||||
|
@ -585,7 +585,7 @@ unsigned char* FileUtils::getFileData(const char* filename, const char* mode, ss
|
|||
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;
|
||||
unzFile file = nullptr;
|
||||
|
@ -593,13 +593,12 @@ unsigned char* FileUtils::getFileDataFromZip(const char* zipFilePath, const char
|
|||
|
||||
do
|
||||
{
|
||||
CC_BREAK_IF(!zipFilePath || !filename);
|
||||
CC_BREAK_IF(strlen(zipFilePath) == 0);
|
||||
CC_BREAK_IF(zipFilePath.empty());
|
||||
|
||||
file = unzOpen(zipFilePath);
|
||||
file = unzOpen(zipFilePath.c_str());
|
||||
CC_BREAK_IF(!file);
|
||||
|
||||
int ret = unzLocateFile(file, filename, 1);
|
||||
int ret = unzLocateFile(file, filename.c_str(), 1);
|
||||
CC_BREAK_IF(UNZ_OK != ret);
|
||||
|
||||
char filePathA[260];
|
||||
|
|
|
@ -96,7 +96,7 @@ public:
|
|||
* @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.
|
||||
*/
|
||||
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.
|
||||
|
@ -106,7 +106,7 @@ public:
|
|||
* @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.
|
||||
*/
|
||||
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.
|
||||
|
|
|
@ -111,7 +111,7 @@ public:
|
|||
@param path the absolute file path.
|
||||
@return true if loaded correctly.
|
||||
*/
|
||||
bool initWithImageFile(const char *path);
|
||||
bool initWithImageFile(const std::string& path);
|
||||
|
||||
/**
|
||||
@brief Load image from stream buffer.
|
||||
|
@ -246,7 +246,7 @@ private:
|
|||
@param imageType the type of image, currently only supporting two types.
|
||||
@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);
|
||||
bool isPng(const unsigned char * data, ssize_t dataLen);
|
||||
|
|
|
@ -396,10 +396,10 @@ Image::~Image()
|
|||
}
|
||||
}
|
||||
|
||||
bool Image::initWithImageFile(const char * strPath)
|
||||
bool Image::initWithImageFile(const std::string& path)
|
||||
{
|
||||
bool bRet = false;
|
||||
_filePath = FileUtils::getInstance()->fullPathForFilename(strPath);
|
||||
bool ret = false;
|
||||
_filePath = FileUtils::getInstance()->fullPathForFilename(path);
|
||||
|
||||
#ifdef EMSCRIPTEN
|
||||
// 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());
|
||||
|
||||
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;
|
||||
int nrPixels = iSurf->w * iSurf->h;
|
||||
|
@ -425,14 +425,14 @@ bool Image::initWithImageFile(const char * strPath)
|
|||
|
||||
if (!data.isNull())
|
||||
{
|
||||
bRet = initWithImageData(data.getBytes(), data.getSize());
|
||||
ret = initWithImageData(data.getBytes(), data.getSize());
|
||||
}
|
||||
#endif // EMSCRIPTEN
|
||||
|
||||
return bRet;
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool Image::initWithImageFileThreadSafe(const char *fullpath)
|
||||
bool Image::initWithImageFileThreadSafe(const std::string& fullpath)
|
||||
{
|
||||
bool ret = false;
|
||||
_filePath = fullpath;
|
||||
|
|
|
@ -247,11 +247,11 @@ Data FileUtilsAndroid::getDataFromFile(const std::string& filename)
|
|||
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;
|
||||
|
||||
if ((! filename) || (! mode) || 0 == strlen(filename))
|
||||
if ( filename.empty() || (! mode) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ public:
|
|||
bool init();
|
||||
|
||||
/** @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.
|
||||
|
|
|
@ -74,7 +74,7 @@ extern "C" {
|
|||
if (JniHelper::getJavaVM()->GetEnv((void**)&env, JNI_VERSION_1_4) != JNI_OK || ! env) {
|
||||
return 0;
|
||||
}
|
||||
const char * text = cocos2d::IMEDispatcher::sharedDispatcher()->getContentText();
|
||||
return env->NewStringUTF(text);
|
||||
const std::string& text = cocos2d::IMEDispatcher::sharedDispatcher()->getContentText();
|
||||
return env->NewStringUTF(text.c_str());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,20 +87,20 @@ static CGSize _calculateStringSize(NSString *str, id font, CGSize *constrainSize
|
|||
#define ALIGN_CENTER 3
|
||||
#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;
|
||||
do
|
||||
{
|
||||
CC_BREAK_IF(! pText || ! pInfo);
|
||||
CC_BREAK_IF(! text || ! info);
|
||||
|
||||
NSString * str = [NSString stringWithUTF8String:pText];
|
||||
NSString * fntName = [NSString stringWithUTF8String:pFontName];
|
||||
NSString * str = [NSString stringWithUTF8String:text];
|
||||
NSString * fntName = [NSString stringWithUTF8String:fontName];
|
||||
|
||||
CGSize dim, constrainSize;
|
||||
|
||||
constrainSize.width = pInfo->width;
|
||||
constrainSize.height = pInfo->height;
|
||||
constrainSize.width = info->width;
|
||||
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
|
||||
// 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];
|
||||
|
||||
// create the font
|
||||
id font = [UIFont fontWithName:fntName size:nSize];
|
||||
id font = [UIFont fontWithName:fntName size:size];
|
||||
|
||||
if (font)
|
||||
{
|
||||
|
@ -120,7 +120,7 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
|
|||
{
|
||||
if (!font)
|
||||
{
|
||||
font = [UIFont systemFontOfSize:nSize];
|
||||
font = [UIFont systemFontOfSize:size];
|
||||
}
|
||||
|
||||
if (font)
|
||||
|
@ -136,7 +136,7 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
|
|||
if (constrainSize.height > dim.height)
|
||||
{
|
||||
// vertical alignment
|
||||
unsigned int vAlignment = ((int)eAlign >> 4) & 0x0F;
|
||||
unsigned int vAlignment = ((int)align >> 4) & 0x0F;
|
||||
if (vAlignment == ALIGN_TOP)
|
||||
{
|
||||
startH = 0;
|
||||
|
@ -166,16 +166,16 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
|
|||
float shadowStrokePaddingX = 0.0f;
|
||||
float shadowStrokePaddingY = 0.0f;
|
||||
|
||||
if ( pInfo->hasStroke )
|
||||
if ( info->hasStroke )
|
||||
{
|
||||
shadowStrokePaddingX = ceilf(pInfo->strokeSize);
|
||||
shadowStrokePaddingY = ceilf(pInfo->strokeSize);
|
||||
shadowStrokePaddingX = ceilf(info->strokeSize);
|
||||
shadowStrokePaddingY = ceilf(info->strokeSize);
|
||||
}
|
||||
|
||||
if ( pInfo->hasShadow )
|
||||
if ( info->hasShadow )
|
||||
{
|
||||
shadowStrokePaddingX = std::max(shadowStrokePaddingX, (float)fabs(pInfo->shadowOffset.width));
|
||||
shadowStrokePaddingY = std::max(shadowStrokePaddingY, (float)fabs(pInfo->shadowOffset.height));
|
||||
shadowStrokePaddingX = std::max(shadowStrokePaddingX, (float)fabs(info->shadowOffset.width));
|
||||
shadowStrokePaddingY = std::max(shadowStrokePaddingY, (float)fabs(info->shadowOffset.height));
|
||||
}
|
||||
|
||||
// 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
|
||||
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
|
||||
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
|
||||
|
@ -212,30 +212,30 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
|
|||
UIGraphicsPushContext(context);
|
||||
|
||||
// measure text size with specified font and determine the rectangle to draw text in
|
||||
unsigned uHoriFlag = (int)eAlign & 0x0f;
|
||||
UITextAlignment align = (UITextAlignment)((2 == uHoriFlag) ? UITextAlignmentRight
|
||||
unsigned uHoriFlag = (int)align & 0x0f;
|
||||
UITextAlignment testAlign = (UITextAlignment)((2 == uHoriFlag) ? UITextAlignmentRight
|
||||
: (3 == uHoriFlag) ? UITextAlignmentCenter
|
||||
: UITextAlignmentLeft);
|
||||
|
||||
|
||||
// take care of stroke if needed
|
||||
if ( pInfo->hasStroke )
|
||||
if ( info->hasStroke )
|
||||
{
|
||||
CGContextSetTextDrawingMode(context, kCGTextFillStroke);
|
||||
CGContextSetRGBStrokeColor(context, pInfo->strokeColorR, pInfo->strokeColorG, pInfo->strokeColorB, 1);
|
||||
CGContextSetLineWidth(context, pInfo->strokeSize);
|
||||
CGContextSetRGBStrokeColor(context, info->strokeColorR, info->strokeColorG, info->strokeColorB, 1);
|
||||
CGContextSetLineWidth(context, info->strokeSize);
|
||||
}
|
||||
|
||||
// take care of shadow if needed
|
||||
if ( pInfo->hasShadow )
|
||||
if ( info->hasShadow )
|
||||
{
|
||||
CGSize offset;
|
||||
offset.height = pInfo->shadowOffset.height;
|
||||
offset.width = pInfo->shadowOffset.width;
|
||||
CGFloat shadowColorValues[] = {0, 0, 0, pInfo->shadowOpacity};
|
||||
offset.height = info->shadowOffset.height;
|
||||
offset.width = info->shadowOffset.width;
|
||||
CGFloat shadowColorValues[] = {0, 0, 0, info->shadowOpacity};
|
||||
CGColorRef shadowColor = CGColorCreate (colorSpace, shadowColorValues);
|
||||
|
||||
CGContextSetShadowWithColor(context, offset, pInfo->shadowBlur, shadowColor);
|
||||
CGContextSetShadowWithColor(context, offset, info->shadowBlur, shadowColor);
|
||||
|
||||
CGColorRelease (shadowColor);
|
||||
}
|
||||
|
@ -266,7 +266,7 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
|
|||
float textHeight = dim.height - shadowStrokePaddingY;
|
||||
|
||||
|
||||
if ( pInfo->shadowOffset.width < 0 )
|
||||
if ( info->shadowOffset.width < 0 )
|
||||
{
|
||||
textOriginX = shadowStrokePaddingX;
|
||||
}
|
||||
|
@ -275,7 +275,7 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
|
|||
textOriginX = 0.0;
|
||||
}
|
||||
|
||||
if (pInfo->shadowOffset.height > 0)
|
||||
if (info->shadowOffset.height > 0)
|
||||
{
|
||||
textOrigingY = startH;
|
||||
}
|
||||
|
@ -289,7 +289,7 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
|
|||
CGContextBeginTransparencyLayerWithRect(context, rect, nullptr);
|
||||
// actually draw the text in the context
|
||||
// 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);
|
||||
|
||||
|
@ -300,10 +300,10 @@ static bool _initWithString(const char * pText, cocos2d::Image::TextAlign eAlign
|
|||
CGContextRelease(context);
|
||||
|
||||
// output params
|
||||
pInfo->data = data;
|
||||
pInfo->isPremultipliedAlpha = true;
|
||||
pInfo->width = dim.width;
|
||||
pInfo->height = dim.height;
|
||||
info->data = data;
|
||||
info->isPremultipliedAlpha = true;
|
||||
info->width = dim.width;
|
||||
info->height = dim.height;
|
||||
bRet = true;
|
||||
|
||||
} while (0);
|
||||
|
@ -325,12 +325,12 @@ bool Image::initWithString(
|
|||
}
|
||||
|
||||
bool Image::initWithStringShadowStroke(
|
||||
const char * pText,
|
||||
int nWidth ,
|
||||
int nHeight ,
|
||||
TextAlign eAlignMask ,
|
||||
const char * pFontName ,
|
||||
int nSize ,
|
||||
const char * text,
|
||||
int width ,
|
||||
int height ,
|
||||
TextAlign alignMask ,
|
||||
const char * fontName ,
|
||||
int size ,
|
||||
float textTintR,
|
||||
float textTintG,
|
||||
float textTintB,
|
||||
|
@ -349,8 +349,8 @@ bool Image::initWithStringShadowStroke(
|
|||
|
||||
|
||||
tImageInfo info = {0};
|
||||
info.width = nWidth;
|
||||
info.height = nHeight;
|
||||
info.width = width;
|
||||
info.height = height;
|
||||
info.hasShadow = shadow;
|
||||
info.shadowOffset.width = shadowOffsetX;
|
||||
info.shadowOffset.height = shadowOffsetY;
|
||||
|
@ -366,7 +366,7 @@ bool Image::initWithStringShadowStroke(
|
|||
info.tintColorB = textTintB;
|
||||
|
||||
|
||||
if (! _initWithString(pText, eAlignMask, pFontName, nSize, &info))
|
||||
if (! _initWithString(text, alignMask, fontName, size, &info))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -380,7 +380,7 @@ bool Image::initWithStringShadowStroke(
|
|||
return true;
|
||||
}
|
||||
|
||||
bool Image::saveToFile(const std::string& filename, bool bIsToRGB)
|
||||
bool Image::saveToFile(const std::string& filename, bool isToRGB)
|
||||
{
|
||||
bool saveToPNG = false;
|
||||
bool needToCopyPixels = false;
|
||||
|
@ -392,7 +392,7 @@ bool Image::saveToFile(const std::string& filename, bool bIsToRGB)
|
|||
|
||||
int bitsPerComponent = 8;
|
||||
int bitsPerPixel = hasAlpha() ? 32 : 24;
|
||||
if ((! saveToPNG) || bIsToRGB)
|
||||
if ((! saveToPNG) || isToRGB)
|
||||
{
|
||||
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,
|
||||
// or want to save as jpg, remove the alpha channel.
|
||||
if ((saveToPNG && hasAlpha() && bIsToRGB)
|
||||
if ((saveToPNG && hasAlpha() && isToRGB)
|
||||
|| (! saveToPNG))
|
||||
{
|
||||
pixels = new unsigned char[myDataLength];
|
||||
|
@ -424,7 +424,7 @@ bool Image::saveToFile(const std::string& filename, bool bIsToRGB)
|
|||
|
||||
// make data provider with data.
|
||||
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
|
||||
if (saveToPNG && hasAlpha() && (! bIsToRGB))
|
||||
if (saveToPNG && hasAlpha() && (! isToRGB))
|
||||
{
|
||||
bitmapInfo |= kCGImageAlphaPremultipliedLast;
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ public:
|
|||
/*
|
||||
*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:
|
||||
|
||||
//void resize(int width, int height);
|
||||
|
|
|
@ -325,7 +325,7 @@ EGLView::~EGLView()
|
|||
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;
|
||||
|
||||
|
|
|
@ -122,7 +122,7 @@ __Array* __Array::createWithCapacity(int capacity)
|
|||
return array;
|
||||
}
|
||||
|
||||
__Array* __Array::createWithContentsOfFile(const char* fileName)
|
||||
__Array* __Array::createWithContentsOfFile(const std::string& fileName)
|
||||
{
|
||||
__Array* ret = __Array::createWithContentsOfFileThreadSafe(fileName);
|
||||
if (ret != nullptr)
|
||||
|
@ -132,7 +132,7 @@ __Array* __Array::createWithContentsOfFile(const char* fileName)
|
|||
return ret;
|
||||
}
|
||||
|
||||
__Array* __Array::createWithContentsOfFileThreadSafe(const char* fileName)
|
||||
__Array* __Array::createWithContentsOfFileThreadSafe(const std::string& fileName)
|
||||
{
|
||||
return FileUtils::getInstance()->createArrayWithContentsOfFile(fileName);
|
||||
}
|
||||
|
@ -465,7 +465,7 @@ __Array* __Array::createWithCapacity(ssize_t capacity)
|
|||
return array;
|
||||
}
|
||||
|
||||
__Array* __Array::createWithContentsOfFile(const char* fileName)
|
||||
__Array* __Array::createWithContentsOfFile(const std::string& fileName)
|
||||
{
|
||||
__Array* ret = __Array::createWithContentsOfFileThreadSafe(fileName);
|
||||
if (ret != nullptr)
|
||||
|
@ -475,7 +475,7 @@ __Array* __Array::createWithContentsOfFile(const char* fileName)
|
|||
return ret;
|
||||
}
|
||||
|
||||
__Array* __Array::createWithContentsOfFileThreadSafe(const char* fileName)
|
||||
__Array* __Array::createWithContentsOfFileThreadSafe(const std::string& fileName)
|
||||
{
|
||||
ValueVector arr = FileUtils::getInstance()->getValueVectorFromFile(fileName);
|
||||
|
||||
|
|
|
@ -261,7 +261,7 @@ public:
|
|||
@return The Array pointer generated from the file
|
||||
* @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
|
||||
|
@ -269,7 +269,7 @@ public:
|
|||
* @js NA
|
||||
* @lua NA
|
||||
*/
|
||||
static __Array* createWithContentsOfFileThreadSafe(const char* pFileName);
|
||||
static __Array* createWithContentsOfFileThreadSafe(const std::string& pFileName);
|
||||
/**
|
||||
* @js NA
|
||||
* @lua NA
|
||||
|
|
Loading…
Reference in New Issue