FTGL 2.1.3~rc5
ftgl.h
Go to the documentation of this file.
00001 /*
00002  * FTGL - OpenGL font library
00003  *
00004  * Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
00005  * Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
00006  * Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
00007  *
00008  * Permission is hereby granted, free of charge, to any person obtaining
00009  * a copy of this software and associated documentation files (the
00010  * "Software"), to deal in the Software without restriction, including
00011  * without limitation the rights to use, copy, modify, merge, publish,
00012  * distribute, sublicense, and/or sell copies of the Software, and to
00013  * permit persons to whom the Software is furnished to do so, subject to
00014  * the following conditions:
00015  *
00016  * The above copyright notice and this permission notice shall be
00017  * included in all copies or substantial portions of the Software.
00018  *
00019  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
00020  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00021  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
00022  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
00023  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
00024  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
00025  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00026  */
00027 
00028 #ifndef __ftgl__
00029 #define __ftgl__
00030 
00031 /* We need the Freetype headers */
00032 #include <ft2build.h>
00033 #include FT_FREETYPE_H
00034 #include FT_GLYPH_H
00035 #include FT_OUTLINE_H
00036 
00037 /* Floating point types used by the library */
00038 typedef double   FTGL_DOUBLE;
00039 typedef float    FTGL_FLOAT;
00040 
00041 /* Macros used to declare C-linkage types and symbols */
00042 #ifdef __cplusplus
00043 #   define FTGL_BEGIN_C_DECLS extern "C" { namespace FTGL {
00044 #   define FTGL_END_C_DECLS } }
00045 #else
00046 #   define FTGL_BEGIN_C_DECLS
00047 #   define FTGL_END_C_DECLS
00048 #endif
00049 
00050 #ifdef __cplusplus
00051 namespace FTGL
00052 {
00053     typedef enum
00054     {
00055         RENDER_FRONT = 0x0001,
00056         RENDER_BACK  = 0x0002,
00057         RENDER_SIDE  = 0x0004,
00058         RENDER_ALL   = 0xffff
00059     } RenderMode;
00060 
00061     typedef enum
00062     {
00063         ALIGN_LEFT    = 0,
00064         ALIGN_CENTER  = 1,
00065         ALIGN_RIGHT   = 2,
00066         ALIGN_JUSTIFY = 3
00067     } TextAlignment;
00068 }
00069 #else
00070 #   define FTGL_RENDER_FRONT 0x0001
00071 #   define FTGL_RENDER_BACK  0x0002
00072 #   define FTGL_RENDER_SIDE  0x0004
00073 #   define FTGL_RENDER_ALL   0xffff
00074 
00075 #   define FTGL_ALIGN_LEFT    0
00076 #   define FTGL_ALIGN_CENTER  1
00077 #   define FTGL_ALIGN_RIGHT   2
00078 #   define FTGL_ALIGN_JUSTIFY 3
00079 #endif
00080 
00081 // Compiler-specific conditional compilation
00082 #ifdef _MSC_VER // MS Visual C++
00083 
00084     // Disable various warning.
00085     // 4786: template name too long
00086     #pragma warning(disable : 4251)
00087     #pragma warning(disable : 4275)
00088     #pragma warning(disable : 4786)
00089 
00090     // The following definitions control how symbols are exported.
00091     // If the target is a static library ensure that FTGL_LIBRARY_STATIC
00092     // is defined. If building a dynamic library (ie DLL) ensure the
00093     // FTGL_LIBRARY macro is defined, as it will mark symbols for
00094     // export. If compiling a project to _use_ the _dynamic_ library
00095     // version of the library, no definition is required.
00096     #ifdef FTGL_LIBRARY_STATIC      // static lib - no special export required
00097     #  define FTGL_EXPORT
00098     #elif FTGL_LIBRARY              // dynamic lib - must export/import symbols appropriately.
00099     #  define FTGL_EXPORT   __declspec(dllexport)
00100     #else
00101     #  define FTGL_EXPORT   __declspec(dllimport)
00102     #endif
00103 
00104 #else
00105     // Compiler that is not MS Visual C++.
00106     // Ensure that the export symbol is defined (and blank)
00107     #define FTGL_EXPORT
00108 #endif
00109 
00110 #include <FTGL/FTPoint.h>
00111 #include <FTGL/FTBBox.h>
00112 #include <FTGL/FTBuffer.h>
00113 
00114 #include <FTGL/FTGlyph.h>
00115 #include <FTGL/FTBitmapGlyph.h>
00116 #include <FTGL/FTBufferGlyph.h>
00117 #include <FTGL/FTExtrdGlyph.h>
00118 #include <FTGL/FTOutlineGlyph.h>
00119 #include <FTGL/FTPixmapGlyph.h>
00120 #include <FTGL/FTPolyGlyph.h>
00121 #include <FTGL/FTTextureGlyph.h>
00122 
00123 #include <FTGL/FTFont.h>
00124 #include <FTGL/FTGLBitmapFont.h>
00125 #include <FTGL/FTBufferFont.h>
00126 #include <FTGL/FTGLExtrdFont.h>
00127 #include <FTGL/FTGLOutlineFont.h>
00128 #include <FTGL/FTGLPixmapFont.h>
00129 #include <FTGL/FTGLPolygonFont.h>
00130 #include <FTGL/FTGLTextureFont.h>
00131 
00132 #include <FTGL/FTLayout.h>
00133 #include <FTGL/FTSimpleLayout.h>
00134 
00135 #endif  //  __ftgl__