Merge branch 'develop' of https://github.com/cocos2d/cocos2d-x into test-rebase

This commit is contained in:
samuele3hu 2014-01-17 22:23:57 +08:00
commit 9d040ff09c
136 changed files with 1757 additions and 255 deletions

View File

@ -4,6 +4,7 @@ cocos2d-x-3.0final ?.? ?
[NEW] Console: added the 'textures', 'fileutils dump' and 'config' commands
[NEW] GLCache: glActiveTexture() is cached with GL::activeTexture(). All code MUST call the cached version in order to work correctly
[NEW] Label: Uses a struct of TTF configuration for Label::createWithTTF to reduce parameters and make this interface more easily to use.
[NEW] Label: Integrates LabelAtlas into new Label.
[NEW] Renderer: Added BatchCommand. This command is not "batchable" with other commands, but improves performance in about 10%
[FIX] CocoStudio: TestColliderDetector in ArmatureTest can't work.

View File

@ -1 +1 @@
88c095bbe123ab56df3f7870692c6631f4464c8d
e1e5a1169e92834330092c45165660c6cbd03609

View File

@ -1 +1 @@
b6abaf935c97f8f1dc7a7179e54850928015b442
1fa58d8cba77ef923c83d2860d5511d28dad6c27

View File

@ -47,6 +47,7 @@ CCEventListenerTouch.cpp \
CCEventMouse.cpp \
CCEventTouch.cpp \
CCFont.cpp \
CCFontCharMap.cpp \
CCFontAtlas.cpp \
CCFontAtlasCache.cpp \
CCFontAtlasFactory.cpp \

View File

@ -34,7 +34,7 @@ THE SOFTWARE.
#include "ccGLStateCache.h"
#include "CCDirector.h"
#include "TransformUtils.h"
#include "CCRenderer.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCQuadCommand.h"
// external

View File

@ -31,9 +31,10 @@
#include "CCShaderCache.h"
#include "CCDirector.h"
#include "CCDrawingPrimitives.h"
#include "CCRenderer.h"
#include "CCGroupCommand.h"
#include "CCCustomCommand.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCGroupCommand.h"
#include "renderer/CCCustomCommand.h"
NS_CC_BEGIN

View File

@ -31,13 +31,13 @@ THE SOFTWARE.
#include "CCDictionary.h"
#include "CCInteger.h"
#include "CCBool.h"
#include "cocos2d.h"
#include "platform/CCFileUtils.h"
using namespace std;
NS_CC_BEGIN
extern const char* cocos2dVersion();
Configuration* Configuration::s_sharedConfiguration = nullptr;

View File

@ -60,9 +60,10 @@ THE SOFTWARE.
#include "CCEventDispatcher.h"
#include "CCEventCustom.h"
#include "CCFontFreeType.h"
#include "CCRenderer.h"
#include "CCConsole.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCFrustum.h"
#include "CCConsole.h"
/**
Position of the FPS

View File

@ -26,9 +26,9 @@
#include "CCGL.h"
#include "CCEventType.h"
#include "CCConfiguration.h"
#include "CCCustomCommand.h"
#include "renderer/CCCustomCommand.h"
#include "renderer/CCRenderer.h"
#include "CCDirector.h"
#include "CCRenderer.h"
#include "CCEventListenerCustom.h"
#include "CCEventDispatcher.h"

View File

@ -28,6 +28,7 @@
#include "CCFontFNT.h"
#include "CCFontFreeType.h"
#include "CCFontCharMap.h"
#include "edtaa3func.h"
NS_CC_BEGIN
@ -116,6 +117,21 @@ Font* Font::createWithFNT(const std::string& fntFilePath)
return FontFNT::create(fntFilePath);
}
Font* Font::createWithCharMap(const std::string& plistFile)
{
return FontCharMap::create(plistFile);
}
Font* Font::createWithCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap)
{
return FontCharMap::create(texture,itemWidth,itemHeight,startCharMap);
}
Font* Font::createWithCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap)
{
return FontCharMap::create(charMapFile,itemWidth,itemHeight,startCharMap);
}
unsigned char * Font::makeDistanceMap( unsigned char *img, unsigned int width, unsigned int height)
{
unsigned int pixelAmount = (width + 2 * DistanceMapSpread) * (height + 2 * DistanceMapSpread);

View File

@ -28,7 +28,6 @@
#include <string>
#include "cocos2d.h"
#include "CCLabel.h"
NS_CC_BEGIN
@ -45,6 +44,10 @@ public:
// create the font
static Font* createWithTTF(const std::string& fntName, int fontSize, GlyphCollection glyphs, const char *customGlyphs);
static Font* createWithFNT(const std::string& fntFilePath);
static Font * createWithCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap);
static Font * createWithCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap);
static Font * createWithCharMap(const std::string& plistFile);
static unsigned char * makeDistanceMap(unsigned char *img, unsigned int width, unsigned int height);
void setDistanceFieldEnabled(bool distanceFieldEnabled);

View File

@ -22,10 +22,12 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
#include "cocos2d.h"
#include "CCFontAtlas.h"
#include "CCFont.h"
#include "CCFontFreeType.h"
#include "ccUTF8.h"
#include "CCDirector.h"
#define PAGE_WIDTH 1024
#define PAGE_HEIGHT 1024
@ -128,8 +130,7 @@ bool FontAtlas::prepareLetterDefinitions(unsigned short *utf16String)
Rect tempRect;
FontLetterDefinition tempDef;
tempDef.offsetX = 0;
FontLetterDefinition tempDef;
tempDef.anchorX = 0.0f;
tempDef.anchorY = 1.0f;
@ -141,7 +142,8 @@ bool FontAtlas::prepareLetterDefinitions(unsigned short *utf16String)
tempDef.width = 0;
tempDef.height = 0;
tempDef.U = 0;
tempDef.V = 0;
tempDef.V = 0;
tempDef.offsetX = 0;
tempDef.offsetY = 0;
tempDef.textureID = 0;
}
@ -150,7 +152,8 @@ bool FontAtlas::prepareLetterDefinitions(unsigned short *utf16String)
tempDef.validDefinition = true;
tempDef.letteCharUTF16 = utf16String[i];
tempDef.width = tempRect.size.width + _letterPadding;
tempDef.height = _currentPageLineHeight - 1;
tempDef.height = _currentPageLineHeight - 1;
tempDef.offsetX = tempRect.origin.x;
tempDef.offsetY = tempRect.origin.y;
tempDef.commonLineHeight = _currentPageLineHeight;

View File

@ -26,11 +26,14 @@
#define _CCFontAtlas_h_
#include <unordered_map>
#include "CCPlatformMacros.h"
#include "CCObject.h"
NS_CC_BEGIN
//fwd
class Font;
class Texture2D;
struct FontLetterDefinition
{

View File

@ -23,6 +23,8 @@
THE SOFTWARE.
****************************************************************************/
#include <sstream>
#include "CCFontAtlasCache.h"
#include "CCFontAtlasFactory.h"
@ -69,6 +71,65 @@ FontAtlas * FontAtlasCache::getFontAtlasFNT(const std::string& fontFileName)
return tempAtlas;
}
FontAtlas * FontAtlasCache::getFontAtlasCharMap(const std::string& plistFile)
{
std::string atlasName = generateFontName(plistFile, 0, GlyphCollection::CUSTOM,false);
FontAtlas *tempAtlas = _atlasMap[atlasName];
if ( !tempAtlas )
{
tempAtlas = FontAtlasFactory::createAtlasFromCharMap(plistFile);
if (tempAtlas)
_atlasMap[atlasName] = tempAtlas;
}
else
{
tempAtlas->retain();
}
return tempAtlas;
}
FontAtlas * FontAtlasCache::getFontAtlasCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap)
{
char tmp[30];
sprintf(tmp,"name:%u_%d_%d_%d",texture->getName(),itemWidth,itemHeight,startCharMap);
std::string atlasName = generateFontName(tmp, 0, GlyphCollection::CUSTOM,false);
FontAtlas *tempAtlas = _atlasMap[atlasName];
if ( !tempAtlas )
{
tempAtlas = FontAtlasFactory::createAtlasFromCharMap(texture,itemWidth,itemHeight,startCharMap);
if (tempAtlas)
_atlasMap[atlasName] = tempAtlas;
}
else
{
tempAtlas->retain();
}
return tempAtlas;
}
FontAtlas * FontAtlasCache::getFontAtlasCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap)
{
std::string atlasName = generateFontName(charMapFile, 0, GlyphCollection::CUSTOM,false);
FontAtlas *tempAtlas = _atlasMap[atlasName];
if ( !tempAtlas )
{
tempAtlas = FontAtlasFactory::createAtlasFromCharMap(charMapFile,itemWidth,itemHeight,startCharMap);
if (tempAtlas)
_atlasMap[atlasName] = tempAtlas;
}
else
{
tempAtlas->retain();
}
return tempAtlas;
}
std::string FontAtlasCache::generateFontName(const std::string& fontFileName, int size, GlyphCollection theGlyphs, bool useDistanceField)
{
std::string tempName(fontFileName);

View File

@ -29,23 +29,24 @@
#include <iostream>
#include <unordered_map>
#include "cocos2d.h"
#include "CCFontAtlas.h"
#include "CCLabel.h"
NS_CC_BEGIN
class CC_DLL FontAtlasCache
{
{
public:
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 FontAtlas * getFontAtlasCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap);
static FontAtlas * getFontAtlasCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap);
static FontAtlas * getFontAtlasCharMap(const std::string& plistFile);
static bool releaseFontAtlas(FontAtlas *atlas);
private:
private:
static std::string generateFontName(const std::string& fontFileName, int size, GlyphCollection theGlyphs, bool useDistanceField);
static std::unordered_map<std::string, FontAtlas *> _atlasMap;
};

