#ifndef _OPENGL_FONTSTASH_CALLBACKS_H
#define _OPENGL_FONTSTASH_CALLBACKS_H

#include "fontstash.h"
struct PrimInternalData;
class GLPrimitiveRenderer;

struct InternalOpenGL2RenderCallbacks : public RenderCallbacks
{
	virtual PrimInternalData* getData() = 0;

	virtual ~InternalOpenGL2RenderCallbacks();

	virtual void updateTexture(sth_texture* texture, sth_glyph* glyph, int textureWidth, int textureHeight);
	virtual void render(sth_texture* texture);

	void display2();
};

void dumpTextureToPng(int screenWidth, int screenHeight, const char* fileName);

struct SimpleOpenGL2RenderCallbacks : public InternalOpenGL2RenderCallbacks
{
	PrimInternalData* m_data;
	virtual PrimInternalData* getData()
	{
		return m_data;
	}
	SimpleOpenGL2RenderCallbacks(PrimInternalData* data)
		: m_data(data)
	{
	}
	virtual ~SimpleOpenGL2RenderCallbacks()
	{
	}
};

struct OpenGL2RenderCallbacks : public InternalOpenGL2RenderCallbacks
{
	GLPrimitiveRenderer* m_primRender2;
	virtual PrimInternalData* getData();

	virtual void setWorldPosition(float pos[3]) {}
	virtual void setWorldOrientation(float orn[4]) {}
	virtual void setColorRGBA(float color[4]) {}

	OpenGL2RenderCallbacks(GLPrimitiveRenderer* primRender);
	virtual ~OpenGL2RenderCallbacks();
};

#endif  //_OPENGL_FONTSTASH_CALLBACKS_H
