#pragma once
#include "AftrConfig.h"
#ifdef AFTR_CONFIG_USE_FREE_TYPE_GL_FONTS
#include "Tex.h"
#include <string>

namespace ftgl { struct vertex_buffer_t; struct texture_atlas_t; struct texture_font_t; }

namespace Aftr
{

class FTGLFontDataShared
{
   friend class ManagerFTGLFont;

public:
   FTGLFontDataShared( const FTGLFontDataShared& toCopy ) = delete;
   FTGLFontDataShared( FTGLFontDataShared && toMove ) = delete;
   FTGLFontDataShared& operator=( const FTGLFontDataShared& toAssign ) = delete;
   FTGLFontDataShared& operator=( FTGLFontDataShared&& toMoveAssign ) = delete;
   virtual ~FTGLFontDataShared();

   std::string toString() const;

   Tex& getAtlasTexture();
   Tex const& getAtlasTexture() const;
   
   ftgl::texture_font_t* getFont();
   const ftgl::texture_font_t* getFont() const;

   ftgl::texture_atlas_t* getAtlas();
   const ftgl::texture_atlas_t* getAtlas() const;

protected:
   FTGLFontDataShared();
   Tex fontTex;
   ftgl::texture_font_t* font = nullptr;
   ftgl::texture_atlas_t* atlas = nullptr;

};

std::ostream& operator<<( std::ostream& os, const FTGLFontDataShared& fds );

}

#endif
