CCFontAtlas:
代码:
struct FontLetterDefinition //字体字母定义
{
unsigned short letteCharUTF16;//utf-16编码
float U;
float V;
float width;//宽
float height;//高
float offsetX;//水平偏移量
float offsetY;//竖直偏移量
int textureID;//纹理ID
bool validDefinition;//是否是有效定义
int xAdvance;
int clipBottom;
};
// 字体图集
class CC_DLL FontAtlas : public Ref
{
public:
static const int CacheTextureWidth;//缓存纹理宽
static const int CacheTextureHeight;//缓存纹理高
static const char* CMD_PURGE_FONTATLAS;
static const char* CMD_RESET_FONTATLAS;
/**
* @js ctor
*/
FontAtlas(Font &theFont);
/**
* @js NA
* @lua NA
*/
virtual ~FontAtlas();
// 添加字母定义
void addLetterDefinition(const FontLetterDefinition &letterDefinition);
// 得到字母定义
bool getLetterDefinitionForChar(char16_t letteCharUTF16, FontLetterDefinition &outDefinition);
// 准备字母定义
bool prepareLetterDefinitions(const std::u16string& utf16String);
// 得到纹理
inline const std::unordered_map<ssize_t, Texture2D*>& getTextures() const{ return _atlasTextures;}
// 添加纹理
void addTexture(Texture2D *texture, int slot);
float getCommonLineHeight() const;
void setCommonLineHeight(float newHeight);
Texture2D* getTexture(int slot);
const Font* getFont() const;
/** listen the event that renderer was recreated on Android/WP8
It only has effect on Android and WP8.
*/
// 在安卓和WP8中再次渲染
void listenRendererRecreated(EventCustom *event);
/** Removes textures atlas.
It will purge the textures atlas and if multiple texture exist in the FontAtlas.
*/
// 清除纹理图集
void purgeTexturesAtlas();
/** sets font texture parameters:
- GL_TEXTURE_MIN_FILTER = GL_LINEAR
- GL_TEXTURE_MAG_FILTER = GL_LINEAR
*/
// 设置字体纹理属性
void setAntiAliasTexParameters();
/** sets font texture parameters:
- GL_TEXTURE_MIN_FILTER = GL_NEAREST
- GL_TEXTURE_MAG_FILTER = GL_NEAREST
*/
// 设置字体纹理属性
void setAliasTexParameters();
protected:
// 释放纹理
void relaseTextures();
std::unordered_map<ssize_t, Texture2D*> _atlasTextures;
std::unordered_map<unsigned short, FontLetterDefinition> _fontLetterDefinitions;
float _commonLineHe