View File

@ -60,4 +60,46 @@ FontAtlas * FontAtlasFactory::createAtlasFromFNT(const std::string& fntFilePath)
}
}
FontAtlas * FontAtlasFactory::createAtlasFromCharMap(const std::string& plistFile)
{
Font *font = Font::createWithCharMap(plistFile);
if(font)
{
return font->createFontAtlas();
}
else
{
return nullptr;
}
}
FontAtlas * FontAtlasFactory::createAtlasFromCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap)
{
Font *font = Font::createWithCharMap(texture,itemWidth,itemHeight,startCharMap);
if(font)
{
return font->createFontAtlas();
}
else
{
return nullptr;
}
}
FontAtlas * FontAtlasFactory::createAtlasFromCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap)
{
Font *font = Font::createWithCharMap(charMapFile,itemWidth,itemHeight,startCharMap);
if(font)
{
return font->createFontAtlas();
}
else
{
return nullptr;
}
}
NS_CC_END

View File

@ -26,8 +26,8 @@
#ifndef _CCFontAtlasFactory_h_
#define _CCFontAtlasFactory_h_
#include "cocos2d.h"
#include "CCFontAtlas.h"
#include "CCLabel.h"
NS_CC_BEGIN
@ -39,6 +39,10 @@ public:
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);
static FontAtlas * createAtlasFromCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap);
static FontAtlas * createAtlasFromCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap);
static FontAtlas * createAtlasFromCharMap(const std::string& plistFile);
private:
};

171
cocos/2d/CCFontCharMap.cpp Normal file
View File

@ -0,0 +1,171 @@
/****************************************************************************
Copyright (c) 2013 Zynga Inc.
Copyright (c) 2013-2014 Chukong Technologies Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
#include "CCFontCharMap.h"
#include "CCFontAtlas.h"
NS_CC_BEGIN
FontCharMap * FontCharMap::create(const std::string& plistFile)
{
std::string pathStr = FileUtils::getInstance()->fullPathForFilename(plistFile);
std::string relPathStr = pathStr.substr(0, pathStr.find_last_of("/"))+"/";
ValueMap dict = FileUtils::getInstance()->getValueMapFromFile(pathStr.c_str());
CCASSERT(dict["version"].asInt() == 1, "Unsupported version. Upgrade cocos2d version");
std::string textureFilename = relPathStr + dict["textureFilename"].asString();
unsigned int width = dict["itemWidth"].asInt() / CC_CONTENT_SCALE_FACTOR();
unsigned int height = dict["itemHeight"].asInt() / CC_CONTENT_SCALE_FACTOR();
unsigned int startChar = dict["firstChar"].asInt();
Texture2D *tempTexture = Director::getInstance()->getTextureCache()->addImage(textureFilename);
if (!tempTexture)
{
return nullptr;
}
FontCharMap *tempFont = new FontCharMap(tempTexture,width,height,startChar);
if (!tempFont)
{
return nullptr;
}
tempFont->autorelease();
return tempFont;
}
FontCharMap* FontCharMap::create(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap)
{
Texture2D *tempTexture = Director::getInstance()->getTextureCache()->addImage(charMapFile);
if (!tempTexture)
{
return nullptr;
}
FontCharMap *tempFont = new FontCharMap(tempTexture,itemWidth,itemHeight,startCharMap);
if (!tempFont)
{
return nullptr;
}
tempFont->autorelease();
return tempFont;
}
FontCharMap* FontCharMap::create(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap)
{
FontCharMap *tempFont = new FontCharMap(texture,itemWidth,itemHeight,startCharMap);
if (!tempFont)
{
return nullptr;
}
tempFont->autorelease();
return tempFont;
}
FontCharMap::~FontCharMap()
{
}
Size * FontCharMap::getAdvancesForTextUTF16(unsigned short *text, int &outNumLetters) const
{
if (!text)
return 0;
outNumLetters = cc_wcslen(text);
if (!outNumLetters)
return 0;
Size *sizes = new Size[outNumLetters];
if (!sizes)
return 0;
int advance = _itemWidth * CC_CONTENT_SCALE_FACTOR();
for (int c = 0; c < outNumLetters; ++c)
{
sizes[c].width = advance;
}
return sizes;
}
Rect FontCharMap::getRectForChar(unsigned short theChar) const
{
return _charRect;
}
FontAtlas * FontCharMap::createFontAtlas()
{
FontAtlas *tempAtlas = new FontAtlas(*this);
if (!tempAtlas)
return nullptr;
Size s = _texture->getContentSize();
int itemsPerColumn = (int)(s.height / _itemHeight);
int itemsPerRow = (int)(s.width / _itemWidth);
tempAtlas->setCommonLineHeight(_itemHeight);
FontLetterDefinition tempDefinition;
tempDefinition.textureID = 0;
tempDefinition.anchorX = 0.5f;
tempDefinition.anchorY = 0.5f;
tempDefinition.offsetX = 0.0f;
tempDefinition.offsetY = 0.0f;
tempDefinition.validDefinition = true;
tempDefinition.width = _itemWidth;
tempDefinition.height = _itemHeight;
int charId = _mapStartChar;
float itemWidthInPixels = _itemWidth * CC_CONTENT_SCALE_FACTOR();
float itemHeightInPixels = _itemHeight * CC_CONTENT_SCALE_FACTOR();
for (int row = 0; row < itemsPerColumn; ++row)
{
for (int col = 0; col < itemsPerRow; ++col)
{
tempDefinition.letteCharUTF16 = charId;
tempDefinition.U = _itemWidth * col;
tempDefinition.V = _itemHeight * row;
tempAtlas->addLetterDefinition(tempDefinition);
charId++;
}
}
tempAtlas->addTexture(*_texture,0);
return tempAtlas;
}
NS_CC_END

70
cocos/2d/CCFontCharMap.h Normal file
View File

@ -0,0 +1,70 @@
/****************************************************************************
Copyright (c) 2013 Zynga Inc.
Copyright (c) 2013-2014 Chukong Technologies Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
#ifndef _CCFontCharMap_h_
#define _CCFontCharMap_h_
#include "cocos2d.h"
#include "CCFont.h"
NS_CC_BEGIN
class FontCharMap : public Font
{
public:
static FontCharMap * create(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap);
static FontCharMap * create(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap);
static FontCharMap * create(const std::string& plistFile);
virtual Size* getAdvancesForTextUTF16(unsigned short *text, int &outNumLetters) const override;
virtual Rect getRectForChar(unsigned short theChar) const override;
virtual FontAtlas *createFontAtlas() override;
protected:
FontCharMap(Texture2D* texture,int itemWidth, int itemHeight, int startCharMap)
:_texture(texture)
,_mapStartChar(startCharMap)
,_itemWidth(itemWidth)
,_itemHeight(itemHeight)
,_charRect(0,0,itemWidth,itemHeight)
{}
/**
* @js NA
* @lua NA
*/
virtual ~FontCharMap();
private:
Texture2D* _texture;
int _mapStartChar;
int _itemWidth;
int _itemHeight;
Rect _charRect;
};
NS_CC_END
#endif /* defined(_CCFontCharMap_h_) */

