#pragma once

#include <memory>
#include <string>
#include <unordered_map>

class IFontEngine;
class FontGlyph;

class FontsManager
{
public:
    FontsManager();
    static std::unique_ptr<FontsManager> Create();

    IFontEngine* getFontEngine() const;

    FontGlyph* getGlyph(const std::string& fontFace, int size, uint32_t c);

private:
    std::unique_ptr<IFontEngine> mFontEngine;

    std::unordered_map<uint32_t, std::unique_ptr<FontGlyph> > mGlyphs;
};

using FontsManagerPtr = std::unique_ptr<FontsManager>;
