You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.0 KiB

/*
* Copyright (c) Hisilicon Technologies Co., Ltd. 2019-2020. All rights reserved.
* Description: Font atlas
* Author:
* Create: 2019-08-09
*/
#ifndef FONT_ATLAS_H
#define FONT_ATLAS_H
#include <map>
#include "Common.h"
namespace dolgles {
class FontAtlas {
public:
FontAtlas();
~FontAtlas();
EGL_S32 LoadFontByPath(const std::string &fontLibPath, FT_UInt resolution);
GLuint GetFontTexture() const;
const std::map<unsigned long, GlyphInfo> &GetGlyphs() const;
GLuint GetFontTextureWidth() const;
GLuint GetFontTextureHeight() const;
private:
EGL_S32 CreateAtlasTex();
EGL_S32 CalculateTexSize(const FT_Face fontFace);
void FontCharInfoToMap(FT_GlyphSlot glyph, int offsetX, int offsetY, FT_ULong charcode);
void FontToTexture(const FT_Face fontFace);
EGL_S32 LoadFont(const FT_Face fontFace, FT_UInt resolution);
void DeleteTexture();
GLuint texture;
GLuint texWidth;
GLuint texHeight;
std::map<unsigned long, GlyphInfo> glyphs;
};
}; // namespace dolgles
#endif // end FONT_ATLAS_H