/*
* FTGL - OpenGL font library
*
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef __ftgl__
#define __ftgl__
typedef double FTGL_DOUBLE;
typedef float FTGL_FLOAT;
#ifdef __cplusplus
extern "C" {
namespace C {
#endif
struct _FTGLFont;
typedef struct _FTGLfont FTGLfont;
struct _FTGLlayout;
typedef struct _FTGLlayout FTGLlayout;
#ifdef __cplusplus
}
}
#endif
#ifdef __cplusplus
namespace FTGL
{
typedef enum
{
RENDER_FRONT = 0x01,
RENDER_BACK = 0x02,
RENDER_SIDE = 0x04,
} ftglRenderMode;
typedef enum
{
ALIGN_LEFT,
ALIGN_CENTER,
ALIGN_RIGHT,
ALIGN_JUSTIFY,
} TextAlignment;
typedef enum
{
FONT_BITMAP,
FONT_PIXMAP,
FONT_OUTLINE,
FONT_POLYGON,
FONT_EXTRUDE,
FONT_TEXTURE,
} FontType;
typedef enum
{
LAYOUT_SIMPLE,
} LayoutType;
}
#else
# define FTGL_RENDER_FRONT 0x01
# define FTGL_RENDER_BACK 0x02
# define FTGL_RENDER_SIDE 0x04
# define FTGL_ALIGN_LEFT 0
# define FTGL_ALIGN_CENTER 1
# define FTGL_ALIGN_RIGHT 2
# define FTGL_ALIGN_JUSTIFY 3
#endif
// Compiler-specific conditional compilation
#ifdef _MSC_VER // MS Visual C++
// Disable various warning.
// 4786: template name too long
#pragma warning(disable : 4251)
#pragma warning(disable : 4275)
#pragma warning(disable : 4786)
// The following definitions control how symbols are exported.
// If the target is a static library ensure that FTGL_LIBRARY_STATIC
// is defined. If building a dynamic library (ie DLL) ensure the
// FTGL_LIBRARY macro is defined, as it will mark symbols for
// export. If compiling a project to _use_ the _dynamic_ library
// version of the library, no definition is required.
#ifdef FTGL_LIBRARY_STATIC // static lib - no special export required
# define FTGL_EXPORT
#elif FTGL_LIBRARY // dynamic lib - must export/import symbols appropriately.
# define FTGL_EXPORT __declspec(dllexport)
#else
# define FTGL_EXPORT __declspec(dllimport)
#endif
#else
// Compiler that is not MS Visual C++.
// Ensure that the export symbol is defined (and blank)
#define FTGL_EXPORT
#endif
#include <FTFont.h>
#include <FTGLBitmapFont.h>
#include <FTGLExtrdFont.h>
#include <FTGLOutlineFont.h>
#include <FTGLPixmapFont.h>
#include <FTGLPolygonFont.h>
#include <FTGLTextureFont.h>
#include <FTLayout.h>
#include <FTSimpleLayout.h>
#endif // __ftgl__