#pragma once

#include <cgv/base/base.h>
#include <cgv/base/register.h>
#include <cgv/media/font/font.h>
#include <cgv/media/font/lib_begin.h>

namespace cgv {
	namespace media {
		namespace font {

/// provides the methods to create and search for fonts
class CGV_API font_server : public cgv::base::base, public cgv::base::server
{
public:
	/// find an installed font by name
	virtual font_ptr find_font(const std::string& font_name) = 0;
	/// enumerate the names of all installed fonts
	virtual void enumerate_font_names(std::vector<const char*>& font_names) = 0;
};

/// ref counted pointer to font server
typedef data::ref_ptr<font_server> font_server_ptr;

#if _MSC_VER >= 1400
CGV_TEMPLATE template class CGV_API data::ref_ptr<font_server>;
#endif


/// return the currently installed font server or 0 if no font server available
extern CGV_API font_server_ptr get_font_server();
/// install a font server, call this in the on_register method of the server implementation
extern CGV_API void register_font_server(font_server_ptr fs);

		}
	}
}

#include <cgv/config/lib_end.h>