View File

@ -23,8 +23,9 @@
THE SOFTWARE.
****************************************************************************/
#include "cocos2d.h"
#include "CCFontDefinition.h"
#include "CCDirector.h"
NS_CC_BEGIN
@ -221,7 +222,6 @@ FontAtlas * FontDefinitionTTF::createFontAtlas()
if ( item.second.validDefinition )
{
FontLetterDefinition tempDefinition = item.second;
tempDefinition.offsetX = 0;
tempDefinition.anchorX = 0.0f;
tempDefinition.anchorY = 1.0f;
retAtlas->addLetterDefinition(tempDefinition);

View File

@ -25,6 +25,10 @@
#include "CCFontFNT.h"
#include "CCFontAtlas.h"
#include "CCLabelBMFont.h"
#include "CCDirector.h"
#include "CCTextureCache.h"
#include "ccUTF8.h"
NS_CC_BEGIN

View File

@ -26,11 +26,12 @@
#ifndef _CCFontFNT_h_
#define _CCFontFNT_h_
#include "cocos2d.h"
#include "CCFont.h"
NS_CC_BEGIN
class CCBMFontConfiguration;
class FontFNT : public Font
{

View File

@ -31,6 +31,7 @@ THE SOFTWARE.
#include "CCTextImage.h"
#include "CCFont.h"
#include "CCFontDefinition.h"
#include "platform/CCFileUtils.h"
NS_CC_BEGIN
@ -175,7 +176,7 @@ bool FontFreeType::getBBOXFotChar(unsigned short theChar, Rect &outRect) const
return false;
// store result in the passed rectangle
outRect.origin.x = 0;
outRect.origin.x = _fontRef->glyph->metrics.horiBearingX >> 6;
outRect.origin.y = - (_fontRef->glyph->metrics.horiBearingY >> 6);
outRect.size.width = (_fontRef->glyph->metrics.width >> 6);
outRect.size.height = (_fontRef->glyph->metrics.height >> 6);
@ -267,7 +268,7 @@ Size * FontFreeType::getAdvancesForTextUTF16(unsigned short *text, int &outNumLe
int advance = 0;
int kerning = 0;
advance = getAdvanceForChar(text[c]) - getBearingXForChar(text[c]);
advance = getAdvanceForChar(text[c]);
if (c < (outNumLetters-1))
kerning = getHorizontalKerningForChars(text[c], text[c+1]);
@ -294,7 +295,7 @@ int FontFreeType::getAdvanceForChar(unsigned short theChar) const
return 0;
// get to the advance for this glyph
return (static_cast<int>(_fontRef->glyph->advance.x >> 6));
return (static_cast<int>(_fontRef->glyph->metrics.horiAdvance >> 6));
}
int FontFreeType::getBearingXForChar(unsigned short theChar) const

View File

@ -27,6 +27,12 @@
#include "CCFontDefinition.h"
#include "CCFontAtlasCache.h"
#include "CCLabelTextFormatter.h"
#include "CCSprite.h"
#include "CCShaderCache.h"
#include "ccUTF8.h"
#include "CCSpriteFrame.h"
#include "CCDirector.h"
#include "renderer/CCRenderer.h"
#define DISTANCEFIELD_ATLAS_FONTSIZE 50
@ -92,6 +98,93 @@ Label* Label::createWithBMFont(const std::string& bmfontFilePath, const std::str
}
}
Label* Label::createWithCharMap(const std::string& plistFile)
{
Label *ret = new Label();
if (!ret)
return nullptr;
if (ret->setCharMap(plistFile))
{
ret->autorelease();
return ret;
}
else
{
delete ret;
return nullptr;
}
}
Label* Label::createWithCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap)
{
Label *ret = new Label();
if (!ret)
return nullptr;
if (ret->setCharMap(texture,itemWidth,itemHeight,startCharMap))
{
ret->autorelease();
return ret;
}
else
{
delete ret;
return nullptr;
}
}
Label* Label::createWithCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap)
{
Label *ret = new Label();
if (!ret)
return nullptr;
if (ret->setCharMap(charMapFile,itemWidth,itemHeight,startCharMap))
{
ret->autorelease();
return ret;
}
else
{
delete ret;
return nullptr;
}
}
bool Label::setCharMap(const std::string& plistFile)
{
FontAtlas *newAtlas = FontAtlasCache::getFontAtlasCharMap(plistFile);
if (!newAtlas)
return false;
return initWithFontAtlas(newAtlas);
}
bool Label::setCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap)
{
FontAtlas *newAtlas = FontAtlasCache::getFontAtlasCharMap(texture,itemWidth,itemHeight,startCharMap);
if (!newAtlas)
return false;
return initWithFontAtlas(newAtlas);
}
bool Label::setCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap)
{
FontAtlas *newAtlas = FontAtlasCache::getFontAtlasCharMap(charMapFile,itemWidth,itemHeight,startCharMap);
if (!newAtlas)
return false;
return initWithFontAtlas(newAtlas);
}
Label::Label(FontAtlas *atlas, TextHAlignment alignment, bool useDistanceField,bool useA8Shader)
: _reusedLetter(nullptr)
, _commonLineHeight(0.0f)

View File

@ -62,12 +62,12 @@ typedef struct _ttfConfig
const char *customGlyphs;
bool distanceFieldEnabled;
_ttfConfig(const char* filePath,int fontSize = 36, const GlyphCollection& glyphs = GlyphCollection::NEHE,
const char *customGlyphs = nullptr,bool useDistanceField = false)
_ttfConfig(const char* filePath,int size = 36, const GlyphCollection& glyphCollection = GlyphCollection::NEHE,
const char *customGlyphCollection = nullptr,bool useDistanceField = false)
:fontFilePath(filePath)
,fontSize(fontSize)
,glyphs(glyphs)
,customGlyphs(customGlyphs)
,fontSize(size)
,glyphs(glyphCollection)
,customGlyphs(customGlyphCollection)
,distanceFieldEnabled(useDistanceField)
{}
}TTFConfig;
@ -82,10 +82,18 @@ public:
static Label* createWithBMFont(const std::string& bmfontFilePath, const std::string& text,const TextHAlignment& alignment = TextHAlignment::CENTER, int lineWidth = 0);
static Label * createWithCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap);
static Label * createWithCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap);
static Label * createWithCharMap(const std::string& plistFile);
bool setTTFConfig(const TTFConfig& ttfConfig);
bool setBMFontFilePath(const std::string& bmfontFilePath);
bool setCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap);
bool setCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap);
bool setCharMap(const std::string& plistFile);
bool setString(const std::string& text, const TextHAlignment& alignment = TextHAlignment::CENTER, float lineWidth = -1, bool lineBreakWithoutSpaces = false);
//only support for TTF
@ -172,29 +180,29 @@ private:
virtual void updateColor() override;
//! used for optimization
Sprite *_reusedLetter;
std::vector<LetterInfo> _lettersInfo;
Sprite *_reusedLetter;
std::vector<LetterInfo> _lettersInfo;
float _commonLineHeight;
bool _lineBreakWithoutSpaces;
float _width;
TextHAlignment _alignment;
unsigned short int * _currentUTF16String;
unsigned short int * _originalUTF16String;
Size * _advances;
FontAtlas * _fontAtlas;
bool _isOpacityModifyRGB;
float _commonLineHeight;
bool _lineBreakWithoutSpaces;
float _width;
TextHAlignment _alignment;
unsigned short int * _currentUTF16String;
unsigned short int * _originalUTF16String;
Size * _advances;
FontAtlas * _fontAtlas;
bool _isOpacityModifyRGB;
bool _useDistanceField;
bool _useA8Shader;
int _fontSize;
bool _useDistanceField;
bool _useA8Shader;
int _fontSize;
LabelEffect _currLabelEffect;
Color3B _effectColor;
LabelEffect _currLabelEffect;
Color3B _effectColor;
GLuint _uniformEffectColor;
GLuint _uniformEffectColor;
CustomCommand _customCommand;
CustomCommand _customCommand;
};

