mirror of https://github.com/axmolengine/axmol.git
95 lines
1.7 KiB
C++
95 lines
1.7 KiB
C++
//
|
|
// CCFontAtlas.cpp
|
|
// cocos2d_libs
|
|
//
|
|
// Created by Carlo Morgantini on 7/18/13.
|
|
//
|
|
//
|
|
|
|
#include "cocos2d.h"
|
|
#include "CCFontAtlas.h"
|
|
#include "CCFont.h"
|
|
|
|
NS_CC_BEGIN
|
|
|
|
FontAtlas::FontAtlas(Font &theFont) : _font(theFont)
|
|
{
|
|
_font.retain();
|
|
}
|
|
|
|
FontAtlas::~FontAtlas()
|
|
{
|
|
_font.release();
|
|
relaseTextures();
|
|
}
|
|
|
|
void FontAtlas::relaseTextures()
|
|
{
|
|
for( auto &item: _atlasTextures)
|
|
{
|
|
if ( item.second )
|
|
item.second->release();
|
|
}
|
|
|
|
_atlasTextures.clear();
|
|
}
|
|
|
|
void FontAtlas::addLetterDefinition(const FontLetterDefinition &letterDefinition)
|
|
{
|
|
_fontLetterDefinitions[letterDefinition.letteCharUTF16] = letterDefinition;
|
|
}
|
|
|
|
bool FontAtlas::getLetterDefinitionForChar(unsigned short letteCharUTF16, FontLetterDefinition &outDefinition) const
|
|
{
|
|
auto outIterator = _fontLetterDefinitions.find(letteCharUTF16);
|
|
|
|
if (outIterator != _fontLetterDefinitions.end())
|
|
{
|
|
outDefinition = (*outIterator).second;
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
void FontAtlas::addTexture(Texture2D &texture, int slot)
|
|
{
|
|
texture.retain();
|
|
_atlasTextures[slot] = &texture;
|
|
}
|
|
|
|
Texture2D & FontAtlas::getTexture(int slot)
|
|
{
|
|
return *(_atlasTextures[slot]);
|
|
}
|
|
|
|
float FontAtlas::getCommonLineHeight() const
|
|
{
|
|
return _commonLineHeight;
|
|
}
|
|
|
|
void FontAtlas::setCommonLineHeight(float newHeight)
|
|
{
|
|
_commonLineHeight = newHeight;
|
|
}
|
|
|
|
unsigned short int * FontAtlas::getUTF16Text(const char *pText, int &outNumLetters) const
|
|
{
|
|
unsigned short* utf16String = cc_utf8_to_utf16(pText);
|
|
|
|
if(!utf16String)
|
|
return 0;
|
|
|
|
outNumLetters = cc_wcslen(utf16String);
|
|
return utf16String;
|
|
}
|
|
|
|
Font & FontAtlas::getFont() const
|
|
{
|
|
return _font;
|
|
}
|
|
|
|
|
|
NS_CC_END |