axmol/cocos2dx/label_nodes/CCFontAtlasFactory.cpp

90 lines
2.4 KiB
C++
Raw Normal View History

//
// CCFontAtlasFactory.cpp
// cocos2d_libs
//
// Created by Carlo Morgantini on 7/23/13.
//
//
#include "CCFontAtlasFactory.h"
#include "CCFontFNT.h"
// carloX this NEEDS to be changed
#include "CCLabelBMFont.h"
NS_CC_BEGIN
static const char *glyphASCII = "\"!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ ";
static const char *glyphNEHE = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ";
FontAtlas * FontAtlasFactory::createAtlasFromTTF(const char* tttFilePath, int fontSize, GlyphCollection glyphs, const char *customGlyphs)
{
FontDefinitionTTF *def = 0;
if ( (glyphs == GlyphCollection::NEHE) || (glyphs == GlyphCollection::ASCII) )
{
def = FontDefinitionTTF::create(tttFilePath, fontSize, getGlyphCollection(glyphs));
}
else
{
if( glyphs == GlyphCollection::DYNAMIC )
{
log("ERROR: GlyphCollection::DYNAMIC is not supported yet!");
return nullptr;
}
else
{
if ( !customGlyphs )
{
log("ERROR: GlyphCollection::CUSTOM used but no input glyphs provided!");
return nullptr;
}
def = FontDefinitionTTF::create(tttFilePath, fontSize, customGlyphs);
}
}
if(!def)
2013-07-25 08:21:51 +08:00
return nullptr;
// create the font atlas from the font definition
FontAtlas *tempAtlas = def->createFontAtlas();
// release the font definition, we don't need it anymore
def->release();
// return the atlas
return tempAtlas;
}
FontAtlas * FontAtlasFactory::createAtlasFromFNT(const char* fntFilePath)
{
2013-08-02 05:36:34 +08:00
Font *pFont = Font::createWithFNT(fntFilePath);
2013-08-02 05:36:34 +08:00
if(pFont)
return pFont->createFontAtlas();
else
2013-08-02 05:36:34 +08:00
return nullptr;
}
const char * FontAtlasFactory::getGlyphCollection(GlyphCollection glyphs)
{
switch (glyphs)
{
case GlyphCollection::NEHE:
return glyphNEHE;
break;
case GlyphCollection::ASCII:
return glyphASCII;
break;
default:
return 0;
break;
}
}
NS_CC_END