View File

@ -25,11 +25,16 @@
#ifndef _CCLabelTextFormatProtocol_h_
#define _CCLabelTextFormatProtocol_h_
#include "CCFontAtlas.h"
#include <vector>
#include "CCFontAtlas.h"
#include "CCGeometry.h"
#include "ccTypes.h"
NS_CC_BEGIN
class Sprite;
struct LetterInfo
{
@ -46,13 +51,13 @@ public:
virtual ~LabelTextFormatProtocol() {}
virtual bool recordLetterInfo(const cocos2d::Point& point,unsigned short int theChar, int spriteIndex) = 0;
virtual bool recordLetterInfo(const Point& point,unsigned short int theChar, int spriteIndex) = 0;
virtual bool recordPlaceholderInfo(int spriteIndex) = 0;
virtual std::vector<LetterInfo> *getLettersInfo() = 0;
virtual float getLetterPosXLeft(int index) const = 0;
virtual float getLetterPosXRight(int index) const = 0;
// sprite related stuff
virtual cocos2d::Sprite *getLetter(int ID) = 0;
virtual Sprite *getLetter(int ID) = 0;
// font related stuff
virtual int getCommonLineHeight() const = 0;
@ -60,7 +65,7 @@ public:
virtual int getXOffsetForChar(unsigned short c) const = 0;
virtual int getYOffsetForChar(unsigned short c) const = 0;
virtual int getAdvanceForChar(unsigned short c, int hintPositionInString) const = 0;
virtual cocos2d::Rect getRectForChar(unsigned short c) const = 0;
virtual Rect getRectForChar(unsigned short c) const = 0;
// string related stuff
virtual int getStringNumLines() const = 0;
@ -68,7 +73,7 @@ public:
virtual unsigned short getCharAtStringPosition(int position) const = 0;
virtual unsigned short * getUTF8String() const = 0;
virtual void assignNewUTF8String(unsigned short *newString) = 0;
virtual TextHAlignment getTextAlignment() const = 0;
virtual TextHAlignment getTextAlignment() const = 0;
// label related stuff
virtual float getMaxLineWidth() const = 0;

View File

@ -25,9 +25,9 @@
#include <vector>
#include "cocos2d.h"
#include "ccUTF8.h"
#include "CCLabelTextFormatter.h"
#include "CCDirector.h"
using namespace std;
@ -353,7 +353,7 @@ bool LabelTextFormatter::createStringSprites(LabelTextFormatProtocol *theLabel)
Point fontPos = Point((float)nextFontPositionX + charXOffset + charRect.size.width * 0.5f + kerningAmount,
(float)nextFontPositionY + yOffset - charRect.size.height * 0.5f);
(float)nextFontPositionY + yOffset - charRect.size.height * 0.5f);
if( theLabel->recordLetterInfo(CC_POINT_PIXELS_TO_POINTS(fontPos),c,i) == false)
{

View File

@ -44,8 +44,8 @@ THE SOFTWARE.
#include "CCEventListenerAcceleration.h"
#include "platform/CCDevice.h"
#include "CCScene.h"
#include "CCCustomCommand.h"
#include "CCRenderer.h"
#include "renderer/CCCustomCommand.h"
#include "renderer/CCRenderer.h"
NS_CC_BEGIN

View File

@ -31,8 +31,8 @@ THE SOFTWARE.
#include "ccMacros.h"
#include "CCDirector.h"
#include "CCVertex.h"
#include "CCCustomCommand.h"
#include "CCRenderer.h"
#include "renderer/CCCustomCommand.h"
#include "renderer/CCRenderer.h"
NS_CC_BEGIN

View File

@ -25,9 +25,9 @@
#include "CCNodeGrid.h"
#include "CCGrid.h"
#include "CCGroupCommand.h"
#include "CCRenderer.h"
#include "CCCustomCommand.h"
#include "renderer/CCGroupCommand.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCCustomCommand.h"
NS_CC_BEGIN

View File

@ -44,7 +44,7 @@
#include "kazmath/GL/matrix.h"
#include "CCProfiling.h"
#include "renderer/CCQuadCommand.h"
#include "CCRenderer.h"
#include "renderer/CCRenderer.h"
NS_CC_BEGIN

View File

@ -38,9 +38,9 @@ THE SOFTWARE.
#include "TransformUtils.h"
#include "CCEventType.h"
#include "CCConfiguration.h"
#include "CCRenderer.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCQuadCommand.h"
#include "CCCustomCommand.h"
#include "renderer/CCCustomCommand.h"
// extern
#include "kazmath/GL/matrix.h"

View File

@ -33,8 +33,8 @@ THE SOFTWARE.
#include "CCDirector.h"
#include "TransformUtils.h"
#include "CCDrawingPrimitives.h"
#include "CCRenderer.h"
#include "CCCustomCommand.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCCustomCommand.h"
// extern
#include "kazmath/GL/matrix.h"

View File

@ -38,9 +38,9 @@ THE SOFTWARE.
#include "CCEventType.h"
#include "CCGrid.h"
#include "CCRenderer.h"
#include "CCGroupCommand.h"
#include "CCCustomCommand.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCGroupCommand.h"
#include "renderer/CCCustomCommand.h"
// extern
#include "kazmath/GL/matrix.h"

View File

@ -45,9 +45,9 @@ THE SOFTWARE.
#include "CCAffineTransform.h"
#include "TransformUtils.h"
#include "CCProfiling.h"
#include "CCRenderer.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCQuadCommand.h"
#include "CCFrustum.h"
#include "renderer/CCFrustum.h"
// external
#include "kazmath/GL/matrix.h"

View File

@ -43,7 +43,7 @@ THE SOFTWARE.
#include "CCProfiling.h"
#include "CCLayer.h"
#include "CCScene.h"
#include "CCRenderer.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCQuadCommand.h"
// external
#include "kazmath/GL/matrix.h"

View File

@ -28,10 +28,10 @@
#include <vector>
#include <string>
#include "cocos2d.h"
#include "CCTextImage.h"
#include "CCFontFreeType.h"
#include "CCFont.h"
#include "ccUTF8.h"
NS_CC_BEGIN
@ -295,7 +295,7 @@ bool TextImage::createPageDefinitions(unsigned short int *inText, int imageWidth
return true;
}
int TextImage::getNumGlyphsFittingInSize(std::map<unsigned short int, GlyphDef> &glyphDefs, unsigned short int *strUTF8, Font *font, Size *constrainSize, int &outNewSize)
int TextImage::getNumGlyphsFittingInSize(std::unordered_map<unsigned short int, GlyphDef> &glyphDefs, unsigned short int *strUTF8, Font *font, Size *constrainSize, int &outNewSize)
{
if (!strUTF8)
return 0;

View File

@ -23,15 +23,19 @@
THE SOFTWARE.
****************************************************************************/
#ifndef _TextImage_h_
#define _TextImage_h_
#ifndef _CCTextImage_h_
#define _CCTextImage_h_
//#include "CCFont.h"
#include <vector>
#include <unordered_map>
#include "CCPlatformMacros.h"
#include "CCGeometry.h"
NS_CC_BEGIN
class Font;
class Texture2D;
/** @brief GlyphDef defines one single glyph (character) in a text image
*
@ -43,27 +47,33 @@ class CC_DLL GlyphDef
{
public:
GlyphDef() : _validGlyph(false) { /*do nothing*/ }
GlyphDef(unsigned short int letterUTF8, const Rect &rect) { _gliphRect = rect; _uTF16Letter = letterUTF8; }
GlyphDef() : _validGlyph(false) {}
GlyphDef(unsigned short int letterUTF8, const Rect &rect) {
_gliphRect = rect;
_uTF16Letter = letterUTF8;
}
void setUTF16Letter(unsigned short int letterUTF8) { _uTF16Letter = letterUTF8; }
void setRect(const Rect & theRect) { _gliphRect = theRect; }
unsigned short int getUTF8Letter() { return _uTF16Letter; }
const Rect & getRect() const { return _gliphRect; }
void setPadding(float padding) { _padding = padding; }
float getPadding() { return _padding; }
void setCommonHeight(float commonHeight) { _commonHeight = commonHeight; }
float getCommonHeight() { return _commonHeight; }
void setValid(bool isValid) { _validGlyph = isValid; }
bool isValid() { return _validGlyph; }
void setUTF16Letter(unsigned short int letterUTF8) { _uTF16Letter = letterUTF8; }
void setRect(const Rect & theRect) { _gliphRect = theRect; }
unsigned short int getUTF8Letter() const { return _uTF16Letter; }
const Rect& getRect() const { return _gliphRect; }
void setPadding(float padding) { _padding = padding; }
float getPadding() const { return _padding; }
void setCommonHeight(float commonHeight) { _commonHeight = commonHeight; }
float getCommonHeight() const { return _commonHeight; }
void setValid(bool isValid) { _validGlyph = isValid; }
bool isValid() const { return _validGlyph; }
private:
Rect _gliphRect;
unsigned short int _uTF16Letter;
float _padding;
float _commonHeight;
bool _validGlyph;
protected:
Rect _gliphRect;
unsigned short int _uTF16Letter;
float _padding;
float _commonHeight;
bool _validGlyph;
};
@ -78,23 +88,21 @@ public:
TextLineDef(float x, float y, float width, float height);
float getX() const { return _x; }
float getY() const { return _y; }
float getWidth() const { return _width; }
float getHeight() const { return _height; }
float getX() const { return _x; }
float getY() const { return _y; }
float getWidth() const { return _width; }
float getHeight() const { return _height; }
void addGlyph(GlyphDef theGlyph) { _glyphs.push_back(theGlyph); }
int getNumGlyph() const { return static_cast<int>(_glyphs.size()); }
const GlyphDef & getGlyphAt(int index) const { return _glyphs[index]; }
private:
float _x;
float _y;
float _width;
float _height;
std::vector<GlyphDef> _glyphs;
void addGlyph(GlyphDef theGlyph) { _glyphs.push_back(theGlyph); }
int getNumGlyph() const { return static_cast<int>(_glyphs.size()); }
const GlyphDef & getGlyphAt(int index) const { return _glyphs[index]; }
protected:
float _x;
float _y;
float _width;
float _height;
std::vector<GlyphDef> _glyphs;
};
/** @brief TextPageDef defines one text image page (a TextImage can have/use more than one page)
@ -115,28 +123,26 @@ public:
*/
~TextPageDef();
void addLine(TextLineDef *theLine) { _lines.push_back(theLine); }
int getNumLines() const { return static_cast<int>(_lines.size()); }
TextLineDef * getLineAt(int index) const { return _lines[index]; }
int getWidth() const { return _width; }
int getHeight() const { return _height; }
int getPageNumber() const { return _pageNum; }
void setPageData(unsigned char *data) { _pageData = data; }
const unsigned char * getPageData() const { return _pageData; }
Texture2D *getPageTexture();
void addLine(TextLineDef *theLine) { _lines.push_back(theLine); }
int getNumLines() const { return static_cast<int>(_lines.size()); }
TextLineDef * getLineAt(int index) const { return _lines[index]; }
int getWidth() const { return _width; }
int getHeight() const { return _height; }
int getPageNumber() const { return _pageNum; }
void setPageData(unsigned char *data) { _pageData = data; }
const unsigned char * getPageData() const { return _pageData; }
Texture2D *getPageTexture();
void preparePageTexture(bool releaseRAWData = true);
private:
protected:
bool generatePageTexture(bool releasePageData = false);
int _pageNum;
int _width;
int _height;
unsigned char * _pageData;
Texture2D * _pageTexture;
std::vector<TextLineDef *> _lines;
int _pageNum;
int _width;
int _height;
unsigned char * _pageData;
Texture2D* _pageTexture;
std::vector<TextLineDef*> _lines;
};
/** @brief CCTextFontPages collection of pages (TextPageDef)
@ -156,13 +162,12 @@ public:
*/
~TextFontPagesDef();
void addPage(TextPageDef *newPage) { _pages.push_back(newPage); }
int getNumPages() const { return static_cast<int>(_pages.size()); }
TextPageDef* getPageAt(int index) const { return _pages[index]; }
void addPage(TextPageDef *newPage) { _pages.push_back(newPage); }
int getNumPages() const { return static_cast<int>(_pages.size()); }
TextPageDef* getPageAt(int index) const { return _pages[index]; }
private:
std::vector<TextPageDef *> _pages;
protected:
std::vector<TextPageDef*> _pages;
};
@ -184,28 +189,27 @@ public:
bool initWithString(const char *text, int width, int height, Font* font, bool releaseRAWData = true);
TextFontPagesDef * getPages() const { return _fontPages; }
Font * getFont() const { return _font; }
private:
TextFontPagesDef* getPages() const { return _fontPages; }
Font* getFont() const { return _font; }
protected:
bool createImageDataFromPages(TextFontPagesDef *thePages, bool releaseRAWData = true);
bool addGlyphsToLine(TextLineDef *line, const char *lineText, bool textIsUTF16 = false);
bool generateTextGlyphs(const char * text);
int getNumGlyphsFittingInSize(std::map<unsigned short int, GlyphDef> &glyphDefs, unsigned short int *strUTF8, Font *font, Size *constrainSize, int &outNewSize);
int getNumGlyphsFittingInSize(std::unordered_map<unsigned short int, GlyphDef> &glyphDefs, unsigned short int *strUTF8, Font *font, Size *constrainSize, int &outNewSize);
bool createPageDefinitions(unsigned short int *inText, int imageWidth, int imageHeight, int lineHeight);
unsigned char * preparePageGlyphData(TextPageDef *thePage);
// glyph rendering
unsigned char * renderGlyphData(TextPageDef *thePage);
std::map<unsigned short int, GlyphDef> _textGlyphs;
TextFontPagesDef * _fontPages;
Font * _font;
std::unordered_map<unsigned short int, GlyphDef> _textGlyphs;
TextFontPagesDef* _fontPages;
Font* _font;
};
NS_CC_END
#endif
#endif // _CCTextImage_h_

View File

@ -624,11 +624,11 @@ void TextureAtlas::drawNumberOfQuads(ssize_t numberOfQuads, ssize_t start)
{
glBindBuffer(GL_ARRAY_BUFFER, _buffersVBO[0]);
// option 1: subdata
//glBufferSubData(GL_ARRAY_BUFFER, sizeof(_quads[0])*start, sizeof(_quads[0]) * n , &_quads[start] );
// glBufferSubData(GL_ARRAY_BUFFER, sizeof(_quads[0])*start, sizeof(_quads[0]) * n , &_quads[start] );
// option 2: data
// glBufferData(GL_ARRAY_BUFFER, sizeof(quads_[0]) * (n-start), &quads_[start], GL_DYNAMIC_DRAW);
// glBufferData(GL_ARRAY_BUFFER, sizeof(quads_[0]) * (n-start), &quads_[start], GL_DYNAMIC_DRAW);
// option 3: orphaning + glMapBuffer
glBufferData(GL_ARRAY_BUFFER, sizeof(_quads[0]) * (numberOfQuads-start), nullptr, GL_DYNAMIC_DRAW);
void *buf = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);

View File

@ -71,6 +71,7 @@ set(COCOS2D_SRC
CCFontDefinition.cpp
CCFontFNT.cpp
CCFontFreeType.cpp
CCFontCharMap.cpp
CCLabel.cpp
CCLabelAtlas.cpp
CCLabelBMFont.cpp

View File

@ -73,7 +73,7 @@ void ccArrayEnsureExtraCapacity(ccArray *arr, ssize_t extra)
{
while (arr->max < arr->num + extra)
{
CCLOG("cocos2d: ccCArray: resizing ccArray capacity from [%d] to [%d].",
CCLOGINFO("cocos2d: ccCArray: resizing ccArray capacity from [%d] to [%d].",
static_cast<int>(arr->max),
static_cast<int>(arr->max*2));

View File

@ -38,7 +38,7 @@ varying vec2 v_texCoord; \n\
\n\
void main() \n\
{ \n\
gl_Position = CC_PMatrix * a_position; \n\
gl_Position = CC_PMatrix * a_position; \n\
v_fragmentColor = a_color; \n\
v_texCoord = a_texCoord; \n\
} \n\

View File

@ -279,7 +279,7 @@ cc_utf8_get_char (const char * p)
unsigned short* cc_utf8_to_utf16(const char* str_old, int length/* = -1 */, int* rUtf16Size/* = nullptr */)
{
unsigned short len = cc_utf8_strlen(str_old, length);
long len = cc_utf8_strlen(str_old, length);
if (rUtf16Size != nullptr) {
*rUtf16Size = len;
}

View File

@ -25,7 +25,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
#include "cocos2d.h"
#include "CCPlatformMacros.h"
NS_CC_BEGIN

View File

@ -248,6 +248,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\win32-specific\gles\prebuilt\*.*" "$(Ou
<ClCompile Include="CCFontAtlas.cpp" />
<ClCompile Include="CCFontAtlasCache.cpp" />
<ClCompile Include="CCFontAtlasFactory.cpp" />
<ClCompile Include="CCFontCharMap.cpp" />
<ClCompile Include="CCFontDefinition.cpp" />
<ClCompile Include="CCFontFNT.cpp" />
<ClCompile Include="CCFontFreeType.cpp" />
@ -429,6 +430,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\win32-specific\gles\prebuilt\*.*" "$(Ou
<ClInclude Include="CCFontAtlas.h" />
<ClInclude Include="CCFontAtlasCache.h" />
<ClInclude Include="CCFontAtlasFactory.h" />
<ClInclude Include="CCFontCharMap.h" />
<ClInclude Include="CCFontDefinition.h" />
<ClInclude Include="CCFontFNT.h" />
<ClInclude Include="CCFontFreeType.h" />

View File

@ -601,6 +601,9 @@
<ClCompile Include="renderer\CCBatchCommand.cpp">
<Filter>renderer</Filter>
</ClCompile>
<ClCompile Include="CCFontCharMap.cpp">
<Filter>label_nodes</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\physics\CCPhysicsBody.h">
@ -1213,5 +1216,8 @@
<ClInclude Include="renderer\CCBatchCommand.h">
<Filter>renderer</Filter>
</ClInclude>
<ClInclude Include="CCFontCharMap.h">
<Filter>label_nodes</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -459,7 +459,7 @@ bool Image::initWithString(
{
bool bRet = false;
do
{
{
CC_BREAK_IF(! pText);
BitmapDC &dc = sharedBitmapDC();

View File

@ -22,7 +22,7 @@
THE SOFTWARE.
****************************************************************************/
#include "CCCustomCommand.h"
#include "renderer/CCCustomCommand.h"
NS_CC_BEGIN

View File

@ -22,7 +22,7 @@
THE SOFTWARE.
****************************************************************************/
#include "CCFrustum.h"
#include "renderer/CCFrustum.h"
#include "CCConsole.h"
#include <stdlib.h>

View File

@ -23,8 +23,8 @@
****************************************************************************/
#include "CCGroupCommand.h"
#include "CCRenderer.h"
#include "renderer/CCGroupCommand.h"
#include "renderer/CCRenderer.h"
#include "CCDirector.h"
NS_CC_BEGIN

View File

@ -40,11 +40,11 @@ public:
enum class Type
{
UNKNOWN_COMMAND,
QUAD_COMMAND,
CUSTOM_COMMAND,
BATCH_COMMAND,
GROUP_COMMAND,
UNKNOWN_COMMAND,
};
virtual int64_t generateID() = 0;

View File

@ -22,13 +22,13 @@
THE SOFTWARE.
****************************************************************************/
#include "CCRenderer.h"
#include "CCShaderCache.h"
#include "ccGLStateCache.h"
#include "CCCustomCommand.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCQuadCommand.h"
#include "renderer/CCBatchCommand.h"
#include "CCGroupCommand.h"
#include "renderer/CCCustomCommand.h"
#include "renderer/CCGroupCommand.h"
#include "CCShaderCache.h"
#include "ccGLStateCache.h"
#include "CCConfiguration.h"
#include "CCDirector.h"
#include "CCEventDispatcher.h"
@ -177,12 +177,15 @@ void Renderer::mapBuffers()
void Renderer::addCommand(RenderCommand* command)
{
command->generateID();
_renderGroups[_commandGroupStack.top()].push_back(command);
int renderQueue =_commandGroupStack.top();
addCommand(command, renderQueue);
}
void Renderer::addCommand(RenderCommand* command, int renderQueue)
{
CCASSERT(renderQueue >=0, "Invalid render queue");
CCASSERT(command->getType() != RenderCommand::Type::UNKNOWN_COMMAND, "Invalid Command Type");
command->generateID();
_renderGroups[renderQueue].push_back(command);
}
@ -290,6 +293,7 @@ void Renderer::render()
}
else
{
CCASSERT(true, "Invalid command");
flush();
}
}
@ -330,6 +334,10 @@ void Renderer::render()
void Renderer::convertToWorldCoordiantes(V3F_C4B_T2F_Quad* quads, ssize_t quantity, const kmMat4& modelView)
{
// kmMat4 matrixP, mvp;
// kmGLGetMatrix(KM_GL_PROJECTION, &matrixP);
// kmMat4Multiply(&mvp, &matrixP, &modelView);
for(ssize_t i=0; i<quantity; ++i) {
V3F_C4B_T2F_Quad *q = &quads[i];
@ -366,6 +374,13 @@ void Renderer::drawBatchedQuads()
//Set VBO data
glBindBuffer(GL_ARRAY_BUFFER, _buffersVBO[0]);
// option 1: subdata
// glBufferSubData(GL_ARRAY_BUFFER, sizeof(_quads[0])*start, sizeof(_quads[0]) * n , &_quads[start] );
// option 2: data
// glBufferData(GL_ARRAY_BUFFER, sizeof(quads_[0]) * (n-start), &quads_[start], GL_DYNAMIC_DRAW);
// option 3: orphaning + glMapBuffer
glBufferData(GL_ARRAY_BUFFER, sizeof(_quads[0]) * (_numQuads), nullptr, GL_DYNAMIC_DRAW);
void *buf = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);
memcpy(buf, _quads, sizeof(_quads[0])* (_numQuads));
@ -454,4 +469,4 @@ void Renderer::flush()
_lastMaterialID = 0;
}
NS_CC_END
NS_CC_END

View File

@ -1,7 +1,11 @@
#ifndef __CCB_CCBANIMATION_MANAGER_H__
#define __CCB_CCBANIMATION_MANAGER_H__
#include "cocos2d.h"
#include "CCMap.h"
#include "CCActionInterval.h"
#include "CCActionInstant.h"
#include "CCActionEase.h"
#include "extensions/ExtensionMacros.h"
#include "CCBSequence.h"
#include "CCBSequenceProperty.h"

View File

@ -1,7 +1,9 @@
#ifndef __CCB_KEYFRAME_H__
#define __CCB_KEYFRAME_H__
#include "cocos2d.h"
#include "CCObject.h"
#include "CCValue.h"
namespace cocosbuilder {

View File

@ -1,7 +1,6 @@
#ifndef _CCB_CCBMEMBERVARIABLEASSIGNER_H_
#define _CCB_CCBMEMBERVARIABLEASSIGNER_H_
#include "cocos2d.h"
namespace cocosbuilder {

View File

@ -1,7 +1,13 @@
#include "CCBReader.h"
#include <ctype.h>
#include <algorithm>
#include "CCDirector.h"
#include "platform/CCFileUtils.h"
#include "CCScene.h"
#include "CCTextureCache.h"
#include "CCSpriteFrameCache.h"
#include "CCBReader.h"
#include "CCNodeLoader.h"
#include "CCNodeLoaderLibrary.h"
#include "CCNodeLoaderListener.h"
@ -11,7 +17,7 @@
#include "CCBSequenceProperty.h"
#include "CCBKeyframe.h"
#include <ctype.h>
using namespace std;
using namespace cocos2d;

View File

@ -1,9 +1,12 @@
#ifndef _CCB_CCBREADER_H_
#define _CCB_CCBREADER_H_
#include "cocos2d.h"
#include <string>
#include <vector>
#include "CCNode.h"
#include "CCData.h"
#include "CCMap.h"
#include "CCBSequence.h"
#include "extensions/GUI/CCControlExtension/CCControl.h"

View File

@ -1,7 +1,6 @@
#ifndef _CCB_CCBSELECTORRESOLVER_H_
#define _CCB_CCBSELECTORRESOLVER_H_
#include "cocos2d.h"
#include "extensions//GUI/CCControlExtension/CCInvocation.h"

View File

@ -2,7 +2,8 @@
#define __CCB_CCSEQUENCE_H__
#include <string>
#include "cocos2d.h"
#include "CCObject.h"
#include "CCBSequenceProperty.h"
namespace cocosbuilder {

View File

@ -1,7 +1,8 @@
#ifndef __CCB_SEQUENCE_PROPERTY_H__
#define __CCB_SEQUENCE_PROPERTY_H__
#include "cocos2d.h"
#include "CCObject.h"
#include "CCVector.h"
#include "CCBKeyframe.h"
namespace cocosbuilder {

View File

@ -1,6 +1,9 @@
#ifndef _CCB_CCLABELBMFONTLOADER_H_
#define _CCB_CCLABELBMFONTLOADER_H_
#include "CCObject.h"
#include "CCLabelBMFont.h"
#include "CCNodeLoader.h"
namespace cocosbuilder {

View File

@ -1,6 +1,9 @@
#ifndef _CCB_CCLABELTTFLOADER_H_
#define _CCB_CCLABELTTFLOADER_H_
#include "CCObject.h"
#include "CCLabelTTF.h"
#include "CCNodeLoader.h"
namespace cocosbuilder {

View File

@ -1,6 +1,9 @@
#ifndef _CCB_CCMENUITEMLOADER_H_
#define _CCB_CCMENUITEMLOADER_H_
#include "CCObject.h"
#include "CCMenuItem.h"
#include "CCLayerLoader.h"
namespace cocosbuilder {

View File

@ -2,6 +2,8 @@
#define _CCB_CCMENULOADER_H_
#include "CCLayerLoader.h"
#include "CCObject.h"
#include "CCMenu.h"
namespace cocosbuilder {

View File

@ -1,7 +1,6 @@
#ifndef __CCB_CCNODE_RELATIVEPOSITIONING_H__
#define __CCB_CCNODE_RELATIVEPOSITIONING_H__
#include "cocos2d.h"
#include "CCBReader.h"
namespace cocosbuilder {

View File

@ -1,9 +1,12 @@
#include "cocos2d.h"
#include "CCNodeLoader.h"
#include "CCBSelectorResolver.h"
#include "CCBMemberVariableAssigner.h"
#include "CCBAnimationManager.h"
#include "CCNode+CCBRelativePositioning.h"
using namespace std;
using namespace cocos2d;
using namespace cocos2d::extension;

View File

@ -2,7 +2,6 @@
#define _CCB_CCNODELOADER_H_
#include "extensions/GUI/CCControlExtension/CCInvocation.h"
#include "cocos2d.h"
#include "CCBReader.h"
#include "extensions/GUI/CCControlExtension/CCControl.h"

View File

@ -1,7 +1,6 @@
#ifndef _CCB_CCNODELOADERLIBRARY_H_
#define _CCB_CCNODELOADERLIBRARY_H_
#include "cocos2d.h"
#include "CCBReader.h"
namespace cocosbuilder {

View File

@ -1,7 +1,6 @@
#ifndef _CCB_CCNODELOADERLISTENER_H_
#define _CCB_CCNODELOADERLISTENER_H_
#include "cocos2d.h"
namespace cocosbuilder {

View File

@ -1,6 +1,9 @@
#ifndef _CCB_CCPARTICLESYSTEMQUADLOADER_H_
#define _CCB_CCPARTICLESYSTEMQUADLOADER_H_
#include "CCObject.h"
#include "CCParticleSystemQuad.h"
#include "CCNodeLoader.h"
namespace cocosbuilder {

View File

@ -25,7 +25,6 @@ THE SOFTWARE.
#ifndef __ActionEaseEx_H__
#define __ActionEaseEx_H__
#include "cocos2d.h"
#include "cocostudio/CocoStudio.h"
namespace cocostudio {

View File

@ -25,7 +25,8 @@ THE SOFTWARE.
#ifndef __ActionFRAME_H__
#define __ActionFRAME_H__
#include "cocos2d.h"
#include "CCGeometry.h"
#include "CCActionInterval.h"
namespace cocostudio {

View File

@ -25,7 +25,7 @@ THE SOFTWARE.
#ifndef __ActionFrameEasing_H__
#define __ActionFrameEasing_H__
#include "cocos2d.h"
#include "CCObject.h"
namespace cocostudio {

View File

@ -25,7 +25,6 @@ THE SOFTWARE.
#ifndef __ActionMANAGER_H__
#define __ActionMANAGER_H__
#include "cocos2d.h"
#include "cocostudio/CCActionObject.h"
#include "cocostudio/DictionaryHelper.h"

View File

@ -25,7 +25,6 @@ THE SOFTWARE.
#ifndef __ActionNODE_H__
#define __ActionNODE_H__
#include "cocos2d.h"
#include "cocostudio/CCActionFrame.h"
#include "cocostudio/DictionaryHelper.h"

View File

@ -25,6 +25,10 @@ THE SOFTWARE.
#include "cocostudio/CCActionObject.h"
#include "cocostudio/DictionaryHelper.h"
#include "CCDirector.h"
#include "CCScheduler.h"
#include "CCActionInstant.h"
using namespace cocos2d;
namespace cocostudio {

View File

@ -25,7 +25,6 @@ THE SOFTWARE.
#ifndef __ActionObject_H__
#define __ActionObject_H__
#include "cocos2d.h"
#include "CCActionNode.h"
#include "cocostudio/DictionaryHelper.h"

View File

@ -28,9 +28,12 @@ THE SOFTWARE.
#include "cocostudio/CCDataReaderHelper.h"
#include "cocostudio/CCDatas.h"
#include "cocostudio/CCSkin.h"
#include "renderer/CCQuadCommand.h"
#include "CCRenderer.h"
#include "CCGroupCommand.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCGroupCommand.h"
#include "CCShaderCache.h"
#include "CCDrawingPrimitives.h"
#if ENABLE_PHYSICS_BOX2D_DETECT
#include "Box2D/Box2D.h"
@ -570,7 +573,7 @@ void CCArmature::drawContour()
}
DrawPrimitives::drawPoly( points, (unsigned int)length, true );
delete points;
delete []points;
}
}
}

View File

@ -22,6 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
#include "CCSpriteFrameCache.h"
#include "cocostudio/CCArmatureDataManager.h"
#include "cocostudio/CCTransformHelp.h"

View File

@ -26,8 +26,6 @@ THE SOFTWARE.
#define __CCARMATUREDEFINE_H__
#include "cocos2d.h"
#define VERSION_COMBINED 0.30f
#define VERSION_CHANGE_ROTATION_RANGE 1.0f
#define VERSION_COLOR_READING 1.1f

View File

@ -26,8 +26,11 @@ THE SOFTWARE.
#include "cocostudio/CCArmatureDefine.h"
#include "cocostudio/CCArmature.h"
#include "cocostudio/CCSkin.h"
#include "CCRenderer.h"
#include "CCGroupCommand.h"
#include "renderer/CCRenderer.h"
#include "renderer/CCGroupCommand.h"
#include "CCShaderCache.h"
#include "CCDirector.h"
using namespace cocos2d;

View File

@ -25,6 +25,7 @@ THE SOFTWARE.
#ifndef __CCBATCHNODE_H__
#define __CCBATCHNODE_H__
#include "CCNode.h"
#include "cocostudio/CCArmatureDefine.h"
namespace cocos2d {

View File

@ -25,7 +25,6 @@ THE SOFTWARE.
#ifndef __CC_EXTENTIONS_CCCOMBASE_H__
#define __CC_EXTENTIONS_CCCOMBASE_H__
#include "cocos2d.h"
#include "ObjectFactory.h"
#include "DictionaryHelper.h"
#include <string>

View File

@ -22,7 +22,12 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
#include "platform/CCFileUtils.h"
#include "CCDirector.h"
#include "CCScheduler.h"
#include "tinyxml2.h"
#include "cocostudio/CCDataReaderHelper.h"
#include "cocostudio/CCArmatureDataManager.h"
#include "cocostudio/CCTransformHelp.h"
@ -288,7 +293,7 @@ void DataReaderHelper::addDataFromFile(const std::string& filePath)
std::string str = &filePathStr[startPos];
// Read content from file
std::string fullPath = CCFileUtils::getInstance()->fullPathForFilename(filePath);
std::string fullPath = FileUtils::getInstance()->fullPathForFilename(filePath);
std::string contentStr = FileUtils::getInstance()->getStringFromFile(fullPath);
DataInfo dataInfo;
@ -384,7 +389,7 @@ void DataReaderHelper::addDataFromFileAsync(const std::string& imagePath, const
size_t startPos = filePathStr.find_last_of(".");
std::string str = &filePathStr[startPos];
std::string fullPath = CCFileUtils::getInstance()->fullPathForFilename(filePath);
std::string fullPath = FileUtils::getInstance()->fullPathForFilename(filePath);
// XXX fileContent is being leaked
data->fileContent = FileUtils::getInstance()->getStringFromFile(fullPath);
@ -461,7 +466,7 @@ void DataReaderHelper::addDataAsyncCallBack(float dt)
if (0 == _asyncRefCount)
{
_asyncRefTotalCount = 0;
CCDirector::getInstance()->getScheduler()->unscheduleSelector(schedule_selector(DataReaderHelper::addDataAsyncCallBack), this);
Director::getInstance()->getScheduler()->unscheduleSelector(schedule_selector(DataReaderHelper::addDataAsyncCallBack), this);
}
}
}

View File

@ -35,6 +35,7 @@ THE SOFTWARE.
#include <list>
#include <mutex>
#include <thread>
#include <condition_variable>
namespace tinyxml2
{

View File

@ -25,6 +25,12 @@ THE SOFTWARE.
#ifndef __CCARMATURE_DATAS_H__
#define __CCARMATURE_DATAS_H__
#include "CCObject.h"
#include "ccTypes.h"
#include "CCVector.h"
#include "CCMap.h"
#include "CCAffineTransform.h"
#include "CCNode.h"
#include "cocostudio/CCArmatureDefine.h"
#include "cocostudio/CCTweenFunction.h"

View File

@ -30,6 +30,8 @@ THE SOFTWARE.
#include "cocostudio/CCArmatureDataManager.h"
#include "cocostudio/CCTransformHelp.h"
#include "CCParticleSystemQuad.h"
using namespace cocos2d;
namespace cocostudio {

View File

@ -28,6 +28,8 @@ THE SOFTWARE.
#include "cocostudio/CCUtilMath.h"
#include "cocostudio/CCSkin.h"
#include "CCParticleSystemQuad.h"
using namespace cocos2d;
namespace cocostudio {

View File

@ -23,6 +23,11 @@ THE SOFTWARE.
****************************************************************************/
#include "cocostudio/CCInputDelegate.h"
#include "CCDirector.h"
#include "platform/CCDevice.h"
#include "CCEventListenerTouch.h"
#include "CCEventListenerAcceleration.h"
#include "CCEventListenerKeyboard.h"
using namespace cocos2d;

View File

@ -25,7 +25,12 @@ THE SOFTWARE.
#ifndef __CC_EXTENTIONS_CCINPUTDELEGATE_H__
#define __CC_EXTENTIONS_CCINPUTDELEGATE_H__
#include "cocos2d.h"
#include "CCPlatformMacros.h"
#include "CCTouch.h"
#include "CCEvent.h"
#include "ccTypes.h"
#include "CCEventKeyboard.h"
#include "CCEventListener.h"
namespace cocostudio {

View File

@ -25,7 +25,6 @@ THE SOFTWARE.
#ifndef __CCSSCENEREADER_H__
#define __CCSSCENEREADER_H__
#include "cocos2d.h"
#include "cocostudio/DictionaryHelper.h"

View File

@ -22,11 +22,17 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
#include "CCSpriteFrame.h"
#include "CCSpriteFrameCache.h"
#include "CCDirector.h"
#include "renderer/CCRenderer.h"
#include "cocostudio/CCSkin.h"
#include "cocostudio/CCTransformHelp.h"
#include "cocostudio/CCSpriteFrameCacheHelper.h"
#include "cocostudio/CCArmature.h"
using namespace cocos2d;
namespace cocostudio {

View File

@ -25,9 +25,11 @@ THE SOFTWARE.
#ifndef __CCSKIN_H__
#define __CCSKIN_H__
#include "CCSprite.h"
#include "renderer/CCQuadCommand.h"
#include "cocostudio/CCArmatureDefine.h"
#include "cocostudio/CCBone.h"
#include "renderer/CCQuadCommand.h"
namespace cocostudio {

View File

@ -24,6 +24,8 @@ THE SOFTWARE.
#include "cocostudio/CCSpriteFrameCacheHelper.h"
#include "CCSpriteFrameCache.h"
using namespace cocos2d;
@ -49,7 +51,7 @@ void SpriteFrameCacheHelper::purge()
void SpriteFrameCacheHelper::addSpriteFrameFromFile(const std::string& plistPath, const std::string& imagePath)
{
CCSpriteFrameCache::getInstance()->addSpriteFramesWithFile(plistPath, imagePath);
SpriteFrameCache::getInstance()->addSpriteFramesWithFile(plistPath, imagePath);
}
SpriteFrameCacheHelper::SpriteFrameCacheHelper()

View File

@ -24,8 +24,10 @@ THE SOFTWARE.
#ifndef __CCSPRITEFRAMECACHEHELPER_H__
#define __CCSPRITEFRAMECACHEHELPER_H__
#include "CCPlatformMacros.h"
#include "cocostudio/CCArmatureDefine.h"
#include <stack>
#include <string>
namespace cocostudio {

View File

@ -25,6 +25,7 @@ THE SOFTWARE.
#ifndef __CCUTILMATH_H__
#define __CCUTILMATH_H__
#include "CCSprite.h"
#include "cocostudio/CCArmatureDefine.h"
#include <math.h>

View File

@ -22,6 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
#include "CCPlatformMacros.h"
#include "cocostudio/DictionaryHelper.h"
namespace cocostudio {

View File

@ -25,7 +25,6 @@ THE SOFTWARE.
#ifndef __DICTIONARYHELPER_H__
#define __DICTIONARYHELPER_H__
#include "cocos2d.h"
#include "json/document.h"
#define DICTOOL DictionaryHelper::getInstance()

View File

@ -35,7 +35,11 @@
#define SPINE_CCSKELETON_H_
#include <spine/spine.h>
#include "cocos2d.h"
#include "CCNode.h"
#include "CCProtocols.h"
#include "CCTextureAtlas.h"
#include "renderer/CCCustomCommand.h"
namespace spine {

View File

@ -36,7 +36,6 @@
#include <spine/spine.h>
#include <spine/CCSkeleton.h>
#include "cocos2d.h"
namespace spine {

Some files were not shown because too many files have changed in this diff Show More