mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-21 06:45:39 -06:00
Bazaar/FTGL : added OpenGL font rendering library FTGL packaged for Upp
git-svn-id: svn://ultimatepp.org/upp/trunk@3871 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
1fe844e31e
commit
97367a3496
87 changed files with 13522 additions and 0 deletions
180
bazaar/FTGL/FTBBox.h
Normal file
180
bazaar/FTGL/FTBBox.h
Normal file
|
|
@ -0,0 +1,180 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTBBox__
|
||||
#define __FTBBox__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTBBox is a convenience class for handling bounding boxes.
|
||||
*/
|
||||
class FTGL_EXPORT FTBBox
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Default constructor. Bounding box is set to zero.
|
||||
*/
|
||||
FTBBox()
|
||||
: lower(0.0f, 0.0f, 0.0f),
|
||||
upper(0.0f, 0.0f, 0.0f)
|
||||
{}
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
FTBBox(float lx, float ly, float lz, float ux, float uy, float uz)
|
||||
: lower(lx, ly, lz),
|
||||
upper(ux, uy, uz)
|
||||
{}
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
FTBBox(FTPoint l, FTPoint u)
|
||||
: lower(l),
|
||||
upper(u)
|
||||
{}
|
||||
|
||||
/**
|
||||
* Constructor. Extracts a bounding box from a freetype glyph. Uses
|
||||
* the control box for the glyph. <code>FT_Glyph_Get_CBox()</code>
|
||||
*
|
||||
* @param glyph A freetype glyph
|
||||
*/
|
||||
FTBBox(FT_GlyphSlot glyph)
|
||||
: lower(0.0f, 0.0f, 0.0f),
|
||||
upper(0.0f, 0.0f, 0.0f)
|
||||
{
|
||||
FT_BBox bbox;
|
||||
FT_Outline_Get_CBox(&(glyph->outline), &bbox);
|
||||
|
||||
lower.X(static_cast<float>(bbox.xMin) / 64.0f);
|
||||
lower.Y(static_cast<float>(bbox.yMin) / 64.0f);
|
||||
lower.Z(0.0f);
|
||||
upper.X(static_cast<float>(bbox.xMax) / 64.0f);
|
||||
upper.Y(static_cast<float>(bbox.yMax) / 64.0f);
|
||||
upper.Z(0.0f);
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTBBox()
|
||||
{}
|
||||
|
||||
/**
|
||||
* Mark the bounds invalid by setting all lower dimensions greater
|
||||
* than the upper dimensions.
|
||||
*/
|
||||
void Invalidate()
|
||||
{
|
||||
lower = FTPoint(1.0f, 1.0f, 1.0f);
|
||||
upper = FTPoint(-1.0f, -1.0f, -1.0f);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if this bounding box is valid.
|
||||
*
|
||||
* @return True if all lower values are <= the corresponding
|
||||
* upper values.
|
||||
*/
|
||||
bool IsValid()
|
||||
{
|
||||
return lower.X() <= upper.X()
|
||||
&& lower.Y() <= upper.Y()
|
||||
&& lower.Z() <= upper.Z();
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the Bounding Box by a vector.
|
||||
*
|
||||
* @param vector The vector to move the bbox in 3D space.
|
||||
*/
|
||||
FTBBox& operator += (const FTPoint vector)
|
||||
{
|
||||
lower += vector;
|
||||
upper += vector;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Combine two bounding boxes. The result is the smallest bounding
|
||||
* box containing the two original boxes.
|
||||
*
|
||||
* @param bbox The bounding box to merge with the second one.
|
||||
*/
|
||||
FTBBox& operator |= (const FTBBox& bbox)
|
||||
{
|
||||
if(bbox.lower.X() < lower.X()) lower.X(bbox.lower.X());
|
||||
if(bbox.lower.Y() < lower.Y()) lower.Y(bbox.lower.Y());
|
||||
if(bbox.lower.Z() < lower.Z()) lower.Z(bbox.lower.Z());
|
||||
if(bbox.upper.X() > upper.X()) upper.X(bbox.upper.X());
|
||||
if(bbox.upper.Y() > upper.Y()) upper.Y(bbox.upper.Y());
|
||||
if(bbox.upper.Z() > upper.Z()) upper.Z(bbox.upper.Z());
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
void SetDepth(float depth)
|
||||
{
|
||||
if(depth > 0)
|
||||
upper.Z(lower.Z() + depth);
|
||||
else
|
||||
lower.Z(upper.Z() + depth);
|
||||
}
|
||||
|
||||
|
||||
inline FTPoint const Upper() const
|
||||
{
|
||||
return upper;
|
||||
}
|
||||
|
||||
|
||||
inline FTPoint const Lower() const
|
||||
{
|
||||
return lower;
|
||||
}
|
||||
|
||||
private:
|
||||
/**
|
||||
* The bounds of the box
|
||||
*/
|
||||
FTPoint lower, upper;
|
||||
};
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
#endif // __FTBBox__
|
||||
|
||||
82
bazaar/FTGL/FTBitmapGlyph.h
Normal file
82
bazaar/FTGL/FTBitmapGlyph.h
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTBitmapGlyph__
|
||||
#define __FTBitmapGlyph__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTBitmapGlyph is a specialisation of FTGlyph for creating bitmaps.
|
||||
*/
|
||||
class FTGL_EXPORT FTBitmapGlyph : public FTGlyph
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed
|
||||
*/
|
||||
FTBitmapGlyph(FT_GlyphSlot glyph);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~FTBitmapGlyph();
|
||||
|
||||
/**
|
||||
* Render this glyph at the current pen position.
|
||||
*
|
||||
* @param pen The current pen position.
|
||||
* @param renderMode Render mode to display
|
||||
* @return The advance distance for this glyph.
|
||||
*/
|
||||
virtual const FTPoint& Render(const FTPoint& pen, int renderMode);
|
||||
};
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* Create a specialisation of FTGLglyph for creating bitmaps.
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed
|
||||
* @return An FTGLglyph* object.
|
||||
*/
|
||||
FTGL_EXPORT FTGLglyph *ftglCreateBitmapGlyph(FT_GlyphSlot glyph);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTBitmapGlyph__
|
||||
|
||||
127
bazaar/FTGL/FTBuffer.h
Normal file
127
bazaar/FTGL/FTBuffer.h
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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__
|
||||
# warning Please use <FTGL/ftgl.h> instead of <FTBuffer.h>.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTBuffer__
|
||||
#define __FTBuffer__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
/**
|
||||
* FTBuffer is a helper class for pixel buffers.
|
||||
*
|
||||
* It provides the interface between FTBufferFont and FTBufferGlyph to
|
||||
* optimise rendering operations.
|
||||
*
|
||||
* @see FTBufferGlyph
|
||||
* @see FTBufferFont
|
||||
*/
|
||||
class FTGL_EXPORT FTBuffer
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Default constructor.
|
||||
*/
|
||||
FTBuffer();
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTBuffer();
|
||||
|
||||
/**
|
||||
* Get the pen's position in the buffer.
|
||||
*
|
||||
* @return The pen's position as an FTPoint object.
|
||||
*/
|
||||
inline FTPoint Pos() const
|
||||
{
|
||||
return pos;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the pen's position in the buffer.
|
||||
*
|
||||
* @param arg An FTPoint object with the desired pen's position.
|
||||
*/
|
||||
inline void Pos(FTPoint arg)
|
||||
{
|
||||
pos = arg;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the buffer's size.
|
||||
*
|
||||
* @param w The buffer's desired width, in pixels.
|
||||
* @param h The buffer's desired height, in pixels.
|
||||
*/
|
||||
void Size(int w, int h);
|
||||
|
||||
/**
|
||||
* Get the buffer's width.
|
||||
*
|
||||
* @return The buffer's width, in pixels.
|
||||
*/
|
||||
inline int Width() const { return width; }
|
||||
|
||||
/**
|
||||
* Get the buffer's height.
|
||||
*
|
||||
* @return The buffer's height, in pixels.
|
||||
*/
|
||||
inline int Height() const { return height; }
|
||||
|
||||
/**
|
||||
* Get the buffer's direct pixel buffer.
|
||||
*
|
||||
* @return A read-write pointer to the buffer's pixels.
|
||||
*/
|
||||
inline unsigned char *Pixels() const { return pixels; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* Buffer's width and height.
|
||||
*/
|
||||
int width, height;
|
||||
|
||||
/**
|
||||
* Buffer's pixel buffer.
|
||||
*/
|
||||
unsigned char *pixels;
|
||||
|
||||
/**
|
||||
* Buffer's internal pen position.
|
||||
*/
|
||||
FTPoint pos;
|
||||
};
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
#endif // __FTBuffer__
|
||||
|
||||
99
bazaar/FTGL/FTBufferFont.h
Normal file
99
bazaar/FTGL/FTBufferFont.h
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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__
|
||||
# warning Please use <FTGL/ftgl.h> instead of <FTBufferFont.h>.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTBufferFont__
|
||||
#define __FTBufferFont__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTBufferFont is a specialisation of the FTFont class for handling
|
||||
* memory buffer fonts.
|
||||
*
|
||||
* @see FTFont
|
||||
*/
|
||||
class FTGL_EXPORT FTBufferFont : public FTFont
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Open and read a font file. Sets Error flag.
|
||||
*
|
||||
* @param fontFilePath font file path.
|
||||
*/
|
||||
FTBufferFont(const char* fontFilePath);
|
||||
|
||||
/**
|
||||
* Open and read a font from a buffer in memory. Sets Error flag.
|
||||
* The buffer is owned by the client and is NOT copied by FTGL. The
|
||||
* pointer must be valid while using FTGL.
|
||||
*
|
||||
* @param pBufferBytes the in-memory buffer
|
||||
* @param bufferSizeInBytes the length of the buffer in bytes
|
||||
*/
|
||||
FTBufferFont(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTBufferFont();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Construct a glyph of the correct type.
|
||||
*
|
||||
* Clients must override the function and return their specialised
|
||||
* FTGlyph.
|
||||
*
|
||||
* @param slot A FreeType glyph slot.
|
||||
* @return An FT****Glyph or <code>null</code> on failure.
|
||||
*/
|
||||
virtual FTGlyph* MakeGlyph(FT_GlyphSlot slot);
|
||||
};
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* Create a specialised FTGLfont object for handling memory buffer fonts.
|
||||
*
|
||||
* @param file The font file name.
|
||||
* @return An FTGLfont* object.
|
||||
*
|
||||
* @see FTGLfont
|
||||
*/
|
||||
FTGL_EXPORT FTGLfont *ftglCreateBufferFont(const char *file);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTBufferFont__
|
||||
|
||||
69
bazaar/FTGL/FTBufferGlyph.h
Normal file
69
bazaar/FTGL/FTBufferGlyph.h
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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__
|
||||
# warning Please use <FTGL/ftgl.h> instead of <FTBufferGlyph.h>.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTBufferGlyph__
|
||||
#define __FTBufferGlyph__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTBufferGlyph is a specialisation of FTGlyph for memory buffer rendering.
|
||||
*/
|
||||
class FTGL_EXPORT FTBufferGlyph : public FTGlyph
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed
|
||||
* @param buffer An FTBuffer object in which to render the glyph.
|
||||
*/
|
||||
FTBufferGlyph(FT_GlyphSlot glyph, FTBuffer *buffer);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~FTBufferGlyph();
|
||||
|
||||
/**
|
||||
* Render this glyph at the current pen position.
|
||||
*
|
||||
* @param pen The current pen position.
|
||||
* @param renderMode Render mode to display
|
||||
* @return The advance distance for this glyph.
|
||||
*/
|
||||
virtual const FTPoint& Render(const FTPoint& pen, int renderMode);
|
||||
};
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
#endif // __FTBufferGlyph__
|
||||
|
||||
104
bazaar/FTGL/FTExtrdGlyph.h
Normal file
104
bazaar/FTGL/FTExtrdGlyph.h
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTExtrudeGlyph__
|
||||
#define __FTExtrudeGlyph__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTExtrudeGlyph is a specialisation of FTGlyph for creating tessellated
|
||||
* extruded polygon glyphs.
|
||||
*/
|
||||
class FTGL_EXPORT FTExtrudeGlyph : public FTGlyph
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor. Sets the Error to Invalid_Outline if the glyph isn't
|
||||
* an outline.
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed
|
||||
* @param depth The distance along the z axis to extrude the glyph
|
||||
* @param frontOutset outset contour size
|
||||
* @param backOutset outset contour size
|
||||
* @param useDisplayList Enable or disable the use of Display Lists
|
||||
* for this glyph
|
||||
* <code>true</code> turns ON display lists.
|
||||
* <code>false</code> turns OFF display lists.
|
||||
*/
|
||||
FTExtrudeGlyph(FT_GlyphSlot glyph, float depth, float frontOutset,
|
||||
float backOutset, bool useDisplayList);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~FTExtrudeGlyph();
|
||||
|
||||
/**
|
||||
* Render this glyph at the current pen position.
|
||||
*
|
||||
* @param pen The current pen position.
|
||||
* @param renderMode Render mode to display
|
||||
* @return The advance distance for this glyph.
|
||||
*/
|
||||
virtual const FTPoint& Render(const FTPoint& pen, int renderMode);
|
||||
};
|
||||
|
||||
#define FTExtrdGlyph FTExtrudeGlyph
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* Create a specialisation of FTGLglyph for creating tessellated
|
||||
* extruded polygon glyphs.
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed
|
||||
* @param depth The distance along the z axis to extrude the glyph
|
||||
* @param frontOutset outset contour size
|
||||
* @param backOutset outset contour size
|
||||
* @param useDisplayList Enable or disable the use of Display Lists
|
||||
* for this glyph
|
||||
* <code>true</code> turns ON display lists.
|
||||
* <code>false</code> turns OFF display lists.
|
||||
* @return An FTGLglyph* object.
|
||||
*/
|
||||
FTGL_EXPORT FTGLglyph *ftglCreateExtrudeGlyph(FT_GlyphSlot glyph, float depth,
|
||||
float frontOutset, float backOutset,
|
||||
int useDisplayList);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTExtrudeGlyph__
|
||||
|
||||
584
bazaar/FTGL/FTFont.h
Normal file
584
bazaar/FTGL/FTFont.h
Normal file
|
|
@ -0,0 +1,584 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTFont__
|
||||
#define __FTFont__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
class FTFontImpl;
|
||||
|
||||
/**
|
||||
* FTFont is the public interface for the FTGL library.
|
||||
*
|
||||
* Specific font classes are derived from this class. It uses the helper
|
||||
* classes FTFace and FTSize to access the Freetype library. This class
|
||||
* is abstract and deriving classes must implement the protected
|
||||
* <code>MakeGlyph</code> function to create glyphs of the
|
||||
* appropriate type.
|
||||
*
|
||||
* It is good practice after using these functions to test the error
|
||||
* code returned. <code>FT_Error Error()</code>. Check the freetype file
|
||||
* fterrdef.h for error definitions.
|
||||
*
|
||||
* @see FTFace
|
||||
* @see FTSize
|
||||
*/
|
||||
class FTGL_EXPORT FTFont
|
||||
{
|
||||
protected:
|
||||
/**
|
||||
* Open and read a font file. Sets Error flag.
|
||||
*
|
||||
* @param fontFilePath font file path.
|
||||
*/
|
||||
FTFont(char const *fontFilePath);
|
||||
|
||||
/**
|
||||
* Open and read a font from a buffer in memory. Sets Error flag.
|
||||
* The buffer is owned by the client and is NOT copied by FTGL. The
|
||||
* pointer must be valid while using FTGL.
|
||||
*
|
||||
* @param pBufferBytes the in-memory buffer
|
||||
* @param bufferSizeInBytes the length of the buffer in bytes
|
||||
*/
|
||||
FTFont(const unsigned char *pBufferBytes, size_t bufferSizeInBytes);
|
||||
|
||||
private:
|
||||
/* Allow our internal subclasses to access the private constructor */
|
||||
friend class FTBitmapFont;
|
||||
friend class FTBufferFont;
|
||||
friend class FTExtrudeFont;
|
||||
friend class FTOutlineFont;
|
||||
friend class FTPixmapFont;
|
||||
friend class FTPolygonFont;
|
||||
friend class FTTextureFont;
|
||||
|
||||
/**
|
||||
* Internal FTGL FTFont constructor. For private use only.
|
||||
*
|
||||
* @param pImpl Internal implementation object. Will be destroyed
|
||||
* upon FTFont deletion.
|
||||
*/
|
||||
FTFont(FTFontImpl *pImpl);
|
||||
|
||||
public:
|
||||
virtual ~FTFont();
|
||||
|
||||
/**
|
||||
* Attach auxilliary file to font e.g font metrics.
|
||||
*
|
||||
* Note: not all font formats implement this function.
|
||||
*
|
||||
* @param fontFilePath auxilliary font file path.
|
||||
* @return <code>true</code> if file has been attached
|
||||
* successfully.
|
||||
*/
|
||||
virtual bool Attach(const char* fontFilePath);
|
||||
|
||||
/**
|
||||
* Attach auxilliary data to font e.g font metrics, from memory.
|
||||
*
|
||||
* Note: not all font formats implement this function.
|
||||
*
|
||||
* @param pBufferBytes the in-memory buffer.
|
||||
* @param bufferSizeInBytes the length of the buffer in bytes.
|
||||
* @return <code>true</code> if file has been attached
|
||||
* successfully.
|
||||
*/
|
||||
virtual bool Attach(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
/**
|
||||
* Set the glyph loading flags. By default, fonts use the most
|
||||
* sensible flags when loading a font's glyph using FT_Load_Glyph().
|
||||
* This function allows to override the default flags.
|
||||
*
|
||||
* @param flags The glyph loading flags.
|
||||
*/
|
||||
virtual void GlyphLoadFlags(FT_Int flags);
|
||||
|
||||
/**
|
||||
* Set the character map for the face.
|
||||
*
|
||||
* @param encoding Freetype enumerate for char map code.
|
||||
* @return <code>true</code> if charmap was valid and
|
||||
* set correctly.
|
||||
*/
|
||||
virtual bool CharMap(FT_Encoding encoding);
|
||||
|
||||
/**
|
||||
* Get the number of character maps in this face.
|
||||
*
|
||||
* @return character map count.
|
||||
*/
|
||||
virtual unsigned int CharMapCount() const;
|
||||
|
||||
/**
|
||||
* Get a list of character maps in this face.
|
||||
*
|
||||
* @return pointer to the first encoding.
|
||||
*/
|
||||
virtual FT_Encoding* CharMapList();
|
||||
|
||||
/**
|
||||
* Set the char size for the current face.
|
||||
*
|
||||
* @param size the face size in points (1/72 inch)
|
||||
* @param res the resolution of the target device.
|
||||
* @return <code>true</code> if size was set correctly
|
||||
*/
|
||||
virtual bool FaceSize(const unsigned int size,
|
||||
const unsigned int res = 72);
|
||||
|
||||
/**
|
||||
* Get the current face size in points (1/72 inch).
|
||||
*
|
||||
* @return face size
|
||||
*/
|
||||
virtual unsigned int FaceSize() const;
|
||||
|
||||
/**
|
||||
* Set the extrusion distance for the font. Only implemented by
|
||||
* FTExtrudeFont
|
||||
*
|
||||
* @param depth The extrusion distance.
|
||||
*/
|
||||
virtual void Depth(float depth);
|
||||
|
||||
/**
|
||||
* Set the outset distance for the font. Only implemented by
|
||||
* FTOutlineFont, FTPolygonFont and FTExtrudeFont
|
||||
*
|
||||
* @param outset The outset distance.
|
||||
*/
|
||||
virtual void Outset(float outset);
|
||||
|
||||
/**
|
||||
* Set the front and back outset distances for the font. Only
|
||||
* implemented by FTExtrudeFont
|
||||
*
|
||||
* @param front The front outset distance.
|
||||
* @param back The back outset distance.
|
||||
*/
|
||||
virtual void Outset(float front, float back);
|
||||
|
||||
/**
|
||||
* Enable or disable the use of Display Lists inside FTGL
|
||||
*
|
||||
* @param useList <code>true</code> turns ON display lists.
|
||||
* <code>false</code> turns OFF display lists.
|
||||
*/
|
||||
virtual void UseDisplayList(bool useList);
|
||||
|
||||
/**
|
||||
* Get the global ascender height for the face.
|
||||
*
|
||||
* @return Ascender height
|
||||
*/
|
||||
virtual float Ascender() const;
|
||||
|
||||
/**
|
||||
* Gets the global descender height for the face.
|
||||
*
|
||||
* @return Descender height
|
||||
*/
|
||||
virtual float Descender() const;
|
||||
|
||||
/**
|
||||
* Gets the line spacing for the font.
|
||||
*
|
||||
* @return Line height
|
||||
*/
|
||||
virtual float LineHeight() const;
|
||||
|
||||
/**
|
||||
* Get the bounding box for a string.
|
||||
*
|
||||
* @param string A char buffer.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be checked until a null character is encountered
|
||||
* (optional).
|
||||
* @param position The pen position of the first character (optional).
|
||||
* @param spacing A displacement vector to add after each character
|
||||
* has been checked (optional).
|
||||
* @return The corresponding bounding box.
|
||||
*/
|
||||
virtual FTBBox BBox(const char *string, const int len = -1,
|
||||
FTPoint position = FTPoint(),
|
||||
FTPoint spacing = FTPoint());
|
||||
|
||||
/**
|
||||
* Get the bounding box for a string (deprecated).
|
||||
*
|
||||
* @param string A char buffer.
|
||||
* @param llx Lower left near x coordinate.
|
||||
* @param lly Lower left near y coordinate.
|
||||
* @param llz Lower left near z coordinate.
|
||||
* @param urx Upper right far x coordinate.
|
||||
* @param ury Upper right far y coordinate.
|
||||
* @param urz Upper right far z coordinate.
|
||||
*/
|
||||
void BBox(const char* string, float& llx, float& lly, float& llz,
|
||||
float& urx, float& ury, float& urz)
|
||||
{
|
||||
FTBBox b = BBox(string);
|
||||
llx = b.Lower().Xf(); lly = b.Lower().Yf(); llz = b.Lower().Zf();
|
||||
urx = b.Upper().Xf(); ury = b.Upper().Yf(); urz = b.Upper().Zf();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the bounding box for a string.
|
||||
*
|
||||
* @param string A wchar_t buffer.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be checked until a null character is encountered
|
||||
* (optional).
|
||||
* @param position The pen position of the first character (optional).
|
||||
* @param spacing A displacement vector to add after each character
|
||||
* has been checked (optional).
|
||||
* @return The corresponding bounding box.
|
||||
*/
|
||||
virtual FTBBox BBox(const wchar_t *string, const int len = -1,
|
||||
FTPoint position = FTPoint(),
|
||||
FTPoint spacing = FTPoint());
|
||||
|
||||
/**
|
||||
* Get the bounding box for a string (deprecated).
|
||||
*
|
||||
* @param string A wchar_t buffer.
|
||||
* @param llx Lower left near x coordinate.
|
||||
* @param lly Lower left near y coordinate.
|
||||
* @param llz Lower left near z coordinate.
|
||||
* @param urx Upper right far x coordinate.
|
||||
* @param ury Upper right far y coordinate.
|
||||
* @param urz Upper right far z coordinate.
|
||||
*/
|
||||
void BBox(const wchar_t* string, float& llx, float& lly, float& llz,
|
||||
float& urx, float& ury, float& urz)
|
||||
{
|
||||
FTBBox b = BBox(string);
|
||||
llx = b.Lower().Xf(); lly = b.Lower().Yf(); llz = b.Lower().Zf();
|
||||
urx = b.Upper().Xf(); ury = b.Upper().Yf(); urz = b.Upper().Zf();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the advance for a string.
|
||||
*
|
||||
* @param string 'C' style string to be checked.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be checked until a null character is encountered
|
||||
* (optional).
|
||||
* @param spacing A displacement vector to add after each character
|
||||
* has been checked (optional).
|
||||
* @return The string's advance width.
|
||||
*/
|
||||
virtual float Advance(const char* string, const int len = -1,
|
||||
FTPoint spacing = FTPoint());
|
||||
|
||||
/**
|
||||
* Get the advance for a string.
|
||||
*
|
||||
* @param string A wchar_t string
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be checked until a null character is encountered
|
||||
* (optional).
|
||||
* @param spacing A displacement vector to add after each character
|
||||
* has been checked (optional).
|
||||
* @return The string's advance width.
|
||||
*/
|
||||
virtual float Advance(const wchar_t* string, const int len = -1,
|
||||
FTPoint spacing = FTPoint());
|
||||
|
||||
/**
|
||||
* Render a string of characters.
|
||||
*
|
||||
* @param string 'C' style string to be output.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be displayed until a null character is encountered
|
||||
* (optional).
|
||||
* @param position The pen position of the first character (optional).
|
||||
* @param spacing A displacement vector to add after each character
|
||||
* has been displayed (optional).
|
||||
* @param renderMode Render mode to use for display (optional).
|
||||
* @return The new pen position after the last character was output.
|
||||
*/
|
||||
virtual FTPoint Render(const char* string, const int len = -1,
|
||||
FTPoint position = FTPoint(),
|
||||
FTPoint spacing = FTPoint(),
|
||||
int renderMode = FTGL::RENDER_ALL);
|
||||
|
||||
/**
|
||||
* Render a string of characters
|
||||
*
|
||||
* @param string wchar_t string to be output.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be displayed until a null character is encountered
|
||||
* (optional).
|
||||
* @param position The pen position of the first character (optional).
|
||||
* @param spacing A displacement vector to add after each character
|
||||
* has been displayed (optional).
|
||||
* @param renderMode Render mode to use for display (optional).
|
||||
* @return The new pen position after the last character was output.
|
||||
*/
|
||||
virtual FTPoint Render(const wchar_t *string, const int len = -1,
|
||||
FTPoint position = FTPoint(),
|
||||
FTPoint spacing = FTPoint(),
|
||||
int renderMode = FTGL::RENDER_ALL);
|
||||
|
||||
/**
|
||||
* Queries the Font for errors.
|
||||
*
|
||||
* @return The current error code.
|
||||
*/
|
||||
virtual FT_Error Error() const;
|
||||
|
||||
protected:
|
||||
/* Allow impl to access MakeGlyph */
|
||||
friend class FTFontImpl;
|
||||
|
||||
/**
|
||||
* Construct a glyph of the correct type.
|
||||
*
|
||||
* Clients must override the function and return their specialised
|
||||
* FTGlyph.
|
||||
*
|
||||
* @param slot A FreeType glyph slot.
|
||||
* @return An FT****Glyph or <code>null</code> on failure.
|
||||
*/
|
||||
virtual FTGlyph* MakeGlyph(FT_GlyphSlot slot) = 0;
|
||||
|
||||
private:
|
||||
/**
|
||||
* Internal FTGL FTFont implementation object. For private use only.
|
||||
*/
|
||||
FTFontImpl *impl;
|
||||
};
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* FTGLfont is the public interface for the FTGL library.
|
||||
*
|
||||
* It is good practice after using these functions to test the error
|
||||
* code returned. <code>FT_Error Error()</code>. Check the freetype file
|
||||
* fterrdef.h for error definitions.
|
||||
*/
|
||||
struct _FTGLFont;
|
||||
typedef struct _FTGLfont FTGLfont;
|
||||
|
||||
/**
|
||||
* Create a custom FTGL font object.
|
||||
*
|
||||
* @param fontFilePath The font file name.
|
||||
* @param data A pointer to private data that will be passed to callbacks.
|
||||
* @param makeglyphCallback A glyph-making callback function.
|
||||
* @return An FTGLfont* object.
|
||||
*/
|
||||
FTGL_EXPORT FTGLfont *ftglCreateCustomFont(char const *fontFilePath,
|
||||
void *data,
|
||||
FTGLglyph * (*makeglyphCallback) (FT_GlyphSlot, void *));
|
||||
|
||||
/**
|
||||
* Destroy an FTGL font object.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
*/
|
||||
FTGL_EXPORT void ftglDestroyFont(FTGLfont* font);
|
||||
|
||||
/**
|
||||
* Attach auxilliary file to font e.g. font metrics.
|
||||
*
|
||||
* Note: not all font formats implement this function.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @param path Auxilliary font file path.
|
||||
* @return 1 if file has been attached successfully.
|
||||
*/
|
||||
FTGL_EXPORT int ftglAttachFile(FTGLfont* font, const char* path);
|
||||
|
||||
/**
|
||||
* Attach auxilliary data to font, e.g. font metrics, from memory.
|
||||
*
|
||||
* Note: not all font formats implement this function.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @param data The in-memory buffer.
|
||||
* @param size The length of the buffer in bytes.
|
||||
* @return 1 if file has been attached successfully.
|
||||
*/
|
||||
FTGL_EXPORT int ftglAttachData(FTGLfont* font, const unsigned char * data,
|
||||
size_t size);
|
||||
|
||||
/**
|
||||
* Set the character map for the face.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @param encoding Freetype enumerate for char map code.
|
||||
* @return 1 if charmap was valid and set correctly.
|
||||
*/
|
||||
FTGL_EXPORT int ftglSetFontCharMap(FTGLfont* font, FT_Encoding encoding);
|
||||
|
||||
/**
|
||||
* Get the number of character maps in this face.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @return character map count.
|
||||
*/
|
||||
FTGL_EXPORT unsigned int ftglGetFontCharMapCount(FTGLfont* font);
|
||||
|
||||
/**
|
||||
* Get a list of character maps in this face.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @return pointer to the first encoding.
|
||||
*/
|
||||
FTGL_EXPORT FT_Encoding* ftglGetFontCharMapList(FTGLfont* font);
|
||||
|
||||
/**
|
||||
* Set the char size for the current face.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @param size The face size in points (1/72 inch).
|
||||
* @param res The resolution of the target device, or 0 to use the default
|
||||
* value of 72.
|
||||
* @return 1 if size was set correctly.
|
||||
*/
|
||||
FTGL_EXPORT int ftglSetFontFaceSize(FTGLfont* font, unsigned int size,
|
||||
unsigned int res);
|
||||
|
||||
/**
|
||||
* Get the current face size in points (1/72 inch).
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @return face size
|
||||
*/
|
||||
FTGL_EXPORT unsigned int ftglGetFontFaceSize(FTGLfont* font);
|
||||
|
||||
/**
|
||||
* Set the extrusion distance for the font. Only implemented by
|
||||
* FTExtrudeFont.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @param depth The extrusion distance.
|
||||
*/
|
||||
FTGL_EXPORT void ftglSetFontDepth(FTGLfont* font, float depth);
|
||||
|
||||
/**
|
||||
* Set the outset distance for the font. Only FTOutlineFont, FTPolygonFont
|
||||
* and FTExtrudeFont implement front outset. Only FTExtrudeFont implements
|
||||
* back outset.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @param front The front outset distance.
|
||||
* @param back The back outset distance.
|
||||
*/
|
||||
FTGL_EXPORT void ftglSetFontOutset(FTGLfont* font, float front, float back);
|
||||
|
||||
/**
|
||||
* Enable or disable the use of Display Lists inside FTGL.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @param useList 1 turns ON display lists.
|
||||
* 0 turns OFF display lists.
|
||||
*/
|
||||
FTGL_EXPORT void ftglSetFontDisplayList(FTGLfont* font, int useList);
|
||||
|
||||
/**
|
||||
* Get the global ascender height for the face.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @return Ascender height
|
||||
*/
|
||||
FTGL_EXPORT float ftglGetFontAscender(FTGLfont* font);
|
||||
|
||||
/**
|
||||
* Gets the global descender height for the face.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @return Descender height
|
||||
*/
|
||||
FTGL_EXPORT float ftglGetFontDescender(FTGLfont* font);
|
||||
|
||||
/**
|
||||
* Gets the line spacing for the font.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @return Line height
|
||||
*/
|
||||
FTGL_EXPORT float ftglGetFontLineHeight(FTGLfont* font);
|
||||
|
||||
/**
|
||||
* Get the bounding box for a string.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @param string A char buffer
|
||||
* @param len The length of the string. If < 0 then all characters will be
|
||||
* checked until a null character is encountered (optional).
|
||||
* @param bounds An array of 6 float values where the bounding box's lower
|
||||
* left near and upper right far 3D coordinates will be stored.
|
||||
*/
|
||||
FTGL_EXPORT void ftglGetFontBBox(FTGLfont* font, const char *string,
|
||||
int len, float bounds[6]);
|
||||
|
||||
/**
|
||||
* Get the advance width for a string.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @param string A char string.
|
||||
* @return Advance width
|
||||
*/
|
||||
FTGL_EXPORT float ftglGetFontAdvance(FTGLfont* font, const char *string);
|
||||
|
||||
/**
|
||||
* Render a string of characters.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @param string Char string to be output.
|
||||
* @param mode Render mode to display.
|
||||
*/
|
||||
FTGL_EXPORT void ftglRenderFont(FTGLfont* font, const char *string, int mode);
|
||||
|
||||
/**
|
||||
* Query a font for errors.
|
||||
*
|
||||
* @param font An FTGLfont* object.
|
||||
* @return The current error code.
|
||||
*/
|
||||
FTGL_EXPORT FT_Error ftglGetFontError(FTGLfont* font);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTFont__
|
||||
|
||||
74
bazaar/FTGL/FTGL.upp
Normal file
74
bazaar/FTGL/FTGL.upp
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
noblitz;
|
||||
|
||||
uses
|
||||
freetype;
|
||||
|
||||
library(LINUX) "GL GLU";
|
||||
|
||||
library(FREEBSD) "GL GLU";
|
||||
|
||||
library(WIN32 GCC) "glaux glu32 opengl32";
|
||||
|
||||
file
|
||||
src/config.h,
|
||||
src/FTBuffer.cpp,
|
||||
src/FTCharmap.cpp,
|
||||
src/FTCharmap.h,
|
||||
src/FTCharToGlyphIndexMap.h,
|
||||
src/FTContour.cpp,
|
||||
src/FTContour.h,
|
||||
src/FTFace.cpp,
|
||||
src/FTFace.h,
|
||||
src/FTGlyphContainer.cpp,
|
||||
src/FTGlyphContainer.h,
|
||||
src/FTInternals.h,
|
||||
src/FTLibrary.cpp,
|
||||
src/FTLibrary.h,
|
||||
src/FTList.h,
|
||||
src/FTPoint.cpp,
|
||||
src/FTSize.cpp,
|
||||
src/FTSize.h,
|
||||
src/FTUnicode.h,
|
||||
src/FTVector.h,
|
||||
src/FTVectoriser.cpp,
|
||||
src/FTVectoriser.h,
|
||||
src/FTFont/FTBitmapFont.cpp,
|
||||
src/FTFont/FTBitmapFontImpl.h,
|
||||
src/FTFont/FTBufferFont.cpp,
|
||||
src/FTFont/FTBufferFontImpl.h,
|
||||
src/FTFont/FTExtrudeFont.cpp,
|
||||
src/FTFont/FTExtrudeFontImpl.h,
|
||||
src/FTFont/FTFont.cpp,
|
||||
src/FTFont/FTFontGlue.cpp,
|
||||
src/FTFont/FTFontImpl.h,
|
||||
src/FTFont/FTOutlineFont.cpp,
|
||||
src/FTFont/FTOutlineFontImpl.h,
|
||||
src/FTFont/FTPixmapFont.cpp,
|
||||
src/FTFont/FTPixmapFontImpl.h,
|
||||
src/FTFont/FTPolygonFont.cpp,
|
||||
src/FTFont/FTPolygonFontImpl.h,
|
||||
src/FTFont/FTTextureFont.cpp,
|
||||
src/FTFont/FTTextureFontImpl.h,
|
||||
src/FTGlyph/FTBitmapGlyph.cpp,
|
||||
src/FTGlyph/FTBitmapGlyphImpl.h,
|
||||
src/FTGlyph/FTBufferGlyph.cpp,
|
||||
src/FTGlyph/FTBufferGlyphImpl.h,
|
||||
src/FTGlyph/FTExtrudeGlyph.cpp,
|
||||
src/FTGlyph/FTExtrudeGlyphImpl.h,
|
||||
src/FTGlyph/FTGlyph.cpp,
|
||||
src/FTGlyph/FTGlyphGlue.cpp,
|
||||
src/FTGlyph/FTGlyphImpl.h,
|
||||
src/FTGlyph/FTOutlineGlyph.cpp,
|
||||
src/FTGlyph/FTOutlineGlyphImpl.h,
|
||||
src/FTGlyph/FTPixmapGlyph.cpp,
|
||||
src/FTGlyph/FTPixmapGlyphImpl.h,
|
||||
src/FTGlyph/FTPolygonGlyph.cpp,
|
||||
src/FTGlyph/FTPolygonGlyphImpl.h,
|
||||
src/FTGlyph/FTTextureGlyph.cpp,
|
||||
src/FTGlyph/FTTextureGlyphImpl.h,
|
||||
src/FTLayout/FTLayout.cpp,
|
||||
src/FTLayout/FTLayoutGlue.cpp,
|
||||
src/FTLayout/FTLayoutImpl.h,
|
||||
src/FTLayout/FTSimpleLayout.cpp,
|
||||
src/FTLayout/FTSimpleLayoutImpl.h;
|
||||
|
||||
103
bazaar/FTGL/FTGLBitmapFont.h
Normal file
103
bazaar/FTGL/FTGLBitmapFont.h
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTBitmapFont__
|
||||
#define __FTBitmapFont__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTBitmapFont is a specialisation of the FTFont class for handling
|
||||
* Bitmap fonts
|
||||
*
|
||||
* @see FTFont
|
||||
*/
|
||||
class FTGL_EXPORT FTBitmapFont : public FTFont
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Open and read a font file. Sets Error flag.
|
||||
*
|
||||
* @param fontFilePath font file path.
|
||||
*/
|
||||
FTBitmapFont(const char* fontFilePath);
|
||||
|
||||
/**
|
||||
* Open and read a font from a buffer in memory. Sets Error flag.
|
||||
* The buffer is owned by the client and is NOT copied by FTGL. The
|
||||
* pointer must be valid while using FTGL.
|
||||
*
|
||||
* @param pBufferBytes the in-memory buffer
|
||||
* @param bufferSizeInBytes the length of the buffer in bytes
|
||||
*/
|
||||
FTBitmapFont(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTBitmapFont();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Construct a glyph of the correct type.
|
||||
*
|
||||
* Clients must override the function and return their specialised
|
||||
* FTGlyph.
|
||||
*
|
||||
* @param slot A FreeType glyph slot.
|
||||
* @return An FT****Glyph or <code>null</code> on failure.
|
||||
*/
|
||||
virtual FTGlyph* MakeGlyph(FT_GlyphSlot slot);
|
||||
};
|
||||
|
||||
#define FTGLBitmapFont FTBitmapFont
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* Create a specialised FTGLfont object for handling bitmap fonts.
|
||||
*
|
||||
* @param file The font file name.
|
||||
* @return An FTGLfont* object.
|
||||
*
|
||||
* @see FTGLfont
|
||||
*/
|
||||
FTGL_EXPORT FTGLfont *ftglCreateBitmapFont(const char *file);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTBitmapFont__
|
||||
|
||||
105
bazaar/FTGL/FTGLExtrdFont.h
Normal file
105
bazaar/FTGL/FTGLExtrdFont.h
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTExtrudeFont__
|
||||
#define __FTExtrudeFont__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTExtrudeFont is a specialisation of the FTFont class for handling
|
||||
* extruded Polygon fonts
|
||||
*
|
||||
* @see FTFont
|
||||
* @see FTPolygonFont
|
||||
*/
|
||||
class FTGL_EXPORT FTExtrudeFont : public FTFont
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Open and read a font file. Sets Error flag.
|
||||
*
|
||||
* @param fontFilePath font file path.
|
||||
*/
|
||||
FTExtrudeFont(const char* fontFilePath);
|
||||
|
||||
/**
|
||||
* Open and read a font from a buffer in memory. Sets Error flag.
|
||||
* The buffer is owned by the client and is NOT copied by FTGL. The
|
||||
* pointer must be valid while using FTGL.
|
||||
*
|
||||
* @param pBufferBytes the in-memory buffer
|
||||
* @param bufferSizeInBytes the length of the buffer in bytes
|
||||
*/
|
||||
FTExtrudeFont(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTExtrudeFont();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Construct a glyph of the correct type.
|
||||
*
|
||||
* Clients must override the function and return their specialised
|
||||
* FTGlyph.
|
||||
*
|
||||
* @param slot A FreeType glyph slot.
|
||||
* @return An FT****Glyph or <code>null</code> on failure.
|
||||
*/
|
||||
virtual FTGlyph* MakeGlyph(FT_GlyphSlot slot);
|
||||
};
|
||||
|
||||
#define FTGLExtrdFont FTExtrudeFont
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* Create a specialised FTGLfont object for handling extruded poygon fonts.
|
||||
*
|
||||
* @param file The font file name.
|
||||
* @return An FTGLfont* object.
|
||||
*
|
||||
* @see FTGLfont
|
||||
* @see ftglCreatePolygonFont
|
||||
*/
|
||||
FTGL_EXPORT FTGLfont *ftglCreateExtrudeFont(const char *file);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTExtrudeFont__
|
||||
|
||||
103
bazaar/FTGL/FTGLOutlineFont.h
Normal file
103
bazaar/FTGL/FTGLOutlineFont.h
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTOutlineFont__
|
||||
#define __FTOutlineFont__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTOutlineFont is a specialisation of the FTFont class for handling
|
||||
* Vector Outline fonts
|
||||
*
|
||||
* @see FTFont
|
||||
*/
|
||||
class FTGL_EXPORT FTOutlineFont : public FTFont
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Open and read a font file. Sets Error flag.
|
||||
*
|
||||
* @param fontFilePath font file path.
|
||||
*/
|
||||
FTOutlineFont(const char* fontFilePath);
|
||||
|
||||
/**
|
||||
* Open and read a font from a buffer in memory. Sets Error flag.
|
||||
* The buffer is owned by the client and is NOT copied by FTGL. The
|
||||
* pointer must be valid while using FTGL.
|
||||
*
|
||||
* @param pBufferBytes the in-memory buffer
|
||||
* @param bufferSizeInBytes the length of the buffer in bytes
|
||||
*/
|
||||
FTOutlineFont(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTOutlineFont();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Construct a glyph of the correct type.
|
||||
*
|
||||
* Clients must override the function and return their specialised
|
||||
* FTGlyph.
|
||||
*
|
||||
* @param slot A FreeType glyph slot.
|
||||
* @return An FT****Glyph or <code>null</code> on failure.
|
||||
*/
|
||||
virtual FTGlyph* MakeGlyph(FT_GlyphSlot slot);
|
||||
};
|
||||
|
||||
#define FTGLOutlineFont FTOutlineFont
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* Create a specialised FTGLfont object for handling vector outline fonts.
|
||||
*
|
||||
* @param file The font file name.
|
||||
* @return An FTGLfont* object.
|
||||
*
|
||||
* @see FTGLfont
|
||||
*/
|
||||
FTGL_EXPORT FTGLfont *ftglCreateOutlineFont(const char *file);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTOutlineFont__
|
||||
|
||||
103
bazaar/FTGL/FTGLPixmapFont.h
Normal file
103
bazaar/FTGL/FTGLPixmapFont.h
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTPixmapFont__
|
||||
#define __FTPixmapFont__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTPixmapFont is a specialisation of the FTFont class for handling
|
||||
* Pixmap (Grey Scale) fonts
|
||||
*
|
||||
* @see FTFont
|
||||
*/
|
||||
class FTGL_EXPORT FTPixmapFont : public FTFont
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Open and read a font file. Sets Error flag.
|
||||
*
|
||||
* @param fontFilePath font file path.
|
||||
*/
|
||||
FTPixmapFont(const char* fontFilePath);
|
||||
|
||||
/**
|
||||
* Open and read a font from a buffer in memory. Sets Error flag.
|
||||
* The buffer is owned by the client and is NOT copied by FTGL. The
|
||||
* pointer must be valid while using FTGL.
|
||||
*
|
||||
* @param pBufferBytes the in-memory buffer
|
||||
* @param bufferSizeInBytes the length of the buffer in bytes
|
||||
*/
|
||||
FTPixmapFont(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTPixmapFont();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Construct a glyph of the correct type.
|
||||
*
|
||||
* Clients must override the function and return their specialised
|
||||
* FTGlyph.
|
||||
*
|
||||
* @param slot A FreeType glyph slot.
|
||||
* @return An FT****Glyph or <code>null</code> on failure.
|
||||
*/
|
||||
virtual FTGlyph* MakeGlyph(FT_GlyphSlot slot);
|
||||
};
|
||||
|
||||
#define FTGLPixmapFont FTPixmapFont
|
||||
|
||||
#endif // __cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* Create a specialised FTGLfont object for handling pixmap (grey scale) fonts.
|
||||
*
|
||||
* @param file The font file name.
|
||||
* @return An FTGLfont* object.
|
||||
*
|
||||
* @see FTGLfont
|
||||
*/
|
||||
FTGL_EXPORT FTGLfont *ftglCreatePixmapFont(const char *file);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTPixmapFont__
|
||||
|
||||
104
bazaar/FTGL/FTGLPolygonFont.h
Normal file
104
bazaar/FTGL/FTGLPolygonFont.h
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTPolygonFont__
|
||||
#define __FTPolygonFont__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTPolygonFont is a specialisation of the FTFont class for handling
|
||||
* tesselated Polygon Mesh fonts
|
||||
*
|
||||
* @see FTFont
|
||||
*/
|
||||
class FTGL_EXPORT FTPolygonFont : public FTFont
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Open and read a font file. Sets Error flag.
|
||||
*
|
||||
* @param fontFilePath font file path.
|
||||
*/
|
||||
FTPolygonFont(const char* fontFilePath);
|
||||
|
||||
/**
|
||||
* Open and read a font from a buffer in memory. Sets Error flag.
|
||||
* The buffer is owned by the client and is NOT copied by FTGL. The
|
||||
* pointer must be valid while using FTGL.
|
||||
*
|
||||
* @param pBufferBytes the in-memory buffer
|
||||
* @param bufferSizeInBytes the length of the buffer in bytes
|
||||
*/
|
||||
FTPolygonFont(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTPolygonFont();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Construct a glyph of the correct type.
|
||||
*
|
||||
* Clients must override the function and return their specialised
|
||||
* FTGlyph.
|
||||
*
|
||||
* @param slot A FreeType glyph slot.
|
||||
* @return An FT****Glyph or <code>null</code> on failure.
|
||||
*/
|
||||
virtual FTGlyph* MakeGlyph(FT_GlyphSlot slot);
|
||||
};
|
||||
|
||||
#define FTGLPolygonFont FTPolygonFont
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* Create a specialised FTGLfont object for handling tesselated polygon
|
||||
* mesh fonts.
|
||||
*
|
||||
* @param file The font file name.
|
||||
* @return An FTGLfont* object.
|
||||
*
|
||||
* @see FTGLfont
|
||||
*/
|
||||
FTGL_EXPORT FTGLfont *ftglCreatePolygonFont(const char *file);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTPolygonFont__
|
||||
|
||||
103
bazaar/FTGL/FTGLTextureFont.h
Normal file
103
bazaar/FTGL/FTGLTextureFont.h
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTTextureFont__
|
||||
#define __FTTextureFont__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTTextureFont is a specialisation of the FTFont class for handling
|
||||
* Texture mapped fonts
|
||||
*
|
||||
* @see FTFont
|
||||
*/
|
||||
class FTGL_EXPORT FTTextureFont : public FTFont
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Open and read a font file. Sets Error flag.
|
||||
*
|
||||
* @param fontFilePath font file path.
|
||||
*/
|
||||
FTTextureFont(const char* fontFilePath);
|
||||
|
||||
/**
|
||||
* Open and read a font from a buffer in memory. Sets Error flag.
|
||||
* The buffer is owned by the client and is NOT copied by FTGL. The
|
||||
* pointer must be valid while using FTGL.
|
||||
*
|
||||
* @param pBufferBytes the in-memory buffer
|
||||
* @param bufferSizeInBytes the length of the buffer in bytes
|
||||
*/
|
||||
FTTextureFont(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~FTTextureFont();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Construct a glyph of the correct type.
|
||||
*
|
||||
* Clients must override the function and return their specialised
|
||||
* FTGlyph.
|
||||
*
|
||||
* @param slot A FreeType glyph slot.
|
||||
* @return An FT****Glyph or <code>null</code> on failure.
|
||||
*/
|
||||
virtual FTGlyph* MakeGlyph(FT_GlyphSlot slot);
|
||||
};
|
||||
|
||||
#define FTGLTextureFont FTTextureFont
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* Create a specialised FTGLfont object for handling texture-mapped fonts.
|
||||
*
|
||||
* @param file The font file name.
|
||||
* @return An FTGLfont* object.
|
||||
*
|
||||
* @see FTGLfont
|
||||
*/
|
||||
FTGL_EXPORT FTGLfont *ftglCreateTextureFont(const char *file);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTTextureFont__
|
||||
|
||||
201
bazaar/FTGL/FTGlyph.h
Normal file
201
bazaar/FTGL/FTGlyph.h
Normal file
|
|
@ -0,0 +1,201 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTGlyph__
|
||||
#define __FTGlyph__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
class FTGlyphImpl;
|
||||
|
||||
/**
|
||||
* FTGlyph is the base class for FTGL glyphs.
|
||||
*
|
||||
* It provides the interface between Freetype glyphs and their openGL
|
||||
* renderable counterparts. This is an abstract class and derived classes
|
||||
* must implement the <code>Render</code> function.
|
||||
*
|
||||
* @see FTBBox
|
||||
* @see FTPoint
|
||||
*/
|
||||
class FTGL_EXPORT FTGlyph
|
||||
{
|
||||
protected:
|
||||
/**
|
||||
* Create a glyph.
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed
|
||||
*/
|
||||
FTGlyph(FT_GlyphSlot glyph);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Internal FTGL FTGlyph constructor. For private use only.
|
||||
*
|
||||
* @param pImpl Internal implementation object. Will be destroyed
|
||||
* upon FTGlyph deletion.
|
||||
*/
|
||||
FTGlyph(FTGlyphImpl *pImpl);
|
||||
|
||||
/* Allow our internal subclasses to access the private constructor */
|
||||
friend class FTBitmapGlyph;
|
||||
friend class FTBufferGlyph;
|
||||
friend class FTExtrudeGlyph;
|
||||
friend class FTOutlineGlyph;
|
||||
friend class FTPixmapGlyph;
|
||||
friend class FTPolygonGlyph;
|
||||
friend class FTTextureGlyph;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~FTGlyph();
|
||||
|
||||
/**
|
||||
* Renders this glyph at the current pen position.
|
||||
*
|
||||
* @param pen The current pen position.
|
||||
* @param renderMode Render mode to display
|
||||
* @return The advance distance for this glyph.
|
||||
*/
|
||||
virtual const FTPoint& Render(const FTPoint& pen, int renderMode) = 0;
|
||||
|
||||
/**
|
||||
* Return the advance width for this glyph.
|
||||
*
|
||||
* @return advance width.
|
||||
*/
|
||||
virtual float Advance() const;
|
||||
|
||||
/**
|
||||
* Return the bounding box for this glyph.
|
||||
*
|
||||
* @return bounding box.
|
||||
*/
|
||||
virtual const FTBBox& BBox() const;
|
||||
|
||||
/**
|
||||
* Queries for errors.
|
||||
*
|
||||
* @return The current error code.
|
||||
*/
|
||||
virtual FT_Error Error() const;
|
||||
|
||||
private:
|
||||
/**
|
||||
* Internal FTGL FTGlyph implementation object. For private use only.
|
||||
*/
|
||||
FTGlyphImpl *impl;
|
||||
};
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* FTGLglyph is the base class for FTGL glyphs.
|
||||
*
|
||||
* It provides the interface between Freetype glyphs and their openGL
|
||||
* renderable counterparts. This is an abstract class and derived classes
|
||||
* must implement the ftglRenderGlyph() function.
|
||||
*/
|
||||
struct _FTGLGlyph;
|
||||
typedef struct _FTGLglyph FTGLglyph;
|
||||
|
||||
/**
|
||||
* Create a custom FTGL glyph object.
|
||||
* FIXME: maybe get rid of "base" and have advanceCallback etc. functions
|
||||
*
|
||||
* @param base The base FTGLglyph* to subclass.
|
||||
* @param data A pointer to private data that will be passed to callbacks.
|
||||
* @param renderCallback A rendering callback function.
|
||||
* @param destroyCallback A callback function to be called upon destruction.
|
||||
* @return An FTGLglyph* object.
|
||||
*/
|
||||
FTGL_EXPORT FTGLglyph *ftglCreateCustomGlyph(FTGLglyph *base, void *data,
|
||||
void (*renderCallback) (FTGLglyph *, void *, FTGL_DOUBLE, FTGL_DOUBLE,
|
||||
int, FTGL_DOUBLE *, FTGL_DOUBLE *),
|
||||
void (*destroyCallback) (FTGLglyph *, void *));
|
||||
|
||||
/**
|
||||
* Destroy an FTGL glyph object.
|
||||
*
|
||||
* @param glyph An FTGLglyph* object.
|
||||
*/
|
||||
FTGL_EXPORT void ftglDestroyGlyph(FTGLglyph *glyph);
|
||||
|
||||
/**
|
||||
* Render a glyph at the current pen position and compute the corresponding
|
||||
* advance.
|
||||
*
|
||||
* @param glyph An FTGLglyph* object.
|
||||
* @param penx The current pen's X position.
|
||||
* @param peny The current pen's Y position.
|
||||
* @param renderMode Render mode to display
|
||||
* @param advancex A pointer to an FTGL_DOUBLE where to write the advance's X
|
||||
* component.
|
||||
* @param advancey A pointer to an FTGL_DOUBLE where to write the advance's Y
|
||||
* component.
|
||||
*/
|
||||
FTGL_EXPORT void ftglRenderGlyph(FTGLglyph *glyph, FTGL_DOUBLE penx,
|
||||
FTGL_DOUBLE peny, int renderMode,
|
||||
FTGL_DOUBLE *advancex, FTGL_DOUBLE *advancey);
|
||||
/**
|
||||
* Return the advance for a glyph.
|
||||
*
|
||||
* @param glyph An FTGLglyph* object.
|
||||
* @return The advance's X component.
|
||||
*/
|
||||
FTGL_EXPORT float ftglGetGlyphAdvance(FTGLglyph *glyph);
|
||||
|
||||
/**
|
||||
* Return the bounding box for a glyph.
|
||||
*
|
||||
* @param glyph An FTGLglyph* object.
|
||||
* @param bounds An array of 6 float values where the bounding box's lower
|
||||
* left near and upper right far 3D coordinates will be stored.
|
||||
*/
|
||||
FTGL_EXPORT void ftglGetGlyphBBox(FTGLglyph *glyph, float bounds[6]);
|
||||
|
||||
/**
|
||||
* Query a glyph for errors.
|
||||
*
|
||||
* @param glyph An FTGLglyph* object.
|
||||
* @return The current error code.
|
||||
*/
|
||||
FTGL_EXPORT FT_Error ftglGetGlyphError(FTGLglyph* glyph);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTGlyph__
|
||||
|
||||
192
bazaar/FTGL/FTLayout.h
Normal file
192
bazaar/FTGL/FTLayout.h
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTLayout__
|
||||
#define __FTLayout__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
class FTLayoutImpl;
|
||||
|
||||
/**
|
||||
* FTLayout is the interface for layout managers that render text.
|
||||
*
|
||||
* Specific layout manager classes are derived from this class. This class
|
||||
* is abstract and deriving classes must implement the protected
|
||||
* <code>Render</code> methods to render formatted text and
|
||||
* <code>BBox</code> methods to determine the bounding box of output text.
|
||||
*
|
||||
* @see FTFont
|
||||
* @see FTBBox
|
||||
*/
|
||||
class FTGL_EXPORT FTLayout
|
||||
{
|
||||
protected:
|
||||
FTLayout();
|
||||
|
||||
private:
|
||||
/**
|
||||
* Internal FTGL FTLayout constructor. For private use only.
|
||||
*
|
||||
* @param pImpl Internal implementation object. Will be destroyed
|
||||
* upon FTLayout deletion.
|
||||
*/
|
||||
FTLayout(FTLayoutImpl *pImpl);
|
||||
|
||||
/* Allow our internal subclasses to access the private constructor */
|
||||
friend class FTSimpleLayout;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~FTLayout();
|
||||
|
||||
/**
|
||||
* Get the bounding box for a formatted string.
|
||||
*
|
||||
* @param string A char string.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be checked until a null character is encountered
|
||||
* (optional).
|
||||
* @param position The pen position of the first character (optional).
|
||||
* @return The corresponding bounding box.
|
||||
*/
|
||||
virtual FTBBox BBox(const char* string, const int len = -1,
|
||||
FTPoint position = FTPoint()) = 0;
|
||||
|
||||
/**
|
||||
* Get the bounding box for a formatted string.
|
||||
*
|
||||
* @param string A wchar_t string.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be checked until a null character is encountered
|
||||
* (optional).
|
||||
* @param position The pen position of the first character (optional).
|
||||
* @return The corresponding bounding box.
|
||||
*/
|
||||
virtual FTBBox BBox(const wchar_t* string, const int len = -1,
|
||||
FTPoint position = FTPoint()) = 0;
|
||||
|
||||
/**
|
||||
* Render a string of characters.
|
||||
*
|
||||
* @param string 'C' style string to be output.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be displayed until a null character is encountered
|
||||
* (optional).
|
||||
* @param position The pen position of the first character (optional).
|
||||
* @param renderMode Render mode to display (optional)
|
||||
*/
|
||||
virtual void Render(const char *string, const int len = -1,
|
||||
FTPoint position = FTPoint(),
|
||||
int renderMode = FTGL::RENDER_ALL) = 0;
|
||||
|
||||
/**
|
||||
* Render a string of characters.
|
||||
*
|
||||
* @param string wchar_t string to be output.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be displayed until a null character is encountered
|
||||
* (optional).
|
||||
* @param position The pen position of the first character (optional).
|
||||
* @param renderMode Render mode to display (optional)
|
||||
*/
|
||||
virtual void Render(const wchar_t *string, const int len = -1,
|
||||
FTPoint position = FTPoint(),
|
||||
int renderMode = FTGL::RENDER_ALL) = 0;
|
||||
|
||||
/**
|
||||
* Queries the Layout for errors.
|
||||
*
|
||||
* @return The current error code.
|
||||
*/
|
||||
virtual FT_Error Error() const;
|
||||
|
||||
private:
|
||||
/**
|
||||
* Internal FTGL FTLayout implementation object. For private use only.
|
||||
*/
|
||||
FTLayoutImpl *impl;
|
||||
};
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* FTGLlayout is the interface for layout managers that render text.
|
||||
*/
|
||||
struct _FTGLlayout;
|
||||
typedef struct _FTGLlayout FTGLlayout;
|
||||
|
||||
/**
|
||||
* Destroy an FTGL layout object.
|
||||
*
|
||||
* @param layout An FTGLlayout* object.
|
||||
*/
|
||||
FTGL_EXPORT void ftglDestroyLayout(FTGLlayout* layout);
|
||||
|
||||
/**
|
||||
* Get the bounding box for a string.
|
||||
*
|
||||
* @param layout An FTGLlayout* object.
|
||||
* @param string A char buffer
|
||||
* @param bounds An array of 6 float values where the bounding box's lower
|
||||
* left near and upper right far 3D coordinates will be stored.
|
||||
*/
|
||||
FTGL_EXPORT void ftglGetLayoutBBox(FTGLlayout *layout, const char* string,
|
||||
float bounds[6]);
|
||||
|
||||
/**
|
||||
* Render a string of characters.
|
||||
*
|
||||
* @param layout An FTGLlayout* object.
|
||||
* @param string Char string to be output.
|
||||
* @param mode Render mode to display.
|
||||
*/
|
||||
FTGL_EXPORT void ftglRenderLayout(FTGLlayout *layout, const char *string,
|
||||
int mode);
|
||||
|
||||
/**
|
||||
* Query a layout for errors.
|
||||
*
|
||||
* @param layout An FTGLlayout* object.
|
||||
* @return The current error code.
|
||||
*/
|
||||
FTGL_EXPORT FT_Error ftglGetLayoutError(FTGLlayout* layout);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif /* __FTLayout__ */
|
||||
|
||||
94
bazaar/FTGL/FTOutlineGlyph.h
Normal file
94
bazaar/FTGL/FTOutlineGlyph.h
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTOutlineGlyph__
|
||||
#define __FTOutlineGlyph__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTOutlineGlyph is a specialisation of FTGlyph for creating outlines.
|
||||
*/
|
||||
class FTGL_EXPORT FTOutlineGlyph : public FTGlyph
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor. Sets the Error to Invalid_Outline if the glyphs isn't
|
||||
* an outline.
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed
|
||||
* @param outset outset distance
|
||||
* @param useDisplayList Enable or disable the use of Display Lists
|
||||
* for this glyph
|
||||
* <code>true</code> turns ON display lists.
|
||||
* <code>false</code> turns OFF display lists.
|
||||
*/
|
||||
FTOutlineGlyph(FT_GlyphSlot glyph, float outset, bool useDisplayList);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~FTOutlineGlyph();
|
||||
|
||||
/**
|
||||
* Render this glyph at the current pen position.
|
||||
*
|
||||
* @param pen The current pen position.
|
||||
* @param renderMode Render mode to display
|
||||
* @return The advance distance for this glyph.
|
||||
*/
|
||||
virtual const FTPoint& Render(const FTPoint& pen, int renderMode);
|
||||
};
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* Create a specialisation of FTGLglyph for creating outlines.
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed
|
||||
* @param outset outset contour size
|
||||
* @param useDisplayList Enable or disable the use of Display Lists
|
||||
* for this glyph
|
||||
* <code>true</code> turns ON display lists.
|
||||
* <code>false</code> turns OFF display lists.
|
||||
* @return An FTGLglyph* object.
|
||||
*/
|
||||
FTGL_EXPORT FTGLglyph *ftglCreateOutlineGlyph(FT_GlyphSlot glyph, float outset,
|
||||
int useDisplayList);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTOutlineGlyph__
|
||||
|
||||
82
bazaar/FTGL/FTPixmapGlyph.h
Normal file
82
bazaar/FTGL/FTPixmapGlyph.h
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTPixmapGlyph__
|
||||
#define __FTPixmapGlyph__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTPixmapGlyph is a specialisation of FTGlyph for creating pixmaps.
|
||||
*/
|
||||
class FTGL_EXPORT FTPixmapGlyph : public FTGlyph
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed
|
||||
*/
|
||||
FTPixmapGlyph(FT_GlyphSlot glyph);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~FTPixmapGlyph();
|
||||
|
||||
/**
|
||||
* Render this glyph at the current pen position.
|
||||
*
|
||||
* @param pen The current pen position.
|
||||
* @param renderMode Render mode to display
|
||||
* @return The advance distance for this glyph.
|
||||
*/
|
||||
virtual const FTPoint& Render(const FTPoint& pen, int renderMode);
|
||||
};
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* Create a specialisation of FTGLglyph for creating pixmaps.
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed
|
||||
* @return An FTGLglyph* object.
|
||||
*/
|
||||
FTGL_EXPORT FTGLglyph *ftglCreatePixmapGlyph(FT_GlyphSlot glyph);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTPixmapGlyph__
|
||||
|
||||
274
bazaar/FTGL/FTPoint.h
Normal file
274
bazaar/FTGL/FTPoint.h
Normal file
|
|
@ -0,0 +1,274 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTPoint__
|
||||
#define __FTPoint__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTPoint class is a basic 3-dimensional point or vector.
|
||||
*/
|
||||
class FTGL_EXPORT FTPoint
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Default constructor. Point is set to zero.
|
||||
*/
|
||||
inline FTPoint()
|
||||
{
|
||||
values[0] = 0;
|
||||
values[1] = 0;
|
||||
values[2] = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor. Z coordinate is set to zero if unspecified.
|
||||
*
|
||||
* @param x First component
|
||||
* @param y Second component
|
||||
* @param z Third component
|
||||
*/
|
||||
inline FTPoint(const FTGL_DOUBLE x, const FTGL_DOUBLE y,
|
||||
const FTGL_DOUBLE z = 0)
|
||||
{
|
||||
values[0] = x;
|
||||
values[1] = y;
|
||||
values[2] = z;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor. This converts an FT_Vector to an FTPoint
|
||||
*
|
||||
* @param ft_vector A freetype vector
|
||||
*/
|
||||
inline FTPoint(const FT_Vector& ft_vector)
|
||||
{
|
||||
values[0] = ft_vector.x;
|
||||
values[1] = ft_vector.y;
|
||||
values[2] = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalise a point's coordinates. If the coordinates are zero,
|
||||
* the point is left untouched.
|
||||
*
|
||||
* @return A vector of norm one.
|
||||
*/
|
||||
FTPoint Normalise();
|
||||
|
||||
|
||||
/**
|
||||
* Operator += In Place Addition.
|
||||
*
|
||||
* @param point
|
||||
* @return this plus point.
|
||||
*/
|
||||
inline FTPoint& operator += (const FTPoint& point)
|
||||
{
|
||||
values[0] += point.values[0];
|
||||
values[1] += point.values[1];
|
||||
values[2] += point.values[2];
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Operator +
|
||||
*
|
||||
* @param point
|
||||
* @return this plus point.
|
||||
*/
|
||||
inline FTPoint operator + (const FTPoint& point) const
|
||||
{
|
||||
FTPoint temp;
|
||||
temp.values[0] = values[0] + point.values[0];
|
||||
temp.values[1] = values[1] + point.values[1];
|
||||
temp.values[2] = values[2] + point.values[2];
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Operator -= In Place Substraction.
|
||||
*
|
||||
* @param point
|
||||
* @return this minus point.
|
||||
*/
|
||||
inline FTPoint& operator -= (const FTPoint& point)
|
||||
{
|
||||
values[0] -= point.values[0];
|
||||
values[1] -= point.values[1];
|
||||
values[2] -= point.values[2];
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Operator -
|
||||
*
|
||||
* @param point
|
||||
* @return this minus point.
|
||||
*/
|
||||
inline FTPoint operator - (const FTPoint& point) const
|
||||
{
|
||||
FTPoint temp;
|
||||
temp.values[0] = values[0] - point.values[0];
|
||||
temp.values[1] = values[1] - point.values[1];
|
||||
temp.values[2] = values[2] - point.values[2];
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Operator * Scalar multiplication
|
||||
*
|
||||
* @param multiplier
|
||||
* @return <code>this</code> multiplied by <code>multiplier</code>.
|
||||
*/
|
||||
inline FTPoint operator * (double multiplier) const
|
||||
{
|
||||
FTPoint temp;
|
||||
temp.values[0] = values[0] * multiplier;
|
||||
temp.values[1] = values[1] * multiplier;
|
||||
temp.values[2] = values[2] * multiplier;
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Operator * Scalar multiplication
|
||||
*
|
||||
* @param point
|
||||
* @param multiplier
|
||||
* @return <code>multiplier</code> multiplied by <code>point</code>.
|
||||
*/
|
||||
inline friend FTPoint operator * (double multiplier, FTPoint& point)
|
||||
{
|
||||
return point * multiplier;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Operator * Scalar product
|
||||
*
|
||||
* @param a First vector.
|
||||
* @param b Second vector.
|
||||
* @return <code>a.b</code> scalar product.
|
||||
*/
|
||||
inline friend double operator * (FTPoint &a, FTPoint& b)
|
||||
{
|
||||
return a.values[0] * b.values[0]
|
||||
+ a.values[1] * b.values[1]
|
||||
+ a.values[2] * b.values[2];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Operator ^ Vector product
|
||||
*
|
||||
* @param point Second point
|
||||
* @return this vector point.
|
||||
*/
|
||||
inline FTPoint operator ^ (const FTPoint& point)
|
||||
{
|
||||
FTPoint temp;
|
||||
temp.values[0] = values[1] * point.values[2]
|
||||
- values[2] * point.values[1];
|
||||
temp.values[1] = values[2] * point.values[0]
|
||||
- values[0] * point.values[2];
|
||||
temp.values[2] = values[0] * point.values[1]
|
||||
- values[1] * point.values[0];
|
||||
return temp;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Operator == Tests for equality
|
||||
*
|
||||
* @param a
|
||||
* @param b
|
||||
* @return true if a & b are equal
|
||||
*/
|
||||
friend bool operator == (const FTPoint &a, const FTPoint &b);
|
||||
|
||||
|
||||
/**
|
||||
* Operator != Tests for non equality
|
||||
*
|
||||
* @param a
|
||||
* @param b
|
||||
* @return true if a & b are not equal
|
||||
*/
|
||||
friend bool operator != (const FTPoint &a, const FTPoint &b);
|
||||
|
||||
|
||||
/**
|
||||
* Cast to FTGL_DOUBLE*
|
||||
*/
|
||||
inline operator const FTGL_DOUBLE*() const
|
||||
{
|
||||
return values;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Setters
|
||||
*/
|
||||
inline void X(FTGL_DOUBLE x) { values[0] = x; };
|
||||
inline void Y(FTGL_DOUBLE y) { values[1] = y; };
|
||||
inline void Z(FTGL_DOUBLE z) { values[2] = z; };
|
||||
|
||||
|
||||
/**
|
||||
* Getters
|
||||
*/
|
||||
inline FTGL_DOUBLE X() const { return values[0]; };
|
||||
inline FTGL_DOUBLE Y() const { return values[1]; };
|
||||
inline FTGL_DOUBLE Z() const { return values[2]; };
|
||||
inline FTGL_FLOAT Xf() const { return static_cast<FTGL_FLOAT>(values[0]); };
|
||||
inline FTGL_FLOAT Yf() const { return static_cast<FTGL_FLOAT>(values[1]); };
|
||||
inline FTGL_FLOAT Zf() const { return static_cast<FTGL_FLOAT>(values[2]); };
|
||||
|
||||
private:
|
||||
/**
|
||||
* The point data
|
||||
*/
|
||||
FTGL_DOUBLE values[3];
|
||||
};
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
#endif // __FTPoint__
|
||||
|
||||
98
bazaar/FTGL/FTPolyGlyph.h
Normal file
98
bazaar/FTGL/FTPolyGlyph.h
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTPolygonGlyph__
|
||||
#define __FTPolygonGlyph__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTPolygonGlyph is a specialisation of FTGlyph for creating tessellated
|
||||
* polygon glyphs.
|
||||
*/
|
||||
class FTGL_EXPORT FTPolygonGlyph : public FTGlyph
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor. Sets the Error to Invalid_Outline if the glyphs
|
||||
* isn't an outline.
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed
|
||||
* @param outset The outset distance
|
||||
* @param useDisplayList Enable or disable the use of Display Lists
|
||||
* for this glyph
|
||||
* <code>true</code> turns ON display lists.
|
||||
* <code>false</code> turns OFF display lists.
|
||||
*/
|
||||
FTPolygonGlyph(FT_GlyphSlot glyph, float outset, bool useDisplayList);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~FTPolygonGlyph();
|
||||
|
||||
/**
|
||||
* Render this glyph at the current pen position.
|
||||
*
|
||||
* @param pen The current pen position.
|
||||
* @param renderMode Render mode to display
|
||||
* @return The advance distance for this glyph.
|
||||
*/
|
||||
virtual const FTPoint& Render(const FTPoint& pen, int renderMode);
|
||||
};
|
||||
|
||||
#define FTPolyGlyph FTPolygonGlyph
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* Create a specialisation of FTGLglyph for creating tessellated
|
||||
* polygon glyphs.
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed
|
||||
* @param outset outset contour size
|
||||
* @param useDisplayList Enable or disable the use of Display Lists
|
||||
* for this glyph
|
||||
* <code>true</code> turns ON display lists.
|
||||
* <code>false</code> turns OFF display lists.
|
||||
* @return An FTGLglyph* object.
|
||||
*/
|
||||
FTGL_EXPORT FTGLglyph *ftglCreatePolygonGlyph(FT_GlyphSlot glyph, float outset,
|
||||
int useDisplayList);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTPolygonGlyph__
|
||||
|
||||
191
bazaar/FTGL/FTSimpleLayout.h
Normal file
191
bazaar/FTGL/FTSimpleLayout.h
Normal file
|
|
@ -0,0 +1,191 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTSimpleLayout__
|
||||
#define __FTSimpleLayout__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
class FTFont;
|
||||
|
||||
/**
|
||||
* FTSimpleLayout is a specialisation of FTLayout for simple text boxes.
|
||||
*
|
||||
* This class has basic support for text wrapping, left, right and centered
|
||||
* alignment, and text justification.
|
||||
*
|
||||
* @see FTLayout
|
||||
*/
|
||||
class FTGL_EXPORT FTSimpleLayout : public FTLayout
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Initializes line spacing to 1.0, alignment to
|
||||
* ALIGN_LEFT and wrap to 100.0
|
||||
*/
|
||||
FTSimpleLayout();
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTSimpleLayout();
|
||||
|
||||
/**
|
||||
* Get the bounding box for a formatted string.
|
||||
*
|
||||
* @param string A char string.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be checked until a null character is encountered
|
||||
* (optional).
|
||||
* @param position The pen position of the first character (optional).
|
||||
* @return The corresponding bounding box.
|
||||
*/
|
||||
virtual FTBBox BBox(const char* string, const int len = -1,
|
||||
FTPoint position = FTPoint());
|
||||
|
||||
/**
|
||||
* Get the bounding box for a formatted string.
|
||||
*
|
||||
* @param string A wchar_t string.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be checked until a null character is encountered
|
||||
* (optional).
|
||||
* @param position The pen position of the first character (optional).
|
||||
* @return The corresponding bounding box.
|
||||
*/
|
||||
virtual FTBBox BBox(const wchar_t* string, const int len = -1,
|
||||
FTPoint position = FTPoint());
|
||||
|
||||
/**
|
||||
* Render a string of characters.
|
||||
*
|
||||
* @param string 'C' style string to be output.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be displayed until a null character is encountered
|
||||
* (optional).
|
||||
* @param position The pen position of the first character (optional).
|
||||
* @param renderMode Render mode to display (optional)
|
||||
*/
|
||||
virtual void Render(const char *string, const int len = -1,
|
||||
FTPoint position = FTPoint(),
|
||||
int renderMode = FTGL::RENDER_ALL);
|
||||
|
||||
/**
|
||||
* Render a string of characters.
|
||||
*
|
||||
* @param string wchar_t string to be output.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be displayed until a null character is encountered
|
||||
* (optional).
|
||||
* @param position The pen position of the first character (optional).
|
||||
* @param renderMode Render mode to display (optional)
|
||||
*/
|
||||
virtual void Render(const wchar_t *string, const int len = -1,
|
||||
FTPoint position = FTPoint(),
|
||||
int renderMode = FTGL::RENDER_ALL);
|
||||
|
||||
/**
|
||||
* Set the font to use for rendering the text.
|
||||
*
|
||||
* @param fontInit A pointer to the new font. The font is
|
||||
* referenced by this but will not be
|
||||
* disposed of when this is deleted.
|
||||
*/
|
||||
void SetFont(FTFont *fontInit);
|
||||
|
||||
/**
|
||||
* @return The current font.
|
||||
*/
|
||||
FTFont *GetFont();
|
||||
|
||||
/**
|
||||
* The maximum line length for formatting text.
|
||||
*
|
||||
* @param LineLength The new line length.
|
||||
*/
|
||||
void SetLineLength(const float LineLength);
|
||||
|
||||
/**
|
||||
* @return The current line length.
|
||||
*/
|
||||
float GetLineLength() const;
|
||||
|
||||
/**
|
||||
* The text alignment mode used to distribute
|
||||
* space within a line or rendered text.
|
||||
*
|
||||
* @param Alignment The new alignment mode.
|
||||
*/
|
||||
void SetAlignment(const FTGL::TextAlignment Alignment);
|
||||
|
||||
/**
|
||||
* @return The text alignment mode.
|
||||
*/
|
||||
FTGL::TextAlignment GetAlignment() const;
|
||||
|
||||
/**
|
||||
* Sets the line height.
|
||||
*
|
||||
* @param LineSpacing The height of each line of text expressed as
|
||||
* a percentage of the current fonts line height.
|
||||
*/
|
||||
void SetLineSpacing(const float LineSpacing);
|
||||
|
||||
/**
|
||||
* @return The line spacing.
|
||||
*/
|
||||
float GetLineSpacing() const;
|
||||
};
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
FTGL_EXPORT FTGLlayout *ftglCreateSimpleLayout(void);
|
||||
|
||||
FTGL_EXPORT void ftglSetLayoutFont(FTGLlayout *, FTGLfont*);
|
||||
FTGL_EXPORT FTGLfont *ftglGetLayoutFont(FTGLlayout *);
|
||||
|
||||
FTGL_EXPORT void ftglSetLayoutLineLength(FTGLlayout *, const float);
|
||||
FTGL_EXPORT float ftglGetLayoutLineLength(FTGLlayout *);
|
||||
|
||||
FTGL_EXPORT void ftglSetLayoutAlignment(FTGLlayout *, const int);
|
||||
FTGL_EXPORT int ftglGetLayoutAlignement(FTGLlayout *);
|
||||
|
||||
FTGL_EXPORT void ftglSetLayoutLineSpacing(FTGLlayout *, const float);
|
||||
FTGL_EXPORT float ftglGetLayoutLineSpacing(FTGLlayout *);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif /* __FTSimpleLayout__ */
|
||||
|
||||
99
bazaar/FTGL/FTTextureGlyph.h
Normal file
99
bazaar/FTGL/FTTextureGlyph.h
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
|
||||
# include <FTGL/ftgl.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FTTextureGlyph__
|
||||
#define __FTTextureGlyph__
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
|
||||
/**
|
||||
* FTTextureGlyph is a specialisation of FTGlyph for creating texture
|
||||
* glyphs.
|
||||
*/
|
||||
class FTGL_EXPORT FTTextureGlyph : public FTGlyph
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed
|
||||
* @param id The id of the texture that this glyph will be
|
||||
* drawn in
|
||||
* @param xOffset The x offset into the parent texture to draw
|
||||
* this glyph
|
||||
* @param yOffset The y offset into the parent texture to draw
|
||||
* this glyph
|
||||
* @param width The width of the parent texture
|
||||
* @param height The height (number of rows) of the parent texture
|
||||
*/
|
||||
FTTextureGlyph(FT_GlyphSlot glyph, int id, int xOffset, int yOffset,
|
||||
int width, int height);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~FTTextureGlyph();
|
||||
|
||||
/**
|
||||
* Render this glyph at the current pen position.
|
||||
*
|
||||
* @param pen The current pen position.
|
||||
* @param renderMode Render mode to display
|
||||
* @return The advance distance for this glyph.
|
||||
*/
|
||||
virtual const FTPoint& Render(const FTPoint& pen, int renderMode);
|
||||
};
|
||||
|
||||
#endif //__cplusplus
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
/**
|
||||
* Create a specialisation of FTGLglyph for creating pixmaps.
|
||||
*
|
||||
* @param glyph The Freetype glyph to be processed.
|
||||
* @param id The id of the texture that this glyph will be drawn in.
|
||||
* @param xOffset The x offset into the parent texture to draw this glyph.
|
||||
* @param yOffset The y offset into the parent texture to draw this glyph.
|
||||
* @param width The width of the parent texture.
|
||||
* @param height The height (number of rows) of the parent texture.
|
||||
* @return An FTGLglyph* object.
|
||||
*/
|
||||
FTGL_EXPORT FTGLglyph *ftglCreateTextureGlyph(FT_GlyphSlot glyph, int id,
|
||||
int xOffset, int yOffset,
|
||||
int width, int height);
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif // __FTTextureGlyph__
|
||||
|
||||
135
bazaar/FTGL/ftgl.h
Normal file
135
bazaar/FTGL/ftgl.h
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
|
||||
*
|
||||
* 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__
|
||||
|
||||
/* We need the Freetype headers */
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_GLYPH_H
|
||||
#include FT_OUTLINE_H
|
||||
|
||||
/* Floating point types used by the library */
|
||||
typedef double FTGL_DOUBLE;
|
||||
typedef float FTGL_FLOAT;
|
||||
|
||||
/* Macros used to declare C-linkage types and symbols */
|
||||
#ifdef __cplusplus
|
||||
# define FTGL_BEGIN_C_DECLS extern "C" { namespace FTGL {
|
||||
# define FTGL_END_C_DECLS } }
|
||||
#else
|
||||
# define FTGL_BEGIN_C_DECLS
|
||||
# define FTGL_END_C_DECLS
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
namespace FTGL
|
||||
{
|
||||
typedef enum
|
||||
{
|
||||
RENDER_FRONT = 0x0001,
|
||||
RENDER_BACK = 0x0002,
|
||||
RENDER_SIDE = 0x0004,
|
||||
RENDER_ALL = 0xffff
|
||||
} RenderMode;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ALIGN_LEFT = 0,
|
||||
ALIGN_CENTER = 1,
|
||||
ALIGN_RIGHT = 2,
|
||||
ALIGN_JUSTIFY = 3
|
||||
} TextAlignment;
|
||||
}
|
||||
#else
|
||||
# define FTGL_RENDER_FRONT 0x0001
|
||||
# define FTGL_RENDER_BACK 0x0002
|
||||
# define FTGL_RENDER_SIDE 0x0004
|
||||
# define FTGL_RENDER_ALL 0xffff
|
||||
|
||||
# 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 <FTGL/FTPoint.h>
|
||||
#include <FTGL/FTBBox.h>
|
||||
#include <FTGL/FTBuffer.h>
|
||||
|
||||
#include <FTGL/FTGlyph.h>
|
||||
#include <FTGL/FTBitmapGlyph.h>
|
||||
#include <FTGL/FTBufferGlyph.h>
|
||||
#include <FTGL/FTExtrdGlyph.h>
|
||||
#include <FTGL/FTOutlineGlyph.h>
|
||||
#include <FTGL/FTPixmapGlyph.h>
|
||||
#include <FTGL/FTPolyGlyph.h>
|
||||
#include <FTGL/FTTextureGlyph.h>
|
||||
|
||||
#include <FTGL/FTFont.h>
|
||||
#include <FTGL/FTGLBitmapFont.h>
|
||||
#include <FTGL/FTBufferFont.h>
|
||||
#include <FTGL/FTGLExtrdFont.h>
|
||||
#include <FTGL/FTGLOutlineFont.h>
|
||||
#include <FTGL/FTGLPixmapFont.h>
|
||||
#include <FTGL/FTGLPolygonFont.h>
|
||||
#include <FTGL/FTGLTextureFont.h>
|
||||
|
||||
#include <FTGL/FTLayout.h>
|
||||
#include <FTGL/FTSimpleLayout.h>
|
||||
|
||||
#endif // __ftgl__
|
||||
4
bazaar/FTGL/init
Normal file
4
bazaar/FTGL/init
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
#ifndef _FTGL_icpp_init_stub
|
||||
#define _FTGL_icpp_init_stub
|
||||
#include "freetype/init"
|
||||
#endif
|
||||
69
bazaar/FTGL/src/FTBuffer.cpp
Normal file
69
bazaar/FTGL/src/FTBuffer.cpp
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
|
||||
FTBuffer::FTBuffer()
|
||||
: width(0),
|
||||
height(0),
|
||||
pixels(0),
|
||||
pos(FTPoint())
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
FTBuffer::~FTBuffer()
|
||||
{
|
||||
if(pixels)
|
||||
{
|
||||
delete[] pixels;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FTBuffer::Size(int w, int h)
|
||||
{
|
||||
if(w == width && h == height)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(w * h != width * height)
|
||||
{
|
||||
if(pixels)
|
||||
{
|
||||
delete[] pixels;
|
||||
}
|
||||
pixels = new unsigned char[w * h];
|
||||
}
|
||||
|
||||
memset(pixels, 0, w * h);
|
||||
width = w;
|
||||
height = h;
|
||||
}
|
||||
|
||||
155
bazaar/FTGL/src/FTCharToGlyphIndexMap.h
Normal file
155
bazaar/FTGL/src/FTCharToGlyphIndexMap.h
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
/*
|
||||
* 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 __FTCharToGlyphIndexMap__
|
||||
#define __FTCharToGlyphIndexMap__
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
/**
|
||||
* Provides a non-STL alternative to the STL map<unsigned long, unsigned long>
|
||||
* which maps character codes to glyph indices inside FTCharmap.
|
||||
*
|
||||
* Implementation:
|
||||
* - NumberOfBuckets buckets are considered.
|
||||
* - Each bucket has BucketSize entries.
|
||||
* - When the glyph index for the character code C has to be stored, the
|
||||
* bucket this character belongs to is found using 'C div BucketSize'.
|
||||
* If this bucket has not been allocated yet, do it now.
|
||||
* The entry in the bucked is found using 'C mod BucketSize'.
|
||||
* If it is set to IndexNotFound, then the glyph entry has not been set.
|
||||
* - Try to mimic the calls made to the STL map API.
|
||||
*
|
||||
* Caveats:
|
||||
* - The glyph index is now a signed long instead of unsigned long, so
|
||||
* the special value IndexNotFound (= -1) can be used to specify that the
|
||||
* glyph index has not been stored yet.
|
||||
*/
|
||||
class FTCharToGlyphIndexMap
|
||||
{
|
||||
public:
|
||||
|
||||
typedef unsigned long CharacterCode;
|
||||
typedef signed long GlyphIndex;
|
||||
|
||||
enum
|
||||
{
|
||||
NumberOfBuckets = 256,
|
||||
BucketSize = 256,
|
||||
IndexNotFound = -1
|
||||
};
|
||||
|
||||
FTCharToGlyphIndexMap()
|
||||
{
|
||||
this->Indices = 0;
|
||||
}
|
||||
|
||||
virtual ~FTCharToGlyphIndexMap()
|
||||
{
|
||||
if(this->Indices)
|
||||
{
|
||||
// Free all buckets
|
||||
this->clear();
|
||||
|
||||
// Free main structure
|
||||
delete [] this->Indices;
|
||||
this->Indices = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
if(this->Indices)
|
||||
{
|
||||
for(int i = 0; i < FTCharToGlyphIndexMap::NumberOfBuckets; i++)
|
||||
{
|
||||
if(this->Indices[i])
|
||||
{
|
||||
delete [] this->Indices[i];
|
||||
this->Indices[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const GlyphIndex find(CharacterCode c)
|
||||
{
|
||||
if(!this->Indices)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Find position of char code in buckets
|
||||
div_t pos = div(c, FTCharToGlyphIndexMap::BucketSize);
|
||||
|
||||
if(!this->Indices[pos.quot])
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
const FTCharToGlyphIndexMap::GlyphIndex *ptr = &this->Indices[pos.quot][pos.rem];
|
||||
if(*ptr == FTCharToGlyphIndexMap::IndexNotFound)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return *ptr;
|
||||
}
|
||||
|
||||
void insert(CharacterCode c, GlyphIndex g)
|
||||
{
|
||||
if(!this->Indices)
|
||||
{
|
||||
this->Indices = new GlyphIndex* [FTCharToGlyphIndexMap::NumberOfBuckets];
|
||||
for(int i = 0; i < FTCharToGlyphIndexMap::NumberOfBuckets; i++)
|
||||
{
|
||||
this->Indices[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Find position of char code in buckets
|
||||
div_t pos = div(c, FTCharToGlyphIndexMap::BucketSize);
|
||||
|
||||
// Allocate bucket if does not exist yet
|
||||
if(!this->Indices[pos.quot])
|
||||
{
|
||||
this->Indices[pos.quot] = new GlyphIndex [FTCharToGlyphIndexMap::BucketSize];
|
||||
for(int i = 0; i < FTCharToGlyphIndexMap::BucketSize; i++)
|
||||
{
|
||||
this->Indices[pos.quot][i] = FTCharToGlyphIndexMap::IndexNotFound;
|
||||
}
|
||||
}
|
||||
|
||||
this->Indices[pos.quot][pos.rem] = g;
|
||||
}
|
||||
|
||||
private:
|
||||
GlyphIndex** Indices;
|
||||
};
|
||||
|
||||
|
||||
#endif // __FTCharToGlyphIndexMap__
|
||||
106
bazaar/FTGL/src/FTCharmap.cpp
Normal file
106
bazaar/FTGL/src/FTCharmap.cpp
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "FTFace.h"
|
||||
#include "FTCharmap.h"
|
||||
|
||||
|
||||
FTCharmap::FTCharmap(FTFace* face)
|
||||
: ftFace(*(face->Face())),
|
||||
err(0)
|
||||
{
|
||||
if(!ftFace->charmap)
|
||||
{
|
||||
if(!ftFace->num_charmaps)
|
||||
{
|
||||
// This face doesn't even have one charmap!
|
||||
err = 0x96; // Invalid_CharMap_Format
|
||||
return;
|
||||
}
|
||||
|
||||
err = FT_Set_Charmap(ftFace, ftFace->charmaps[0]);
|
||||
}
|
||||
|
||||
ftEncoding = ftFace->charmap->encoding;
|
||||
|
||||
for(unsigned int i = 0; i < FTCharmap::MAX_PRECOMPUTED; i++)
|
||||
{
|
||||
charIndexCache[i] = FT_Get_Char_Index(ftFace, i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FTCharmap::~FTCharmap()
|
||||
{
|
||||
charMap.clear();
|
||||
}
|
||||
|
||||
|
||||
bool FTCharmap::CharMap(FT_Encoding encoding)
|
||||
{
|
||||
if(ftEncoding == encoding)
|
||||
{
|
||||
err = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
err = FT_Select_Charmap(ftFace, encoding);
|
||||
|
||||
if(!err)
|
||||
{
|
||||
ftEncoding = encoding;
|
||||
charMap.clear();
|
||||
}
|
||||
|
||||
return !err;
|
||||
}
|
||||
|
||||
|
||||
unsigned int FTCharmap::GlyphListIndex(const unsigned int characterCode)
|
||||
{
|
||||
return charMap.find(characterCode);
|
||||
}
|
||||
|
||||
|
||||
unsigned int FTCharmap::FontIndex(const unsigned int characterCode)
|
||||
{
|
||||
if(characterCode < FTCharmap::MAX_PRECOMPUTED)
|
||||
{
|
||||
return charIndexCache[characterCode];
|
||||
}
|
||||
|
||||
return FT_Get_Char_Index(ftFace, characterCode);
|
||||
}
|
||||
|
||||
|
||||
void FTCharmap::InsertIndex(const unsigned int characterCode,
|
||||
const size_t containerIndex)
|
||||
{
|
||||
charMap.insert(characterCode, static_cast<FTCharToGlyphIndexMap::GlyphIndex>(containerIndex));
|
||||
}
|
||||
|
||||
165
bazaar/FTGL/src/FTCharmap.h
Normal file
165
bazaar/FTGL/src/FTCharmap.h
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
/*
|
||||
* 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 __FTCharmap__
|
||||
#define __FTCharmap__
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_GLYPH_H
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
#include "FTCharToGlyphIndexMap.h"
|
||||
|
||||
|
||||
/**
|
||||
* FTCharmap takes care of specifying the encoding for a font and mapping
|
||||
* character codes to glyph indices.
|
||||
*
|
||||
* It doesn't preprocess all indices, only on an as needed basis. This may
|
||||
* seem like a performance penalty but it is quicker than using the 'raw'
|
||||
* freetype calls and will save significant amounts of memory when dealing
|
||||
* with unicode encoding
|
||||
*
|
||||
* @see "Freetype 2 Documentation"
|
||||
*
|
||||
*/
|
||||
|
||||
class FTFace;
|
||||
|
||||
class FTCharmap
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
FTCharmap(FTFace* face);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~FTCharmap();
|
||||
|
||||
/**
|
||||
* Queries for the current character map code.
|
||||
*
|
||||
* @return The current character map code.
|
||||
*/
|
||||
FT_Encoding Encoding() const { return ftEncoding; }
|
||||
|
||||
/**
|
||||
* Sets the character map for the face. If an error occurs the object is not modified.
|
||||
* Valid encodings as at Freetype 2.0.4
|
||||
* ft_encoding_none
|
||||
* ft_encoding_symbol
|
||||
* ft_encoding_unicode
|
||||
* ft_encoding_latin_2
|
||||
* ft_encoding_sjis
|
||||
* ft_encoding_gb2312
|
||||
* ft_encoding_big5
|
||||
* ft_encoding_wansung
|
||||
* ft_encoding_johab
|
||||
* ft_encoding_adobe_standard
|
||||
* ft_encoding_adobe_expert
|
||||
* ft_encoding_adobe_custom
|
||||
* ft_encoding_apple_roman
|
||||
*
|
||||
* @param encoding the Freetype encoding symbol. See above.
|
||||
* @return <code>true</code> if charmap was valid and set
|
||||
* correctly.
|
||||
*/
|
||||
bool CharMap(FT_Encoding encoding);
|
||||
|
||||
/**
|
||||
* Get the FTGlyphContainer index of the input character.
|
||||
*
|
||||
* @param characterCode The character code of the requested glyph in
|
||||
* the current encoding eg apple roman.
|
||||
* @return The FTGlyphContainer index for the character or zero
|
||||
* if it wasn't found
|
||||
*/
|
||||
unsigned int GlyphListIndex(const unsigned int characterCode);
|
||||
|
||||
/**
|
||||
* Get the font glyph index of the input character.
|
||||
*
|
||||
* @param characterCode The character code of the requested glyph in
|
||||
* the current encoding eg apple roman.
|
||||
* @return The glyph index for the character.
|
||||
*/
|
||||
unsigned int FontIndex(const unsigned int characterCode);
|
||||
|
||||
/**
|
||||
* Set the FTGlyphContainer index of the character code.
|
||||
*
|
||||
* @param characterCode The character code of the requested glyph in
|
||||
* the current encoding eg apple roman.
|
||||
* @param containerIndex The index into the FTGlyphContainer of the
|
||||
* character code.
|
||||
*/
|
||||
void InsertIndex(const unsigned int characterCode,
|
||||
const size_t containerIndex);
|
||||
|
||||
/**
|
||||
* Queries for errors.
|
||||
*
|
||||
* @return The current error code. Zero means no error.
|
||||
*/
|
||||
FT_Error Error() const { return err; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* Current character map code.
|
||||
*/
|
||||
FT_Encoding ftEncoding;
|
||||
|
||||
/**
|
||||
* The current Freetype face.
|
||||
*/
|
||||
const FT_Face ftFace;
|
||||
|
||||
/**
|
||||
* A structure that maps glyph indices to character codes
|
||||
*
|
||||
* < character code, face glyph index>
|
||||
*/
|
||||
typedef FTCharToGlyphIndexMap CharacterMap;
|
||||
CharacterMap charMap;
|
||||
|
||||
/**
|
||||
* Precomputed font indices.
|
||||
*/
|
||||
static const unsigned int MAX_PRECOMPUTED = 128;
|
||||
unsigned int charIndexCache[MAX_PRECOMPUTED];
|
||||
|
||||
/**
|
||||
* Current error code.
|
||||
*/
|
||||
FT_Error err;
|
||||
};
|
||||
|
||||
|
||||
#endif // __FTCharmap__
|
||||
245
bazaar/FTGL/src/FTContour.cpp
Normal file
245
bazaar/FTGL/src/FTContour.cpp
Normal file
|
|
@ -0,0 +1,245 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
* Copyright (c) 2008 Éric Beets <ericbeets@free.fr>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "FTContour.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
static const unsigned int BEZIER_STEPS = 5;
|
||||
|
||||
|
||||
void FTContour::AddPoint(FTPoint point)
|
||||
{
|
||||
if(pointList.empty() || (point != pointList[pointList.size() - 1]
|
||||
&& point != pointList[0]))
|
||||
{
|
||||
pointList.push_back(point);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FTContour::AddOutsetPoint(FTPoint point)
|
||||
{
|
||||
outsetPointList.push_back(point);
|
||||
}
|
||||
|
||||
|
||||
void FTContour::AddFrontPoint(FTPoint point)
|
||||
{
|
||||
frontPointList.push_back(point);
|
||||
}
|
||||
|
||||
|
||||
void FTContour::AddBackPoint(FTPoint point)
|
||||
{
|
||||
backPointList.push_back(point);
|
||||
}
|
||||
|
||||
|
||||
void FTContour::evaluateQuadraticCurve(FTPoint A, FTPoint B, FTPoint C)
|
||||
{
|
||||
for(unsigned int i = 1; i < BEZIER_STEPS; i++)
|
||||
{
|
||||
float t = static_cast<float>(i) / BEZIER_STEPS;
|
||||
|
||||
FTPoint U = (1.0f - t) * A + t * B;
|
||||
FTPoint V = (1.0f - t) * B + t * C;
|
||||
|
||||
AddPoint((1.0f - t) * U + t * V);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FTContour::evaluateCubicCurve(FTPoint A, FTPoint B, FTPoint C, FTPoint D)
|
||||
{
|
||||
for(unsigned int i = 0; i < BEZIER_STEPS; i++)
|
||||
{
|
||||
float t = static_cast<float>(i) / BEZIER_STEPS;
|
||||
|
||||
FTPoint U = (1.0f - t) * A + t * B;
|
||||
FTPoint V = (1.0f - t) * B + t * C;
|
||||
FTPoint W = (1.0f - t) * C + t * D;
|
||||
|
||||
FTPoint M = (1.0f - t) * U + t * V;
|
||||
FTPoint N = (1.0f - t) * V + t * W;
|
||||
|
||||
AddPoint((1.0f - t) * M + t * N);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// This function is a bit tricky. Given a path ABC, it returns the
|
||||
// coordinates of the outset point facing B on the left at a distance
|
||||
// of 64.0.
|
||||
// M
|
||||
// - - - - - - X
|
||||
// ^ / '
|
||||
// | 64.0 / '
|
||||
// X---->-----X ==> X--v-------X '
|
||||
// A B \ A B \ .>'
|
||||
// \ \<' 64.0
|
||||
// \ \ .
|
||||
// \ \ .
|
||||
// C X C X
|
||||
//
|
||||
FTPoint FTContour::ComputeOutsetPoint(FTPoint A, FTPoint B, FTPoint C)
|
||||
{
|
||||
/* Build the rotation matrix from 'ba' vector */
|
||||
FTPoint ba = (A - B).Normalise();
|
||||
FTPoint bc = C - B;
|
||||
|
||||
/* Rotate bc to the left */
|
||||
FTPoint tmp(bc.X() * -ba.X() + bc.Y() * -ba.Y(),
|
||||
bc.X() * ba.Y() + bc.Y() * -ba.X());
|
||||
|
||||
/* Compute the vector bisecting 'abc' */
|
||||
FTGL_DOUBLE norm = sqrt(tmp.X() * tmp.X() + tmp.Y() * tmp.Y());
|
||||
FTGL_DOUBLE dist = 64.0 * sqrt((norm - tmp.X()) / (norm + tmp.X()));
|
||||
tmp.X(tmp.Y() < 0.0 ? dist : -dist);
|
||||
tmp.Y(64.0);
|
||||
|
||||
/* Rotate the new bc to the right */
|
||||
return FTPoint(tmp.X() * -ba.X() + tmp.Y() * ba.Y(),
|
||||
tmp.X() * -ba.Y() + tmp.Y() * -ba.X());
|
||||
}
|
||||
|
||||
|
||||
void FTContour::SetParity(int parity)
|
||||
{
|
||||
size_t size = PointCount();
|
||||
FTPoint vOutset;
|
||||
|
||||
if(((parity & 1) && clockwise) || (!(parity & 1) && !clockwise))
|
||||
{
|
||||
// Contour orientation is wrong! We must reverse all points.
|
||||
// FIXME: could it be worth writing FTVector::reverse() for this?
|
||||
for(size_t i = 0; i < size / 2; i++)
|
||||
{
|
||||
FTPoint tmp = pointList[i];
|
||||
pointList[i] = pointList[size - 1 - i];
|
||||
pointList[size - 1 -i] = tmp;
|
||||
}
|
||||
|
||||
clockwise = !clockwise;
|
||||
}
|
||||
|
||||
for(size_t i = 0; i < size; i++)
|
||||
{
|
||||
size_t prev, cur, next;
|
||||
|
||||
prev = (i + size - 1) % size;
|
||||
cur = i;
|
||||
next = (i + size + 1) % size;
|
||||
|
||||
vOutset = ComputeOutsetPoint(Point(prev), Point(cur), Point(next));
|
||||
AddOutsetPoint(vOutset);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FTContour::FTContour(FT_Vector* contour, char* tags, unsigned int n)
|
||||
{
|
||||
FTPoint prev, cur(contour[(n - 1) % n]), next(contour[0]);
|
||||
FTPoint a, b = next - cur;
|
||||
double olddir, dir = atan2((next - cur).Y(), (next - cur).X());
|
||||
double angle = 0.0;
|
||||
|
||||
// See http://freetype.sourceforge.net/freetype2/docs/glyphs/glyphs-6.html
|
||||
// for a full description of FreeType tags.
|
||||
for(unsigned int i = 0; i < n; i++)
|
||||
{
|
||||
prev = cur;
|
||||
cur = next;
|
||||
next = FTPoint(contour[(i + 1) % n]);
|
||||
olddir = dir;
|
||||
dir = atan2((next - cur).Y(), (next - cur).X());
|
||||
|
||||
// Compute our path's new direction.
|
||||
double t = dir - olddir;
|
||||
if(t < -M_PI) t += 2 * M_PI;
|
||||
if(t > M_PI) t -= 2 * M_PI;
|
||||
angle += t;
|
||||
|
||||
// Only process point tags we know.
|
||||
if(n < 2 || FT_CURVE_TAG(tags[i]) == FT_Curve_Tag_On)
|
||||
{
|
||||
AddPoint(cur);
|
||||
}
|
||||
else if(FT_CURVE_TAG(tags[i]) == FT_Curve_Tag_Conic)
|
||||
{
|
||||
FTPoint prev2 = prev, next2 = next;
|
||||
|
||||
// Previous point is either the real previous point (an "on"
|
||||
// point), or the midpoint between the current one and the
|
||||
// previous "conic off" point.
|
||||
if(FT_CURVE_TAG(tags[(i - 1 + n) % n]) == FT_Curve_Tag_Conic)
|
||||
{
|
||||
prev2 = (cur + prev) * 0.5;
|
||||
AddPoint(prev2);
|
||||
}
|
||||
|
||||
// Next point is either the real next point or the midpoint.
|
||||
if(FT_CURVE_TAG(tags[(i + 1) % n]) == FT_Curve_Tag_Conic)
|
||||
{
|
||||
next2 = (cur + next) * 0.5;
|
||||
}
|
||||
|
||||
evaluateQuadraticCurve(prev2, cur, next2);
|
||||
}
|
||||
else if(FT_CURVE_TAG(tags[i]) == FT_Curve_Tag_Cubic
|
||||
&& FT_CURVE_TAG(tags[(i + 1) % n]) == FT_Curve_Tag_Cubic)
|
||||
{
|
||||
evaluateCubicCurve(prev, cur, next,
|
||||
FTPoint(contour[(i + 2) % n]));
|
||||
}
|
||||
}
|
||||
|
||||
// If final angle is positive (+2PI), it's an anti-clockwise contour,
|
||||
// otherwise (-2PI) it's clockwise.
|
||||
clockwise = (angle < 0.0);
|
||||
}
|
||||
|
||||
|
||||
void FTContour::buildFrontOutset(float outset)
|
||||
{
|
||||
for(size_t i = 0; i < PointCount(); ++i)
|
||||
{
|
||||
AddFrontPoint(Point(i) + Outset(i) * outset);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FTContour::buildBackOutset(float outset)
|
||||
{
|
||||
for(size_t i = 0; i < PointCount(); ++i)
|
||||
{
|
||||
AddBackPoint(Point(i) + Outset(i) * outset);
|
||||
}
|
||||
}
|
||||
|
||||
209
bazaar/FTGL/src/FTContour.h
Normal file
209
bazaar/FTGL/src/FTContour.h
Normal file
|
|
@ -0,0 +1,209 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Éric Beets <ericbeets@free.fr>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTContour__
|
||||
#define __FTContour__
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "FTVector.h"
|
||||
|
||||
|
||||
/**
|
||||
* FTContour class is a container of points that describe a vector font
|
||||
* outline. It is used as a container for the output of the bezier curve
|
||||
* evaluator in FTVectoriser.
|
||||
*
|
||||
* @see FTOutlineGlyph
|
||||
* @see FTPolygonGlyph
|
||||
* @see FTPoint
|
||||
*/
|
||||
class FTContour
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param contour
|
||||
* @param pointTags
|
||||
* @param numberOfPoints
|
||||
*/
|
||||
FTContour(FT_Vector* contour, char* pointTags, unsigned int numberOfPoints);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTContour()
|
||||
{
|
||||
pointList.clear();
|
||||
outsetPointList.clear();
|
||||
frontPointList.clear();
|
||||
backPointList.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a point at index.
|
||||
*
|
||||
* @param index of the point in the curve.
|
||||
* @return const point reference
|
||||
*/
|
||||
const FTPoint& Point(size_t index) const { return pointList[index]; }
|
||||
|
||||
/**
|
||||
* Return a point at index.
|
||||
*
|
||||
* @param index of the point in the outset curve.
|
||||
* @return const point reference
|
||||
*/
|
||||
const FTPoint& Outset(size_t index) const { return outsetPointList[index]; }
|
||||
|
||||
/**
|
||||
* Return a point at index of the front outset contour.
|
||||
*
|
||||
* @param index of the point in the curve.
|
||||
* @return const point reference
|
||||
*/
|
||||
const FTPoint& FrontPoint(size_t index) const
|
||||
{
|
||||
if(frontPointList.size() == 0)
|
||||
return Point(index);
|
||||
return frontPointList[index];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return a point at index of the back outset contour.
|
||||
*
|
||||
* @param index of the point in the curve.
|
||||
* @return const point reference
|
||||
*/
|
||||
const FTPoint& BackPoint(size_t index) const
|
||||
{
|
||||
if(backPointList.size() == 0)
|
||||
return Point(index);
|
||||
return backPointList[index];
|
||||
}
|
||||
|
||||
/**
|
||||
* How many points define this contour
|
||||
*
|
||||
* @return the number of points in this contour
|
||||
*/
|
||||
size_t PointCount() const { return pointList.size(); }
|
||||
|
||||
/**
|
||||
* Make sure the glyph has the proper parity and create the front/back
|
||||
* outset contour.
|
||||
*
|
||||
* @param parity The contour's parity within the glyph.
|
||||
*/
|
||||
void SetParity(int parity);
|
||||
|
||||
// FIXME: this should probably go away.
|
||||
void buildFrontOutset(float outset);
|
||||
void buildBackOutset(float outset);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Add a point to this contour. This function tests for duplicate
|
||||
* points.
|
||||
*
|
||||
* @param point The point to be added to the contour.
|
||||
*/
|
||||
inline void AddPoint(FTPoint point);
|
||||
|
||||
/**
|
||||
* Add a point to this contour. This function tests for duplicate
|
||||
* points.
|
||||
*
|
||||
* @param point The point to be added to the contour.
|
||||
*/
|
||||
inline void AddOutsetPoint(FTPoint point);
|
||||
|
||||
/*
|
||||
* Add a point to this outset contour. This function tests for duplicate
|
||||
* points.
|
||||
*
|
||||
* @param point The point to be added to the contour outset.
|
||||
*/
|
||||
inline void AddFrontPoint(FTPoint point);
|
||||
inline void AddBackPoint(FTPoint point);
|
||||
|
||||
/**
|
||||
* De Casteljau (bezier) algorithm contributed by Jed Soane
|
||||
* Evaluates a quadratic or conic (second degree) curve
|
||||
*/
|
||||
inline void evaluateQuadraticCurve(FTPoint, FTPoint, FTPoint);
|
||||
|
||||
/**
|
||||
* De Casteljau (bezier) algorithm contributed by Jed Soane
|
||||
* Evaluates a cubic (third degree) curve
|
||||
*/
|
||||
inline void evaluateCubicCurve(FTPoint, FTPoint, FTPoint, FTPoint);
|
||||
|
||||
/**
|
||||
* Compute the vector norm
|
||||
*/
|
||||
inline FTGL_DOUBLE NormVector(const FTPoint &v);
|
||||
|
||||
/**
|
||||
* Compute a rotation matrix from a vector
|
||||
*/
|
||||
inline void RotationMatrix(const FTPoint &a, const FTPoint &b, FTGL_DOUBLE *matRot, FTGL_DOUBLE *invRot);
|
||||
|
||||
/**
|
||||
* Matrix and vector multiplication
|
||||
*/
|
||||
inline void MultMatrixVect(FTGL_DOUBLE *mat, FTPoint &v);
|
||||
|
||||
/**
|
||||
* Compute the vector bisecting from a vector 'v' and a distance 'd'
|
||||
*/
|
||||
inline void ComputeBisec(FTPoint &v);
|
||||
|
||||
/**
|
||||
* Compute the outset point coordinates
|
||||
*/
|
||||
inline FTPoint ComputeOutsetPoint(FTPoint a, FTPoint b, FTPoint c);
|
||||
|
||||
/**
|
||||
* The list of points in this contour
|
||||
*/
|
||||
typedef FTVector<FTPoint> PointVector;
|
||||
PointVector pointList;
|
||||
PointVector outsetPointList;
|
||||
PointVector frontPointList;
|
||||
PointVector backPointList;
|
||||
|
||||
/**
|
||||
* Is this contour clockwise or anti-clockwise?
|
||||
*/
|
||||
bool clockwise;
|
||||
};
|
||||
|
||||
#endif // __FTContour__
|
||||
|
||||
232
bazaar/FTGL/src/FTFace.cpp
Normal file
232
bazaar/FTGL/src/FTFace.cpp
Normal file
|
|
@ -0,0 +1,232 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "FTFace.h"
|
||||
#include "FTLibrary.h"
|
||||
|
||||
#include FT_TRUETYPE_TABLES_H
|
||||
|
||||
FTFace::FTFace(const char* fontFilePath, bool precomputeKerning)
|
||||
: numGlyphs(0),
|
||||
fontEncodingList(0),
|
||||
kerningCache(0),
|
||||
err(0)
|
||||
{
|
||||
const FT_Long DEFAULT_FACE_INDEX = 0;
|
||||
ftFace = new FT_Face;
|
||||
|
||||
err = FT_New_Face(*FTLibrary::Instance().GetLibrary(), fontFilePath,
|
||||
DEFAULT_FACE_INDEX, ftFace);
|
||||
if(err)
|
||||
{
|
||||
delete ftFace;
|
||||
ftFace = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
numGlyphs = (*ftFace)->num_glyphs;
|
||||
hasKerningTable = (FT_HAS_KERNING((*ftFace)) != 0);
|
||||
|
||||
if(hasKerningTable && precomputeKerning)
|
||||
{
|
||||
BuildKerningCache();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FTFace::FTFace(const unsigned char *pBufferBytes, size_t bufferSizeInBytes,
|
||||
bool precomputeKerning)
|
||||
: numGlyphs(0),
|
||||
fontEncodingList(0),
|
||||
kerningCache(0),
|
||||
err(0)
|
||||
{
|
||||
const FT_Long DEFAULT_FACE_INDEX = 0;
|
||||
ftFace = new FT_Face;
|
||||
|
||||
err = FT_New_Memory_Face(*FTLibrary::Instance().GetLibrary(),
|
||||
(FT_Byte const *)pBufferBytes, (FT_Long)bufferSizeInBytes,
|
||||
DEFAULT_FACE_INDEX, ftFace);
|
||||
if(err)
|
||||
{
|
||||
delete ftFace;
|
||||
ftFace = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
numGlyphs = (*ftFace)->num_glyphs;
|
||||
hasKerningTable = (FT_HAS_KERNING((*ftFace)) != 0);
|
||||
|
||||
if(hasKerningTable && precomputeKerning)
|
||||
{
|
||||
BuildKerningCache();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FTFace::~FTFace()
|
||||
{
|
||||
if(kerningCache)
|
||||
{
|
||||
delete[] kerningCache;
|
||||
}
|
||||
|
||||
if(ftFace)
|
||||
{
|
||||
FT_Done_Face(*ftFace);
|
||||
delete ftFace;
|
||||
ftFace = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool FTFace::Attach(const char* fontFilePath)
|
||||
{
|
||||
err = FT_Attach_File(*ftFace, fontFilePath);
|
||||
return !err;
|
||||
}
|
||||
|
||||
|
||||
bool FTFace::Attach(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes)
|
||||
{
|
||||
FT_Open_Args open;
|
||||
|
||||
open.flags = FT_OPEN_MEMORY;
|
||||
open.memory_base = (FT_Byte const *)pBufferBytes;
|
||||
open.memory_size = (FT_Long)bufferSizeInBytes;
|
||||
|
||||
err = FT_Attach_Stream(*ftFace, &open);
|
||||
return !err;
|
||||
}
|
||||
|
||||
|
||||
const FTSize& FTFace::Size(const unsigned int size, const unsigned int res)
|
||||
{
|
||||
charSize.CharSize(ftFace, size, res, res);
|
||||
err = charSize.Error();
|
||||
|
||||
return charSize;
|
||||
}
|
||||
|
||||
|
||||
unsigned int FTFace::CharMapCount() const
|
||||
{
|
||||
return (*ftFace)->num_charmaps;
|
||||
}
|
||||
|
||||
|
||||
FT_Encoding* FTFace::CharMapList()
|
||||
{
|
||||
if(0 == fontEncodingList)
|
||||
{
|
||||
fontEncodingList = new FT_Encoding[CharMapCount()];
|
||||
for(size_t i = 0; i < CharMapCount(); ++i)
|
||||
{
|
||||
fontEncodingList[i] = (*ftFace)->charmaps[i]->encoding;
|
||||
}
|
||||
}
|
||||
|
||||
return fontEncodingList;
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTFace::KernAdvance(unsigned int index1, unsigned int index2)
|
||||
{
|
||||
float x, y;
|
||||
|
||||
if(!hasKerningTable || !index1 || !index2)
|
||||
{
|
||||
return FTPoint(0.0f, 0.0f);
|
||||
}
|
||||
|
||||
if(kerningCache && index1 < FTFace::MAX_PRECOMPUTED
|
||||
&& index2 < FTFace::MAX_PRECOMPUTED)
|
||||
{
|
||||
x = kerningCache[2 * (index2 * FTFace::MAX_PRECOMPUTED + index1)];
|
||||
y = kerningCache[2 * (index2 * FTFace::MAX_PRECOMPUTED + index1) + 1];
|
||||
return FTPoint(x, y);
|
||||
}
|
||||
|
||||
FT_Vector kernAdvance;
|
||||
kernAdvance.x = kernAdvance.y = 0;
|
||||
|
||||
err = FT_Get_Kerning(*ftFace, index1, index2, ft_kerning_unfitted,
|
||||
&kernAdvance);
|
||||
if(err)
|
||||
{
|
||||
return FTPoint(0.0f, 0.0f);
|
||||
}
|
||||
|
||||
x = static_cast<float>(kernAdvance.x) / 64.0f;
|
||||
y = static_cast<float>(kernAdvance.y) / 64.0f;
|
||||
|
||||
return FTPoint(x, y);
|
||||
}
|
||||
|
||||
|
||||
FT_GlyphSlot FTFace::Glyph(unsigned int index, FT_Int load_flags)
|
||||
{
|
||||
err = FT_Load_Glyph(*ftFace, index, load_flags);
|
||||
if(err)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (*ftFace)->glyph;
|
||||
}
|
||||
|
||||
|
||||
void FTFace::BuildKerningCache()
|
||||
{
|
||||
FT_Vector kernAdvance;
|
||||
kernAdvance.x = 0;
|
||||
kernAdvance.y = 0;
|
||||
kerningCache = new float[FTFace::MAX_PRECOMPUTED
|
||||
* FTFace::MAX_PRECOMPUTED * 2];
|
||||
for(unsigned int j = 0; j < FTFace::MAX_PRECOMPUTED; j++)
|
||||
{
|
||||
for(unsigned int i = 0; i < FTFace::MAX_PRECOMPUTED; i++)
|
||||
{
|
||||
err = FT_Get_Kerning(*ftFace, i, j, ft_kerning_unfitted,
|
||||
&kernAdvance);
|
||||
if(err)
|
||||
{
|
||||
delete[] kerningCache;
|
||||
kerningCache = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
kerningCache[2 * (j * FTFace::MAX_PRECOMPUTED + i)] =
|
||||
static_cast<float>(kernAdvance.x) / 64.0f;
|
||||
kerningCache[2 * (j * FTFace::MAX_PRECOMPUTED + i) + 1] =
|
||||
static_cast<float>(kernAdvance.y) / 64.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
181
bazaar/FTGL/src/FTFace.h
Normal file
181
bazaar/FTGL/src/FTFace.h
Normal file
|
|
@ -0,0 +1,181 @@
|
|||
/*
|
||||
* 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 __FTFace__
|
||||
#define __FTFace__
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_GLYPH_H
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "FTSize.h"
|
||||
|
||||
/**
|
||||
* FTFace class provides an abstraction layer for the Freetype Face.
|
||||
*
|
||||
* @see "Freetype 2 Documentation"
|
||||
*
|
||||
*/
|
||||
class FTFace
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Opens and reads a face file. Error is set.
|
||||
*
|
||||
* @param fontFilePath font file path.
|
||||
*/
|
||||
FTFace(const char* fontFilePath, bool precomputeKerning = true);
|
||||
|
||||
/**
|
||||
* Read face data from an in-memory buffer. Error is set.
|
||||
*
|
||||
* @param pBufferBytes the in-memory buffer
|
||||
* @param bufferSizeInBytes the length of the buffer in bytes
|
||||
*/
|
||||
FTFace(const unsigned char *pBufferBytes, size_t bufferSizeInBytes,
|
||||
bool precomputeKerning = true);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*
|
||||
* Disposes of the current Freetype Face.
|
||||
*/
|
||||
virtual ~FTFace();
|
||||
|
||||
/**
|
||||
* Attach auxilliary file to font (e.g., font metrics).
|
||||
*
|
||||
* @param fontFilePath auxilliary font file path.
|
||||
* @return <code>true</code> if file has opened
|
||||
* successfully.
|
||||
*/
|
||||
bool Attach(const char* fontFilePath);
|
||||
|
||||
/**
|
||||
* Attach auxilliary data to font (e.g., font metrics) from memory
|
||||
*
|
||||
* @param pBufferBytes the in-memory buffer
|
||||
* @param bufferSizeInBytes the length of the buffer in bytes
|
||||
* @return <code>true</code> if file has opened
|
||||
* successfully.
|
||||
*/
|
||||
bool Attach(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
/**
|
||||
* Get the freetype face object..
|
||||
*
|
||||
* @return pointer to an FT_Face.
|
||||
*/
|
||||
FT_Face* Face() const { return ftFace; }
|
||||
|
||||
/**
|
||||
* Sets the char size for the current face.
|
||||
*
|
||||
* This doesn't guarantee that the size was set correctly. Clients
|
||||
* should check errors.
|
||||
*
|
||||
* @param size the face size in points (1/72 inch)
|
||||
* @param res the resolution of the target device.
|
||||
* @return <code>FTSize</code> object
|
||||
*/
|
||||
const FTSize& Size(const unsigned int size, const unsigned int res);
|
||||
|
||||
/**
|
||||
* Get the number of character maps in this face.
|
||||
*
|
||||
* @return character map count.
|
||||
*/
|
||||
unsigned int CharMapCount() const;
|
||||
|
||||
/**
|
||||
* Get a list of character maps in this face.
|
||||
*
|
||||
* @return pointer to the first encoding.
|
||||
*/
|
||||
FT_Encoding* CharMapList();
|
||||
|
||||
/**
|
||||
* Gets the kerning vector between two glyphs
|
||||
*/
|
||||
FTPoint KernAdvance(unsigned int index1, unsigned int index2);
|
||||
|
||||
/**
|
||||
* Loads and creates a Freetype glyph.
|
||||
*/
|
||||
FT_GlyphSlot Glyph(unsigned int index, FT_Int load_flags);
|
||||
|
||||
/**
|
||||
* Gets the number of glyphs in the current face.
|
||||
*/
|
||||
unsigned int GlyphCount() const { return numGlyphs; }
|
||||
|
||||
/**
|
||||
* Queries for errors.
|
||||
*
|
||||
* @return The current error code.
|
||||
*/
|
||||
FT_Error Error() const { return err; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* The Freetype face
|
||||
*/
|
||||
FT_Face* ftFace;
|
||||
|
||||
/**
|
||||
* The size object associated with this face
|
||||
*/
|
||||
FTSize charSize;
|
||||
|
||||
/**
|
||||
* The number of glyphs in this face
|
||||
*/
|
||||
int numGlyphs;
|
||||
|
||||
FT_Encoding* fontEncodingList;
|
||||
|
||||
/**
|
||||
* This face has kerning tables
|
||||
*/
|
||||
bool hasKerningTable;
|
||||
|
||||
/**
|
||||
* If this face has kerning tables, we can cache them.
|
||||
*/
|
||||
void BuildKerningCache();
|
||||
static const unsigned int MAX_PRECOMPUTED = 128;
|
||||
float *kerningCache;
|
||||
|
||||
/**
|
||||
* Current error code. Zero means no error.
|
||||
*/
|
||||
FT_Error err;
|
||||
};
|
||||
|
||||
|
||||
#endif // __FTFace__
|
||||
106
bazaar/FTGL/src/FTFont/FTBitmapFont.cpp
Normal file
106
bazaar/FTGL/src/FTFont/FTBitmapFont.cpp
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTBitmapFontImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTBitmapFont
|
||||
//
|
||||
|
||||
|
||||
FTBitmapFont::FTBitmapFont(char const *fontFilePath) :
|
||||
FTFont(new FTBitmapFontImpl(this, fontFilePath))
|
||||
{}
|
||||
|
||||
|
||||
FTBitmapFont::FTBitmapFont(unsigned char const *pBufferBytes,
|
||||
size_t bufferSizeInBytes) :
|
||||
FTFont(new FTBitmapFontImpl(this, pBufferBytes, bufferSizeInBytes))
|
||||
{}
|
||||
|
||||
|
||||
FTBitmapFont::~FTBitmapFont()
|
||||
{}
|
||||
|
||||
|
||||
FTGlyph* FTBitmapFont::MakeGlyph(FT_GlyphSlot ftGlyph)
|
||||
{
|
||||
return new FTBitmapGlyph(ftGlyph);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTBitmapFontImpl
|
||||
//
|
||||
|
||||
|
||||
template <typename T>
|
||||
inline FTPoint FTBitmapFontImpl::RenderI(const T* string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
// Protect GL_BLEND
|
||||
glPushAttrib(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
// Protect glPixelStorei() calls (also in FTBitmapGlyphImpl::RenderImpl)
|
||||
glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
|
||||
|
||||
glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE);
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
|
||||
glDisable(GL_BLEND);
|
||||
|
||||
FTPoint tmp = FTFontImpl::Render(string, len,
|
||||
position, spacing, renderMode);
|
||||
|
||||
glPopClientAttrib();
|
||||
glPopAttrib();
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTBitmapFontImpl::Render(const char * string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
return RenderI(string, len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTBitmapFontImpl::Render(const wchar_t * string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
return RenderI(string, len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
62
bazaar/FTGL/src/FTFont/FTBitmapFontImpl.h
Normal file
62
bazaar/FTGL/src/FTFont/FTBitmapFontImpl.h
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTBitmapFontImpl__
|
||||
#define __FTBitmapFontImpl__
|
||||
|
||||
#include "FTFontImpl.h"
|
||||
|
||||
class FTGlyph;
|
||||
|
||||
class FTBitmapFontImpl : public FTFontImpl
|
||||
{
|
||||
friend class FTBitmapFont;
|
||||
|
||||
protected:
|
||||
FTBitmapFontImpl(FTFont *ftFont, const char* fontFilePath) :
|
||||
FTFontImpl(ftFont, fontFilePath) {};
|
||||
|
||||
FTBitmapFontImpl(FTFont *ftFont, const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes) :
|
||||
FTFontImpl(ftFont, pBufferBytes, bufferSizeInBytes) {};
|
||||
|
||||
virtual FTPoint Render(const char *s, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode);
|
||||
|
||||
virtual FTPoint Render(const wchar_t *s, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode);
|
||||
|
||||
private:
|
||||
/* Internal generic Render() implementation */
|
||||
template <typename T>
|
||||
inline FTPoint RenderI(const T *s, const int len,
|
||||
FTPoint position, FTPoint spacing, int mode);
|
||||
};
|
||||
|
||||
#endif // __FTBitmapFontImpl__
|
||||
|
||||
349
bazaar/FTGL/src/FTFont/FTBufferFont.cpp
Normal file
349
bazaar/FTGL/src/FTFont/FTBufferFont.cpp
Normal file
|
|
@ -0,0 +1,349 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include <wchar.h>
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTBufferFontImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTBufferFont
|
||||
//
|
||||
|
||||
|
||||
FTBufferFont::FTBufferFont(char const *fontFilePath) :
|
||||
FTFont(new FTBufferFontImpl(this, fontFilePath))
|
||||
{}
|
||||
|
||||
|
||||
FTBufferFont::FTBufferFont(unsigned char const *pBufferBytes,
|
||||
size_t bufferSizeInBytes) :
|
||||
FTFont(new FTBufferFontImpl(this, pBufferBytes, bufferSizeInBytes))
|
||||
{}
|
||||
|
||||
|
||||
FTBufferFont::~FTBufferFont()
|
||||
{}
|
||||
|
||||
|
||||
FTGlyph* FTBufferFont::MakeGlyph(FT_GlyphSlot ftGlyph)
|
||||
{
|
||||
FTBufferFontImpl *myimpl = dynamic_cast<FTBufferFontImpl *>(impl);
|
||||
if(!myimpl)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return myimpl->MakeGlyphImpl(ftGlyph);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTBufferFontImpl
|
||||
//
|
||||
|
||||
|
||||
FTBufferFontImpl::FTBufferFontImpl(FTFont *ftFont, const char* fontFilePath) :
|
||||
FTFontImpl(ftFont, fontFilePath),
|
||||
buffer(new FTBuffer())
|
||||
{
|
||||
load_flags = FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP;
|
||||
|
||||
glGenTextures(BUFFER_CACHE_SIZE, idCache);
|
||||
|
||||
for(int i = 0; i < BUFFER_CACHE_SIZE; i++)
|
||||
{
|
||||
stringCache[i] = NULL;
|
||||
glBindTexture(GL_TEXTURE_2D, idCache[i]);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
}
|
||||
|
||||
lastString = 0;
|
||||
}
|
||||
|
||||
|
||||
FTBufferFontImpl::FTBufferFontImpl(FTFont *ftFont,
|
||||
const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes) :
|
||||
FTFontImpl(ftFont, pBufferBytes, bufferSizeInBytes),
|
||||
buffer(new FTBuffer())
|
||||
{
|
||||
load_flags = FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP;
|
||||
|
||||
glGenTextures(BUFFER_CACHE_SIZE, idCache);
|
||||
|
||||
for(int i = 0; i < BUFFER_CACHE_SIZE; i++)
|
||||
{
|
||||
stringCache[i] = NULL;
|
||||
glBindTexture(GL_TEXTURE_2D, idCache[i]);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
}
|
||||
|
||||
lastString = 0;
|
||||
}
|
||||
|
||||
|
||||
FTBufferFontImpl::~FTBufferFontImpl()
|
||||
{
|
||||
glDeleteTextures(BUFFER_CACHE_SIZE, idCache);
|
||||
|
||||
for(int i = 0; i < BUFFER_CACHE_SIZE; i++)
|
||||
{
|
||||
if(stringCache[i])
|
||||
{
|
||||
free(stringCache[i]);
|
||||
}
|
||||
}
|
||||
|
||||
delete buffer;
|
||||
}
|
||||
|
||||
|
||||
FTGlyph* FTBufferFontImpl::MakeGlyphImpl(FT_GlyphSlot ftGlyph)
|
||||
{
|
||||
return new FTBufferGlyph(ftGlyph, buffer);
|
||||
}
|
||||
|
||||
|
||||
bool FTBufferFontImpl::FaceSize(const unsigned int size,
|
||||
const unsigned int res)
|
||||
{
|
||||
for(int i = 0; i < BUFFER_CACHE_SIZE; i++)
|
||||
{
|
||||
if(stringCache[i])
|
||||
{
|
||||
free(stringCache[i]);
|
||||
stringCache[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return FTFontImpl::FaceSize(size, res);
|
||||
}
|
||||
|
||||
|
||||
static inline GLuint NextPowerOf2(GLuint in)
|
||||
{
|
||||
in -= 1;
|
||||
|
||||
in |= in >> 16;
|
||||
in |= in >> 8;
|
||||
in |= in >> 4;
|
||||
in |= in >> 2;
|
||||
in |= in >> 1;
|
||||
|
||||
return in + 1;
|
||||
}
|
||||
|
||||
|
||||
inline int StringCompare(void const *a, char const *b, int len)
|
||||
{
|
||||
return len < 0 ? strcmp((char const *)a, b)
|
||||
: strncmp((char const *)a, b, len);
|
||||
}
|
||||
|
||||
|
||||
inline int StringCompare(void const *a, wchar_t const *b, int len)
|
||||
{
|
||||
return len < 0 ? wcscmp((wchar_t const *)a, b)
|
||||
: wcsncmp((wchar_t const *)a, b, len);
|
||||
}
|
||||
|
||||
|
||||
inline char *StringCopy(char const *s, int len)
|
||||
{
|
||||
if(len < 0)
|
||||
{
|
||||
return strdup(s);
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef HAVE_STRNDUP
|
||||
return strndup(s, len);
|
||||
#else
|
||||
char *s2 = (char*)malloc(len + 1);
|
||||
memcpy(s2, s, len);
|
||||
s2[len] = 0;
|
||||
return s2;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
inline wchar_t *StringCopy(wchar_t const *s, int len)
|
||||
{
|
||||
if(len < 0)
|
||||
{
|
||||
#if defined HAVE_WCSDUP
|
||||
return wcsdup(s);
|
||||
#else
|
||||
len = (int)wcslen(s);
|
||||
#endif
|
||||
}
|
||||
|
||||
wchar_t *s2 = (wchar_t *)malloc((len + 1) * sizeof(wchar_t));
|
||||
memcpy(s2, s, len * sizeof(wchar_t));
|
||||
s2[len] = 0;
|
||||
return s2;
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
inline FTPoint FTBufferFontImpl::RenderI(const T* string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
const float padding = 3.0f;
|
||||
int width, height, texWidth, texHeight;
|
||||
int cacheIndex = -1;
|
||||
bool inCache = false;
|
||||
|
||||
// Protect blending functions, GL_BLEND and GL_TEXTURE_2D
|
||||
glPushAttrib(GL_COLOR_BUFFER_BIT | GL_ENABLE_BIT);
|
||||
|
||||
// Protect glPixelStorei() calls
|
||||
glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // GL_ONE
|
||||
|
||||
// Search whether the string is already in a texture we uploaded
|
||||
for(int n = 0; n < BUFFER_CACHE_SIZE; n++)
|
||||
{
|
||||
int i = (lastString + n + BUFFER_CACHE_SIZE) % BUFFER_CACHE_SIZE;
|
||||
|
||||
if(stringCache[i] && !StringCompare(stringCache[i], string, len))
|
||||
{
|
||||
cacheIndex = i;
|
||||
inCache = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// If the string was not found, we need to put it in the cache and compute
|
||||
// its new bounding box.
|
||||
if(!inCache)
|
||||
{
|
||||
// FIXME: this cache is not very efficient. We should first expire
|
||||
// strings that are not used very often.
|
||||
cacheIndex = lastString;
|
||||
lastString = (lastString + 1) % BUFFER_CACHE_SIZE;
|
||||
|
||||
if(stringCache[cacheIndex])
|
||||
{
|
||||
free(stringCache[cacheIndex]);
|
||||
}
|
||||
// FIXME: only the first N bytes are copied; we want the first N chars.
|
||||
stringCache[cacheIndex] = StringCopy(string, len);
|
||||
bboxCache[cacheIndex] = BBox(string, len, FTPoint(), spacing);
|
||||
}
|
||||
|
||||
FTBBox bbox = bboxCache[cacheIndex];
|
||||
|
||||
width = static_cast<int>(bbox.Upper().X() - bbox.Lower().X()
|
||||
+ padding + padding + 0.5);
|
||||
height = static_cast<int>(bbox.Upper().Y() - bbox.Lower().Y()
|
||||
+ padding + padding + 0.5);
|
||||
|
||||
texWidth = NextPowerOf2(width);
|
||||
texHeight = NextPowerOf2(height);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, idCache[cacheIndex]);
|
||||
|
||||
// If the string was not found, we need to render the text in a new
|
||||
// texture buffer, then upload it to the OpenGL layer.
|
||||
if(!inCache)
|
||||
{
|
||||
buffer->Size(texWidth, texHeight);
|
||||
buffer->Pos(FTPoint(padding, padding) - bbox.Lower());
|
||||
|
||||
advanceCache[cacheIndex] =
|
||||
FTFontImpl::Render(string, len, FTPoint(), spacing, renderMode);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, idCache[cacheIndex]);
|
||||
|
||||
glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE);
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
|
||||
/* TODO: use glTexSubImage2D later? */
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, texWidth, texHeight, 0,
|
||||
GL_ALPHA, GL_UNSIGNED_BYTE, (GLvoid *)buffer->Pixels());
|
||||
|
||||
buffer->Size(0, 0);
|
||||
}
|
||||
|
||||
FTPoint low = position + bbox.Lower();
|
||||
FTPoint up = position + bbox.Upper();
|
||||
|
||||
glBegin(GL_QUADS);
|
||||
glNormal3f(0.0f, 0.0f, 1.0f);
|
||||
glTexCoord2f(padding / texWidth,
|
||||
(texHeight - height + padding) / texHeight);
|
||||
glVertex2f(low.Xf(), up.Yf());
|
||||
glTexCoord2f(padding / texWidth,
|
||||
(texHeight - padding) / texHeight);
|
||||
glVertex2f(low.Xf(), low.Yf());
|
||||
glTexCoord2f((width - padding) / texWidth,
|
||||
(texHeight - padding) / texHeight);
|
||||
glVertex2f(up.Xf(), low.Yf());
|
||||
glTexCoord2f((width - padding) / texWidth,
|
||||
(texHeight - height + padding) / texHeight);
|
||||
glVertex2f(up.Xf(), up.Yf());
|
||||
glEnd();
|
||||
|
||||
glPopClientAttrib();
|
||||
glPopAttrib();
|
||||
|
||||
return position + advanceCache[cacheIndex];
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTBufferFontImpl::Render(const char * string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
return RenderI(string, len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTBufferFontImpl::Render(const wchar_t * string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
return RenderI(string, len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
81
bazaar/FTGL/src/FTFont/FTBufferFontImpl.h
Normal file
81
bazaar/FTGL/src/FTFont/FTBufferFontImpl.h
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTBufferFontImpl__
|
||||
#define __FTBufferFontImpl__
|
||||
|
||||
#include "FTFontImpl.h"
|
||||
|
||||
class FTGlyph;
|
||||
class FTBuffer;
|
||||
|
||||
class FTBufferFontImpl : public FTFontImpl
|
||||
{
|
||||
friend class FTBufferFont;
|
||||
|
||||
protected:
|
||||
FTBufferFontImpl(FTFont *ftFont, const char* fontFilePath);
|
||||
|
||||
FTBufferFontImpl(FTFont *ftFont, const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
virtual ~FTBufferFontImpl();
|
||||
|
||||
virtual FTPoint Render(const char *s, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode);
|
||||
|
||||
virtual FTPoint Render(const wchar_t *s, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode);
|
||||
|
||||
virtual bool FaceSize(const unsigned int size,
|
||||
const unsigned int res);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Create an FTBufferGlyph object for the base class.
|
||||
*/
|
||||
FTGlyph* MakeGlyphImpl(FT_GlyphSlot ftGlyph);
|
||||
|
||||
/* Internal generic Render() implementation */
|
||||
template <typename T>
|
||||
inline FTPoint RenderI(const T *s, const int len,
|
||||
FTPoint position, FTPoint spacing, int mode);
|
||||
|
||||
/* Pixel buffer */
|
||||
FTBuffer *buffer;
|
||||
|
||||
static const int BUFFER_CACHE_SIZE = 16;
|
||||
/* Texture IDs */
|
||||
GLuint idCache[BUFFER_CACHE_SIZE];
|
||||
void *stringCache[BUFFER_CACHE_SIZE];
|
||||
FTBBox bboxCache[BUFFER_CACHE_SIZE];
|
||||
FTPoint advanceCache[BUFFER_CACHE_SIZE];
|
||||
int lastString;
|
||||
};
|
||||
|
||||
#endif // __FTBufferFontImpl__
|
||||
|
||||
89
bazaar/FTGL/src/FTFont/FTExtrudeFont.cpp
Normal file
89
bazaar/FTGL/src/FTFont/FTExtrudeFont.cpp
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTExtrudeFontImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTExtrudeFont
|
||||
//
|
||||
|
||||
|
||||
FTExtrudeFont::FTExtrudeFont(char const *fontFilePath) :
|
||||
FTFont(new FTExtrudeFontImpl(this, fontFilePath))
|
||||
{}
|
||||
|
||||
|
||||
FTExtrudeFont::FTExtrudeFont(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes) :
|
||||
FTFont(new FTExtrudeFontImpl(this, pBufferBytes, bufferSizeInBytes))
|
||||
{}
|
||||
|
||||
|
||||
FTExtrudeFont::~FTExtrudeFont()
|
||||
{}
|
||||
|
||||
|
||||
FTGlyph* FTExtrudeFont::MakeGlyph(FT_GlyphSlot ftGlyph)
|
||||
{
|
||||
FTExtrudeFontImpl *myimpl = dynamic_cast<FTExtrudeFontImpl *>(impl);
|
||||
if(!myimpl)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return new FTExtrudeGlyph(ftGlyph, myimpl->depth, myimpl->front,
|
||||
myimpl->back, myimpl->useDisplayLists);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTExtrudeFontImpl
|
||||
//
|
||||
|
||||
|
||||
FTExtrudeFontImpl::FTExtrudeFontImpl(FTFont *ftFont, const char* fontFilePath)
|
||||
: FTFontImpl(ftFont, fontFilePath),
|
||||
depth(0.0f), front(0.0f), back(0.0f)
|
||||
{
|
||||
load_flags = FT_LOAD_NO_HINTING;
|
||||
}
|
||||
|
||||
|
||||
FTExtrudeFontImpl::FTExtrudeFontImpl(FTFont *ftFont,
|
||||
const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes)
|
||||
: FTFontImpl(ftFont, pBufferBytes, bufferSizeInBytes),
|
||||
depth(0.0f), front(0.0f), back(0.0f)
|
||||
{
|
||||
load_flags = FT_LOAD_NO_HINTING;
|
||||
}
|
||||
|
||||
81
bazaar/FTGL/src/FTFont/FTExtrudeFontImpl.h
Normal file
81
bazaar/FTGL/src/FTFont/FTExtrudeFontImpl.h
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTExtrudeFontImpl__
|
||||
#define __FTExtrudeFontImpl__
|
||||
|
||||
#include "FTFontImpl.h"
|
||||
|
||||
class FTGlyph;
|
||||
|
||||
class FTExtrudeFontImpl : public FTFontImpl
|
||||
{
|
||||
friend class FTExtrudeFont;
|
||||
|
||||
protected:
|
||||
FTExtrudeFontImpl(FTFont *ftFont, const char* fontFilePath);
|
||||
|
||||
FTExtrudeFontImpl(FTFont *ftFont, const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
/**
|
||||
* Set the extrusion distance for the font.
|
||||
*
|
||||
* @param d The extrusion distance.
|
||||
*/
|
||||
virtual void Depth(float d) { depth = d; }
|
||||
|
||||
/**
|
||||
* Set the outset distance for the font. Only implemented by
|
||||
* FTOutlineFont, FTPolygonFont and FTExtrudeFont
|
||||
*
|
||||
* @param o The outset distance.
|
||||
*/
|
||||
virtual void Outset(float o) { front = back = o; }
|
||||
|
||||
/**
|
||||
* Set the outset distance for the font. Only implemented by
|
||||
* FTExtrudeFont
|
||||
*
|
||||
* @param f The front outset distance.
|
||||
* @param b The back outset distance.
|
||||
*/
|
||||
virtual void Outset(float f, float b) { front = f; back = b; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* The extrusion distance for the font.
|
||||
*/
|
||||
float depth;
|
||||
|
||||
/**
|
||||
* The outset distance (front and back) for the font.
|
||||
*/
|
||||
float front, back;
|
||||
};
|
||||
|
||||
#endif // __FTExtrudeFontImpl__
|
||||
|
||||
552
bazaar/FTGL/src/FTFont/FTFont.cpp
Normal file
552
bazaar/FTGL/src/FTFont/FTFont.cpp
Normal file
|
|
@ -0,0 +1,552 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "../FTUnicode.h"
|
||||
|
||||
#include "FTFontImpl.h"
|
||||
|
||||
#include "FTBitmapFontImpl.h"
|
||||
#include "FTExtrudeFontImpl.h"
|
||||
#include "FTOutlineFontImpl.h"
|
||||
#include "FTPixmapFontImpl.h"
|
||||
#include "FTPolygonFontImpl.h"
|
||||
#include "FTTextureFontImpl.h"
|
||||
|
||||
#include "../FTGlyphContainer.h"
|
||||
#include "../FTFace.h"
|
||||
|
||||
|
||||
//
|
||||
// FTFont
|
||||
//
|
||||
|
||||
|
||||
FTFont::FTFont(char const *fontFilePath)
|
||||
{
|
||||
impl = new FTFontImpl(this, fontFilePath);
|
||||
}
|
||||
|
||||
|
||||
FTFont::FTFont(const unsigned char *pBufferBytes, size_t bufferSizeInBytes)
|
||||
{
|
||||
impl = new FTFontImpl(this, pBufferBytes, bufferSizeInBytes);
|
||||
}
|
||||
|
||||
|
||||
FTFont::FTFont(FTFontImpl *pImpl)
|
||||
{
|
||||
impl = pImpl;
|
||||
}
|
||||
|
||||
|
||||
FTFont::~FTFont()
|
||||
{
|
||||
delete impl;
|
||||
}
|
||||
|
||||
|
||||
bool FTFont::Attach(const char* fontFilePath)
|
||||
{
|
||||
return impl->Attach(fontFilePath);
|
||||
}
|
||||
|
||||
|
||||
bool FTFont::Attach(const unsigned char *pBufferBytes, size_t bufferSizeInBytes)
|
||||
{
|
||||
return impl->Attach(pBufferBytes, bufferSizeInBytes);
|
||||
}
|
||||
|
||||
|
||||
bool FTFont::FaceSize(const unsigned int size, const unsigned int res)
|
||||
{
|
||||
return impl->FaceSize(size, res);
|
||||
}
|
||||
|
||||
|
||||
unsigned int FTFont::FaceSize() const
|
||||
{
|
||||
return impl->FaceSize();
|
||||
}
|
||||
|
||||
|
||||
void FTFont::Depth(float depth)
|
||||
{
|
||||
return impl->Depth(depth);
|
||||
}
|
||||
|
||||
|
||||
void FTFont::Outset(float outset)
|
||||
{
|
||||
return impl->Outset(outset);
|
||||
}
|
||||
|
||||
|
||||
void FTFont::Outset(float front, float back)
|
||||
{
|
||||
return impl->Outset(front, back);
|
||||
}
|
||||
|
||||
|
||||
void FTFont::GlyphLoadFlags(FT_Int flags)
|
||||
{
|
||||
return impl->GlyphLoadFlags(flags);
|
||||
}
|
||||
|
||||
|
||||
bool FTFont::CharMap(FT_Encoding encoding)
|
||||
{
|
||||
return impl->CharMap(encoding);
|
||||
}
|
||||
|
||||
|
||||
unsigned int FTFont::CharMapCount() const
|
||||
{
|
||||
return impl->CharMapCount();
|
||||
}
|
||||
|
||||
|
||||
FT_Encoding* FTFont::CharMapList()
|
||||
{
|
||||
return impl->CharMapList();
|
||||
}
|
||||
|
||||
|
||||
void FTFont::UseDisplayList(bool useList)
|
||||
{
|
||||
return impl->UseDisplayList(useList);
|
||||
}
|
||||
|
||||
|
||||
float FTFont::Ascender() const
|
||||
{
|
||||
return impl->Ascender();
|
||||
}
|
||||
|
||||
|
||||
float FTFont::Descender() const
|
||||
{
|
||||
return impl->Descender();
|
||||
}
|
||||
|
||||
|
||||
float FTFont::LineHeight() const
|
||||
{
|
||||
return impl->LineHeight();
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTFont::Render(const char * string, const int len,
|
||||
FTPoint position, FTPoint spacing, int renderMode)
|
||||
{
|
||||
return impl->Render(string, len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTFont::Render(const wchar_t * string, const int len,
|
||||
FTPoint position, FTPoint spacing, int renderMode)
|
||||
{
|
||||
return impl->Render(string, len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
|
||||
float FTFont::Advance(const char * string, const int len, FTPoint spacing)
|
||||
{
|
||||
return impl->Advance(string, len, spacing);
|
||||
}
|
||||
|
||||
|
||||
float FTFont::Advance(const wchar_t * string, const int len, FTPoint spacing)
|
||||
{
|
||||
return impl->Advance(string, len, spacing);
|
||||
}
|
||||
|
||||
|
||||
FTBBox FTFont::BBox(const char *string, const int len,
|
||||
FTPoint position, FTPoint spacing)
|
||||
{
|
||||
return impl->BBox(string, len, position, spacing);
|
||||
}
|
||||
|
||||
|
||||
FTBBox FTFont::BBox(const wchar_t *string, const int len,
|
||||
FTPoint position, FTPoint spacing)
|
||||
{
|
||||
return impl->BBox(string, len, position, spacing);
|
||||
}
|
||||
|
||||
|
||||
FT_Error FTFont::Error() const
|
||||
{
|
||||
return impl->err;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTFontImpl
|
||||
//
|
||||
|
||||
|
||||
FTFontImpl::FTFontImpl(FTFont *ftFont, char const *fontFilePath) :
|
||||
face(fontFilePath),
|
||||
useDisplayLists(true),
|
||||
load_flags(FT_LOAD_DEFAULT),
|
||||
intf(ftFont),
|
||||
glyphList(0)
|
||||
{
|
||||
err = face.Error();
|
||||
if(err == 0)
|
||||
{
|
||||
glyphList = new FTGlyphContainer(&face);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FTFontImpl::FTFontImpl(FTFont *ftFont, const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes) :
|
||||
face(pBufferBytes, bufferSizeInBytes),
|
||||
useDisplayLists(true),
|
||||
load_flags(FT_LOAD_DEFAULT),
|
||||
intf(ftFont),
|
||||
glyphList(0)
|
||||
{
|
||||
err = face.Error();
|
||||
if(err == 0)
|
||||
{
|
||||
glyphList = new FTGlyphContainer(&face);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FTFontImpl::~FTFontImpl()
|
||||
{
|
||||
if(glyphList)
|
||||
{
|
||||
delete glyphList;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool FTFontImpl::Attach(const char* fontFilePath)
|
||||
{
|
||||
if(!face.Attach(fontFilePath))
|
||||
{
|
||||
err = face.Error();
|
||||
return false;
|
||||
}
|
||||
|
||||
err = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool FTFontImpl::Attach(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes)
|
||||
{
|
||||
if(!face.Attach(pBufferBytes, bufferSizeInBytes))
|
||||
{
|
||||
err = face.Error();
|
||||
return false;
|
||||
}
|
||||
|
||||
err = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool FTFontImpl::FaceSize(const unsigned int size, const unsigned int res)
|
||||
{
|
||||
if(glyphList != NULL)
|
||||
{
|
||||
delete glyphList;
|
||||
glyphList = NULL;
|
||||
}
|
||||
|
||||
charSize = face.Size(size, res);
|
||||
err = face.Error();
|
||||
|
||||
if(err != 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
glyphList = new FTGlyphContainer(&face);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
unsigned int FTFontImpl::FaceSize() const
|
||||
{
|
||||
return charSize.CharSize();
|
||||
}
|
||||
|
||||
|
||||
void FTFontImpl::Depth(float depth)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
void FTFontImpl::Outset(float outset)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
void FTFontImpl::Outset(float front, float back)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
void FTFontImpl::GlyphLoadFlags(FT_Int flags)
|
||||
{
|
||||
load_flags = flags;
|
||||
}
|
||||
|
||||
|
||||
bool FTFontImpl::CharMap(FT_Encoding encoding)
|
||||
{
|
||||
bool result = glyphList->CharMap(encoding);
|
||||
err = glyphList->Error();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
unsigned int FTFontImpl::CharMapCount() const
|
||||
{
|
||||
return face.CharMapCount();
|
||||
}
|
||||
|
||||
|
||||
FT_Encoding* FTFontImpl::CharMapList()
|
||||
{
|
||||
return face.CharMapList();
|
||||
}
|
||||
|
||||
|
||||
void FTFontImpl::UseDisplayList(bool useList)
|
||||
{
|
||||
useDisplayLists = useList;
|
||||
}
|
||||
|
||||
|
||||
float FTFontImpl::Ascender() const
|
||||
{
|
||||
return charSize.Ascender();
|
||||
}
|
||||
|
||||
|
||||
float FTFontImpl::Descender() const
|
||||
{
|
||||
return charSize.Descender();
|
||||
}
|
||||
|
||||
|
||||
float FTFontImpl::LineHeight() const
|
||||
{
|
||||
return charSize.Height();
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
inline FTBBox FTFontImpl::BBoxI(const T* string, const int len,
|
||||
FTPoint position, FTPoint spacing)
|
||||
{
|
||||
FTBBox totalBBox;
|
||||
|
||||
/* Only compute the bounds if string is non-empty. */
|
||||
if(string && ('\0' != string[0]))
|
||||
{
|
||||
// for multibyte - we can't rely on sizeof(T) == character
|
||||
FTUnicodeStringItr<T> ustr(string);
|
||||
unsigned int thisChar = *ustr++;
|
||||
unsigned int nextChar = *ustr;
|
||||
|
||||
if(CheckGlyph(thisChar))
|
||||
{
|
||||
totalBBox = glyphList->BBox(thisChar);
|
||||
totalBBox += position;
|
||||
|
||||
position += FTPoint(glyphList->Advance(thisChar, nextChar), 0.0);
|
||||
}
|
||||
|
||||
/* Expand totalBox by each glyph in string */
|
||||
for(int i = 1; (len < 0 && *ustr) || (len >= 0 && i < len); i++)
|
||||
{
|
||||
thisChar = *ustr++;
|
||||
nextChar = *ustr;
|
||||
|
||||
if(CheckGlyph(thisChar))
|
||||
{
|
||||
position += spacing;
|
||||
|
||||
FTBBox tempBBox = glyphList->BBox(thisChar);
|
||||
tempBBox += position;
|
||||
totalBBox |= tempBBox;
|
||||
|
||||
position += FTPoint(glyphList->Advance(thisChar, nextChar),
|
||||
0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return totalBBox;
|
||||
}
|
||||
|
||||
|
||||
FTBBox FTFontImpl::BBox(const char *string, const int len,
|
||||
FTPoint position, FTPoint spacing)
|
||||
{
|
||||
/* The chars need to be unsigned because they are cast to int later */
|
||||
return BBoxI((const unsigned char *)string, len, position, spacing);
|
||||
}
|
||||
|
||||
|
||||
FTBBox FTFontImpl::BBox(const wchar_t *string, const int len,
|
||||
FTPoint position, FTPoint spacing)
|
||||
{
|
||||
return BBoxI(string, len, position, spacing);
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
inline float FTFontImpl::AdvanceI(const T* string, const int len,
|
||||
FTPoint spacing)
|
||||
{
|
||||
float advance = 0.0f;
|
||||
FTUnicodeStringItr<T> ustr(string);
|
||||
|
||||
for(int i = 0; (len < 0 && *ustr) || (len >= 0 && i < len); i++)
|
||||
{
|
||||
unsigned int thisChar = *ustr++;
|
||||
unsigned int nextChar = *ustr;
|
||||
|
||||
if(CheckGlyph(thisChar))
|
||||
{
|
||||
advance += glyphList->Advance(thisChar, nextChar);
|
||||
}
|
||||
|
||||
if(nextChar)
|
||||
{
|
||||
advance += spacing.Xf();
|
||||
}
|
||||
}
|
||||
|
||||
return advance;
|
||||
}
|
||||
|
||||
|
||||
float FTFontImpl::Advance(const char* string, const int len, FTPoint spacing)
|
||||
{
|
||||
/* The chars need to be unsigned because they are cast to int later */
|
||||
return AdvanceI((const unsigned char *)string, len, spacing);
|
||||
}
|
||||
|
||||
|
||||
float FTFontImpl::Advance(const wchar_t* string, const int len, FTPoint spacing)
|
||||
{
|
||||
return AdvanceI(string, len, spacing);
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
inline FTPoint FTFontImpl::RenderI(const T* string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
// for multibyte - we can't rely on sizeof(T) == character
|
||||
FTUnicodeStringItr<T> ustr(string);
|
||||
|
||||
for(int i = 0; (len < 0 && *ustr) || (len >= 0 && i < len); i++)
|
||||
{
|
||||
unsigned int thisChar = *ustr++;
|
||||
unsigned int nextChar = *ustr;
|
||||
|
||||
if(CheckGlyph(thisChar))
|
||||
{
|
||||
position += glyphList->Render(thisChar, nextChar,
|
||||
position, renderMode);
|
||||
}
|
||||
|
||||
if(nextChar)
|
||||
{
|
||||
position += spacing;
|
||||
}
|
||||
}
|
||||
|
||||
return position;
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTFontImpl::Render(const char * string, const int len,
|
||||
FTPoint position, FTPoint spacing, int renderMode)
|
||||
{
|
||||
return RenderI((const unsigned char *)string,
|
||||
len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTFontImpl::Render(const wchar_t * string, const int len,
|
||||
FTPoint position, FTPoint spacing, int renderMode)
|
||||
{
|
||||
return RenderI(string, len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
|
||||
bool FTFontImpl::CheckGlyph(const unsigned int characterCode)
|
||||
{
|
||||
if(glyphList->Glyph(characterCode))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
unsigned int glyphIndex = glyphList->FontIndex(characterCode);
|
||||
FT_GlyphSlot ftSlot = face.Glyph(glyphIndex, load_flags);
|
||||
if(!ftSlot)
|
||||
{
|
||||
err = face.Error();
|
||||
return false;
|
||||
}
|
||||
|
||||
FTGlyph* tempGlyph = intf->MakeGlyph(ftSlot);
|
||||
if(!tempGlyph)
|
||||
{
|
||||
if(0 == err)
|
||||
{
|
||||
err = 0x13;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
glyphList->Add(tempGlyph, characterCode);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
227
bazaar/FTGL/src/FTFont/FTFontGlue.cpp
Normal file
227
bazaar/FTGL/src/FTFont/FTFontGlue.cpp
Normal file
|
|
@ -0,0 +1,227 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Éric Beets <ericbeets@free.fr>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
|
||||
static const FTPoint static_ftpoint;
|
||||
static const FTBBox static_ftbbox;
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
#define C_TOR(cname, cargs, cxxname, cxxarg, cxxtype) \
|
||||
FTGLfont* cname cargs \
|
||||
{ \
|
||||
cxxname *f = new cxxname cxxarg; \
|
||||
if(f->Error()) \
|
||||
{ \
|
||||
delete f; \
|
||||
return NULL; \
|
||||
} \
|
||||
FTGLfont *ftgl = (FTGLfont *)malloc(sizeof(FTGLfont)); \
|
||||
ftgl->ptr = f; \
|
||||
ftgl->type = cxxtype; \
|
||||
return ftgl; \
|
||||
}
|
||||
|
||||
// FTBitmapFont::FTBitmapFont();
|
||||
C_TOR(ftglCreateBitmapFont, (const char *fontname),
|
||||
FTBitmapFont, (fontname), FONT_BITMAP);
|
||||
|
||||
// FTBufferFont::FTBufferFont();
|
||||
C_TOR(ftglCreateBufferFont, (const char *fontname),
|
||||
FTBufferFont, (fontname), FONT_BUFFER);
|
||||
|
||||
// FTExtrudeFont::FTExtrudeFont();
|
||||
C_TOR(ftglCreateExtrudeFont, (const char *fontname),
|
||||
FTExtrudeFont, (fontname), FONT_EXTRUDE);
|
||||
|
||||
// FTOutlineFont::FTOutlineFont();
|
||||
C_TOR(ftglCreateOutlineFont, (const char *fontname),
|
||||
FTOutlineFont, (fontname), FONT_OUTLINE);
|
||||
|
||||
// FTPixmapFont::FTPixmapFont();
|
||||
C_TOR(ftglCreatePixmapFont, (const char *fontname),
|
||||
FTPixmapFont, (fontname), FONT_PIXMAP);
|
||||
|
||||
// FTPolygonFont::FTPolygonFont();
|
||||
C_TOR(ftglCreatePolygonFont, (const char *fontname),
|
||||
FTPolygonFont, (fontname), FONT_POLYGON);
|
||||
|
||||
// FTTextureFont::FTTextureFont();
|
||||
C_TOR(ftglCreateTextureFont, (const char *fontname),
|
||||
FTTextureFont, (fontname), FONT_TEXTURE);
|
||||
|
||||
// FTCustomFont::FTCustomFont();
|
||||
class FTCustomFont : public FTFont
|
||||
{
|
||||
public:
|
||||
FTCustomFont(char const *fontFilePath, void *p,
|
||||
FTGLglyph * (*makeglyph) (FT_GlyphSlot, void *))
|
||||
: FTFont(fontFilePath),
|
||||
data(p),
|
||||
makeglyphCallback(makeglyph)
|
||||
{}
|
||||
|
||||
~FTCustomFont()
|
||||
{}
|
||||
|
||||
FTGlyph* MakeGlyph(FT_GlyphSlot slot)
|
||||
{
|
||||
FTGLglyph *g = makeglyphCallback(slot, data);
|
||||
FTGlyph *glyph = g->ptr;
|
||||
// XXX: we no longer need g, and no one will free it for us. Not
|
||||
// very elegant, and we need to make sure no one else will try to
|
||||
// use it.
|
||||
free(g);
|
||||
return glyph;
|
||||
}
|
||||
|
||||
private:
|
||||
void *data;
|
||||
FTGLglyph *(*makeglyphCallback) (FT_GlyphSlot, void *);
|
||||
};
|
||||
|
||||
C_TOR(ftglCreateCustomFont, (char const *fontFilePath, void *data,
|
||||
FTGLglyph * (*makeglyphCallback) (FT_GlyphSlot, void *)),
|
||||
FTCustomFont, (fontFilePath, data, makeglyphCallback), FONT_CUSTOM);
|
||||
|
||||
#define C_FUN(cret, cname, cargs, cxxerr, cxxname, cxxarg) \
|
||||
cret cname cargs \
|
||||
{ \
|
||||
if(!f || !f->ptr) \
|
||||
{ \
|
||||
fprintf(stderr, "FTGL warning: NULL pointer in %s\n", #cname); \
|
||||
cxxerr; \
|
||||
} \
|
||||
return f->ptr->cxxname cxxarg; \
|
||||
}
|
||||
|
||||
// FTFont::~FTFont();
|
||||
void ftglDestroyFont(FTGLfont *f)
|
||||
{
|
||||
if(!f || !f->ptr)
|
||||
{
|
||||
fprintf(stderr, "FTGL warning: NULL pointer in %s\n", __FUNCTION__);
|
||||
return;
|
||||
}
|
||||
delete f->ptr;
|
||||
free(f);
|
||||
}
|
||||
|
||||
// bool FTFont::Attach(const char* fontFilePath);
|
||||
C_FUN(int, ftglAttachFile, (FTGLfont *f, const char* path),
|
||||
return 0, Attach, (path));
|
||||
|
||||
// bool FTFont::Attach(const unsigned char *pBufferBytes,
|
||||
// size_t bufferSizeInBytes);
|
||||
C_FUN(int, ftglAttachData, (FTGLfont *f, const unsigned char *p, size_t s),
|
||||
return 0, Attach, (p, s));
|
||||
|
||||
// void FTFont::GlyphLoadFlags(FT_Int flags);
|
||||
C_FUN(void, ftglSetFontGlyphLoadFlags, (FTGLfont *f, FT_Int flags),
|
||||
return, GlyphLoadFlags, (flags));
|
||||
|
||||
// bool FTFont::CharMap(FT_Encoding encoding);
|
||||
C_FUN(int, ftglSetFontCharMap, (FTGLfont *f, FT_Encoding enc),
|
||||
return 0, CharMap, (enc));
|
||||
|
||||
// unsigned int FTFont::CharMapCount();
|
||||
C_FUN(unsigned int, ftglGetFontCharMapCount, (FTGLfont *f),
|
||||
return 0, CharMapCount, ());
|
||||
|
||||
// FT_Encoding* FTFont::CharMapList();
|
||||
C_FUN(FT_Encoding *, ftglGetFontCharMapList, (FTGLfont* f),
|
||||
return NULL, CharMapList, ());
|
||||
|
||||
// virtual bool FTFont::FaceSize(const unsigned int size,
|
||||
// const unsigned int res = 72);
|
||||
C_FUN(int, ftglSetFontFaceSize, (FTGLfont *f, unsigned int s, unsigned int r),
|
||||
return 0, FaceSize, (s, r > 0 ? r : 72));
|
||||
|
||||
// unsigned int FTFont::FaceSize() const;
|
||||
// XXX: need to call FaceSize() as FTFont::FaceSize() because of FTGLTexture
|
||||
C_FUN(unsigned int, ftglGetFontFaceSize, (FTGLfont *f),
|
||||
return 0, FTFont::FaceSize, ());
|
||||
|
||||
// virtual void FTFont::Depth(float depth);
|
||||
C_FUN(void, ftglSetFontDepth, (FTGLfont *f, float d), return, Depth, (d));
|
||||
|
||||
// virtual void FTFont::Outset(float front, float back);
|
||||
C_FUN(void, ftglSetFontOutset, (FTGLfont *f, float front, float back),
|
||||
return, FTFont::Outset, (front, back));
|
||||
|
||||
// void FTFont::UseDisplayList(bool useList);
|
||||
C_FUN(void, ftglSetFontDisplayList, (FTGLfont *f, int l),
|
||||
return, UseDisplayList, (l != 0));
|
||||
|
||||
// float FTFont::Ascender() const;
|
||||
C_FUN(float, ftglGetFontAscender, (FTGLfont *f), return 0.f, Ascender, ());
|
||||
|
||||
// float FTFont::Descender() const;
|
||||
C_FUN(float, ftglGetFontDescender, (FTGLfont *f), return 0.f, Descender, ());
|
||||
|
||||
// float FTFont::LineHeight() const;
|
||||
C_FUN(float, ftglGetFontLineHeight, (FTGLfont *f), return 0.f, LineHeight, ());
|
||||
|
||||
// void FTFont::BBox(const char* string, float& llx, float& lly, float& llz,
|
||||
// float& urx, float& ury, float& urz);
|
||||
extern "C++" {
|
||||
C_FUN(static FTBBox, _ftglGetFontBBox, (FTGLfont *f, char const *s, int len),
|
||||
return static_ftbbox, BBox, (s, len));
|
||||
}
|
||||
|
||||
void ftglGetFontBBox(FTGLfont *f, const char* s, int len, float c[6])
|
||||
{
|
||||
FTBBox ret = _ftglGetFontBBox(f, s, len);
|
||||
FTPoint lower = ret.Lower(), upper = ret.Upper();
|
||||
c[0] = lower.Xf(); c[1] = lower.Yf(); c[2] = lower.Zf();
|
||||
c[3] = upper.Xf(); c[4] = upper.Yf(); c[5] = upper.Zf();
|
||||
}
|
||||
|
||||
// float FTFont::Advance(const char* string);
|
||||
C_FUN(float, ftglGetFontAdvance, (FTGLfont *f, char const *s),
|
||||
return 0.0, Advance, (s));
|
||||
|
||||
// virtual void Render(const char* string, int renderMode);
|
||||
extern "C++" {
|
||||
C_FUN(static FTPoint, _ftglRenderFont, (FTGLfont *f, char const *s, int len,
|
||||
FTPoint pos, FTPoint spacing, int mode),
|
||||
return static_ftpoint, Render, (s, len, pos, spacing, mode));
|
||||
}
|
||||
|
||||
void ftglRenderFont(FTGLfont *f, const char *s, int mode)
|
||||
{
|
||||
_ftglRenderFont(f, s, -1, FTPoint(), FTPoint(), mode);
|
||||
}
|
||||
|
||||
// FT_Error FTFont::Error() const;
|
||||
C_FUN(FT_Error, ftglGetFontError, (FTGLfont *f), return -1, Error, ());
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
162
bazaar/FTGL/src/FTFont/FTFontImpl.h
Normal file
162
bazaar/FTGL/src/FTFont/FTFontImpl.h
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTFontImpl__
|
||||
#define __FTFontImpl__
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTFace.h"
|
||||
|
||||
class FTGlyphContainer;
|
||||
class FTGlyph;
|
||||
|
||||
class FTFontImpl
|
||||
{
|
||||
friend class FTFont;
|
||||
|
||||
protected:
|
||||
FTFontImpl(FTFont *ftFont, char const *fontFilePath);
|
||||
|
||||
FTFontImpl(FTFont *ftFont, const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
virtual ~FTFontImpl();
|
||||
|
||||
virtual bool Attach(const char* fontFilePath);
|
||||
|
||||
virtual bool Attach(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
virtual void GlyphLoadFlags(FT_Int flags);
|
||||
|
||||
virtual bool CharMap(FT_Encoding encoding);
|
||||
|
||||
virtual unsigned int CharMapCount() const;
|
||||
|
||||
virtual FT_Encoding* CharMapList();
|
||||
|
||||
virtual void UseDisplayList(bool useList);
|
||||
|
||||
virtual float Ascender() const;
|
||||
|
||||
virtual float Descender() const;
|
||||
|
||||
virtual float LineHeight() const;
|
||||
|
||||
virtual bool FaceSize(const unsigned int size,
|
||||
const unsigned int res);
|
||||
|
||||
virtual unsigned int FaceSize() const;
|
||||
|
||||
virtual void Depth(float depth);
|
||||
|
||||
virtual void Outset(float outset);
|
||||
|
||||
virtual void Outset(float front, float back);
|
||||
|
||||
virtual FTBBox BBox(const char *s, const int len, FTPoint, FTPoint);
|
||||
|
||||
virtual FTBBox BBox(const wchar_t *s, const int len, FTPoint, FTPoint);
|
||||
|
||||
virtual float Advance(const char *s, const int len, FTPoint);
|
||||
|
||||
virtual float Advance(const wchar_t *s, const int len, FTPoint);
|
||||
|
||||
virtual FTPoint Render(const char *s, const int len,
|
||||
FTPoint, FTPoint, int);
|
||||
|
||||
virtual FTPoint Render(const wchar_t *s, const int len,
|
||||
FTPoint, FTPoint, int);
|
||||
|
||||
/**
|
||||
* Current face object
|
||||
*/
|
||||
FTFace face;
|
||||
|
||||
/**
|
||||
* Current size object
|
||||
*/
|
||||
FTSize charSize;
|
||||
|
||||
/**
|
||||
* Flag to enable or disable the use of Display Lists inside FTGL
|
||||
* <code>true</code> turns ON display lists.
|
||||
* <code>false</code> turns OFF display lists.
|
||||
*/
|
||||
bool useDisplayLists;
|
||||
|
||||
/**
|
||||
* The default glyph loading flags.
|
||||
*/
|
||||
FT_Int load_flags;
|
||||
|
||||
/**
|
||||
* Current error code. Zero means no error.
|
||||
*/
|
||||
FT_Error err;
|
||||
|
||||
private:
|
||||
/**
|
||||
* A link back to the interface of which we are the implementation.
|
||||
*/
|
||||
FTFont *intf;
|
||||
|
||||
/**
|
||||
* Check that the glyph at <code>chr</code> exist. If not load it.
|
||||
*
|
||||
* @param chr character index
|
||||
* @return <code>true</code> if the glyph can be created.
|
||||
*/
|
||||
bool CheckGlyph(const unsigned int chr);
|
||||
|
||||
/**
|
||||
* An object that holds a list of glyphs
|
||||
*/
|
||||
FTGlyphContainer* glyphList;
|
||||
|
||||
/**
|
||||
* Current pen or cursor position;
|
||||
*/
|
||||
FTPoint pen;
|
||||
|
||||
/* Internal generic BBox() implementation */
|
||||
template <typename T>
|
||||
inline FTBBox BBoxI(const T *s, const int len,
|
||||
FTPoint position, FTPoint spacing);
|
||||
|
||||
/* Internal generic Advance() implementation */
|
||||
template <typename T>
|
||||
inline float AdvanceI(const T *s, const int len, FTPoint spacing);
|
||||
|
||||
/* Internal generic Render() implementation */
|
||||
template <typename T>
|
||||
inline FTPoint RenderI(const T *s, const int len,
|
||||
FTPoint position, FTPoint spacing, int mode);
|
||||
};
|
||||
|
||||
#endif // __FTFontImpl__
|
||||
|
||||
129
bazaar/FTGL/src/FTFont/FTOutlineFont.cpp
Normal file
129
bazaar/FTGL/src/FTFont/FTOutlineFont.cpp
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTOutlineFontImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTOutlineFont
|
||||
//
|
||||
|
||||
|
||||
FTOutlineFont::FTOutlineFont(char const *fontFilePath) :
|
||||
FTFont(new FTOutlineFontImpl(this, fontFilePath))
|
||||
{}
|
||||
|
||||
|
||||
FTOutlineFont::FTOutlineFont(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes) :
|
||||
FTFont(new FTOutlineFontImpl(this, pBufferBytes, bufferSizeInBytes))
|
||||
{}
|
||||
|
||||
|
||||
FTOutlineFont::~FTOutlineFont()
|
||||
{}
|
||||
|
||||
|
||||
FTGlyph* FTOutlineFont::MakeGlyph(FT_GlyphSlot ftGlyph)
|
||||
{
|
||||
FTOutlineFontImpl *myimpl = dynamic_cast<FTOutlineFontImpl *>(impl);
|
||||
if(!myimpl)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return new FTOutlineGlyph(ftGlyph, myimpl->outset,
|
||||
myimpl->useDisplayLists);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTOutlineFontImpl
|
||||
//
|
||||
|
||||
|
||||
FTOutlineFontImpl::FTOutlineFontImpl(FTFont *ftFont, const char* fontFilePath)
|
||||
: FTFontImpl(ftFont, fontFilePath),
|
||||
outset(0.0f)
|
||||
{
|
||||
load_flags = FT_LOAD_NO_HINTING;
|
||||
}
|
||||
|
||||
|
||||
FTOutlineFontImpl::FTOutlineFontImpl(FTFont *ftFont,
|
||||
const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes)
|
||||
: FTFontImpl(ftFont, pBufferBytes, bufferSizeInBytes),
|
||||
outset(0.0f)
|
||||
{
|
||||
load_flags = FT_LOAD_NO_HINTING;
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
inline FTPoint FTOutlineFontImpl::RenderI(const T* string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
// Protect GL_TEXTURE_2D, glHint(), GL_LINE_SMOOTH and blending functions
|
||||
glPushAttrib(GL_ENABLE_BIT | GL_HINT_BIT | GL_LINE_BIT
|
||||
| GL_COLOR_BUFFER_BIT);
|
||||
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
glEnable(GL_LINE_SMOOTH);
|
||||
glHint(GL_LINE_SMOOTH_HINT, GL_DONT_CARE);
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // GL_ONE
|
||||
|
||||
FTPoint tmp = FTFontImpl::Render(string, len,
|
||||
position, spacing, renderMode);
|
||||
|
||||
glPopAttrib();
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTOutlineFontImpl::Render(const char * string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
return RenderI(string, len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTOutlineFontImpl::Render(const wchar_t * string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
return RenderI(string, len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
73
bazaar/FTGL/src/FTFont/FTOutlineFontImpl.h
Normal file
73
bazaar/FTGL/src/FTFont/FTOutlineFontImpl.h
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTOutlineFontImpl__
|
||||
#define __FTOutlineFontImpl__
|
||||
|
||||
#include "FTFontImpl.h"
|
||||
|
||||
class FTGlyph;
|
||||
|
||||
class FTOutlineFontImpl : public FTFontImpl
|
||||
{
|
||||
friend class FTOutlineFont;
|
||||
|
||||
protected:
|
||||
FTOutlineFontImpl(FTFont *ftFont, const char* fontFilePath);
|
||||
|
||||
FTOutlineFontImpl(FTFont *ftFont, const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
/**
|
||||
* Set the outset distance for the font. Only implemented by
|
||||
* FTOutlineFont, FTPolygonFont and FTExtrudeFont
|
||||
*
|
||||
* @param outset The outset distance.
|
||||
*/
|
||||
virtual void Outset(float o) { outset = o; }
|
||||
|
||||
virtual FTPoint Render(const char *s, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode);
|
||||
|
||||
virtual FTPoint Render(const wchar_t *s, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode);
|
||||
|
||||
private:
|
||||
/**
|
||||
* The outset distance for the font.
|
||||
*/
|
||||
float outset;
|
||||
|
||||
/* Internal generic Render() implementation */
|
||||
template <typename T>
|
||||
inline FTPoint RenderI(const T *s, const int len,
|
||||
FTPoint position, FTPoint spacing, int mode);
|
||||
};
|
||||
|
||||
#endif // __FTOutlineFontImpl__
|
||||
|
||||
131
bazaar/FTGL/src/FTFont/FTPixmapFont.cpp
Normal file
131
bazaar/FTGL/src/FTFont/FTPixmapFont.cpp
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTPixmapFontImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTPixmapFont
|
||||
//
|
||||
|
||||
|
||||
FTPixmapFont::FTPixmapFont(char const *fontFilePath) :
|
||||
FTFont(new FTPixmapFontImpl(this, fontFilePath))
|
||||
{}
|
||||
|
||||
|
||||
FTPixmapFont::FTPixmapFont(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes) :
|
||||
FTFont(new FTPixmapFontImpl(this, pBufferBytes, bufferSizeInBytes))
|
||||
{}
|
||||
|
||||
|
||||
FTPixmapFont::~FTPixmapFont()
|
||||
{}
|
||||
|
||||
|
||||
FTGlyph* FTPixmapFont::MakeGlyph(FT_GlyphSlot ftGlyph)
|
||||
{
|
||||
return new FTPixmapGlyph(ftGlyph);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTPixmapFontImpl
|
||||
//
|
||||
|
||||
|
||||
FTPixmapFontImpl::FTPixmapFontImpl(FTFont *ftFont, const char* fontFilePath)
|
||||
: FTFontImpl(ftFont, fontFilePath)
|
||||
{
|
||||
load_flags = FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP;
|
||||
}
|
||||
|
||||
|
||||
FTPixmapFontImpl::FTPixmapFontImpl(FTFont *ftFont,
|
||||
const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes)
|
||||
: FTFontImpl(ftFont, pBufferBytes, bufferSizeInBytes)
|
||||
{
|
||||
load_flags = FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP;
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
inline FTPoint FTPixmapFontImpl::RenderI(const T* string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
// Protect GL_TEXTURE_2D and GL_BLEND, glPixelTransferf(), and blending
|
||||
// functions.
|
||||
glPushAttrib(GL_ENABLE_BIT | GL_PIXEL_MODE_BIT | GL_COLOR_BUFFER_BIT);
|
||||
|
||||
// Protect glPixelStorei() calls (made by FTPixmapGlyphImpl::RenderImpl).
|
||||
glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
|
||||
GLfloat ftglColour[4];
|
||||
glGetFloatv(GL_CURRENT_RASTER_COLOR, ftglColour);
|
||||
|
||||
glPixelTransferf(GL_RED_SCALE, ftglColour[0]);
|
||||
glPixelTransferf(GL_GREEN_SCALE, ftglColour[1]);
|
||||
glPixelTransferf(GL_BLUE_SCALE, ftglColour[2]);
|
||||
glPixelTransferf(GL_ALPHA_SCALE, ftglColour[3]);
|
||||
|
||||
FTPoint tmp = FTFontImpl::Render(string, len,
|
||||
position, spacing, renderMode);
|
||||
|
||||
glPopClientAttrib();
|
||||
glPopAttrib();
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTPixmapFontImpl::Render(const char * string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
return RenderI(string, len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTPixmapFontImpl::Render(const wchar_t * string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
return RenderI(string, len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
60
bazaar/FTGL/src/FTFont/FTPixmapFontImpl.h
Normal file
60
bazaar/FTGL/src/FTFont/FTPixmapFontImpl.h
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTPixmapFontImpl__
|
||||
#define __FTPixmapFontImpl__
|
||||
|
||||
#include "FTFontImpl.h"
|
||||
|
||||
class FTGlyph;
|
||||
|
||||
class FTPixmapFontImpl : public FTFontImpl
|
||||
{
|
||||
friend class FTPixmapFont;
|
||||
|
||||
protected:
|
||||
FTPixmapFontImpl(FTFont *ftFont, const char* fontFilePath);
|
||||
|
||||
FTPixmapFontImpl(FTFont *ftFont, const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
virtual FTPoint Render(const char *s, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode);
|
||||
|
||||
virtual FTPoint Render(const wchar_t *s, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode);
|
||||
|
||||
private:
|
||||
/* Internal generic Render() implementation */
|
||||
template <typename T>
|
||||
inline FTPoint RenderI(const T *s, const int len,
|
||||
FTPoint position, FTPoint spacing, int mode);
|
||||
};
|
||||
|
||||
#endif // __FTPixmapFontImpl__
|
||||
|
||||
89
bazaar/FTGL/src/FTFont/FTPolygonFont.cpp
Normal file
89
bazaar/FTGL/src/FTFont/FTPolygonFont.cpp
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTPolygonFontImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTPolygonFont
|
||||
//
|
||||
|
||||
|
||||
FTPolygonFont::FTPolygonFont(char const *fontFilePath) :
|
||||
FTFont(new FTPolygonFontImpl(this, fontFilePath))
|
||||
{}
|
||||
|
||||
|
||||
FTPolygonFont::FTPolygonFont(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes) :
|
||||
FTFont(new FTPolygonFontImpl(this, pBufferBytes, bufferSizeInBytes))
|
||||
{}
|
||||
|
||||
|
||||
FTPolygonFont::~FTPolygonFont()
|
||||
{}
|
||||
|
||||
|
||||
FTGlyph* FTPolygonFont::MakeGlyph(FT_GlyphSlot ftGlyph)
|
||||
{
|
||||
FTPolygonFontImpl *myimpl = dynamic_cast<FTPolygonFontImpl *>(impl);
|
||||
if(!myimpl)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return new FTPolygonGlyph(ftGlyph, myimpl->outset,
|
||||
myimpl->useDisplayLists);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTPolygonFontImpl
|
||||
//
|
||||
|
||||
|
||||
FTPolygonFontImpl::FTPolygonFontImpl(FTFont *ftFont, const char* fontFilePath)
|
||||
: FTFontImpl(ftFont, fontFilePath),
|
||||
outset(0.0f)
|
||||
{
|
||||
load_flags = FT_LOAD_NO_HINTING;
|
||||
}
|
||||
|
||||
|
||||
FTPolygonFontImpl::FTPolygonFontImpl(FTFont *ftFont,
|
||||
const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes)
|
||||
: FTFontImpl(ftFont, pBufferBytes, bufferSizeInBytes),
|
||||
outset(0.0f)
|
||||
{
|
||||
load_flags = FT_LOAD_NO_HINTING;
|
||||
}
|
||||
|
||||
60
bazaar/FTGL/src/FTFont/FTPolygonFontImpl.h
Normal file
60
bazaar/FTGL/src/FTFont/FTPolygonFontImpl.h
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTPolygonFontImpl__
|
||||
#define __FTPolygonFontImpl__
|
||||
|
||||
#include "FTFontImpl.h"
|
||||
|
||||
class FTGlyph;
|
||||
|
||||
class FTPolygonFontImpl : public FTFontImpl
|
||||
{
|
||||
friend class FTPolygonFont;
|
||||
|
||||
protected:
|
||||
FTPolygonFontImpl(FTFont *ftFont, const char* fontFilePath);
|
||||
|
||||
FTPolygonFontImpl(FTFont *ftFont, const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
/**
|
||||
* Set the outset distance for the font. Only implemented by
|
||||
* FTOutlineFont, FTPolygonFont and FTExtrudeFont
|
||||
*
|
||||
* @param depth The outset distance.
|
||||
*/
|
||||
virtual void Outset(float o) { outset = o; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* The outset distance (front and back) for the font.
|
||||
*/
|
||||
float outset;
|
||||
};
|
||||
|
||||
#endif // __FTPolygonFontImpl__
|
||||
|
||||
267
bazaar/FTGL/src/FTFont/FTTextureFont.cpp
Normal file
267
bazaar/FTGL/src/FTFont/FTTextureFont.cpp
Normal file
|
|
@ -0,0 +1,267 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include <cassert>
|
||||
#include <string> // For memset
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
|
||||
#include "../FTGlyph/FTTextureGlyphImpl.h"
|
||||
#include "./FTTextureFontImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTTextureFont
|
||||
//
|
||||
|
||||
|
||||
FTTextureFont::FTTextureFont(char const *fontFilePath) :
|
||||
FTFont(new FTTextureFontImpl(this, fontFilePath))
|
||||
{}
|
||||
|
||||
|
||||
FTTextureFont::FTTextureFont(const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes) :
|
||||
FTFont(new FTTextureFontImpl(this, pBufferBytes, bufferSizeInBytes))
|
||||
{}
|
||||
|
||||
|
||||
FTTextureFont::~FTTextureFont()
|
||||
{}
|
||||
|
||||
|
||||
FTGlyph* FTTextureFont::MakeGlyph(FT_GlyphSlot ftGlyph)
|
||||
{
|
||||
FTTextureFontImpl *myimpl = dynamic_cast<FTTextureFontImpl *>(impl);
|
||||
if(!myimpl)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return myimpl->MakeGlyphImpl(ftGlyph);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTTextureFontImpl
|
||||
//
|
||||
|
||||
|
||||
static inline GLuint NextPowerOf2(GLuint in)
|
||||
{
|
||||
in -= 1;
|
||||
|
||||
in |= in >> 16;
|
||||
in |= in >> 8;
|
||||
in |= in >> 4;
|
||||
in |= in >> 2;
|
||||
in |= in >> 1;
|
||||
|
||||
return in + 1;
|
||||
}
|
||||
|
||||
|
||||
FTTextureFontImpl::FTTextureFontImpl(FTFont *ftFont, const char* fontFilePath)
|
||||
: FTFontImpl(ftFont, fontFilePath),
|
||||
maximumGLTextureSize(0),
|
||||
textureWidth(0),
|
||||
textureHeight(0),
|
||||
glyphHeight(0),
|
||||
glyphWidth(0),
|
||||
padding(3),
|
||||
xOffset(0),
|
||||
yOffset(0)
|
||||
{
|
||||
load_flags = FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP;
|
||||
remGlyphs = numGlyphs = face.GlyphCount();
|
||||
}
|
||||
|
||||
|
||||
FTTextureFontImpl::FTTextureFontImpl(FTFont *ftFont,
|
||||
const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes)
|
||||
: FTFontImpl(ftFont, pBufferBytes, bufferSizeInBytes),
|
||||
maximumGLTextureSize(0),
|
||||
textureWidth(0),
|
||||
textureHeight(0),
|
||||
glyphHeight(0),
|
||||
glyphWidth(0),
|
||||
padding(3),
|
||||
xOffset(0),
|
||||
yOffset(0)
|
||||
{
|
||||
load_flags = FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP;
|
||||
remGlyphs = numGlyphs = face.GlyphCount();
|
||||
}
|
||||
|
||||
|
||||
FTTextureFontImpl::~FTTextureFontImpl()
|
||||
{
|
||||
if(textureIDList.size())
|
||||
{
|
||||
glDeleteTextures((GLsizei)textureIDList.size(),
|
||||
(const GLuint*)&textureIDList[0]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FTGlyph* FTTextureFontImpl::MakeGlyphImpl(FT_GlyphSlot ftGlyph)
|
||||
{
|
||||
glyphHeight = static_cast<int>(charSize.Height() + 0.5);
|
||||
glyphWidth = static_cast<int>(charSize.Width() + 0.5);
|
||||
|
||||
if(glyphHeight < 1) glyphHeight = 1;
|
||||
if(glyphWidth < 1) glyphWidth = 1;
|
||||
|
||||
if(textureIDList.empty())
|
||||
{
|
||||
textureIDList.push_back(CreateTexture());
|
||||
xOffset = yOffset = padding;
|
||||
}
|
||||
|
||||
if(xOffset > (textureWidth - glyphWidth))
|
||||
{
|
||||
xOffset = padding;
|
||||
yOffset += glyphHeight;
|
||||
|
||||
if(yOffset > (textureHeight - glyphHeight))
|
||||
{
|
||||
textureIDList.push_back(CreateTexture());
|
||||
yOffset = padding;
|
||||
}
|
||||
}
|
||||
|
||||
FTTextureGlyph* tempGlyph = new FTTextureGlyph(ftGlyph, textureIDList[textureIDList.size() - 1],
|
||||
xOffset, yOffset, textureWidth, textureHeight);
|
||||
xOffset += static_cast<int>(tempGlyph->BBox().Upper().X() - tempGlyph->BBox().Lower().X() + padding + 0.5);
|
||||
|
||||
--remGlyphs;
|
||||
|
||||
return tempGlyph;
|
||||
}
|
||||
|
||||
|
||||
void FTTextureFontImpl::CalculateTextureSize()
|
||||
{
|
||||
if(!maximumGLTextureSize)
|
||||
{
|
||||
maximumGLTextureSize = 1024;
|
||||
glGetIntegerv(GL_MAX_TEXTURE_SIZE, (GLint*)&maximumGLTextureSize);
|
||||
assert(maximumGLTextureSize); // If you hit this then you have an invalid OpenGL context.
|
||||
}
|
||||
|
||||
textureWidth = NextPowerOf2((remGlyphs * glyphWidth) + (padding * 2));
|
||||
textureWidth = textureWidth > maximumGLTextureSize ? maximumGLTextureSize : textureWidth;
|
||||
|
||||
int h = static_cast<int>((textureWidth - (padding * 2)) / glyphWidth + 0.5);
|
||||
|
||||
textureHeight = NextPowerOf2(((numGlyphs / h) + 1) * glyphHeight);
|
||||
textureHeight = textureHeight > maximumGLTextureSize ? maximumGLTextureSize : textureHeight;
|
||||
}
|
||||
|
||||
|
||||
GLuint FTTextureFontImpl::CreateTexture()
|
||||
{
|
||||
CalculateTextureSize();
|
||||
|
||||
int totalMemory = textureWidth * textureHeight;
|
||||
unsigned char* textureMemory = new unsigned char[totalMemory];
|
||||
memset(textureMemory, 0, totalMemory);
|
||||
|
||||
GLuint textID;
|
||||
glGenTextures(1, (GLuint*)&textID);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, textID);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, textureWidth, textureHeight,
|
||||
0, GL_ALPHA, GL_UNSIGNED_BYTE, textureMemory);
|
||||
|
||||
delete [] textureMemory;
|
||||
|
||||
return textID;
|
||||
}
|
||||
|
||||
|
||||
bool FTTextureFontImpl::FaceSize(const unsigned int size, const unsigned int res)
|
||||
{
|
||||
if(!textureIDList.empty())
|
||||
{
|
||||
glDeleteTextures((GLsizei)textureIDList.size(), (const GLuint*)&textureIDList[0]);
|
||||
textureIDList.clear();
|
||||
remGlyphs = numGlyphs = face.GlyphCount();
|
||||
}
|
||||
|
||||
return FTFontImpl::FaceSize(size, res);
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
inline FTPoint FTTextureFontImpl::RenderI(const T* string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
// Protect GL_TEXTURE_2D, GL_BLEND and blending functions
|
||||
glPushAttrib(GL_ENABLE_BIT | GL_COLOR_BUFFER_BIT);
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // GL_ONE
|
||||
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
FTTextureGlyphImpl::ResetActiveTexture();
|
||||
|
||||
FTPoint tmp = FTFontImpl::Render(string, len,
|
||||
position, spacing, renderMode);
|
||||
|
||||
glPopAttrib();
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTTextureFontImpl::Render(const char * string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
return RenderI(string, len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTTextureFontImpl::Render(const wchar_t * string, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode)
|
||||
{
|
||||
return RenderI(string, len, position, spacing, renderMode);
|
||||
}
|
||||
|
||||
152
bazaar/FTGL/src/FTFont/FTTextureFontImpl.h
Normal file
152
bazaar/FTGL/src/FTFont/FTTextureFontImpl.h
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTTextureFontImpl__
|
||||
#define __FTTextureFontImpl__
|
||||
|
||||
#include "FTFontImpl.h"
|
||||
|
||||
#include "../FTVector.h"
|
||||
|
||||
class FTTextureGlyph;
|
||||
|
||||
class FTTextureFontImpl : public FTFontImpl
|
||||
{
|
||||
friend class FTTextureFont;
|
||||
|
||||
protected:
|
||||
FTTextureFontImpl(FTFont *ftFont, const char* fontFilePath);
|
||||
|
||||
FTTextureFontImpl(FTFont *ftFont, const unsigned char *pBufferBytes,
|
||||
size_t bufferSizeInBytes);
|
||||
|
||||
virtual ~FTTextureFontImpl();
|
||||
|
||||
/**
|
||||
* Set the char size for the current face.
|
||||
*
|
||||
* @param size the face size in points (1/72 inch)
|
||||
* @param res the resolution of the target device.
|
||||
* @return <code>true</code> if size was set correctly
|
||||
*/
|
||||
virtual bool FaceSize(const unsigned int size,
|
||||
const unsigned int res = 72);
|
||||
|
||||
virtual FTPoint Render(const char *s, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode);
|
||||
|
||||
virtual FTPoint Render(const wchar_t *s, const int len,
|
||||
FTPoint position, FTPoint spacing,
|
||||
int renderMode);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Create an FTTextureGlyph object for the base class.
|
||||
*/
|
||||
FTGlyph* MakeGlyphImpl(FT_GlyphSlot ftGlyph);
|
||||
|
||||
/**
|
||||
* Get the size of a block of memory required to layout the glyphs
|
||||
*
|
||||
* Calculates a width and height based on the glyph sizes and the
|
||||
* number of glyphs. It over estimates.
|
||||
*/
|
||||
inline void CalculateTextureSize();
|
||||
|
||||
/**
|
||||
* Creates a 'blank' OpenGL texture object.
|
||||
*
|
||||
* The format is GL_ALPHA and the params are
|
||||
* GL_TEXTURE_WRAP_S = GL_CLAMP
|
||||
* GL_TEXTURE_WRAP_T = GL_CLAMP
|
||||
* GL_TEXTURE_MAG_FILTER = GL_LINEAR
|
||||
* GL_TEXTURE_MIN_FILTER = GL_LINEAR
|
||||
* Note that mipmapping is NOT used
|
||||
*/
|
||||
inline GLuint CreateTexture();
|
||||
|
||||
/**
|
||||
* The maximum texture dimension on this OpenGL implemetation
|
||||
*/
|
||||
GLsizei maximumGLTextureSize;
|
||||
|
||||
/**
|
||||
* The minimum texture width required to hold the glyphs
|
||||
*/
|
||||
GLsizei textureWidth;
|
||||
|
||||
/**
|
||||
* The minimum texture height required to hold the glyphs
|
||||
*/
|
||||
GLsizei textureHeight;
|
||||
|
||||
/**
|
||||
*An array of texture ids
|
||||
*/
|
||||
FTVector<GLuint> textureIDList;
|
||||
|
||||
/**
|
||||
* The max height for glyphs in the current font
|
||||
*/
|
||||
int glyphHeight;
|
||||
|
||||
/**
|
||||
* The max width for glyphs in the current font
|
||||
*/
|
||||
int glyphWidth;
|
||||
|
||||
/**
|
||||
* A value to be added to the height and width to ensure that
|
||||
* glyphs don't overlap in the texture
|
||||
*/
|
||||
unsigned int padding;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
unsigned int numGlyphs;
|
||||
|
||||
/**
|
||||
*/
|
||||
unsigned int remGlyphs;
|
||||
|
||||
/**
|
||||
*/
|
||||
int xOffset;
|
||||
|
||||
/**
|
||||
*/
|
||||
int yOffset;
|
||||
|
||||
/* Internal generic Render() implementation */
|
||||
template <typename T>
|
||||
inline FTPoint RenderI(const T *s, const int len,
|
||||
FTPoint position, FTPoint spacing, int mode);
|
||||
};
|
||||
|
||||
#endif // __FTTextureFontImpl__
|
||||
|
||||
128
bazaar/FTGL/src/FTGlyph/FTBitmapGlyph.cpp
Normal file
128
bazaar/FTGL/src/FTGlyph/FTBitmapGlyph.cpp
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTBitmapGlyphImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTGLBitmapGlyph
|
||||
//
|
||||
|
||||
|
||||
FTBitmapGlyph::FTBitmapGlyph(FT_GlyphSlot glyph) :
|
||||
FTGlyph(new FTBitmapGlyphImpl(glyph))
|
||||
{}
|
||||
|
||||
|
||||
FTBitmapGlyph::~FTBitmapGlyph()
|
||||
{}
|
||||
|
||||
|
||||
const FTPoint& FTBitmapGlyph::Render(const FTPoint& pen, int renderMode)
|
||||
{
|
||||
FTBitmapGlyphImpl *myimpl = dynamic_cast<FTBitmapGlyphImpl *>(impl);
|
||||
return myimpl->RenderImpl(pen, renderMode);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTGLBitmapGlyphImpl
|
||||
//
|
||||
|
||||
|
||||
FTBitmapGlyphImpl::FTBitmapGlyphImpl(FT_GlyphSlot glyph)
|
||||
: FTGlyphImpl(glyph),
|
||||
destWidth(0),
|
||||
destHeight(0),
|
||||
data(0)
|
||||
{
|
||||
err = FT_Render_Glyph(glyph, FT_RENDER_MODE_MONO);
|
||||
if(err || ft_glyph_format_bitmap != glyph->format)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
FT_Bitmap bitmap = glyph->bitmap;
|
||||
|
||||
unsigned int srcWidth = bitmap.width;
|
||||
unsigned int srcHeight = bitmap.rows;
|
||||
unsigned int srcPitch = bitmap.pitch;
|
||||
|
||||
destWidth = srcWidth;
|
||||
destHeight = srcHeight;
|
||||
destPitch = srcPitch;
|
||||
|
||||
if(destWidth && destHeight)
|
||||
{
|
||||
data = new unsigned char[destPitch * destHeight];
|
||||
unsigned char* dest = data + ((destHeight - 1) * destPitch);
|
||||
|
||||
unsigned char* src = bitmap.buffer;
|
||||
|
||||
for(unsigned int y = 0; y < srcHeight; ++y)
|
||||
{
|
||||
memcpy(dest, src, srcPitch);
|
||||
dest -= destPitch;
|
||||
src += srcPitch;
|
||||
}
|
||||
}
|
||||
|
||||
pos = FTPoint(glyph->bitmap_left, static_cast<int>(srcHeight) - glyph->bitmap_top, 0.0);
|
||||
}
|
||||
|
||||
|
||||
FTBitmapGlyphImpl::~FTBitmapGlyphImpl()
|
||||
{
|
||||
delete [] data;
|
||||
}
|
||||
|
||||
|
||||
const FTPoint& FTBitmapGlyphImpl::RenderImpl(const FTPoint& pen, int renderMode)
|
||||
{
|
||||
if(data)
|
||||
{
|
||||
float dx, dy;
|
||||
|
||||
dx = pen.Xf() + pos.Xf();
|
||||
dy = pen.Yf() - pos.Yf();
|
||||
|
||||
glBitmap(0, 0, 0.0f, 0.0f, dx, dy, (const GLubyte*)0);
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, destPitch * 8);
|
||||
glBitmap(destWidth, destHeight, 0.0f, 0.0, 0.0, 0.0,
|
||||
(const GLubyte*)data);
|
||||
glBitmap(0, 0, 0.0f, 0.0f, -dx, -dy, (const GLubyte*)0);
|
||||
}
|
||||
|
||||
return advance;
|
||||
}
|
||||
|
||||
71
bazaar/FTGL/src/FTGlyph/FTBitmapGlyphImpl.h
Normal file
71
bazaar/FTGL/src/FTGlyph/FTBitmapGlyphImpl.h
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTBitmapGlyphImpl__
|
||||
#define __FTBitmapGlyphImpl__
|
||||
|
||||
#include "FTGlyphImpl.h"
|
||||
|
||||
class FTBitmapGlyphImpl : public FTGlyphImpl
|
||||
{
|
||||
friend class FTBitmapGlyph;
|
||||
|
||||
protected:
|
||||
FTBitmapGlyphImpl(FT_GlyphSlot glyph);
|
||||
|
||||
virtual ~FTBitmapGlyphImpl();
|
||||
|
||||
virtual const FTPoint& RenderImpl(const FTPoint& pen, int renderMode);
|
||||
|
||||
private:
|
||||
/**
|
||||
* The width of the glyph 'image'
|
||||
*/
|
||||
unsigned int destWidth;
|
||||
|
||||
/**
|
||||
* The height of the glyph 'image'
|
||||
*/
|
||||
unsigned int destHeight;
|
||||
|
||||
/**
|
||||
* The pitch of the glyph 'image'
|
||||
*/
|
||||
unsigned int destPitch;
|
||||
|
||||
/**
|
||||
* Vector from the pen position to the topleft corner of the bitmap
|
||||
*/
|
||||
FTPoint pos;
|
||||
|
||||
/**
|
||||
* Pointer to the 'image' data
|
||||
*/
|
||||
unsigned char* data;
|
||||
};
|
||||
|
||||
#endif // __FTBitmapGlyphImpl__
|
||||
|
||||
121
bazaar/FTGL/src/FTGlyph/FTBufferGlyph.cpp
Normal file
121
bazaar/FTGL/src/FTGlyph/FTBufferGlyph.cpp
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTBufferGlyphImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTGLBufferGlyph
|
||||
//
|
||||
|
||||
|
||||
FTBufferGlyph::FTBufferGlyph(FT_GlyphSlot glyph, FTBuffer *buffer) :
|
||||
FTGlyph(new FTBufferGlyphImpl(glyph, buffer))
|
||||
{}
|
||||
|
||||
|
||||
FTBufferGlyph::~FTBufferGlyph()
|
||||
{}
|
||||
|
||||
|
||||
const FTPoint& FTBufferGlyph::Render(const FTPoint& pen, int renderMode)
|
||||
{
|
||||
FTBufferGlyphImpl *myimpl = dynamic_cast<FTBufferGlyphImpl *>(impl);
|
||||
return myimpl->RenderImpl(pen, renderMode);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTGLBufferGlyphImpl
|
||||
//
|
||||
|
||||
|
||||
FTBufferGlyphImpl::FTBufferGlyphImpl(FT_GlyphSlot glyph, FTBuffer *p)
|
||||
: FTGlyphImpl(glyph),
|
||||
has_bitmap(false),
|
||||
buffer(p)
|
||||
{
|
||||
err = FT_Render_Glyph(glyph, FT_RENDER_MODE_NORMAL);
|
||||
if(err || glyph->format != ft_glyph_format_bitmap)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
bitmap = glyph->bitmap;
|
||||
pixels = new unsigned char[bitmap.pitch * bitmap.rows];
|
||||
memcpy(pixels, bitmap.buffer, bitmap.pitch * bitmap.rows);
|
||||
|
||||
if(bitmap.width && bitmap.rows)
|
||||
{
|
||||
has_bitmap = true;
|
||||
corner = FTPoint(glyph->bitmap_left, glyph->bitmap_top);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FTBufferGlyphImpl::~FTBufferGlyphImpl()
|
||||
{
|
||||
delete[] pixels;
|
||||
}
|
||||
|
||||
|
||||
const FTPoint& FTBufferGlyphImpl::RenderImpl(const FTPoint& pen, int renderMode)
|
||||
{
|
||||
if(has_bitmap)
|
||||
{
|
||||
FTPoint pos(buffer->Pos() + pen + corner);
|
||||
int dx = (int)(pos.Xf() + 0.5f);
|
||||
int dy = buffer->Height() - (int)(pos.Yf() + 0.5f);
|
||||
unsigned char * dest = buffer->Pixels() + dx + dy * buffer->Width();
|
||||
|
||||
for(int y = 0; y < bitmap.rows; y++)
|
||||
{
|
||||
// FIXME: change the loop bounds instead of doing this test
|
||||
if(y + dy < 0 || y + dy >= buffer->Height()) continue;
|
||||
|
||||
for(int x = 0; x < bitmap.width; x++)
|
||||
{
|
||||
if(x + dx < 0 || x + dx >= buffer->Width()) continue;
|
||||
|
||||
unsigned char p = pixels[y * bitmap.pitch + x];
|
||||
|
||||
if(p)
|
||||
{
|
||||
dest[y * buffer->Width() + x] = p;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return advance;
|
||||
}
|
||||
|
||||
52
bazaar/FTGL/src/FTGlyph/FTBufferGlyphImpl.h
Normal file
52
bazaar/FTGL/src/FTGlyph/FTBufferGlyphImpl.h
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTBufferGlyphImpl__
|
||||
#define __FTBufferGlyphImpl__
|
||||
|
||||
#include "FTGlyphImpl.h"
|
||||
|
||||
class FTBufferGlyphImpl : public FTGlyphImpl
|
||||
{
|
||||
friend class FTBufferGlyph;
|
||||
|
||||
protected:
|
||||
FTBufferGlyphImpl(FT_GlyphSlot glyph, FTBuffer *p);
|
||||
|
||||
virtual ~FTBufferGlyphImpl();
|
||||
|
||||
virtual const FTPoint& RenderImpl(const FTPoint& pen, int renderMode);
|
||||
|
||||
private:
|
||||
bool has_bitmap;
|
||||
FT_Bitmap bitmap;
|
||||
unsigned char *pixels;
|
||||
FTPoint corner;
|
||||
|
||||
FTBuffer *buffer;
|
||||
};
|
||||
|
||||
#endif // __FTBufferGlyphImpl__
|
||||
|
||||
265
bazaar/FTGL/src/FTGlyph/FTExtrudeGlyph.cpp
Normal file
265
bazaar/FTGL/src/FTGlyph/FTExtrudeGlyph.cpp
Normal file
|
|
@ -0,0 +1,265 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTExtrudeGlyphImpl.h"
|
||||
#include "../FTVectoriser.h"
|
||||
|
||||
|
||||
//
|
||||
// FTGLExtrudeGlyph
|
||||
//
|
||||
|
||||
|
||||
FTExtrudeGlyph::FTExtrudeGlyph(FT_GlyphSlot glyph, float depth,
|
||||
float frontOutset, float backOutset,
|
||||
bool useDisplayList) :
|
||||
FTGlyph(new FTExtrudeGlyphImpl(glyph, depth, frontOutset, backOutset,
|
||||
useDisplayList))
|
||||
{}
|
||||
|
||||
|
||||
FTExtrudeGlyph::~FTExtrudeGlyph()
|
||||
{}
|
||||
|
||||
|
||||
const FTPoint& FTExtrudeGlyph::Render(const FTPoint& pen, int renderMode)
|
||||
{
|
||||
FTExtrudeGlyphImpl *myimpl = dynamic_cast<FTExtrudeGlyphImpl *>(impl);
|
||||
return myimpl->RenderImpl(pen, renderMode);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTGLExtrudeGlyphImpl
|
||||
//
|
||||
|
||||
|
||||
FTExtrudeGlyphImpl::FTExtrudeGlyphImpl(FT_GlyphSlot glyph, float _depth,
|
||||
float _frontOutset, float _backOutset,
|
||||
bool useDisplayList)
|
||||
: FTGlyphImpl(glyph),
|
||||
vectoriser(0),
|
||||
glList(0)
|
||||
{
|
||||
bBox.SetDepth(-_depth);
|
||||
|
||||
if(ft_glyph_format_outline != glyph->format)
|
||||
{
|
||||
err = 0x14; // Invalid_Outline
|
||||
return;
|
||||
}
|
||||
|
||||
vectoriser = new FTVectoriser(glyph);
|
||||
|
||||
if((vectoriser->ContourCount() < 1) || (vectoriser->PointCount() < 3))
|
||||
{
|
||||
delete vectoriser;
|
||||
vectoriser = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
hscale = glyph->face->size->metrics.x_ppem * 64;
|
||||
vscale = glyph->face->size->metrics.y_ppem * 64;
|
||||
depth = _depth;
|
||||
frontOutset = _frontOutset;
|
||||
backOutset = _backOutset;
|
||||
|
||||
if(useDisplayList)
|
||||
{
|
||||
glList = glGenLists(3);
|
||||
|
||||
/* Front face */
|
||||
glNewList(glList + 0, GL_COMPILE);
|
||||
RenderFront();
|
||||
glEndList();
|
||||
|
||||
/* Back face */
|
||||
glNewList(glList + 1, GL_COMPILE);
|
||||
RenderBack();
|
||||
glEndList();
|
||||
|
||||
/* Side face */
|
||||
glNewList(glList + 2, GL_COMPILE);
|
||||
RenderSide();
|
||||
glEndList();
|
||||
|
||||
delete vectoriser;
|
||||
vectoriser = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FTExtrudeGlyphImpl::~FTExtrudeGlyphImpl()
|
||||
{
|
||||
if(glList)
|
||||
{
|
||||
glDeleteLists(glList, 3);
|
||||
}
|
||||
else if(vectoriser)
|
||||
{
|
||||
delete vectoriser;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const FTPoint& FTExtrudeGlyphImpl::RenderImpl(const FTPoint& pen,
|
||||
int renderMode)
|
||||
{
|
||||
glTranslatef(pen.Xf(), pen.Yf(), pen.Zf());
|
||||
if(glList)
|
||||
{
|
||||
if(renderMode & FTGL::RENDER_FRONT)
|
||||
glCallList(glList + 0);
|
||||
if(renderMode & FTGL::RENDER_BACK)
|
||||
glCallList(glList + 1);
|
||||
if(renderMode & FTGL::RENDER_SIDE)
|
||||
glCallList(glList + 2);
|
||||
}
|
||||
else if(vectoriser)
|
||||
{
|
||||
if(renderMode & FTGL::RENDER_FRONT)
|
||||
RenderFront();
|
||||
if(renderMode & FTGL::RENDER_BACK)
|
||||
RenderBack();
|
||||
if(renderMode & FTGL::RENDER_SIDE)
|
||||
RenderSide();
|
||||
}
|
||||
glTranslatef(-pen.Xf(), -pen.Yf(), -pen.Zf());
|
||||
|
||||
return advance;
|
||||
}
|
||||
|
||||
|
||||
void FTExtrudeGlyphImpl::RenderFront()
|
||||
{
|
||||
vectoriser->MakeMesh(1.0, 1, frontOutset);
|
||||
glNormal3d(0.0, 0.0, 1.0);
|
||||
|
||||
const FTMesh *mesh = vectoriser->GetMesh();
|
||||
for(unsigned int j = 0; j < mesh->TesselationCount(); ++j)
|
||||
{
|
||||
const FTTesselation* subMesh = mesh->Tesselation(j);
|
||||
unsigned int polygonType = subMesh->PolygonType();
|
||||
|
||||
glBegin(polygonType);
|
||||
for(unsigned int i = 0; i < subMesh->PointCount(); ++i)
|
||||
{
|
||||
FTPoint pt = subMesh->Point(i);
|
||||
|
||||
glTexCoord2f(pt.Xf() / hscale,
|
||||
pt.Yf() / vscale);
|
||||
|
||||
glVertex3f(pt.Xf() / 64.0f,
|
||||
pt.Yf() / 64.0f,
|
||||
0.0f);
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FTExtrudeGlyphImpl::RenderBack()
|
||||
{
|
||||
vectoriser->MakeMesh(-1.0, 2, backOutset);
|
||||
glNormal3d(0.0, 0.0, -1.0);
|
||||
|
||||
const FTMesh *mesh = vectoriser->GetMesh();
|
||||
for(unsigned int j = 0; j < mesh->TesselationCount(); ++j)
|
||||
{
|
||||
const FTTesselation* subMesh = mesh->Tesselation(j);
|
||||
unsigned int polygonType = subMesh->PolygonType();
|
||||
|
||||
glBegin(polygonType);
|
||||
for(unsigned int i = 0; i < subMesh->PointCount(); ++i)
|
||||
{
|
||||
FTPoint pt = subMesh->Point(i);
|
||||
|
||||
glTexCoord2f(subMesh->Point(i).Xf() / hscale,
|
||||
subMesh->Point(i).Yf() / vscale);
|
||||
|
||||
glVertex3f(subMesh->Point(i).Xf() / 64.0f,
|
||||
subMesh->Point(i).Yf() / 64.0f,
|
||||
-depth);
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FTExtrudeGlyphImpl::RenderSide()
|
||||
{
|
||||
int contourFlag = vectoriser->ContourFlag();
|
||||
|
||||
for(size_t c = 0; c < vectoriser->ContourCount(); ++c)
|
||||
{
|
||||
const FTContour* contour = vectoriser->Contour(c);
|
||||
size_t n = contour->PointCount();
|
||||
|
||||
if(n < 2)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
glBegin(GL_QUAD_STRIP);
|
||||
for(size_t j = 0; j <= n; ++j)
|
||||
{
|
||||
size_t cur = (j == n) ? 0 : j;
|
||||
size_t next = (cur == n - 1) ? 0 : cur + 1;
|
||||
|
||||
FTPoint frontPt = contour->FrontPoint(cur);
|
||||
FTPoint nextPt = contour->FrontPoint(next);
|
||||
FTPoint backPt = contour->BackPoint(cur);
|
||||
|
||||
FTPoint normal = FTPoint(0.f, 0.f, 1.f) ^ (frontPt - nextPt);
|
||||
if(normal != FTPoint(0.0f, 0.0f, 0.0f))
|
||||
{
|
||||
glNormal3dv(static_cast<const FTGL_DOUBLE*>(normal.Normalise()));
|
||||
}
|
||||
|
||||
glTexCoord2f(frontPt.Xf() / hscale, frontPt.Yf() / vscale);
|
||||
|
||||
if(contourFlag & ft_outline_reverse_fill)
|
||||
{
|
||||
glVertex3f(backPt.Xf() / 64.0f, backPt.Yf() / 64.0f, 0.0f);
|
||||
glVertex3f(frontPt.Xf() / 64.0f, frontPt.Yf() / 64.0f, -depth);
|
||||
}
|
||||
else
|
||||
{
|
||||
glVertex3f(backPt.Xf() / 64.0f, backPt.Yf() / 64.0f, -depth);
|
||||
glVertex3f(frontPt.Xf() / 64.0f, frontPt.Yf() / 64.0f, 0.0f);
|
||||
}
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
|
||||
69
bazaar/FTGL/src/FTGlyph/FTExtrudeGlyphImpl.h
Normal file
69
bazaar/FTGL/src/FTGlyph/FTExtrudeGlyphImpl.h
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTExtrudeGlyphImpl__
|
||||
#define __FTExtrudeGlyphImpl__
|
||||
|
||||
#include "FTGlyphImpl.h"
|
||||
|
||||
class FTVectoriser;
|
||||
|
||||
class FTExtrudeGlyphImpl : public FTGlyphImpl
|
||||
{
|
||||
friend class FTExtrudeGlyph;
|
||||
|
||||
protected:
|
||||
FTExtrudeGlyphImpl(FT_GlyphSlot glyph, float depth, float frontOutset,
|
||||
float backOutset, bool useDisplayList);
|
||||
|
||||
virtual ~FTExtrudeGlyphImpl();
|
||||
|
||||
virtual const FTPoint& RenderImpl(const FTPoint& pen, int renderMode);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Private rendering methods.
|
||||
*/
|
||||
void RenderFront();
|
||||
void RenderBack();
|
||||
void RenderSide();
|
||||
|
||||
/**
|
||||
* Private rendering variables.
|
||||
*/
|
||||
unsigned int hscale, vscale;
|
||||
float depth;
|
||||
float frontOutset, backOutset;
|
||||
FTVectoriser *vectoriser;
|
||||
|
||||
/**
|
||||
* OpenGL display list
|
||||
*/
|
||||
GLuint glList;
|
||||
};
|
||||
|
||||
#endif // __FTExtrudeGlyphImpl__
|
||||
|
||||
112
bazaar/FTGL/src/FTGlyph/FTGlyph.cpp
Normal file
112
bazaar/FTGL/src/FTGlyph/FTGlyph.cpp
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTGlyphImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTGlyph
|
||||
//
|
||||
|
||||
|
||||
FTGlyph::FTGlyph(FT_GlyphSlot glyph)
|
||||
{
|
||||
impl = new FTGlyphImpl(glyph);
|
||||
}
|
||||
|
||||
|
||||
FTGlyph::FTGlyph(FTGlyphImpl *pImpl)
|
||||
{
|
||||
impl = pImpl;
|
||||
}
|
||||
|
||||
|
||||
FTGlyph::~FTGlyph()
|
||||
{
|
||||
delete impl;
|
||||
}
|
||||
|
||||
|
||||
float FTGlyph::Advance() const
|
||||
{
|
||||
return impl->Advance();
|
||||
}
|
||||
|
||||
|
||||
const FTBBox& FTGlyph::BBox() const
|
||||
{
|
||||
return impl->BBox();
|
||||
}
|
||||
|
||||
|
||||
FT_Error FTGlyph::Error() const
|
||||
{
|
||||
return impl->Error();
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTGlyphImpl
|
||||
//
|
||||
|
||||
|
||||
FTGlyphImpl::FTGlyphImpl(FT_GlyphSlot glyph, bool useList) : err(0)
|
||||
{
|
||||
if(glyph)
|
||||
{
|
||||
bBox = FTBBox(glyph);
|
||||
advance = FTPoint(glyph->advance.x / 64.0f,
|
||||
glyph->advance.y / 64.0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FTGlyphImpl::~FTGlyphImpl()
|
||||
{}
|
||||
|
||||
|
||||
float FTGlyphImpl::Advance() const
|
||||
{
|
||||
return advance.Xf();
|
||||
}
|
||||
|
||||
|
||||
const FTBBox& FTGlyphImpl::BBox() const
|
||||
{
|
||||
return bBox;
|
||||
}
|
||||
|
||||
|
||||
FT_Error FTGlyphImpl::Error() const
|
||||
{
|
||||
return err;
|
||||
}
|
||||
|
||||
198
bazaar/FTGL/src/FTGlyph/FTGlyphGlue.cpp
Normal file
198
bazaar/FTGL/src/FTGlyph/FTGlyphGlue.cpp
Normal file
|
|
@ -0,0 +1,198 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
|
||||
static const FTPoint static_ftpoint;
|
||||
static const FTBBox static_ftbbox;
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
#define C_TOR(cname, cargs, cxxname, cxxarg, cxxtype) \
|
||||
FTGLglyph* cname cargs \
|
||||
{ \
|
||||
cxxname *g = new cxxname cxxarg; \
|
||||
if(g->Error()) \
|
||||
{ \
|
||||
delete g; \
|
||||
return NULL; \
|
||||
} \
|
||||
FTGLglyph *ftgl = (FTGLglyph *)malloc(sizeof(FTGLglyph)); \
|
||||
ftgl->ptr = g; \
|
||||
ftgl->type = cxxtype; \
|
||||
return ftgl; \
|
||||
}
|
||||
|
||||
// FTBitmapGlyph::FTBitmapGlyph();
|
||||
C_TOR(ftglCreateBitmapGlyph, (FT_GlyphSlot glyph),
|
||||
FTBitmapGlyph, (glyph), GLYPH_BITMAP);
|
||||
|
||||
// FTBufferGlyph::FTBufferGlyph();
|
||||
// FIXME: not implemented
|
||||
|
||||
// FTExtrudeGlyph::FTExtrudeGlyph();
|
||||
C_TOR(ftglCreateExtrudeGlyph, (FT_GlyphSlot glyph, float depth,
|
||||
float frontOutset, float backOutset, int useDisplayList),
|
||||
FTExtrudeGlyph, (glyph, depth, frontOutset, backOutset, (useDisplayList != 0)),
|
||||
GLYPH_EXTRUDE);
|
||||
|
||||
// FTOutlineGlyph::FTOutlineGlyph();
|
||||
C_TOR(ftglCreateOutlineGlyph, (FT_GlyphSlot glyph, float outset,
|
||||
int useDisplayList),
|
||||
FTOutlineGlyph, (glyph, outset, (useDisplayList != 0)), GLYPH_OUTLINE);
|
||||
|
||||
// FTPixmapGlyph::FTPixmapGlyph();
|
||||
C_TOR(ftglCreatePixmapGlyph, (FT_GlyphSlot glyph),
|
||||
FTPixmapGlyph, (glyph), GLYPH_PIXMAP);
|
||||
|
||||
// FTPolygonGlyph::FTPolygonGlyph();
|
||||
C_TOR(ftglCreatePolygonGlyph, (FT_GlyphSlot glyph, float outset,
|
||||
int useDisplayList),
|
||||
FTPolygonGlyph, (glyph, outset, (useDisplayList != 0)), GLYPH_POLYGON);
|
||||
|
||||
// FTTextureGlyph::FTTextureGlyph();
|
||||
C_TOR(ftglCreateTextureGlyph, (FT_GlyphSlot glyph, int id, int xOffset,
|
||||
int yOffset, int width, int height),
|
||||
FTTextureGlyph, (glyph, id, xOffset, yOffset, width, height),
|
||||
GLYPH_TEXTURE);
|
||||
|
||||
// FTCustomGlyph::FTCustomGlyph();
|
||||
class FTCustomGlyph : public FTGlyph
|
||||
{
|
||||
public:
|
||||
FTCustomGlyph(FTGLglyph *base, void *p,
|
||||
void (*render) (FTGLglyph *, void *, FTGL_DOUBLE, FTGL_DOUBLE,
|
||||
int, FTGL_DOUBLE *, FTGL_DOUBLE *),
|
||||
void (*destroy) (FTGLglyph *, void *))
|
||||
: FTGlyph((FT_GlyphSlot)0),
|
||||
baseGlyph(base),
|
||||
data(p),
|
||||
renderCallback(render),
|
||||
destroyCallback(destroy)
|
||||
{}
|
||||
|
||||
~FTCustomGlyph()
|
||||
{
|
||||
destroyCallback(baseGlyph, data);
|
||||
}
|
||||
|
||||
float Advance() const { return baseGlyph->ptr->Advance(); }
|
||||
|
||||
const FTPoint& Render(const FTPoint& pen, int renderMode)
|
||||
{
|
||||
FTGL_DOUBLE advancex, advancey;
|
||||
renderCallback(baseGlyph, data, pen.X(), pen.Y(), renderMode,
|
||||
&advancex, &advancey);
|
||||
advance = FTPoint(advancex, advancey);
|
||||
return advance;
|
||||
}
|
||||
|
||||
const FTBBox& BBox() const { return baseGlyph->ptr->BBox(); }
|
||||
|
||||
FT_Error Error() const { return baseGlyph->ptr->Error(); }
|
||||
|
||||
private:
|
||||
FTPoint advance;
|
||||
FTGLglyph *baseGlyph;
|
||||
void *data;
|
||||
void (*renderCallback) (FTGLglyph *, void *, FTGL_DOUBLE, FTGL_DOUBLE,
|
||||
int, FTGL_DOUBLE *, FTGL_DOUBLE *);
|
||||
void (*destroyCallback) (FTGLglyph *, void *);
|
||||
};
|
||||
|
||||
C_TOR(ftglCreateCustomGlyph, (FTGLglyph *base, void *data,
|
||||
void (*renderCallback) (FTGLglyph *, void *, FTGL_DOUBLE, FTGL_DOUBLE,
|
||||
int, FTGL_DOUBLE *, FTGL_DOUBLE *),
|
||||
void (*destroyCallback) (FTGLglyph *, void *)),
|
||||
FTCustomGlyph, (base, data, renderCallback, destroyCallback),
|
||||
GLYPH_CUSTOM);
|
||||
|
||||
#define C_FUN(cret, cname, cargs, cxxerr, cxxname, cxxarg) \
|
||||
cret cname cargs \
|
||||
{ \
|
||||
if(!g || !g->ptr) \
|
||||
{ \
|
||||
fprintf(stderr, "FTGL warning: NULL pointer in %s\n", #cname); \
|
||||
cxxerr; \
|
||||
} \
|
||||
return g->ptr->cxxname cxxarg; \
|
||||
}
|
||||
|
||||
// FTGlyph::~FTGlyph();
|
||||
void ftglDestroyGlyph(FTGLglyph *g)
|
||||
{
|
||||
if(!g || !g->ptr)
|
||||
{
|
||||
fprintf(stderr, "FTGL warning: NULL pointer in %s\n", __FUNCTION__);
|
||||
return;
|
||||
}
|
||||
delete g->ptr;
|
||||
free(g);
|
||||
}
|
||||
|
||||
// const FTPoint& FTGlyph::Render(const FTPoint& pen, int renderMode);
|
||||
extern "C++" {
|
||||
C_FUN(static const FTPoint&, _ftglRenderGlyph, (FTGLglyph *g,
|
||||
const FTPoint& pen, int renderMode),
|
||||
return static_ftpoint, Render, (pen, renderMode));
|
||||
}
|
||||
|
||||
void ftglRenderGlyph(FTGLglyph *g, FTGL_DOUBLE penx, FTGL_DOUBLE peny,
|
||||
int renderMode, FTGL_DOUBLE *advancex,
|
||||
FTGL_DOUBLE *advancey)
|
||||
{
|
||||
FTPoint pen(penx, peny);
|
||||
FTPoint ret = _ftglRenderGlyph(g, pen, renderMode);
|
||||
*advancex = ret.X();
|
||||
*advancey = ret.Y();
|
||||
}
|
||||
|
||||
// float FTGlyph::Advance() const;
|
||||
C_FUN(float, ftglGetGlyphAdvance, (FTGLglyph *g), return 0.0, Advance, ());
|
||||
|
||||
// const FTBBox& FTGlyph::BBox() const;
|
||||
extern "C++" {
|
||||
C_FUN(static const FTBBox&, _ftglGetGlyphBBox, (FTGLglyph *g),
|
||||
return static_ftbbox, BBox, ());
|
||||
}
|
||||
|
||||
void ftglGetGlyphBBox(FTGLglyph *g, float bounds[6])
|
||||
{
|
||||
FTBBox ret = _ftglGetGlyphBBox(g);
|
||||
FTPoint lower = ret.Lower(), upper = ret.Upper();
|
||||
bounds[0] = lower.Xf(); bounds[1] = lower.Yf(); bounds[2] = lower.Zf();
|
||||
bounds[3] = upper.Xf(); bounds[4] = upper.Yf(); bounds[5] = upper.Zf();
|
||||
}
|
||||
|
||||
// FT_Error FTGlyph::Error() const;
|
||||
C_FUN(FT_Error, ftglGetGlyphError, (FTGLglyph *g), return -1, Error, ());
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
64
bazaar/FTGL/src/FTGlyph/FTGlyphImpl.h
Normal file
64
bazaar/FTGL/src/FTGlyph/FTGlyphImpl.h
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTGlyphImpl__
|
||||
#define __FTGlyphImpl__
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
class FTGlyphImpl
|
||||
{
|
||||
friend class FTGlyph;
|
||||
|
||||
protected:
|
||||
FTGlyphImpl(FT_GlyphSlot glyph, bool useDisplayList = true);
|
||||
|
||||
virtual ~FTGlyphImpl();
|
||||
|
||||
float Advance() const;
|
||||
|
||||
const FTBBox& BBox() const;
|
||||
|
||||
FT_Error Error() const;
|
||||
|
||||
/**
|
||||
* The advance distance for this glyph
|
||||
*/
|
||||
FTPoint advance;
|
||||
|
||||
/**
|
||||
* The bounding box of this glyph.
|
||||
*/
|
||||
FTBBox bBox;
|
||||
|
||||
/**
|
||||
* Current error code. Zero means no error.
|
||||
*/
|
||||
FT_Error err;
|
||||
};
|
||||
|
||||
#endif // __FTGlyphImpl__
|
||||
|
||||
149
bazaar/FTGL/src/FTGlyph/FTOutlineGlyph.cpp
Normal file
149
bazaar/FTGL/src/FTGlyph/FTOutlineGlyph.cpp
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Éric Beets <ericbeets@free.fr>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTOutlineGlyphImpl.h"
|
||||
#include "../FTVectoriser.h"
|
||||
|
||||
|
||||
//
|
||||
// FTGLOutlineGlyph
|
||||
//
|
||||
|
||||
|
||||
FTOutlineGlyph::FTOutlineGlyph(FT_GlyphSlot glyph, float outset,
|
||||
bool useDisplayList) :
|
||||
FTGlyph(new FTOutlineGlyphImpl(glyph, outset, useDisplayList))
|
||||
{}
|
||||
|
||||
|
||||
FTOutlineGlyph::~FTOutlineGlyph()
|
||||
{}
|
||||
|
||||
|
||||
const FTPoint& FTOutlineGlyph::Render(const FTPoint& pen, int renderMode)
|
||||
{
|
||||
FTOutlineGlyphImpl *myimpl = dynamic_cast<FTOutlineGlyphImpl *>(impl);
|
||||
return myimpl->RenderImpl(pen, renderMode);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTGLOutlineGlyphImpl
|
||||
//
|
||||
|
||||
|
||||
FTOutlineGlyphImpl::FTOutlineGlyphImpl(FT_GlyphSlot glyph, float _outset,
|
||||
bool useDisplayList)
|
||||
: FTGlyphImpl(glyph),
|
||||
glList(0)
|
||||
{
|
||||
if(ft_glyph_format_outline != glyph->format)
|
||||
{
|
||||
err = 0x14; // Invalid_Outline
|
||||
return;
|
||||
}
|
||||
|
||||
vectoriser = new FTVectoriser(glyph);
|
||||
|
||||
if((vectoriser->ContourCount() < 1) || (vectoriser->PointCount() < 3))
|
||||
{
|
||||
delete vectoriser;
|
||||
vectoriser = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
outset = _outset;
|
||||
|
||||
if(useDisplayList)
|
||||
{
|
||||
glList = glGenLists(1);
|
||||
glNewList(glList, GL_COMPILE);
|
||||
|
||||
DoRender();
|
||||
|
||||
glEndList();
|
||||
|
||||
delete vectoriser;
|
||||
vectoriser = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FTOutlineGlyphImpl::~FTOutlineGlyphImpl()
|
||||
{
|
||||
if(glList)
|
||||
{
|
||||
glDeleteLists(glList, 1);
|
||||
}
|
||||
else if(vectoriser)
|
||||
{
|
||||
delete vectoriser;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const FTPoint& FTOutlineGlyphImpl::RenderImpl(const FTPoint& pen,
|
||||
int renderMode)
|
||||
{
|
||||
glTranslatef(pen.Xf(), pen.Yf(), pen.Zf());
|
||||
if(glList)
|
||||
{
|
||||
glCallList(glList);
|
||||
}
|
||||
else if(vectoriser)
|
||||
{
|
||||
DoRender();
|
||||
}
|
||||
glTranslatef(-pen.Xf(), -pen.Yf(), -pen.Zf());
|
||||
|
||||
return advance;
|
||||
}
|
||||
|
||||
|
||||
void FTOutlineGlyphImpl::DoRender()
|
||||
{
|
||||
for(unsigned int c = 0; c < vectoriser->ContourCount(); ++c)
|
||||
{
|
||||
const FTContour* contour = vectoriser->Contour(c);
|
||||
|
||||
glBegin(GL_LINE_LOOP);
|
||||
for(unsigned int i = 0; i < contour->PointCount(); ++i)
|
||||
{
|
||||
FTPoint point = FTPoint(contour->Point(i).X() + contour->Outset(i).X() * outset,
|
||||
contour->Point(i).Y() + contour->Outset(i).Y() * outset,
|
||||
0);
|
||||
glVertex2f(point.Xf() / 64.0f, point.Yf() / 64.0f);
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
|
||||
69
bazaar/FTGL/src/FTGlyph/FTOutlineGlyphImpl.h
Normal file
69
bazaar/FTGL/src/FTGlyph/FTOutlineGlyphImpl.h
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTOutlineGlyphImpl__
|
||||
#define __FTOutlineGlyphImpl__
|
||||
|
||||
#include "FTGlyphImpl.h"
|
||||
|
||||
class FTVectoriser;
|
||||
|
||||
class FTOutlineGlyphImpl : public FTGlyphImpl
|
||||
{
|
||||
friend class FTOutlineGlyph;
|
||||
|
||||
protected:
|
||||
FTOutlineGlyphImpl(FT_GlyphSlot glyph, float outset,
|
||||
bool useDisplayList);
|
||||
|
||||
virtual ~FTOutlineGlyphImpl();
|
||||
|
||||
virtual const FTPoint& RenderImpl(const FTPoint& pen, int renderMode);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Private rendering method.
|
||||
*/
|
||||
void DoRender();
|
||||
|
||||
/**
|
||||
* Private rendering variables.
|
||||
*/
|
||||
FTVectoriser *vectoriser;
|
||||
|
||||
/**
|
||||
* Private rendering variables.
|
||||
*/
|
||||
float outset;
|
||||
|
||||
/**
|
||||
* OpenGL display list
|
||||
*/
|
||||
GLuint glList;
|
||||
};
|
||||
|
||||
#endif // __FTOutlineGlyphImpl__
|
||||
|
||||
139
bazaar/FTGL/src/FTGlyph/FTPixmapGlyph.cpp
Normal file
139
bazaar/FTGL/src/FTGlyph/FTPixmapGlyph.cpp
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTPixmapGlyphImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTGLPixmapGlyph
|
||||
//
|
||||
|
||||
|
||||
FTPixmapGlyph::FTPixmapGlyph(FT_GlyphSlot glyph) :
|
||||
FTGlyph(new FTPixmapGlyphImpl(glyph))
|
||||
{}
|
||||
|
||||
|
||||
FTPixmapGlyph::~FTPixmapGlyph()
|
||||
{}
|
||||
|
||||
|
||||
const FTPoint& FTPixmapGlyph::Render(const FTPoint& pen, int renderMode)
|
||||
{
|
||||
FTPixmapGlyphImpl *myimpl = dynamic_cast<FTPixmapGlyphImpl *>(impl);
|
||||
return myimpl->RenderImpl(pen, renderMode);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTGLPixmapGlyphImpl
|
||||
//
|
||||
|
||||
|
||||
FTPixmapGlyphImpl::FTPixmapGlyphImpl(FT_GlyphSlot glyph)
|
||||
: FTGlyphImpl(glyph),
|
||||
destWidth(0),
|
||||
destHeight(0),
|
||||
data(0)
|
||||
{
|
||||
err = FT_Render_Glyph(glyph, FT_RENDER_MODE_NORMAL);
|
||||
if(err || ft_glyph_format_bitmap != glyph->format)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
FT_Bitmap bitmap = glyph->bitmap;
|
||||
|
||||
//check the pixel mode
|
||||
//ft_pixel_mode_grays
|
||||
|
||||
int srcWidth = bitmap.width;
|
||||
int srcHeight = bitmap.rows;
|
||||
|
||||
destWidth = srcWidth;
|
||||
destHeight = srcHeight;
|
||||
|
||||
if(destWidth && destHeight)
|
||||
{
|
||||
data = new unsigned char[destWidth * destHeight * 2];
|
||||
unsigned char* src = bitmap.buffer;
|
||||
|
||||
unsigned char* dest = data + ((destHeight - 1) * destWidth * 2);
|
||||
size_t destStep = destWidth * 2 * 2;
|
||||
|
||||
for(int y = 0; y < srcHeight; ++y)
|
||||
{
|
||||
for(int x = 0; x < srcWidth; ++x)
|
||||
{
|
||||
*dest++ = static_cast<unsigned char>(255);
|
||||
*dest++ = *src++;
|
||||
}
|
||||
dest -= destStep;
|
||||
}
|
||||
|
||||
destHeight = srcHeight;
|
||||
}
|
||||
|
||||
pos.X(glyph->bitmap_left);
|
||||
pos.Y(srcHeight - glyph->bitmap_top);
|
||||
}
|
||||
|
||||
|
||||
FTPixmapGlyphImpl::~FTPixmapGlyphImpl()
|
||||
{
|
||||
delete [] data;
|
||||
}
|
||||
|
||||
|
||||
const FTPoint& FTPixmapGlyphImpl::RenderImpl(const FTPoint& pen,
|
||||
int renderMode)
|
||||
{
|
||||
if(data)
|
||||
{
|
||||
float dx, dy;
|
||||
|
||||
dx = floor(pen.Xf() + pos.Xf());
|
||||
dy = floor(pen.Yf() - pos.Yf());
|
||||
|
||||
glBitmap(0, 0, 0.0f, 0.0f, dx, dy, (const GLubyte*)0);
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 2);
|
||||
|
||||
glDrawPixels(destWidth, destHeight, GL_LUMINANCE_ALPHA,
|
||||
GL_UNSIGNED_BYTE, (const GLvoid*)data);
|
||||
glBitmap(0, 0, 0.0f, 0.0f, -dx, -dy, (const GLubyte*)0);
|
||||
}
|
||||
|
||||
return advance;
|
||||
}
|
||||
|
||||
67
bazaar/FTGL/src/FTGlyph/FTPixmapGlyphImpl.h
Normal file
67
bazaar/FTGL/src/FTGlyph/FTPixmapGlyphImpl.h
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTPixmapGlyphImpl__
|
||||
#define __FTPixmapGlyphImpl__
|
||||
|
||||
#include "FTGlyphImpl.h"
|
||||
|
||||
class FTPixmapGlyphImpl : public FTGlyphImpl
|
||||
{
|
||||
friend class FTPixmapGlyph;
|
||||
|
||||
protected:
|
||||
FTPixmapGlyphImpl(FT_GlyphSlot glyph);
|
||||
|
||||
virtual ~FTPixmapGlyphImpl();
|
||||
|
||||
virtual const FTPoint& RenderImpl(const FTPoint& pen, int renderMode);
|
||||
|
||||
private:
|
||||
/**
|
||||
* The width of the glyph 'image'
|
||||
*/
|
||||
int destWidth;
|
||||
|
||||
/**
|
||||
* The height of the glyph 'image'
|
||||
*/
|
||||
int destHeight;
|
||||
|
||||
/**
|
||||
* Vector from the pen position to the topleft corner of the pixmap
|
||||
*/
|
||||
FTPoint pos;
|
||||
|
||||
/**
|
||||
* Pointer to the 'image' data
|
||||
*/
|
||||
unsigned char* data;
|
||||
|
||||
};
|
||||
|
||||
#endif // __FTPixmapGlyphImpl__
|
||||
|
||||
156
bazaar/FTGL/src/FTGlyph/FTPolygonGlyph.cpp
Normal file
156
bazaar/FTGL/src/FTGlyph/FTPolygonGlyph.cpp
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Éric Beets <ericbeets@free.fr>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTPolygonGlyphImpl.h"
|
||||
#include "../FTVectoriser.h"
|
||||
|
||||
|
||||
//
|
||||
// FTGLPolyGlyph
|
||||
//
|
||||
|
||||
|
||||
FTPolygonGlyph::FTPolygonGlyph(FT_GlyphSlot glyph, float outset,
|
||||
bool useDisplayList) :
|
||||
FTGlyph(new FTPolygonGlyphImpl(glyph, outset, useDisplayList))
|
||||
{}
|
||||
|
||||
|
||||
FTPolygonGlyph::~FTPolygonGlyph()
|
||||
{}
|
||||
|
||||
|
||||
const FTPoint& FTPolygonGlyph::Render(const FTPoint& pen, int renderMode)
|
||||
{
|
||||
FTPolygonGlyphImpl *myimpl = dynamic_cast<FTPolygonGlyphImpl *>(impl);
|
||||
return myimpl->RenderImpl(pen, renderMode);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTGLPolyGlyphImpl
|
||||
//
|
||||
|
||||
|
||||
FTPolygonGlyphImpl::FTPolygonGlyphImpl(FT_GlyphSlot glyph, float _outset,
|
||||
bool useDisplayList)
|
||||
: FTGlyphImpl(glyph),
|
||||
glList(0)
|
||||
{
|
||||
if(ft_glyph_format_outline != glyph->format)
|
||||
{
|
||||
err = 0x14; // Invalid_Outline
|
||||
return;
|
||||
}
|
||||
|
||||
vectoriser = new FTVectoriser(glyph);
|
||||
|
||||
if((vectoriser->ContourCount() < 1) || (vectoriser->PointCount() < 3))
|
||||
{
|
||||
delete vectoriser;
|
||||
vectoriser = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
hscale = glyph->face->size->metrics.x_ppem * 64;
|
||||
vscale = glyph->face->size->metrics.y_ppem * 64;
|
||||
outset = _outset;
|
||||
|
||||
if(useDisplayList)
|
||||
{
|
||||
glList = glGenLists(1);
|
||||
glNewList(glList, GL_COMPILE);
|
||||
|
||||
DoRender();
|
||||
|
||||
glEndList();
|
||||
|
||||
delete vectoriser;
|
||||
vectoriser = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FTPolygonGlyphImpl::~FTPolygonGlyphImpl()
|
||||
{
|
||||
if(glList)
|
||||
{
|
||||
glDeleteLists(glList, 1);
|
||||
}
|
||||
else if(vectoriser)
|
||||
{
|
||||
delete vectoriser;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const FTPoint& FTPolygonGlyphImpl::RenderImpl(const FTPoint& pen,
|
||||
int renderMode)
|
||||
{
|
||||
glTranslatef(pen.Xf(), pen.Yf(), pen.Zf());
|
||||
if(glList)
|
||||
{
|
||||
glCallList(glList);
|
||||
}
|
||||
else if(vectoriser)
|
||||
{
|
||||
DoRender();
|
||||
}
|
||||
glTranslatef(-pen.Xf(), -pen.Yf(), -pen.Zf());
|
||||
|
||||
return advance;
|
||||
}
|
||||
|
||||
|
||||
void FTPolygonGlyphImpl::DoRender()
|
||||
{
|
||||
vectoriser->MakeMesh(1.0, 1, outset);
|
||||
|
||||
const FTMesh *mesh = vectoriser->GetMesh();
|
||||
|
||||
for(unsigned int t = 0; t < mesh->TesselationCount(); ++t)
|
||||
{
|
||||
const FTTesselation* subMesh = mesh->Tesselation(t);
|
||||
unsigned int polygonType = subMesh->PolygonType();
|
||||
|
||||
glBegin(polygonType);
|
||||
for(unsigned int i = 0; i < subMesh->PointCount(); ++i)
|
||||
{
|
||||
FTPoint point = subMesh->Point(i);
|
||||
glTexCoord2f(point.Xf() / hscale, point.Yf() / vscale);
|
||||
glVertex3f(point.Xf() / 64.0f, point.Yf() / 64.0f, 0.0f);
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
|
||||
66
bazaar/FTGL/src/FTGlyph/FTPolygonGlyphImpl.h
Normal file
66
bazaar/FTGL/src/FTGlyph/FTPolygonGlyphImpl.h
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTPolygonGlyphImpl__
|
||||
#define __FTPolygonGlyphImpl__
|
||||
|
||||
#include "FTGlyphImpl.h"
|
||||
|
||||
class FTVectoriser;
|
||||
|
||||
class FTPolygonGlyphImpl : public FTGlyphImpl
|
||||
{
|
||||
friend class FTPolygonGlyph;
|
||||
|
||||
public:
|
||||
FTPolygonGlyphImpl(FT_GlyphSlot glyph, float outset,
|
||||
bool useDisplayList);
|
||||
|
||||
virtual ~FTPolygonGlyphImpl();
|
||||
|
||||
virtual const FTPoint& RenderImpl(const FTPoint& pen, int renderMode);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Private rendering method.
|
||||
*/
|
||||
void DoRender();
|
||||
|
||||
/**
|
||||
* Private rendering variables.
|
||||
*/
|
||||
unsigned int hscale, vscale;
|
||||
FTVectoriser *vectoriser;
|
||||
float outset;
|
||||
|
||||
/**
|
||||
* OpenGL display list
|
||||
*/
|
||||
GLuint glList;
|
||||
};
|
||||
|
||||
#endif // __FTPolygonGlyphImpl__
|
||||
|
||||
153
bazaar/FTGL/src/FTGlyph/FTTextureGlyph.cpp
Normal file
153
bazaar/FTGL/src/FTGlyph/FTTextureGlyph.cpp
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "FTTextureGlyphImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTGLTextureGlyph
|
||||
//
|
||||
|
||||
|
||||
FTTextureGlyph::FTTextureGlyph(FT_GlyphSlot glyph, int id, int xOffset,
|
||||
int yOffset, int width, int height) :
|
||||
FTGlyph(new FTTextureGlyphImpl(glyph, id, xOffset, yOffset, width, height))
|
||||
{}
|
||||
|
||||
|
||||
FTTextureGlyph::~FTTextureGlyph()
|
||||
{}
|
||||
|
||||
|
||||
const FTPoint& FTTextureGlyph::Render(const FTPoint& pen, int renderMode)
|
||||
{
|
||||
FTTextureGlyphImpl *myimpl = dynamic_cast<FTTextureGlyphImpl *>(impl);
|
||||
return myimpl->RenderImpl(pen, renderMode);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTGLTextureGlyphImpl
|
||||
//
|
||||
|
||||
|
||||
GLint FTTextureGlyphImpl::activeTextureID = 0;
|
||||
|
||||
FTTextureGlyphImpl::FTTextureGlyphImpl(FT_GlyphSlot glyph, int id, int xOffset,
|
||||
int yOffset, int width, int height)
|
||||
: FTGlyphImpl(glyph),
|
||||
destWidth(0),
|
||||
destHeight(0),
|
||||
glTextureID(id)
|
||||
{
|
||||
/* FIXME: need to propagate the render mode all the way down to
|
||||
* here in order to get FT_RENDER_MODE_MONO aliased fonts.
|
||||
*/
|
||||
|
||||
err = FT_Render_Glyph(glyph, FT_RENDER_MODE_NORMAL);
|
||||
if(err || glyph->format != ft_glyph_format_bitmap)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
FT_Bitmap bitmap = glyph->bitmap;
|
||||
|
||||
destWidth = bitmap.width;
|
||||
destHeight = bitmap.rows;
|
||||
|
||||
if(destWidth && destHeight)
|
||||
{
|
||||
glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
|
||||
glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE);
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, glTextureID);
|
||||
glTexSubImage2D(GL_TEXTURE_2D, 0, xOffset, yOffset, destWidth, destHeight, GL_ALPHA, GL_UNSIGNED_BYTE, bitmap.buffer);
|
||||
|
||||
glPopClientAttrib();
|
||||
}
|
||||
|
||||
|
||||
// 0
|
||||
// +----+
|
||||
// | |
|
||||
// | |
|
||||
// | |
|
||||
// +----+
|
||||
// 1
|
||||
|
||||
uv[0].X(static_cast<float>(xOffset) / static_cast<float>(width));
|
||||
uv[0].Y(static_cast<float>(yOffset) / static_cast<float>(height));
|
||||
uv[1].X(static_cast<float>(xOffset + destWidth) / static_cast<float>(width));
|
||||
uv[1].Y(static_cast<float>(yOffset + destHeight) / static_cast<float>(height));
|
||||
|
||||
corner = FTPoint(glyph->bitmap_left, glyph->bitmap_top);
|
||||
}
|
||||
|
||||
|
||||
FTTextureGlyphImpl::~FTTextureGlyphImpl()
|
||||
{}
|
||||
|
||||
|
||||
const FTPoint& FTTextureGlyphImpl::RenderImpl(const FTPoint& pen,
|
||||
int renderMode)
|
||||
{
|
||||
float dx, dy;
|
||||
|
||||
if(activeTextureID != glTextureID)
|
||||
{
|
||||
glBindTexture(GL_TEXTURE_2D, (GLuint)glTextureID);
|
||||
activeTextureID = glTextureID;
|
||||
}
|
||||
|
||||
dx = floor(pen.Xf() + corner.Xf());
|
||||
dy = floor(pen.Yf() + corner.Yf());
|
||||
|
||||
glBegin(GL_QUADS);
|
||||
glTexCoord2f(uv[0].Xf(), uv[0].Yf());
|
||||
glVertex2f(dx, dy);
|
||||
|
||||
glTexCoord2f(uv[0].Xf(), uv[1].Yf());
|
||||
glVertex2f(dx, dy - destHeight);
|
||||
|
||||
glTexCoord2f(uv[1].Xf(), uv[1].Yf());
|
||||
glVertex2f(dx + destWidth, dy - destHeight);
|
||||
|
||||
glTexCoord2f(uv[1].Xf(), uv[0].Yf());
|
||||
glVertex2f(dx + destWidth, dy);
|
||||
glEnd();
|
||||
|
||||
return advance;
|
||||
}
|
||||
|
||||
88
bazaar/FTGL/src/FTGlyph/FTTextureGlyphImpl.h
Normal file
88
bazaar/FTGL/src/FTGlyph/FTTextureGlyphImpl.h
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTTextureGlyphImpl__
|
||||
#define __FTTextureGlyphImpl__
|
||||
|
||||
#include "FTGlyphImpl.h"
|
||||
|
||||
class FTTextureGlyphImpl : public FTGlyphImpl
|
||||
{
|
||||
friend class FTTextureGlyph;
|
||||
friend class FTTextureFontImpl;
|
||||
|
||||
protected:
|
||||
FTTextureGlyphImpl(FT_GlyphSlot glyph, int id, int xOffset,
|
||||
int yOffset, int width, int height);
|
||||
|
||||
virtual ~FTTextureGlyphImpl();
|
||||
|
||||
virtual const FTPoint& RenderImpl(const FTPoint& pen, int renderMode);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Reset the currently active texture to zero to get into a known
|
||||
* state before drawing a string. This is to get round possible
|
||||
* threading issues.
|
||||
*/
|
||||
static void ResetActiveTexture() { activeTextureID = 0; }
|
||||
|
||||
/**
|
||||
* The width of the glyph 'image'
|
||||
*/
|
||||
int destWidth;
|
||||
|
||||
/**
|
||||
* The height of the glyph 'image'
|
||||
*/
|
||||
int destHeight;
|
||||
|
||||
/**
|
||||
* Vector from the pen position to the topleft corner of the pixmap
|
||||
*/
|
||||
FTPoint corner;
|
||||
|
||||
/**
|
||||
* The texture co-ords of this glyph within the texture.
|
||||
*/
|
||||
FTPoint uv[2];
|
||||
|
||||
/**
|
||||
* The texture index that this glyph is contained in.
|
||||
*/
|
||||
int glTextureID;
|
||||
|
||||
/**
|
||||
* The texture index of the currently active texture
|
||||
*
|
||||
* We keep track of the currently active texture to try to reduce the
|
||||
* number of texture bind operations.
|
||||
*/
|
||||
static GLint activeTextureID;
|
||||
};
|
||||
|
||||
#endif // __FTTextureGlyphImpl__
|
||||
|
||||
119
bazaar/FTGL/src/FTGlyphContainer.cpp
Normal file
119
bazaar/FTGL/src/FTGlyphContainer.cpp
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "FTGlyphContainer.h"
|
||||
#include "FTFace.h"
|
||||
#include "FTCharmap.h"
|
||||
|
||||
|
||||
FTGlyphContainer::FTGlyphContainer(FTFace* f)
|
||||
: face(f),
|
||||
err(0)
|
||||
{
|
||||
glyphs.push_back(NULL);
|
||||
charMap = new FTCharmap(face);
|
||||
}
|
||||
|
||||
|
||||
FTGlyphContainer::~FTGlyphContainer()
|
||||
{
|
||||
GlyphVector::iterator it;
|
||||
for(it = glyphs.begin(); it != glyphs.end(); ++it)
|
||||
{
|
||||
delete *it;
|
||||
}
|
||||
|
||||
glyphs.clear();
|
||||
delete charMap;
|
||||
}
|
||||
|
||||
|
||||
bool FTGlyphContainer::CharMap(FT_Encoding encoding)
|
||||
{
|
||||
bool result = charMap->CharMap(encoding);
|
||||
err = charMap->Error();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
unsigned int FTGlyphContainer::FontIndex(const unsigned int charCode) const
|
||||
{
|
||||
return charMap->FontIndex(charCode);
|
||||
}
|
||||
|
||||
|
||||
void FTGlyphContainer::Add(FTGlyph* tempGlyph, const unsigned int charCode)
|
||||
{
|
||||
charMap->InsertIndex(charCode, glyphs.size());
|
||||
glyphs.push_back(tempGlyph);
|
||||
}
|
||||
|
||||
|
||||
const FTGlyph* const FTGlyphContainer::Glyph(const unsigned int charCode) const
|
||||
{
|
||||
unsigned int index = charMap->GlyphListIndex(charCode);
|
||||
return glyphs[index];
|
||||
}
|
||||
|
||||
|
||||
FTBBox FTGlyphContainer::BBox(const unsigned int charCode) const
|
||||
{
|
||||
return Glyph(charCode)->BBox();
|
||||
}
|
||||
|
||||
|
||||
float FTGlyphContainer::Advance(const unsigned int charCode,
|
||||
const unsigned int nextCharCode)
|
||||
{
|
||||
unsigned int left = charMap->FontIndex(charCode);
|
||||
unsigned int right = charMap->FontIndex(nextCharCode);
|
||||
|
||||
return face->KernAdvance(left, right).Xf() + Glyph(charCode)->Advance();
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTGlyphContainer::Render(const unsigned int charCode,
|
||||
const unsigned int nextCharCode,
|
||||
FTPoint penPosition, int renderMode)
|
||||
{
|
||||
unsigned int left = charMap->FontIndex(charCode);
|
||||
unsigned int right = charMap->FontIndex(nextCharCode);
|
||||
|
||||
FTPoint kernAdvance = face->KernAdvance(left, right);
|
||||
|
||||
if(!face->Error())
|
||||
{
|
||||
unsigned int index = charMap->GlyphListIndex(charCode);
|
||||
kernAdvance += glyphs[index]->Render(penPosition, renderMode);
|
||||
}
|
||||
|
||||
return kernAdvance;
|
||||
}
|
||||
|
||||
155
bazaar/FTGL/src/FTGlyphContainer.h
Normal file
155
bazaar/FTGL/src/FTGlyphContainer.h
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
/*
|
||||
* 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 __FTGlyphContainer__
|
||||
#define __FTGlyphContainer__
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_GLYPH_H
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "FTVector.h"
|
||||
|
||||
class FTFace;
|
||||
class FTGlyph;
|
||||
class FTCharmap;
|
||||
|
||||
/**
|
||||
* FTGlyphContainer holds the post processed FTGlyph objects.
|
||||
*
|
||||
* @see FTGlyph
|
||||
*/
|
||||
class FTGlyphContainer
|
||||
{
|
||||
typedef FTVector<FTGlyph*> GlyphVector;
|
||||
public:
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param face The Freetype face
|
||||
*/
|
||||
FTGlyphContainer(FTFace* face);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTGlyphContainer();
|
||||
|
||||
/**
|
||||
* Sets the character map for the face.
|
||||
*
|
||||
* @param encoding the Freetype encoding symbol. See above.
|
||||
* @return <code>true</code> if charmap was valid
|
||||
* and set correctly
|
||||
*/
|
||||
bool CharMap(FT_Encoding encoding);
|
||||
|
||||
/**
|
||||
* Get the font index of the input character.
|
||||
*
|
||||
* @param characterCode The character code of the requested glyph in the
|
||||
* current encoding eg apple roman.
|
||||
* @return The font index for the character.
|
||||
*/
|
||||
unsigned int FontIndex(const unsigned int characterCode) const;
|
||||
|
||||
/**
|
||||
* Adds a glyph to this glyph list.
|
||||
*
|
||||
* @param glyph The FTGlyph to be inserted into the container
|
||||
* @param characterCode The char code of the glyph NOT the glyph index.
|
||||
*/
|
||||
void Add(FTGlyph* glyph, const unsigned int characterCode);
|
||||
|
||||
/**
|
||||
* Get a glyph from the glyph list
|
||||
*
|
||||
* @param characterCode The char code of the glyph NOT the glyph index
|
||||
* @return An FTGlyph or <code>null</code> is it hasn't been
|
||||
* loaded.
|
||||
*/
|
||||
const FTGlyph* const Glyph(const unsigned int characterCode) const;
|
||||
|
||||
/**
|
||||
* Get the bounding box for a character.
|
||||
* @param characterCode The char code of the glyph NOT the glyph index
|
||||
*/
|
||||
FTBBox BBox(const unsigned int characterCode) const;
|
||||
|
||||
/**
|
||||
* Returns the kerned advance width for a glyph.
|
||||
*
|
||||
* @param characterCode glyph index of the character
|
||||
* @param nextCharacterCode the next glyph in a string
|
||||
* @return advance width
|
||||
*/
|
||||
float Advance(const unsigned int characterCode,
|
||||
const unsigned int nextCharacterCode);
|
||||
|
||||
/**
|
||||
* Renders a character
|
||||
* @param characterCode the glyph to be Rendered
|
||||
* @param nextCharacterCode the next glyph in the string. Used for kerning.
|
||||
* @param penPosition the position to Render the glyph
|
||||
* @param renderMode Render mode to display
|
||||
* @return The distance to advance the pen position after Rendering
|
||||
*/
|
||||
FTPoint Render(const unsigned int characterCode,
|
||||
const unsigned int nextCharacterCode,
|
||||
FTPoint penPosition, int renderMode);
|
||||
|
||||
/**
|
||||
* Queries the Font for errors.
|
||||
*
|
||||
* @return The current error code.
|
||||
*/
|
||||
FT_Error Error() const { return err; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* The FTGL face
|
||||
*/
|
||||
FTFace* face;
|
||||
|
||||
/**
|
||||
* The Character Map object associated with the current face
|
||||
*/
|
||||
FTCharmap* charMap;
|
||||
|
||||
/**
|
||||
* A structure to hold the glyphs
|
||||
*/
|
||||
GlyphVector glyphs;
|
||||
|
||||
/**
|
||||
* Current error code. Zero means no error.
|
||||
*/
|
||||
FT_Error err;
|
||||
};
|
||||
|
||||
|
||||
#endif // __FTGlyphContainer__
|
||||
145
bazaar/FTGL/src/FTInternals.h
Normal file
145
bazaar/FTGL/src/FTInternals.h
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Éric Beets <ericbeets@free.fr>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTINTERNALS_H__
|
||||
#define __FTINTERNALS_H__
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
// Fixes for deprecated identifiers in 2.1.5
|
||||
#ifndef FT_OPEN_MEMORY
|
||||
#define FT_OPEN_MEMORY (FT_Open_Flags)1
|
||||
#endif
|
||||
|
||||
#ifndef FT_RENDER_MODE_MONO
|
||||
#define FT_RENDER_MODE_MONO ft_render_mode_mono
|
||||
#endif
|
||||
|
||||
#ifndef FT_RENDER_MODE_NORMAL
|
||||
#define FT_RENDER_MODE_NORMAL ft_render_mode_normal
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
// Under windows avoid including <windows.h> is overrated.
|
||||
// Sure, it can be avoided and "name space pollution" can be
|
||||
// avoided, but why? It really doesn't make that much difference
|
||||
// these days.
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
#ifndef __gl_h_
|
||||
#include <GL/gl.h>
|
||||
#include <GL/glu.h>
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
// Non windows platforms - don't require nonsense as seen above :-)
|
||||
#ifndef __gl_h_
|
||||
#ifdef SDL_main
|
||||
#include "SDL_opengl.h"
|
||||
#elif __APPLE_CC__
|
||||
#include <OpenGL/gl.h>
|
||||
#include <OpenGL/glu.h>
|
||||
#else
|
||||
#include <GL/gl.h>
|
||||
#if defined (__sun__) && !defined (__sparc__)
|
||||
#include <mesa/glu.h>
|
||||
#else
|
||||
#include <GL/glu.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
// Required for compatibility with glext.h style function definitions of
|
||||
// OpenGL extensions, such as in src/osg/Point.cpp.
|
||||
#ifndef APIENTRY
|
||||
#define APIENTRY
|
||||
#endif
|
||||
#endif
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GLYPH_CUSTOM,
|
||||
GLYPH_BITMAP,
|
||||
GLYPH_BUFFER,
|
||||
GLYPH_PIXMAP,
|
||||
GLYPH_OUTLINE,
|
||||
GLYPH_POLYGON,
|
||||
GLYPH_EXTRUDE,
|
||||
GLYPH_TEXTURE,
|
||||
} GlyphType;
|
||||
|
||||
struct _FTGLglyph
|
||||
{
|
||||
FTGlyph *ptr;
|
||||
FTGL::GlyphType type;
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
FONT_CUSTOM,
|
||||
FONT_BITMAP,
|
||||
FONT_BUFFER,
|
||||
FONT_PIXMAP,
|
||||
FONT_OUTLINE,
|
||||
FONT_POLYGON,
|
||||
FONT_EXTRUDE,
|
||||
FONT_TEXTURE,
|
||||
} FontType;
|
||||
|
||||
struct _FTGLfont
|
||||
{
|
||||
FTFont *ptr;
|
||||
FTGL::FontType type;
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
LAYOUT_SIMPLE,
|
||||
} LayoutType;
|
||||
|
||||
struct _FTGLlayout
|
||||
{
|
||||
FTLayout *ptr;
|
||||
FTGLfont *font;
|
||||
FTGL::LayoutType type;
|
||||
};
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
#endif //__FTINTERNALS_H__
|
||||
|
||||
80
bazaar/FTGL/src/FTLayout/FTLayout.cpp
Normal file
80
bazaar/FTGL/src/FTLayout/FTLayout.cpp
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "../FTFont/FTFontImpl.h"
|
||||
#include "./FTLayoutImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTLayout
|
||||
//
|
||||
|
||||
|
||||
FTLayout::FTLayout()
|
||||
{
|
||||
impl = new FTLayoutImpl();
|
||||
}
|
||||
|
||||
|
||||
FTLayout::FTLayout(FTLayoutImpl *pImpl)
|
||||
{
|
||||
impl = pImpl;
|
||||
}
|
||||
|
||||
|
||||
FTLayout::~FTLayout()
|
||||
{
|
||||
delete impl;
|
||||
}
|
||||
|
||||
|
||||
FT_Error FTLayout::Error() const
|
||||
{
|
||||
return impl->err;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTLayoutImpl
|
||||
//
|
||||
|
||||
|
||||
FTLayoutImpl::FTLayoutImpl() :
|
||||
err(0)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
FTLayoutImpl::~FTLayoutImpl()
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
171
bazaar/FTGL/src/FTLayout/FTLayoutGlue.cpp
Normal file
171
bazaar/FTGL/src/FTLayout/FTLayoutGlue.cpp
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Éric Beets <ericbeets@free.fr>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "../FTInternals.h"
|
||||
|
||||
static const FTBBox static_ftbbox;
|
||||
|
||||
FTGL_BEGIN_C_DECLS
|
||||
|
||||
#define C_TOR(cname, cargs, cxxname, cxxarg, cxxtype) \
|
||||
FTGLlayout* cname cargs \
|
||||
{ \
|
||||
cxxname *l = new cxxname cxxarg; \
|
||||
if(l->Error()) \
|
||||
{ \
|
||||
delete l; \
|
||||
return NULL; \
|
||||
} \
|
||||
FTGLlayout *ftgl = (FTGLlayout *)malloc(sizeof(FTGLlayout)); \
|
||||
ftgl->ptr = l; \
|
||||
ftgl->type = cxxtype; \
|
||||
return ftgl; \
|
||||
}
|
||||
|
||||
// FTSimpleLayout::FTSimpleLayout();
|
||||
C_TOR(ftglCreateSimpleLayout, (), FTSimpleLayout, (), LAYOUT_SIMPLE);
|
||||
|
||||
#define C_FUN(cret, cname, cargs, cxxerr, cxxname, cxxarg) \
|
||||
cret cname cargs \
|
||||
{ \
|
||||
if(!l || !l->ptr) \
|
||||
{ \
|
||||
fprintf(stderr, "FTGL warning: NULL pointer in %s\n", #cname); \
|
||||
cxxerr; \
|
||||
} \
|
||||
return l->ptr->cxxname cxxarg; \
|
||||
}
|
||||
|
||||
// FTLayout::~FTLayout();
|
||||
void ftglDestroyLayout(FTGLlayout *l)
|
||||
{
|
||||
if(!l || !l->ptr)
|
||||
{
|
||||
fprintf(stderr, "FTGL warning: NULL pointer in %s\n", __FUNCTION__);
|
||||
return;
|
||||
}
|
||||
delete l->ptr;
|
||||
free(l);
|
||||
}
|
||||
|
||||
// virtual FTBBox FTLayout::BBox(const char* string)
|
||||
extern "C++" {
|
||||
C_FUN(static FTBBox, _ftgGetlLayoutBBox, (FTGLlayout *l, const char *s),
|
||||
return static_ftbbox, BBox, (s));
|
||||
}
|
||||
|
||||
void ftgGetlLayoutBBox(FTGLlayout *l, const char * s, float c[6])
|
||||
{
|
||||
FTBBox ret = _ftgGetlLayoutBBox(l, s);
|
||||
FTPoint lower = ret.Lower(), upper = ret.Upper();
|
||||
c[0] = lower.Xf(); c[1] = lower.Yf(); c[2] = lower.Zf();
|
||||
c[3] = upper.Xf(); c[4] = upper.Yf(); c[5] = upper.Zf();
|
||||
}
|
||||
|
||||
// virtual void FTLayout::Render(const char* string, int renderMode);
|
||||
C_FUN(void, ftglRenderLayout, (FTGLlayout *l, const char *s, int r),
|
||||
return, Render, (s, r));
|
||||
|
||||
// FT_Error FTLayout::Error() const;
|
||||
C_FUN(FT_Error, ftglGetLayoutError, (FTGLlayout *l), return -1, Error, ());
|
||||
|
||||
// void FTSimpleLayout::SetFont(FTFont *fontInit)
|
||||
void ftglSetLayoutFont(FTGLlayout *l, FTGLfont *font)
|
||||
{
|
||||
if(!l || !l->ptr)
|
||||
{
|
||||
fprintf(stderr, "FTGL warning: NULL pointer in %s\n", __FUNCTION__);
|
||||
return;
|
||||
}
|
||||
if(l->type != FTGL::LAYOUT_SIMPLE)
|
||||
{
|
||||
fprintf(stderr, "FTGL warning: %s not implemented for %d\n",
|
||||
__FUNCTION__, l->type);
|
||||
}
|
||||
l->font = font;
|
||||
return dynamic_cast<FTSimpleLayout*>(l->ptr)->SetFont(font->ptr);
|
||||
}
|
||||
|
||||
// FTFont *FTSimpleLayout::GetFont()
|
||||
FTGLfont *ftglGetLayoutFont(FTGLlayout *l)
|
||||
{
|
||||
if(!l || !l->ptr)
|
||||
{
|
||||
fprintf(stderr, "FTGL warning: NULL pointer in %s\n", __FUNCTION__);
|
||||
return NULL;
|
||||
}
|
||||
if(l->type != FTGL::LAYOUT_SIMPLE)
|
||||
{
|
||||
fprintf(stderr, "FTGL warning: %s not implemented for %d\n",
|
||||
__FUNCTION__, l->type);
|
||||
}
|
||||
return l->font;
|
||||
}
|
||||
|
||||
#undef C_FUN
|
||||
|
||||
#define C_FUN(cret, cname, cargs, cxxerr, cxxname, cxxarg) \
|
||||
cret cname cargs \
|
||||
{ \
|
||||
if(!l || !l->ptr) \
|
||||
{ \
|
||||
fprintf(stderr, "FTGL warning: NULL pointer in %s\n", #cname); \
|
||||
cxxerr; \
|
||||
} \
|
||||
if(l->type != FTGL::LAYOUT_SIMPLE) \
|
||||
{ \
|
||||
fprintf(stderr, "FTGL warning: %s not implemented for %d\n", \
|
||||
__FUNCTION__, l->type); \
|
||||
cxxerr; \
|
||||
} \
|
||||
return dynamic_cast<FTSimpleLayout*>(l->ptr)->cxxname cxxarg; \
|
||||
}
|
||||
|
||||
// void FTSimpleLayout::SetLineLength(const float LineLength);
|
||||
C_FUN(void, ftglSetLayoutLineLength, (FTGLlayout *l, const float length),
|
||||
return, SetLineLength, (length));
|
||||
|
||||
// float FTSimpleLayout::GetLineLength() const
|
||||
C_FUN(float, ftglGetLayoutLineLength, (FTGLlayout *l),
|
||||
return 0.0f, GetLineLength, ());
|
||||
|
||||
// void FTSimpleLayout::SetAlignment(const TextAlignment Alignment)
|
||||
C_FUN(void, ftglSetLayoutAlignment, (FTGLlayout *l, const int a),
|
||||
return, SetAlignment, ((FTGL::TextAlignment)a));
|
||||
|
||||
// TextAlignment FTSimpleLayout::GetAlignment() const
|
||||
C_FUN(int, ftglGetLayoutAlignement, (FTGLlayout *l),
|
||||
return FTGL::ALIGN_LEFT, GetAlignment, ());
|
||||
|
||||
// void FTSimpleLayout::SetLineSpacing(const float LineSpacing)
|
||||
C_FUN(void, ftglSetLayoutLineSpacing, (FTGLlayout *l, const float f),
|
||||
return, SetLineSpacing, (f));
|
||||
|
||||
FTGL_END_C_DECLS
|
||||
|
||||
56
bazaar/FTGL/src/FTLayout/FTLayoutImpl.h
Normal file
56
bazaar/FTGL/src/FTLayout/FTLayoutImpl.h
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTLayoutImpl__
|
||||
#define __FTLayoutImpl__
|
||||
|
||||
#include "../FTSize.h"
|
||||
#include "../FTGlyphContainer.h"
|
||||
|
||||
|
||||
class FTLayoutImpl
|
||||
{
|
||||
friend class FTLayout;
|
||||
|
||||
protected:
|
||||
FTLayoutImpl();
|
||||
|
||||
virtual ~FTLayoutImpl();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Current pen or cursor position;
|
||||
*/
|
||||
FTPoint pen;
|
||||
|
||||
/**
|
||||
* Current error code. Zero means no error.
|
||||
*/
|
||||
FT_Error err;
|
||||
};
|
||||
|
||||
#endif // __FTLayoutImpl__
|
||||
|
||||
460
bazaar/FTGL/src/FTLayout/FTSimpleLayout.cpp
Normal file
460
bazaar/FTGL/src/FTLayout/FTSimpleLayout.cpp
Normal file
|
|
@ -0,0 +1,460 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include <ctype.h>
|
||||
#include <wctype.h>
|
||||
|
||||
#include "../FTInternals.h"
|
||||
#include "../FTUnicode.h"
|
||||
|
||||
#include "../FTGlyphContainer.h"
|
||||
#include "FTSimpleLayoutImpl.h"
|
||||
|
||||
|
||||
//
|
||||
// FTSimpleLayout
|
||||
//
|
||||
|
||||
|
||||
FTSimpleLayout::FTSimpleLayout() :
|
||||
FTLayout(new FTSimpleLayoutImpl())
|
||||
{}
|
||||
|
||||
|
||||
FTSimpleLayout::~FTSimpleLayout()
|
||||
{}
|
||||
|
||||
|
||||
FTBBox FTSimpleLayout::BBox(const char *string, const int len, FTPoint pos)
|
||||
{
|
||||
return dynamic_cast<FTSimpleLayoutImpl*>(impl)->BBox(string, len, pos);
|
||||
}
|
||||
|
||||
|
||||
FTBBox FTSimpleLayout::BBox(const wchar_t *string, const int len, FTPoint pos)
|
||||
{
|
||||
return dynamic_cast<FTSimpleLayoutImpl*>(impl)->BBox(string, len, pos);
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayout::Render(const char *string, const int len, FTPoint pos,
|
||||
int renderMode)
|
||||
{
|
||||
return dynamic_cast<FTSimpleLayoutImpl*>(impl)->Render(string, len, pos,
|
||||
renderMode);
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayout::Render(const wchar_t* string, const int len, FTPoint pos,
|
||||
int renderMode)
|
||||
{
|
||||
return dynamic_cast<FTSimpleLayoutImpl*>(impl)->Render(string, len, pos,
|
||||
renderMode);
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayout::SetFont(FTFont *fontInit)
|
||||
{
|
||||
dynamic_cast<FTSimpleLayoutImpl*>(impl)->currentFont = fontInit;
|
||||
}
|
||||
|
||||
|
||||
FTFont *FTSimpleLayout::GetFont()
|
||||
{
|
||||
return dynamic_cast<FTSimpleLayoutImpl*>(impl)->currentFont;
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayout::SetLineLength(const float LineLength)
|
||||
{
|
||||
dynamic_cast<FTSimpleLayoutImpl*>(impl)->lineLength = LineLength;
|
||||
}
|
||||
|
||||
|
||||
float FTSimpleLayout::GetLineLength() const
|
||||
{
|
||||
return dynamic_cast<FTSimpleLayoutImpl*>(impl)->lineLength;
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayout::SetAlignment(const FTGL::TextAlignment Alignment)
|
||||
{
|
||||
dynamic_cast<FTSimpleLayoutImpl*>(impl)->alignment = Alignment;
|
||||
}
|
||||
|
||||
|
||||
FTGL::TextAlignment FTSimpleLayout::GetAlignment() const
|
||||
{
|
||||
return dynamic_cast<FTSimpleLayoutImpl*>(impl)->alignment;
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayout::SetLineSpacing(const float LineSpacing)
|
||||
{
|
||||
dynamic_cast<FTSimpleLayoutImpl*>(impl)->lineSpacing = LineSpacing;
|
||||
}
|
||||
|
||||
|
||||
float FTSimpleLayout::GetLineSpacing() const
|
||||
{
|
||||
return dynamic_cast<FTSimpleLayoutImpl*>(impl)->lineSpacing;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// FTSimpleLayoutImpl
|
||||
//
|
||||
|
||||
|
||||
FTSimpleLayoutImpl::FTSimpleLayoutImpl()
|
||||
{
|
||||
currentFont = NULL;
|
||||
lineLength = 100.0f;
|
||||
alignment = FTGL::ALIGN_LEFT;
|
||||
lineSpacing = 1.0f;
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
inline FTBBox FTSimpleLayoutImpl::BBoxI(const T* string, const int len,
|
||||
FTPoint position)
|
||||
{
|
||||
FTBBox tmp;
|
||||
|
||||
WrapText(string, len, position, 0, &tmp);
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
|
||||
FTBBox FTSimpleLayoutImpl::BBox(const char *string, const int len,
|
||||
FTPoint position)
|
||||
{
|
||||
return BBoxI(string, len, position);
|
||||
}
|
||||
|
||||
|
||||
FTBBox FTSimpleLayoutImpl::BBox(const wchar_t *string, const int len,
|
||||
FTPoint position)
|
||||
{
|
||||
return BBoxI(string, len, position);
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
inline void FTSimpleLayoutImpl::RenderI(const T *string, const int len,
|
||||
FTPoint position, int renderMode)
|
||||
{
|
||||
pen = FTPoint(0.0f, 0.0f);
|
||||
WrapText(string, len, position, renderMode, NULL);
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayoutImpl::Render(const char *string, const int len,
|
||||
FTPoint position, int renderMode)
|
||||
{
|
||||
RenderI(string, len, position, renderMode);
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayoutImpl::Render(const wchar_t* string, const int len,
|
||||
FTPoint position, int renderMode)
|
||||
{
|
||||
RenderI(string, len, position, renderMode);
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
inline void FTSimpleLayoutImpl::WrapTextI(const T *buf, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
FTBBox *bounds)
|
||||
{
|
||||
FTUnicodeStringItr<T> breakItr(buf); // points to the last break character
|
||||
FTUnicodeStringItr<T> lineStart(buf); // points to the line start
|
||||
float nextStart = 0.0; // total width of the current line
|
||||
float breakWidth = 0.0; // width of the line up to the last word break
|
||||
float currentWidth = 0.0; // width of all characters on the current line
|
||||
float prevWidth; // width of all characters but the current glyph
|
||||
float wordLength = 0.0; // length of the block since the last break char
|
||||
int charCount = 0; // number of characters so far on the line
|
||||
int breakCharCount = 0; // number of characters before the breakItr
|
||||
float glyphWidth, advance;
|
||||
FTBBox glyphBounds;
|
||||
|
||||
// Reset the pen position
|
||||
pen.Y(0);
|
||||
|
||||
// If we have bounds mark them invalid
|
||||
if(bounds)
|
||||
{
|
||||
bounds->Invalidate();
|
||||
}
|
||||
|
||||
// Scan the input for all characters that need output
|
||||
FTUnicodeStringItr<T> prevItr(buf);
|
||||
for (FTUnicodeStringItr<T> itr(buf); *itr; prevItr = itr++, charCount++)
|
||||
{
|
||||
// Find the width of the current glyph
|
||||
glyphBounds = currentFont->BBox(itr.getBufferFromHere(), 1);
|
||||
glyphWidth = glyphBounds.Upper().Xf() - glyphBounds.Lower().Xf();
|
||||
|
||||
advance = currentFont->Advance(itr.getBufferFromHere(), 1);
|
||||
prevWidth = currentWidth;
|
||||
// Compute the width of all glyphs up to the end of buf[i]
|
||||
currentWidth = nextStart + glyphWidth;
|
||||
// Compute the position of the next glyph
|
||||
nextStart += advance;
|
||||
|
||||
// See if the current character is a space, a break or a regular character
|
||||
if((currentWidth > lineLength) || (*itr == '\n'))
|
||||
{
|
||||
// A non whitespace character has exceeded the line length. Or a
|
||||
// newline character has forced a line break. Output the last
|
||||
// line and start a new line after the break character.
|
||||
// If we have not yet found a break, break on the last character
|
||||
if(breakItr == lineStart || (*itr == '\n'))
|
||||
{
|
||||
// Break on the previous character
|
||||
breakItr = prevItr;
|
||||
breakCharCount = charCount - 1;
|
||||
breakWidth = prevWidth;
|
||||
// None of the previous words will be carried to the next line
|
||||
wordLength = 0;
|
||||
// If the current character is a newline discard its advance
|
||||
if(*itr == '\n') advance = 0;
|
||||
}
|
||||
|
||||
float remainingWidth = lineLength - breakWidth;
|
||||
|
||||
// Render the current substring
|
||||
FTUnicodeStringItr<T> breakChar = breakItr;
|
||||
// move past the break character and don't count it on the next line either
|
||||
++breakChar; --charCount;
|
||||
// If the break character is a newline do not render it
|
||||
if(*breakChar == '\n')
|
||||
{
|
||||
++breakChar; --charCount;
|
||||
}
|
||||
|
||||
OutputWrapped(lineStart.getBufferFromHere(), breakCharCount,
|
||||
//breakItr.getBufferFromHere() - lineStart.getBufferFromHere(),
|
||||
position, renderMode, remainingWidth, bounds);
|
||||
|
||||
// Store the start of the next line
|
||||
lineStart = breakChar;
|
||||
// TODO: Is Height() the right value here?
|
||||
pen -= FTPoint(0, currentFont->LineHeight() * lineSpacing);
|
||||
// The current width is the width since the last break
|
||||
nextStart = wordLength + advance;
|
||||
wordLength += advance;
|
||||
currentWidth = wordLength + advance;
|
||||
// Reset the safe break for the next line
|
||||
breakItr = lineStart;
|
||||
charCount -= breakCharCount;
|
||||
}
|
||||
else if(iswspace(*itr))
|
||||
{
|
||||
// This is the last word break position
|
||||
wordLength = 0;
|
||||
breakItr = itr;
|
||||
breakCharCount = charCount;
|
||||
|
||||
// Check to see if this is the first whitespace character in a run
|
||||
if(buf == itr.getBufferFromHere() || !iswspace(*prevItr))
|
||||
{
|
||||
// Record the width of the start of the block
|
||||
breakWidth = currentWidth;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
wordLength += advance;
|
||||
}
|
||||
}
|
||||
|
||||
float remainingWidth = lineLength - currentWidth;
|
||||
// Render any remaining text on the last line
|
||||
// Disable justification for the last row
|
||||
if(alignment == FTGL::ALIGN_JUSTIFY)
|
||||
{
|
||||
alignment = FTGL::ALIGN_LEFT;
|
||||
OutputWrapped(lineStart.getBufferFromHere(), -1, position, renderMode,
|
||||
remainingWidth, bounds);
|
||||
alignment = FTGL::ALIGN_JUSTIFY;
|
||||
}
|
||||
else
|
||||
{
|
||||
OutputWrapped(lineStart.getBufferFromHere(), -1, position, renderMode,
|
||||
remainingWidth, bounds);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayoutImpl::WrapText(const char *buf, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
FTBBox *bounds)
|
||||
{
|
||||
WrapTextI(buf, len, position, renderMode, bounds);
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayoutImpl::WrapText(const wchar_t* buf, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
FTBBox *bounds)
|
||||
{
|
||||
WrapTextI(buf, len, position, renderMode, bounds);
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
inline void FTSimpleLayoutImpl::OutputWrappedI(const T *buf, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
const float remaining,
|
||||
FTBBox *bounds)
|
||||
{
|
||||
float distributeWidth = 0.0;
|
||||
// Align the text according as specified by Alignment
|
||||
switch (alignment)
|
||||
{
|
||||
case FTGL::ALIGN_LEFT:
|
||||
pen.X(0);
|
||||
break;
|
||||
case FTGL::ALIGN_CENTER:
|
||||
pen.X(remaining / 2);
|
||||
break;
|
||||
case FTGL::ALIGN_RIGHT:
|
||||
pen.X(remaining);
|
||||
break;
|
||||
case FTGL::ALIGN_JUSTIFY:
|
||||
pen.X(0);
|
||||
distributeWidth = remaining;
|
||||
break;
|
||||
}
|
||||
|
||||
// If we have bounds expand them by the line's bounds, otherwise render
|
||||
// the line.
|
||||
if(bounds)
|
||||
{
|
||||
FTBBox temp = currentFont->BBox(buf, len);
|
||||
|
||||
// Add the extra space to the upper x dimension
|
||||
temp = FTBBox(temp.Lower() + pen,
|
||||
temp.Upper() + pen + FTPoint(distributeWidth, 0));
|
||||
|
||||
// See if this is the first area to be added to the bounds
|
||||
if(bounds->IsValid())
|
||||
{
|
||||
*bounds |= temp;
|
||||
}
|
||||
else
|
||||
{
|
||||
*bounds = temp;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
RenderSpace(buf, len, position, renderMode, distributeWidth);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayoutImpl::OutputWrapped(const char *buf, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
const float remaining, FTBBox *bounds)
|
||||
{
|
||||
OutputWrappedI(buf, len, position, renderMode, remaining, bounds);
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayoutImpl::OutputWrapped(const wchar_t *buf, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
const float remaining, FTBBox *bounds)
|
||||
{
|
||||
OutputWrappedI(buf, len, position, renderMode, remaining, bounds);
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
inline void FTSimpleLayoutImpl::RenderSpaceI(const T *string, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
const float extraSpace)
|
||||
{
|
||||
float space = 0.0;
|
||||
|
||||
// If there is space to distribute, count the number of spaces
|
||||
if(extraSpace > 0.0)
|
||||
{
|
||||
int numSpaces = 0;
|
||||
|
||||
// Count the number of space blocks in the input
|
||||
FTUnicodeStringItr<T> prevItr(string), itr(string);
|
||||
for(int i = 0; ((len < 0) && *itr) || ((len >= 0) && (i <= len));
|
||||
++i, prevItr = itr++)
|
||||
{
|
||||
// If this is the end of a space block, increment the counter
|
||||
if((i > 0) && !iswspace(*itr) && iswspace(*prevItr))
|
||||
{
|
||||
numSpaces++;
|
||||
}
|
||||
}
|
||||
|
||||
space = extraSpace/numSpaces;
|
||||
}
|
||||
|
||||
// Output all characters of the string
|
||||
FTUnicodeStringItr<T> prevItr(string), itr(string);
|
||||
for(int i = 0; ((len < 0) && *itr) || ((len >= 0) && (i <= len));
|
||||
++i, prevItr = itr++)
|
||||
{
|
||||
// If this is the end of a space block, distribute the extra space
|
||||
// inside it
|
||||
if((i > 0) && !iswspace(*itr) && iswspace(*prevItr))
|
||||
{
|
||||
pen += FTPoint(space, 0);
|
||||
}
|
||||
|
||||
pen = currentFont->Render(itr.getBufferFromHere(), 1, pen, FTPoint(), renderMode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayoutImpl::RenderSpace(const char *string, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
const float extraSpace)
|
||||
{
|
||||
RenderSpaceI(string, len, position, renderMode, extraSpace);
|
||||
}
|
||||
|
||||
|
||||
void FTSimpleLayoutImpl::RenderSpace(const wchar_t *string, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
const float extraSpace)
|
||||
{
|
||||
RenderSpaceI(string, len, position, renderMode, extraSpace);
|
||||
}
|
||||
|
||||
225
bazaar/FTGL/src/FTLayout/FTSimpleLayoutImpl.h
Normal file
225
bazaar/FTGL/src/FTLayout/FTSimpleLayoutImpl.h
Normal file
|
|
@ -0,0 +1,225 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTSimpleLayoutImpl__
|
||||
#define __FTSimpleLayoutImpl__
|
||||
|
||||
#include "FTLayoutImpl.h"
|
||||
|
||||
|
||||
class FTFont;
|
||||
|
||||
class FTSimpleLayoutImpl : public FTLayoutImpl
|
||||
{
|
||||
friend class FTSimpleLayout;
|
||||
|
||||
protected:
|
||||
FTSimpleLayoutImpl();
|
||||
|
||||
virtual ~FTSimpleLayoutImpl() {};
|
||||
|
||||
virtual FTBBox BBox(const char* string, const int len,
|
||||
FTPoint position);
|
||||
|
||||
virtual FTBBox BBox(const wchar_t* string, const int len,
|
||||
FTPoint position);
|
||||
|
||||
virtual void Render(const char *string, const int len,
|
||||
FTPoint position, int renderMode);
|
||||
|
||||
virtual void Render(const wchar_t *string, const int len,
|
||||
FTPoint position, int renderMode);
|
||||
|
||||
/**
|
||||
* Render a string of characters and distribute extra space amongst
|
||||
* the whitespace regions of the string.
|
||||
*
|
||||
* @param string A buffer of wchar_t characters to output.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be displayed until a null character is encountered.
|
||||
* @param position TODO
|
||||
* @param renderMode Render mode to display
|
||||
* @param extraSpace The amount of extra space to distribute amongst
|
||||
* the characters.
|
||||
*/
|
||||
virtual void RenderSpace(const char *string, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
const float extraSpace);
|
||||
|
||||
/**
|
||||
* Render a string of characters and distribute extra space amongst
|
||||
* the whitespace regions of the string.
|
||||
*
|
||||
* @param string A buffer of wchar_t characters to output.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be displayed until a null character is encountered.
|
||||
* @param position TODO
|
||||
* @param renderMode Render mode to display
|
||||
* @param extraSpace The amount of extra space to distribute amongst
|
||||
* the characters.
|
||||
*/
|
||||
virtual void RenderSpace(const wchar_t *string, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
const float extraSpace);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Either render a string of characters and wrap lines
|
||||
* longer than a threshold or compute the bounds
|
||||
* of a string of characters when wrapped. The functionality
|
||||
* of this method is exposed by the BBoxWrapped and
|
||||
* RenderWrapped methods.
|
||||
*
|
||||
* @param buf A char string to output.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be displayed until a null character is encountered.
|
||||
* @param position TODO
|
||||
* @param renderMode Render mode to display
|
||||
* @param bounds A pointer to a bounds object. If non null
|
||||
* the bounds of the text when laid out
|
||||
* will be stored in bounds. If null the
|
||||
* text will be rendered.
|
||||
*/
|
||||
virtual void WrapText(const char *buf, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
FTBBox *bounds);
|
||||
|
||||
/**
|
||||
* Either render a string of characters and wrap lines
|
||||
* longer than a threshold or compute the bounds
|
||||
* of a string of characters when wrapped. The functionality
|
||||
* of this method is exposed by the BBoxWrapped and
|
||||
* RenderWrapped methods.
|
||||
*
|
||||
* @param buf A wchar_t style string to output.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be displayed until a null character is encountered.
|
||||
* @param position TODO
|
||||
* @param renderMode Render mode to display
|
||||
* @param bounds A pointer to a bounds object. If non null
|
||||
* the bounds of the text when laid out
|
||||
* will be stored in bounds. If null the
|
||||
* text will be rendered.
|
||||
*/
|
||||
virtual void WrapText(const wchar_t *buf, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
FTBBox *bounds);
|
||||
|
||||
/**
|
||||
* A helper method used by WrapText to either output the text or
|
||||
* compute it's bounds.
|
||||
*
|
||||
* @param buf A pointer to an array of character data.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be displayed until a null character is encountered.
|
||||
* @param position TODO
|
||||
* @param renderMode Render mode to display
|
||||
* @param RemainingWidth The amount of extra space left on the line.
|
||||
* @param bounds A pointer to a bounds object. If non null the
|
||||
* bounds will be initialized or expanded by the
|
||||
* bounds of the line. If null the text will be
|
||||
* rendered. If the bounds are invalid (lower > upper)
|
||||
* they will be initialized. Otherwise they
|
||||
* will be expanded.
|
||||
*/
|
||||
void OutputWrapped(const char *buf, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
const float RemainingWidth, FTBBox *bounds);
|
||||
|
||||
/**
|
||||
* A helper method used by WrapText to either output the text or
|
||||
* compute it's bounds.
|
||||
*
|
||||
* @param buf A pointer to an array of character data.
|
||||
* @param len The length of the string. If < 0 then all characters
|
||||
* will be displayed until a null character is encountered.
|
||||
* @param position TODO
|
||||
* @param renderMode Render mode to display
|
||||
* @param RemainingWidth The amount of extra space left on the line.
|
||||
* @param bounds A pointer to a bounds object. If non null the
|
||||
* bounds will be initialized or expanded by the
|
||||
* bounds of the line. If null the text will be
|
||||
* rendered. If the bounds are invalid (lower > upper)
|
||||
* they will be initialized. Otherwise they
|
||||
* will be expanded.
|
||||
*/
|
||||
void OutputWrapped(const wchar_t *buf, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
const float RemainingWidth, FTBBox *bounds);
|
||||
|
||||
/**
|
||||
* The font to use for rendering the text. The font is
|
||||
* referenced by this but will not be disposed of when this
|
||||
* is deleted.
|
||||
*/
|
||||
FTFont *currentFont;
|
||||
|
||||
/**
|
||||
* The maximum line length for formatting text.
|
||||
*/
|
||||
float lineLength;
|
||||
|
||||
/**
|
||||
* The text alignment mode used to distribute
|
||||
* space within a line or rendered text.
|
||||
*/
|
||||
FTGL::TextAlignment alignment;
|
||||
|
||||
/**
|
||||
* The height of each line of text expressed as
|
||||
* a percentage of the font's line height.
|
||||
*/
|
||||
float lineSpacing;
|
||||
|
||||
/* Internal generic BBox() implementation */
|
||||
template <typename T>
|
||||
inline FTBBox BBoxI(const T* string, const int len, FTPoint position);
|
||||
|
||||
/* Internal generic Render() implementation */
|
||||
template <typename T>
|
||||
inline void RenderI(const T* string, const int len,
|
||||
FTPoint position, int renderMode);
|
||||
|
||||
/* Internal generic RenderSpace() implementation */
|
||||
template <typename T>
|
||||
inline void RenderSpaceI(const T* string, const int len,
|
||||
FTPoint position, int renderMode,
|
||||
const float extraSpace);
|
||||
|
||||
/* Internal generic WrapText() implementation */
|
||||
template <typename T>
|
||||
void WrapTextI(const T* buf, const int len, FTPoint position,
|
||||
int renderMode, FTBBox *bounds);
|
||||
|
||||
/* Internal generic OutputWrapped() implementation */
|
||||
template <typename T>
|
||||
void OutputWrappedI(const T* buf, const int len, FTPoint position,
|
||||
int renderMode, const float RemainingWidth,
|
||||
FTBBox *bounds);
|
||||
};
|
||||
|
||||
#endif // __FTSimpleLayoutImpl__
|
||||
|
||||
91
bazaar/FTGL/src/FTLibrary.cpp
Normal file
91
bazaar/FTGL/src/FTLibrary.cpp
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "FTLibrary.h"
|
||||
|
||||
|
||||
const FTLibrary& FTLibrary::Instance()
|
||||
{
|
||||
static FTLibrary ftlib;
|
||||
return ftlib;
|
||||
}
|
||||
|
||||
|
||||
FTLibrary::~FTLibrary()
|
||||
{
|
||||
if(library != 0)
|
||||
{
|
||||
FT_Done_FreeType(*library);
|
||||
|
||||
delete library;
|
||||
library= 0;
|
||||
}
|
||||
|
||||
// if(manager != 0)
|
||||
// {
|
||||
// FTC_Manager_Done(manager);
|
||||
//
|
||||
// delete manager;
|
||||
// manager= 0;
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
FTLibrary::FTLibrary()
|
||||
: library(0),
|
||||
err(0)
|
||||
{
|
||||
Initialise();
|
||||
}
|
||||
|
||||
|
||||
bool FTLibrary::Initialise()
|
||||
{
|
||||
if(library != 0)
|
||||
return true;
|
||||
|
||||
library = new FT_Library;
|
||||
|
||||
err = FT_Init_FreeType(library);
|
||||
if(err)
|
||||
{
|
||||
delete library;
|
||||
library = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
// FTC_Manager* manager;
|
||||
//
|
||||
// if(FTC_Manager_New(lib, 0, 0, 0, my_face_requester, 0, manager)
|
||||
// {
|
||||
// delete manager;
|
||||
// manager= 0;
|
||||
// return false;
|
||||
// }
|
||||
|
||||
return true;
|
||||
}
|
||||
122
bazaar/FTGL/src/FTLibrary.h
Normal file
122
bazaar/FTGL/src/FTLibrary.h
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
/*
|
||||
* 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 __FTLibrary__
|
||||
#define __FTLibrary__
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
//#include FT_CACHE_H
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
|
||||
/**
|
||||
* FTLibrary class is the global accessor for the Freetype library.
|
||||
*
|
||||
* This class encapsulates the Freetype Library. This is a singleton class
|
||||
* and ensures that only one FT_Library is in existence at any one time.
|
||||
* All constructors are private therefore clients cannot create or
|
||||
* instantiate this class themselves and must access it's methods via the
|
||||
* static <code>FTLibrary::Instance()</code> function.
|
||||
*
|
||||
* Just because this class returns a valid <code>FTLibrary</code> object
|
||||
* doesn't mean that the Freetype Library has been successfully initialised.
|
||||
* Clients should check for errors. You can initialse the library AND check
|
||||
* for errors using the following code...
|
||||
* <code>err = FTLibrary::Instance().Error();</code>
|
||||
*
|
||||
* @see "Freetype 2 Documentation"
|
||||
*
|
||||
*/
|
||||
class FTLibrary
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Global acces point to the single FTLibrary object.
|
||||
*
|
||||
* @return The global <code>FTLibrary</code> object.
|
||||
*/
|
||||
static const FTLibrary& Instance();
|
||||
|
||||
/**
|
||||
* Gets a pointer to the native Freetype library.
|
||||
*
|
||||
* @return A handle to a FreeType library instance.
|
||||
*/
|
||||
const FT_Library* const GetLibrary() const { return library; }
|
||||
|
||||
/**
|
||||
* Queries the library for errors.
|
||||
*
|
||||
* @return The current error code.
|
||||
*/
|
||||
FT_Error Error() const { return err; }
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*
|
||||
* Disposes of the Freetype library
|
||||
*/
|
||||
~FTLibrary();
|
||||
|
||||
private:
|
||||
/**
|
||||
* Default constructors.
|
||||
*
|
||||
* Made private to stop clients creating there own FTLibrary
|
||||
* objects.
|
||||
*/
|
||||
FTLibrary();
|
||||
FTLibrary(const FT_Library&){}
|
||||
FTLibrary& operator=(const FT_Library&) { return *this; }
|
||||
|
||||
/**
|
||||
* Initialises the Freetype library
|
||||
*
|
||||
* Even though this function indicates success via the return value,
|
||||
* clients can't see this so must check the error codes. This function
|
||||
* is only ever called by the default c_stor
|
||||
*
|
||||
* @return <code>true</code> if the Freetype library was
|
||||
* successfully initialised, <code>false</code>
|
||||
* otherwise.
|
||||
*/
|
||||
bool Initialise();
|
||||
|
||||
/**
|
||||
* Freetype library handle.
|
||||
*/
|
||||
FT_Library* library;
|
||||
// FTC_Manager* manager;
|
||||
|
||||
/**
|
||||
* Current error code. Zero means no error.
|
||||
*/
|
||||
FT_Error err;
|
||||
|
||||
};
|
||||
|
||||
#endif // __FTLibrary__
|
||||
137
bazaar/FTGL/src/FTList.h
Normal file
137
bazaar/FTGL/src/FTList.h
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
/*
|
||||
* 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 __FTList__
|
||||
#define __FTList__
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
/**
|
||||
* Provides a non-STL alternative to the STL list
|
||||
*/
|
||||
template <typename FT_LIST_ITEM_TYPE>
|
||||
class FTList
|
||||
{
|
||||
public:
|
||||
typedef FT_LIST_ITEM_TYPE value_type;
|
||||
typedef value_type& reference;
|
||||
typedef const value_type& const_reference;
|
||||
typedef size_t size_type;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
FTList()
|
||||
: listSize(0),
|
||||
tail(0)
|
||||
{
|
||||
tail = NULL;
|
||||
head = new Node;
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTList()
|
||||
{
|
||||
Node* next;
|
||||
|
||||
for(Node *walk = head; walk; walk = next)
|
||||
{
|
||||
next = walk->next;
|
||||
delete walk;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of items in the list
|
||||
*/
|
||||
size_type size() const
|
||||
{
|
||||
return listSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an item to the end of the list
|
||||
*/
|
||||
void push_back(const value_type& item)
|
||||
{
|
||||
Node* node = new Node(item);
|
||||
|
||||
if(head->next == NULL)
|
||||
{
|
||||
head->next = node;
|
||||
}
|
||||
|
||||
if(tail)
|
||||
{
|
||||
tail->next = node;
|
||||
}
|
||||
tail = node;
|
||||
++listSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the item at the front of the list
|
||||
*/
|
||||
reference front() const
|
||||
{
|
||||
return head->next->payload;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the item at the end of the list
|
||||
*/
|
||||
reference back() const
|
||||
{
|
||||
return tail->payload;
|
||||
}
|
||||
|
||||
private:
|
||||
struct Node
|
||||
{
|
||||
Node()
|
||||
: next(NULL)
|
||||
{}
|
||||
|
||||
Node(const value_type& item)
|
||||
: next(NULL)
|
||||
{
|
||||
payload = item;
|
||||
}
|
||||
|
||||
Node* next;
|
||||
|
||||
value_type payload;
|
||||
};
|
||||
|
||||
size_type listSize;
|
||||
|
||||
Node* head;
|
||||
Node* tail;
|
||||
};
|
||||
|
||||
#endif // __FTList__
|
||||
|
||||
58
bazaar/FTGL/src/FTPoint.cpp
Normal file
58
bazaar/FTGL/src/FTPoint.cpp
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
bool operator == (const FTPoint &a, const FTPoint &b)
|
||||
{
|
||||
return((a.values[0] == b.values[0]) && (a.values[1] == b.values[1]) && (a.values[2] == b.values[2]));
|
||||
}
|
||||
|
||||
|
||||
bool operator != (const FTPoint &a, const FTPoint &b)
|
||||
{
|
||||
return((a.values[0] != b.values[0]) || (a.values[1] != b.values[1]) || (a.values[2] != b.values[2]));
|
||||
}
|
||||
|
||||
|
||||
FTPoint FTPoint::Normalise()
|
||||
{
|
||||
double norm = sqrt(values[0] * values[0]
|
||||
+ values[1] * values[1]
|
||||
+ values[2] * values[2]);
|
||||
if(norm == 0.0)
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
FTPoint temp(values[0] / norm, values[1] / norm, values[2] / norm);
|
||||
return temp;
|
||||
}
|
||||
|
||||
123
bazaar/FTGL/src/FTSize.cpp
Normal file
123
bazaar/FTGL/src/FTSize.cpp
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "FTSize.h"
|
||||
|
||||
|
||||
FTSize::FTSize()
|
||||
: ftFace(0),
|
||||
ftSize(0),
|
||||
size(0),
|
||||
xResolution(0),
|
||||
yResolution(0),
|
||||
err(0)
|
||||
{}
|
||||
|
||||
|
||||
FTSize::~FTSize()
|
||||
{}
|
||||
|
||||
|
||||
bool FTSize::CharSize(FT_Face* face, unsigned int pointSize, unsigned int xRes, unsigned int yRes)
|
||||
{
|
||||
if(size != pointSize || xResolution != xRes || yResolution != yRes)
|
||||
{
|
||||
err = FT_Set_Char_Size(*face, 0L, pointSize * 64, xResolution, yResolution);
|
||||
|
||||
if(!err)
|
||||
{
|
||||
ftFace = face;
|
||||
size = pointSize;
|
||||
xResolution = xRes;
|
||||
yResolution = yRes;
|
||||
ftSize = (*ftFace)->size;
|
||||
}
|
||||
}
|
||||
|
||||
return !err;
|
||||
}
|
||||
|
||||
|
||||
unsigned int FTSize::CharSize() const
|
||||
{
|
||||
return size;
|
||||
}
|
||||
|
||||
|
||||
float FTSize::Ascender() const
|
||||
{
|
||||
return ftSize == 0 ? 0.0f : static_cast<float>(ftSize->metrics.ascender) / 64.0f;
|
||||
}
|
||||
|
||||
|
||||
float FTSize::Descender() const
|
||||
{
|
||||
return ftSize == 0 ? 0.0f : static_cast<float>(ftSize->metrics.descender) / 64.0f;
|
||||
}
|
||||
|
||||
|
||||
float FTSize::Height() const
|
||||
{
|
||||
if(0 == ftSize)
|
||||
{
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
if(FT_IS_SCALABLE((*ftFace)))
|
||||
{
|
||||
return ((*ftFace)->bbox.yMax - (*ftFace)->bbox.yMin) * ((float)ftSize->metrics.y_ppem / (float)(*ftFace)->units_per_EM);
|
||||
}
|
||||
else
|
||||
{
|
||||
return static_cast<float>(ftSize->metrics.height) / 64.0f;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
float FTSize::Width() const
|
||||
{
|
||||
if(0 == ftSize)
|
||||
{
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
if(FT_IS_SCALABLE((*ftFace)))
|
||||
{
|
||||
return ((*ftFace)->bbox.xMax - (*ftFace)->bbox.xMin) * (static_cast<float>(ftSize->metrics.x_ppem) / static_cast<float>((*ftFace)->units_per_EM));
|
||||
}
|
||||
else
|
||||
{
|
||||
return static_cast<float>(ftSize->metrics.max_advance) / 64.0f;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
float FTSize::Underline() const
|
||||
{
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
164
bazaar/FTGL/src/FTSize.h
Normal file
164
bazaar/FTGL/src/FTSize.h
Normal file
|
|
@ -0,0 +1,164 @@
|
|||
/*
|
||||
* 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 __FTSize__
|
||||
#define __FTSize__
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* FTSize class provides an abstraction layer for the Freetype Size.
|
||||
*
|
||||
* @see "Freetype 2 Documentation"
|
||||
*
|
||||
*/
|
||||
class FTSize
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Default Constructor
|
||||
*/
|
||||
FTSize();
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~FTSize();
|
||||
|
||||
/**
|
||||
* Sets the char size for the current face.
|
||||
*
|
||||
* This doesn't guarantee that the size was set correctly. Clients
|
||||
* should check errors. If an error does occur the size object isn't modified.
|
||||
*
|
||||
* @param face Parent face for this size object
|
||||
* @param point_size the face size in points (1/72 inch)
|
||||
* @param x_resolution the horizontal resolution of the target device.
|
||||
* @param y_resolution the vertical resolution of the target device.
|
||||
* @return <code>true</code> if the size has been set. Clients should check Error() for more information if this function returns false()
|
||||
*/
|
||||
bool CharSize(FT_Face* face, unsigned int point_size,
|
||||
unsigned int x_resolution, unsigned int y_resolution);
|
||||
|
||||
/**
|
||||
* get the char size for the current face.
|
||||
*
|
||||
* @return The char size in points
|
||||
*/
|
||||
unsigned int CharSize() const;
|
||||
|
||||
/**
|
||||
* Gets the global ascender height for the face in pixels.
|
||||
*
|
||||
* @return Ascender height
|
||||
*/
|
||||
float Ascender() const;
|
||||
|
||||
/**
|
||||
* Gets the global descender height for the face in pixels.
|
||||
*
|
||||
* @return Ascender height
|
||||
*/
|
||||
float Descender() const;
|
||||
|
||||
/**
|
||||
* Gets the global face height for the face.
|
||||
*
|
||||
* If the face is scalable this returns the height of the global
|
||||
* bounding box which ensures that any glyph will be less than or
|
||||
* equal to this height. If the font isn't scalable there is no
|
||||
* guarantee that glyphs will not be taller than this value.
|
||||
*
|
||||
* @return height in pixels.
|
||||
*/
|
||||
float Height() const;
|
||||
|
||||
/**
|
||||
* Gets the global face width for the face.
|
||||
*
|
||||
* If the face is scalable this returns the width of the global
|
||||
* bounding box which ensures that any glyph will be less than or
|
||||
* equal to this width. If the font isn't scalable this value is
|
||||
* the max_advance for the face.
|
||||
*
|
||||
* @return width in pixels.
|
||||
*/
|
||||
float Width() const;
|
||||
|
||||
/**
|
||||
* Gets the underline position for the face.
|
||||
*
|
||||
* @return underline position in pixels
|
||||
*/
|
||||
float Underline() const;
|
||||
|
||||
/**
|
||||
* Queries for errors.
|
||||
*
|
||||
* @return The current error code.
|
||||
*/
|
||||
FT_Error Error() const { return err; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* The current Freetype face that this FTSize object relates to.
|
||||
*/
|
||||
FT_Face* ftFace;
|
||||
|
||||
/**
|
||||
* The Freetype size.
|
||||
*/
|
||||
FT_Size ftSize;
|
||||
|
||||
/**
|
||||
* The size in points.
|
||||
*/
|
||||
unsigned int size;
|
||||
|
||||
/**
|
||||
* The horizontal resolution.
|
||||
*/
|
||||
unsigned int xResolution;
|
||||
|
||||
/**
|
||||
* The vertical resolution.
|
||||
*/
|
||||
unsigned int yResolution;
|
||||
|
||||
/**
|
||||
* Current error code. Zero means no error.
|
||||
*/
|
||||
FT_Error err;
|
||||
|
||||
};
|
||||
|
||||
#endif // __FTSize__
|
||||
|
||||
237
bazaar/FTGL/src/FTUnicode.h
Normal file
237
bazaar/FTGL/src/FTUnicode.h
Normal file
|
|
@ -0,0 +1,237 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2008 Daniel Remenak <dtremenak@users.sourceforge.net>
|
||||
*
|
||||
* Portions derived from ConvertUTF.c Copyright (C) 2001-2004 Unicode, Inc
|
||||
* Unicode, Inc. hereby grants the right to freely use the information
|
||||
* supplied in this file in the creation of products supporting the
|
||||
* Unicode Standard, and to make copies of this file in any form
|
||||
* for internal or external distribution as long as this notice
|
||||
* remains attached.
|
||||
*
|
||||
* 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 __FTUnicode__
|
||||
#define __FTUnicode__
|
||||
|
||||
/**
|
||||
* Provides a way to easily walk multibyte unicode strings in the various
|
||||
* Unicode encodings (UTF-8, UTF-16, UTF-32, UCS-2, and UCS-4). Encodings
|
||||
* with elements larger than one byte must already be in the correct endian
|
||||
* order for the current architecture.
|
||||
*/
|
||||
template <typename T>
|
||||
class FTUnicodeStringItr
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor. Also reads the first character and stores it.
|
||||
*
|
||||
* @param string The buffer to iterate. No copy is made.
|
||||
*/
|
||||
FTUnicodeStringItr(const T* string) : curPos(string), nextPos(string)
|
||||
{
|
||||
(*this)++;
|
||||
};
|
||||
|
||||
/**
|
||||
* Pre-increment operator. Reads the next unicode character and sets
|
||||
* the state appropriately.
|
||||
* Note - not protected against overruns.
|
||||
*/
|
||||
FTUnicodeStringItr& operator++()
|
||||
{
|
||||
curPos = nextPos;
|
||||
// unicode handling
|
||||
switch (sizeof(T))
|
||||
{
|
||||
case 1: // UTF-8
|
||||
// get this character
|
||||
readUTF8(); break;
|
||||
case 2: // UTF-16
|
||||
readUTF16(); break;
|
||||
case 4: // UTF-32
|
||||
// fall through
|
||||
default: // error condition really, but give it a shot anyway
|
||||
curChar = *nextPos++;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Post-increment operator. Reads the next character and sets
|
||||
* the state appropriately.
|
||||
* Note - not protected against overruns.
|
||||
*/
|
||||
FTUnicodeStringItr operator++(int)
|
||||
{
|
||||
FTUnicodeStringItr temp = *this;
|
||||
++*this;
|
||||
return temp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Equality operator. Two FTUnicodeStringItrs are considered equal
|
||||
* if they have the same current buffer and buffer position.
|
||||
*/
|
||||
bool operator==(const FTUnicodeStringItr& right) const
|
||||
{
|
||||
if (curPos == right.getBufferFromHere())
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dereference operator.
|
||||
*
|
||||
* @return The unicode codepoint of the character currently pointed
|
||||
* to by the FTUnicodeStringItr.
|
||||
*/
|
||||
unsigned int operator*() const
|
||||
{
|
||||
return curChar;
|
||||
}
|
||||
|
||||
/**
|
||||
* Buffer-fetching getter. You can use this to retreive the buffer
|
||||
* starting at the currently-iterated character for functions which
|
||||
* require a Unicode string as input.
|
||||
*/
|
||||
const T* getBufferFromHere() const { return curPos; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* Helper function for reading a single UTF8 character from the string.
|
||||
* Updates internal state appropriately.
|
||||
*/
|
||||
void readUTF8();
|
||||
|
||||
/**
|
||||
* Helper function for reading a single UTF16 character from the string.
|
||||
* Updates internal state appropriately.
|
||||
*/
|
||||
void readUTF16();
|
||||
|
||||
/**
|
||||
* The buffer position of the first element in the current character.
|
||||
*/
|
||||
const T* curPos;
|
||||
|
||||
/**
|
||||
* The character stored at the current buffer position (prefetched on
|
||||
* increment, so there's no penalty for dereferencing more than once).
|
||||
*/
|
||||
unsigned int curChar;
|
||||
|
||||
/**
|
||||
* The buffer position of the first element in the next character.
|
||||
*/
|
||||
const T* nextPos;
|
||||
|
||||
// unicode magic numbers
|
||||
static const char utf8bytes[256];
|
||||
static const unsigned long offsetsFromUTF8[6];
|
||||
static const unsigned long highSurrogateStart;
|
||||
static const unsigned long highSurrogateEnd;
|
||||
static const unsigned long lowSurrogateStart;
|
||||
static const unsigned long lowSurrogateEnd;
|
||||
static const unsigned long highSurrogateShift;
|
||||
static const unsigned long lowSurrogateBase;
|
||||
};
|
||||
|
||||
/* The first character in a UTF8 sequence indicates how many bytes
|
||||
* to read (among other things) */
|
||||
template <typename T>
|
||||
const char FTUnicodeStringItr<T>::utf8bytes[256] = {
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
|
||||
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, 4,4,4,4,4,4,4,4,5,5,5,5,6,6,6,6
|
||||
};
|
||||
|
||||
/* Magic values subtracted from a buffer value during UTF8 conversion.
|
||||
* This table contains as many values as there might be trailing bytes
|
||||
* in a UTF-8 sequence. */
|
||||
template <typename T>
|
||||
const unsigned long FTUnicodeStringItr<T>::offsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL,
|
||||
0x03C82080UL, 0xFA082080UL, 0x82082080UL };
|
||||
|
||||
// get a UTF8 character; leave the tracking pointer at the start of the
|
||||
// next character
|
||||
// not protected against invalid UTF8
|
||||
template <typename T>
|
||||
inline void FTUnicodeStringItr<T>::readUTF8()
|
||||
{
|
||||
unsigned int ch = 0;
|
||||
unsigned int extraBytesToRead = utf8bytes[(unsigned char)(*nextPos)];
|
||||
// falls through
|
||||
switch (extraBytesToRead)
|
||||
{
|
||||
case 6: ch += *nextPos++; ch <<= 6; /* remember, illegal UTF-8 */
|
||||
case 5: ch += *nextPos++; ch <<= 6; /* remember, illegal UTF-8 */
|
||||
case 4: ch += *nextPos++; ch <<= 6;
|
||||
case 3: ch += *nextPos++; ch <<= 6;
|
||||
case 2: ch += *nextPos++; ch <<= 6;
|
||||
case 1: ch += *nextPos++;
|
||||
}
|
||||
ch -= offsetsFromUTF8[extraBytesToRead-1];
|
||||
curChar = ch;
|
||||
}
|
||||
|
||||
// Magic numbers for UTF-16 conversions
|
||||
template <typename T>
|
||||
const unsigned long FTUnicodeStringItr<T>::highSurrogateStart = 0xD800;
|
||||
template <typename T>
|
||||
const unsigned long FTUnicodeStringItr<T>::highSurrogateEnd = 0xDBFF;
|
||||
template <typename T>
|
||||
const unsigned long FTUnicodeStringItr<T>::lowSurrogateStart = 0xDC00;
|
||||
template <typename T>
|
||||
const unsigned long FTUnicodeStringItr<T>::lowSurrogateEnd = 0xDFFF;
|
||||
template <typename T>
|
||||
const unsigned long FTUnicodeStringItr<T>::highSurrogateShift = 10;
|
||||
template <typename T>
|
||||
const unsigned long FTUnicodeStringItr<T>::lowSurrogateBase = 0x0010000UL;
|
||||
|
||||
template <typename T>
|
||||
inline void FTUnicodeStringItr<T>::readUTF16()
|
||||
{
|
||||
unsigned int ch = *nextPos++;
|
||||
// if we have the first half of the surrogate pair
|
||||
if (ch >= highSurrogateStart && ch <= highSurrogateEnd)
|
||||
{
|
||||
unsigned int ch2 = *curPos;
|
||||
// complete the surrogate pair
|
||||
if (ch2 >= lowSurrogateStart && ch2 <= lowSurrogateEnd)
|
||||
{
|
||||
ch = ((ch - highSurrogateStart) << highSurrogateShift)
|
||||
+ (ch2 - lowSurrogateStart) + lowSurrogateBase;
|
||||
++nextPos;
|
||||
}
|
||||
}
|
||||
curChar = ch;
|
||||
}
|
||||
|
||||
#endif
|
||||
215
bazaar/FTGL/src/FTVector.h
Normal file
215
bazaar/FTGL/src/FTVector.h
Normal file
|
|
@ -0,0 +1,215 @@
|
|||
/*
|
||||
* 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 __FTVector__
|
||||
#define __FTVector__
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
/**
|
||||
* Provides a non-STL alternative to the STL vector
|
||||
*/
|
||||
template <typename FT_VECTOR_ITEM_TYPE>
|
||||
class FTVector
|
||||
{
|
||||
public:
|
||||
typedef FT_VECTOR_ITEM_TYPE value_type;
|
||||
typedef value_type& reference;
|
||||
typedef const value_type& const_reference;
|
||||
typedef value_type* iterator;
|
||||
typedef const value_type* const_iterator;
|
||||
typedef size_t size_type;
|
||||
|
||||
FTVector()
|
||||
{
|
||||
Capacity = Size = 0;
|
||||
Items = 0;
|
||||
}
|
||||
|
||||
|
||||
virtual ~FTVector()
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
||||
FTVector& operator =(const FTVector& v)
|
||||
{
|
||||
reserve(v.capacity());
|
||||
|
||||
iterator ptr = begin();
|
||||
const_iterator vbegin = v.begin();
|
||||
const_iterator vend = v.end();
|
||||
|
||||
while(vbegin != vend)
|
||||
{
|
||||
*ptr++ = *vbegin++;
|
||||
}
|
||||
|
||||
Size = v.size();
|
||||
return *this;
|
||||
}
|
||||
|
||||
size_type size() const
|
||||
{
|
||||
return Size;
|
||||
}
|
||||
|
||||
size_type capacity() const
|
||||
{
|
||||
return Capacity;
|
||||
}
|
||||
|
||||
iterator begin()
|
||||
{
|
||||
return Items;
|
||||
}
|
||||
|
||||
const_iterator begin() const
|
||||
{
|
||||
return Items;
|
||||
}
|
||||
|
||||
iterator end()
|
||||
{
|
||||
return begin() + size();
|
||||
}
|
||||
|
||||
const_iterator end() const
|
||||
{
|
||||
return begin() + size();
|
||||
}
|
||||
|
||||
bool empty() const
|
||||
{
|
||||
return size() == 0;
|
||||
}
|
||||
|
||||
reference operator [](size_type pos)
|
||||
{
|
||||
return(*(begin() + pos));
|
||||
}
|
||||
|
||||
const_reference operator [](size_type pos) const
|
||||
{
|
||||
return *(begin() + pos);
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
if(Capacity)
|
||||
{
|
||||
delete [] Items;
|
||||
Capacity = Size = 0;
|
||||
Items = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void reserve(size_type n)
|
||||
{
|
||||
if(capacity() < n)
|
||||
{
|
||||
expand(n);
|
||||
}
|
||||
}
|
||||
|
||||
void push_back(const value_type& x)
|
||||
{
|
||||
if(size() == capacity())
|
||||
{
|
||||
expand();
|
||||
}
|
||||
|
||||
(*this)[size()] = x;
|
||||
++Size;
|
||||
}
|
||||
|
||||
void resize(size_type n, value_type x)
|
||||
{
|
||||
if(n == size())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
reserve(n);
|
||||
iterator ibegin, iend;
|
||||
|
||||
if(n >= Size)
|
||||
{
|
||||
ibegin = this->end();
|
||||
iend = this->begin() + n;
|
||||
}
|
||||
else
|
||||
{
|
||||
ibegin = this->begin() + n;
|
||||
iend = this->end();
|
||||
}
|
||||
|
||||
while(ibegin != iend)
|
||||
{
|
||||
*ibegin++ = x;
|
||||
}
|
||||
|
||||
Size = n;
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
void expand(size_type capacity_hint = 0)
|
||||
{
|
||||
size_type new_capacity = (capacity() == 0) ? 256 : capacity() * 2;
|
||||
if(capacity_hint)
|
||||
{
|
||||
while(new_capacity < capacity_hint)
|
||||
{
|
||||
new_capacity *= 2;
|
||||
}
|
||||
}
|
||||
|
||||
value_type *new_items = new value_type[new_capacity];
|
||||
|
||||
iterator ibegin = this->begin();
|
||||
iterator iend = this->end();
|
||||
value_type *ptr = new_items;
|
||||
|
||||
while(ibegin != iend)
|
||||
{
|
||||
*ptr++ = *ibegin++;
|
||||
}
|
||||
|
||||
if(Capacity)
|
||||
{
|
||||
delete [] Items;
|
||||
}
|
||||
|
||||
Items = new_items;
|
||||
Capacity = new_capacity;
|
||||
}
|
||||
|
||||
size_type Capacity;
|
||||
size_type Size;
|
||||
value_type* Items;
|
||||
};
|
||||
|
||||
#endif // __FTVector__
|
||||
328
bazaar/FTGL/src/FTVectoriser.cpp
Normal file
328
bazaar/FTGL/src/FTVectoriser.cpp
Normal file
|
|
@ -0,0 +1,328 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Éric Beets <ericbeets@free.fr>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "FTInternals.h"
|
||||
#include "FTVectoriser.h"
|
||||
|
||||
#ifndef CALLBACK
|
||||
#define CALLBACK
|
||||
#endif
|
||||
|
||||
#if defined __APPLE_CC__ && __APPLE_CC__ < 5465
|
||||
typedef GLvoid (*GLUTesselatorFunction) (...);
|
||||
#elif defined WIN32 && !defined __CYGWIN__
|
||||
typedef GLvoid (CALLBACK *GLUTesselatorFunction) ();
|
||||
#else
|
||||
typedef GLvoid (*GLUTesselatorFunction) ();
|
||||
#endif
|
||||
|
||||
|
||||
void CALLBACK ftglError(GLenum errCode, FTMesh* mesh)
|
||||
{
|
||||
mesh->Error(errCode);
|
||||
}
|
||||
|
||||
|
||||
void CALLBACK ftglVertex(void* data, FTMesh* mesh)
|
||||
{
|
||||
FTGL_DOUBLE* vertex = static_cast<FTGL_DOUBLE*>(data);
|
||||
mesh->AddPoint(vertex[0], vertex[1], vertex[2]);
|
||||
}
|
||||
|
||||
|
||||
void CALLBACK ftglCombine(FTGL_DOUBLE coords[3], void* vertex_data[4], GLfloat weight[4], void** outData, FTMesh* mesh)
|
||||
{
|
||||
const FTGL_DOUBLE* vertex = static_cast<const FTGL_DOUBLE*>(coords);
|
||||
*outData = const_cast<FTGL_DOUBLE*>(mesh->Combine(vertex[0], vertex[1], vertex[2]));
|
||||
}
|
||||
|
||||
void CALLBACK ftglBegin(GLenum type, FTMesh* mesh)
|
||||
{
|
||||
mesh->Begin(type);
|
||||
}
|
||||
|
||||
|
||||
void CALLBACK ftglEnd(FTMesh* mesh)
|
||||
{
|
||||
mesh->End();
|
||||
}
|
||||
|
||||
|
||||
FTMesh::FTMesh()
|
||||
: currentTesselation(0),
|
||||
err(0)
|
||||
{
|
||||
tesselationList.reserve(16);
|
||||
}
|
||||
|
||||
|
||||
FTMesh::~FTMesh()
|
||||
{
|
||||
for(size_t t = 0; t < tesselationList.size(); ++t)
|
||||
{
|
||||
delete tesselationList[t];
|
||||
}
|
||||
|
||||
tesselationList.clear();
|
||||
}
|
||||
|
||||
|
||||
void FTMesh::AddPoint(const FTGL_DOUBLE x, const FTGL_DOUBLE y, const FTGL_DOUBLE z)
|
||||
{
|
||||
currentTesselation->AddPoint(x, y, z);
|
||||
}
|
||||
|
||||
|
||||
const FTGL_DOUBLE* FTMesh::Combine(const FTGL_DOUBLE x, const FTGL_DOUBLE y, const FTGL_DOUBLE z)
|
||||
{
|
||||
tempPointList.push_back(FTPoint(x, y,z));
|
||||
return static_cast<const FTGL_DOUBLE*>(tempPointList.back());
|
||||
}
|
||||
|
||||
|
||||
void FTMesh::Begin(GLenum meshType)
|
||||
{
|
||||
currentTesselation = new FTTesselation(meshType);
|
||||
}
|
||||
|
||||
|
||||
void FTMesh::End()
|
||||
{
|
||||
tesselationList.push_back(currentTesselation);
|
||||
}
|
||||
|
||||
|
||||
const FTTesselation* const FTMesh::Tesselation(size_t index) const
|
||||
{
|
||||
return (index < tesselationList.size()) ? tesselationList[index] : NULL;
|
||||
}
|
||||
|
||||
|
||||
FTVectoriser::FTVectoriser(const FT_GlyphSlot glyph)
|
||||
: contourList(0),
|
||||
mesh(0),
|
||||
ftContourCount(0),
|
||||
contourFlag(0)
|
||||
{
|
||||
if(glyph)
|
||||
{
|
||||
outline = glyph->outline;
|
||||
|
||||
ftContourCount = outline.n_contours;
|
||||
contourList = 0;
|
||||
contourFlag = outline.flags;
|
||||
|
||||
ProcessContours();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
FTVectoriser::~FTVectoriser()
|
||||
{
|
||||
for(size_t c = 0; c < ContourCount(); ++c)
|
||||
{
|
||||
delete contourList[c];
|
||||
}
|
||||
|
||||
delete [] contourList;
|
||||
delete mesh;
|
||||
}
|
||||
|
||||
|
||||
void FTVectoriser::ProcessContours()
|
||||
{
|
||||
short contourLength = 0;
|
||||
short startIndex = 0;
|
||||
short endIndex = 0;
|
||||
|
||||
contourList = new FTContour*[ftContourCount];
|
||||
|
||||
for(int i = 0; i < ftContourCount; ++i)
|
||||
{
|
||||
FT_Vector* pointList = &outline.points[startIndex];
|
||||
char* tagList = &outline.tags[startIndex];
|
||||
|
||||
endIndex = outline.contours[i];
|
||||
contourLength = (endIndex - startIndex) + 1;
|
||||
|
||||
FTContour* contour = new FTContour(pointList, tagList, contourLength);
|
||||
|
||||
contourList[i] = contour;
|
||||
|
||||
startIndex = endIndex + 1;
|
||||
}
|
||||
|
||||
// Compute each contour's parity. FIXME: see if FT_Outline_Get_Orientation
|
||||
// can do it for us.
|
||||
for(int i = 0; i < ftContourCount; i++)
|
||||
{
|
||||
FTContour *c1 = contourList[i];
|
||||
|
||||
// 1. Find the leftmost point.
|
||||
FTPoint leftmost(65536.0, 0.0);
|
||||
|
||||
for(size_t n = 0; n < c1->PointCount(); n++)
|
||||
{
|
||||
FTPoint p = c1->Point(n);
|
||||
if(p.X() < leftmost.X())
|
||||
{
|
||||
leftmost = p;
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Count how many other contours we cross when going further to
|
||||
// the left.
|
||||
int parity = 0;
|
||||
|
||||
for(int j = 0; j < ftContourCount; j++)
|
||||
{
|
||||
if(j == i)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
FTContour *c2 = contourList[j];
|
||||
|
||||
for(size_t n = 0; n < c2->PointCount(); n++)
|
||||
{
|
||||
FTPoint p1 = c2->Point(n);
|
||||
FTPoint p2 = c2->Point((n + 1) % c2->PointCount());
|
||||
|
||||
/* FIXME: combinations of >= > <= and < do not seem stable */
|
||||
if((p1.Y() < leftmost.Y() && p2.Y() < leftmost.Y())
|
||||
|| (p1.Y() >= leftmost.Y() && p2.Y() >= leftmost.Y())
|
||||
|| (p1.X() > leftmost.X() && p2.X() > leftmost.X()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if(p1.X() < leftmost.X() && p2.X() < leftmost.X())
|
||||
{
|
||||
parity++;
|
||||
}
|
||||
else
|
||||
{
|
||||
FTPoint a = p1 - leftmost;
|
||||
FTPoint b = p2 - leftmost;
|
||||
if(b.X() * a.Y() > b.Y() * a.X())
|
||||
{
|
||||
parity++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Make sure the glyph has the proper parity.
|
||||
c1->SetParity(parity);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
size_t FTVectoriser::PointCount()
|
||||
{
|
||||
size_t s = 0;
|
||||
for(size_t c = 0; c < ContourCount(); ++c)
|
||||
{
|
||||
s += contourList[c]->PointCount();
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
const FTContour* const FTVectoriser::Contour(size_t index) const
|
||||
{
|
||||
return (index < ContourCount()) ? contourList[index] : NULL;
|
||||
}
|
||||
|
||||
|
||||
void FTVectoriser::MakeMesh(FTGL_DOUBLE zNormal, int outsetType, float outsetSize)
|
||||
{
|
||||
if(mesh)
|
||||
{
|
||||
delete mesh;
|
||||
}
|
||||
|
||||
mesh = new FTMesh;
|
||||
|
||||
GLUtesselator* tobj = gluNewTess();
|
||||
|
||||
gluTessCallback(tobj, GLU_TESS_BEGIN_DATA, (GLUTesselatorFunction)ftglBegin);
|
||||
gluTessCallback(tobj, GLU_TESS_VERTEX_DATA, (GLUTesselatorFunction)ftglVertex);
|
||||
gluTessCallback(tobj, GLU_TESS_COMBINE_DATA, (GLUTesselatorFunction)ftglCombine);
|
||||
gluTessCallback(tobj, GLU_TESS_END_DATA, (GLUTesselatorFunction)ftglEnd);
|
||||
gluTessCallback(tobj, GLU_TESS_ERROR_DATA, (GLUTesselatorFunction)ftglError);
|
||||
|
||||
if(contourFlag & ft_outline_even_odd_fill) // ft_outline_reverse_fill
|
||||
{
|
||||
gluTessProperty(tobj, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_ODD);
|
||||
}
|
||||
else
|
||||
{
|
||||
gluTessProperty(tobj, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_NONZERO);
|
||||
}
|
||||
|
||||
|
||||
gluTessProperty(tobj, GLU_TESS_TOLERANCE, 0);
|
||||
gluTessNormal(tobj, 0.0f, 0.0f, zNormal);
|
||||
gluTessBeginPolygon(tobj, mesh);
|
||||
|
||||
for(size_t c = 0; c < ContourCount(); ++c)
|
||||
{
|
||||
/* Build the */
|
||||
switch(outsetType)
|
||||
{
|
||||
case 1 : contourList[c]->buildFrontOutset(outsetSize); break;
|
||||
case 2 : contourList[c]->buildBackOutset(outsetSize); break;
|
||||
}
|
||||
const FTContour* contour = contourList[c];
|
||||
|
||||
|
||||
gluTessBeginContour(tobj);
|
||||
for(size_t p = 0; p < contour->PointCount(); ++p)
|
||||
{
|
||||
const FTGL_DOUBLE* d;
|
||||
switch(outsetType)
|
||||
{
|
||||
case 1: d = contour->FrontPoint(p); break;
|
||||
case 2: d = contour->BackPoint(p); break;
|
||||
case 0: default: d = contour->Point(p); break;
|
||||
}
|
||||
// XXX: gluTessVertex doesn't modify the data but does not
|
||||
// specify "const" in its prototype, so we cannot cast to
|
||||
// a const type.
|
||||
gluTessVertex(tobj, (GLdouble *)d, (GLvoid *)d);
|
||||
}
|
||||
|
||||
gluTessEndContour(tobj);
|
||||
}
|
||||
gluTessEndPolygon(tobj);
|
||||
|
||||
gluDeleteTess(tobj);
|
||||
}
|
||||
|
||||
313
bazaar/FTGL/src/FTVectoriser.h
Normal file
313
bazaar/FTGL/src/FTVectoriser.h
Normal file
|
|
@ -0,0 +1,313 @@
|
|||
/*
|
||||
* FTGL - OpenGL font library
|
||||
*
|
||||
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
|
||||
* Copyright (c) 2008 Sam Hocevar <sam@zoy.org>
|
||||
*
|
||||
* 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 __FTVectoriser__
|
||||
#define __FTVectoriser__
|
||||
|
||||
#include "FTGL/ftgl.h"
|
||||
|
||||
#include "FTContour.h"
|
||||
#include "FTList.h"
|
||||
#include "FTVector.h"
|
||||
|
||||
|
||||
#ifndef CALLBACK
|
||||
#define CALLBACK
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* FTTesselation captures points that are output by OpenGL's gluTesselator.
|
||||
*/
|
||||
class FTTesselation
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Default constructor
|
||||
*/
|
||||
FTTesselation(GLenum m)
|
||||
: meshType(m)
|
||||
{
|
||||
pointList.reserve(128);
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTTesselation()
|
||||
{
|
||||
pointList.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a point to the mesh.
|
||||
*/
|
||||
void AddPoint(const FTGL_DOUBLE x, const FTGL_DOUBLE y,
|
||||
const FTGL_DOUBLE z)
|
||||
{
|
||||
pointList.push_back(FTPoint(x, y, z));
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of points in this mesh
|
||||
*/
|
||||
size_t PointCount() const { return pointList.size(); }
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
const FTPoint& Point(unsigned int index) const
|
||||
{ return pointList[index]; }
|
||||
|
||||
/**
|
||||
* Return the OpenGL polygon type.
|
||||
*/
|
||||
GLenum PolygonType() const { return meshType; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* Points generated by gluTesselator.
|
||||
*/
|
||||
typedef FTVector<FTPoint> PointVector;
|
||||
PointVector pointList;
|
||||
|
||||
/**
|
||||
* OpenGL primitive type from gluTesselator.
|
||||
*/
|
||||
GLenum meshType;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* FTMesh is a container of FTTesselation's that make up a polygon glyph
|
||||
*/
|
||||
class FTMesh
|
||||
{
|
||||
typedef FTVector<FTTesselation*> TesselationVector;
|
||||
typedef FTList<FTPoint> PointList;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Default constructor
|
||||
*/
|
||||
FTMesh();
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
~FTMesh();
|
||||
|
||||
/**
|
||||
* Add a point to the mesh
|
||||
*/
|
||||
void AddPoint(const FTGL_DOUBLE x, const FTGL_DOUBLE y,
|
||||
const FTGL_DOUBLE z);
|
||||
|
||||
/**
|
||||
* Create a combine point for the gluTesselator
|
||||
*/
|
||||
const FTGL_DOUBLE* Combine(const FTGL_DOUBLE x, const FTGL_DOUBLE y,
|
||||
const FTGL_DOUBLE z);
|
||||
|
||||
/**
|
||||
* Begin a new polygon
|
||||
*/
|
||||
void Begin(GLenum meshType);
|
||||
|
||||
/**
|
||||
* End a polygon
|
||||
*/
|
||||
void End();
|
||||
|
||||
/**
|
||||
* Record a gluTesselation error
|
||||
*/
|
||||
void Error(GLenum e) { err = e; }
|
||||
|
||||
/**
|
||||
* The number of tesselations in the mesh
|
||||
*/
|
||||
size_t TesselationCount() const { return tesselationList.size(); }
|
||||
|
||||
/**
|
||||
* Get a tesselation by index
|
||||
*/
|
||||
const FTTesselation* const Tesselation(size_t index) const;
|
||||
|
||||
/**
|
||||
* Return the temporary point list. For testing only.
|
||||
*/
|
||||
const PointList& TempPointList() const { return tempPointList; }
|
||||
|
||||
/**
|
||||
* Get the GL ERROR returned by the glu tesselator
|
||||
*/
|
||||
GLenum Error() const { return err; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* The current sub mesh that we are constructing.
|
||||
*/
|
||||
FTTesselation* currentTesselation;
|
||||
|
||||
/**
|
||||
* Holds each sub mesh that comprises this glyph.
|
||||
*/
|
||||
TesselationVector tesselationList;
|
||||
|
||||
/**
|
||||
* Holds extra points created by gluTesselator. See ftglCombine.
|
||||
*/
|
||||
PointList tempPointList;
|
||||
|
||||
/**
|
||||
* GL ERROR returned by the glu tesselator
|
||||
*/
|
||||
GLenum err;
|
||||
|
||||
};
|
||||
|
||||
const FTGL_DOUBLE FTGL_FRONT_FACING = 1.0;
|
||||
const FTGL_DOUBLE FTGL_BACK_FACING = -1.0;
|
||||
|
||||
/**
|
||||
* FTVectoriser class is a helper class that converts font outlines into
|
||||
* point data.
|
||||
*
|
||||
* @see FTExtrudeGlyph
|
||||
* @see FTOutlineGlyph
|
||||
* @see FTPolygonGlyph
|
||||
* @see FTContour
|
||||
* @see FTPoint
|
||||
*
|
||||
*/
|
||||
class FTVectoriser
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param glyph The freetype glyph to be processed
|
||||
*/
|
||||
FTVectoriser(const FT_GlyphSlot glyph);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~FTVectoriser();
|
||||
|
||||
/**
|
||||
* Build an FTMesh from the vector outline data.
|
||||
*
|
||||
* @param zNormal The direction of the z axis of the normal
|
||||
* for this mesh
|
||||
* FIXME: change the following for a constant
|
||||
* @param outsetType Specify the outset type contour
|
||||
* 0 : Original
|
||||
* 1 : Front
|
||||
* 2 : Back
|
||||
* @param outsetSize Specify the outset size contour
|
||||
*/
|
||||
void MakeMesh(FTGL_DOUBLE zNormal = FTGL_FRONT_FACING, int outsetType = 0, float outsetSize = 0.0f);
|
||||
|
||||
/**
|
||||
* Get the current mesh.
|
||||
*/
|
||||
const FTMesh* const GetMesh() const { return mesh; }
|
||||
|
||||
/**
|
||||
* Get the total count of points in this outline
|
||||
*
|
||||
* @return the number of points
|
||||
*/
|
||||
size_t PointCount();
|
||||
|
||||
/**
|
||||
* Get the count of contours in this outline
|
||||
*
|
||||
* @return the number of contours
|
||||
*/
|
||||
size_t ContourCount() const { return ftContourCount; }
|
||||
|
||||
/**
|
||||
* Return a contour at index
|
||||
*
|
||||
* @return the number of contours
|
||||
*/
|
||||
const FTContour* const Contour(size_t index) const;
|
||||
|
||||
/**
|
||||
* Get the number of points in a specific contour in this outline
|
||||
*
|
||||
* @param c The contour index
|
||||
* @return the number of points in contour[c]
|
||||
*/
|
||||
size_t ContourSize(int c) const { return contourList[c]->PointCount(); }
|
||||
|
||||
/**
|
||||
* Get the flag for the tesselation rule for this outline
|
||||
*
|
||||
* @return The contour flag
|
||||
*/
|
||||
int ContourFlag() const { return contourFlag; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* Process the freetype outline data into contours of points
|
||||
*
|
||||
* @param front front outset distance
|
||||
* @param back back outset distance
|
||||
*/
|
||||
void ProcessContours();
|
||||
|
||||
/**
|
||||
* The list of contours in the glyph
|
||||
*/
|
||||
FTContour** contourList;
|
||||
|
||||
/**
|
||||
* A Mesh for tesselations
|
||||
*/
|
||||
FTMesh* mesh;
|
||||
|
||||
/**
|
||||
* The number of contours reported by Freetype
|
||||
*/
|
||||
short ftContourCount;
|
||||
|
||||
/**
|
||||
* A flag indicating the tesselation rule for the glyph
|
||||
*/
|
||||
int contourFlag;
|
||||
|
||||
/**
|
||||
* A Freetype outline
|
||||
*/
|
||||
FT_Outline outline;
|
||||
};
|
||||
|
||||
|
||||
#endif // __FTVectoriser__
|
||||
114
bazaar/FTGL/src/Makefile.am
Normal file
114
bazaar/FTGL/src/Makefile.am
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
|
||||
lib_LTLIBRARIES = libftgl.la
|
||||
|
||||
libftgl_la_SOURCES = \
|
||||
FTBuffer.cpp \
|
||||
FTCharmap.cpp \
|
||||
FTCharmap.h \
|
||||
FTCharToGlyphIndexMap.h \
|
||||
FTContour.cpp \
|
||||
FTContour.h \
|
||||
FTFace.cpp \
|
||||
FTFace.h \
|
||||
FTGlyphContainer.cpp \
|
||||
FTGlyphContainer.h \
|
||||
FTInternals.h \
|
||||
FTLibrary.cpp \
|
||||
FTLibrary.h \
|
||||
FTList.h \
|
||||
FTPoint.cpp \
|
||||
FTSize.cpp \
|
||||
FTSize.h \
|
||||
FTVector.h \
|
||||
FTVectoriser.cpp \
|
||||
FTVectoriser.h \
|
||||
FTUnicode.h \
|
||||
$(ftglyph_sources) \
|
||||
$(ftfont_sources) \
|
||||
$(ftlayout_sources) \
|
||||
$(ftgl_headers) \
|
||||
$(NULL)
|
||||
libftgl_la_CPPFLAGS = -IFTGlyph -IFTFont -IFTLayout
|
||||
libftgl_la_CXXFLAGS = $(FT2_CFLAGS) $(GL_CFLAGS)
|
||||
libftgl_la_LDFLAGS = \
|
||||
-no-undefined -version-number $(LT_VERSION)
|
||||
libftgl_la_LIBADD = \
|
||||
$(FT2_LIBS) $(GL_LIBS)
|
||||
|
||||
ftgldir = $(includedir)/FTGL
|
||||
ftgl_HEADERS = $(ftgl_headers)
|
||||
|
||||
ftgl_headers = \
|
||||
FTGL/ftgl.h \
|
||||
FTGL/FTBBox.h \
|
||||
FTGL/FTBuffer.h \
|
||||
FTGL/FTPoint.h \
|
||||
FTGL/FTGlyph.h \
|
||||
FTGL/FTBitmapGlyph.h \
|
||||
FTGL/FTBufferGlyph.h \
|
||||
FTGL/FTExtrdGlyph.h \
|
||||
FTGL/FTOutlineGlyph.h \
|
||||
FTGL/FTPixmapGlyph.h \
|
||||
FTGL/FTPolyGlyph.h \
|
||||
FTGL/FTTextureGlyph.h \
|
||||
FTGL/FTFont.h \
|
||||
FTGL/FTGLBitmapFont.h \
|
||||
FTGL/FTBufferFont.h \
|
||||
FTGL/FTGLExtrdFont.h \
|
||||
FTGL/FTGLOutlineFont.h \
|
||||
FTGL/FTGLPixmapFont.h \
|
||||
FTGL/FTGLPolygonFont.h \
|
||||
FTGL/FTGLTextureFont.h \
|
||||
FTGL/FTLayout.h \
|
||||
FTGL/FTSimpleLayout.h \
|
||||
${NULL}
|
||||
|
||||
ftglyph_sources = \
|
||||
FTGlyph/FTGlyph.cpp \
|
||||
FTGlyph/FTGlyphImpl.h \
|
||||
FTGlyph/FTGlyphGlue.cpp \
|
||||
FTGlyph/FTBitmapGlyph.cpp \
|
||||
FTGlyph/FTBitmapGlyphImpl.h \
|
||||
FTGlyph/FTBufferGlyph.cpp \
|
||||
FTGlyph/FTBufferGlyphImpl.h \
|
||||
FTGlyph/FTExtrudeGlyph.cpp \
|
||||
FTGlyph/FTExtrudeGlyphImpl.h \
|
||||
FTGlyph/FTOutlineGlyph.cpp \
|
||||
FTGlyph/FTOutlineGlyphImpl.h \
|
||||
FTGlyph/FTPixmapGlyph.cpp \
|
||||
FTGlyph/FTPixmapGlyphImpl.h \
|
||||
FTGlyph/FTPolygonGlyph.cpp \
|
||||
FTGlyph/FTPolygonGlyphImpl.h \
|
||||
FTGlyph/FTTextureGlyph.cpp \
|
||||
FTGlyph/FTTextureGlyphImpl.h \
|
||||
$(NULL)
|
||||
|
||||
ftfont_sources = \
|
||||
FTFont/FTFont.cpp \
|
||||
FTFont/FTFontImpl.h \
|
||||
FTFont/FTFontGlue.cpp \
|
||||
FTFont/FTBitmapFont.cpp \
|
||||
FTFont/FTBitmapFontImpl.h \
|
||||
FTFont/FTBufferFont.cpp \
|
||||
FTFont/FTBufferFontImpl.h \
|
||||
FTFont/FTExtrudeFont.cpp \
|
||||
FTFont/FTExtrudeFontImpl.h \
|
||||
FTFont/FTOutlineFont.cpp \
|
||||
FTFont/FTOutlineFontImpl.h \
|
||||
FTFont/FTPixmapFont.cpp \
|
||||
FTFont/FTPixmapFontImpl.h \
|
||||
FTFont/FTPolygonFont.cpp \
|
||||
FTFont/FTPolygonFontImpl.h \
|
||||
FTFont/FTTextureFont.cpp \
|
||||
FTFont/FTTextureFontImpl.h \
|
||||
$(NULL)
|
||||
|
||||
ftlayout_sources = \
|
||||
FTLayout/FTLayout.cpp \
|
||||
FTLayout/FTLayoutImpl.h \
|
||||
FTLayout/FTLayoutGlue.cpp \
|
||||
FTLayout/FTSimpleLayout.cpp \
|
||||
FTLayout/FTSimpleLayoutImpl.h \
|
||||
$(NULL)
|
||||
|
||||
NULL =
|
||||
895
bazaar/FTGL/src/Makefile.in
Normal file
895
bazaar/FTGL/src/Makefile.in
Normal file
|
|
@ -0,0 +1,895 @@
|
|||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = src
|
||||
DIST_COMMON = $(ftgl_HEADERS) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/cxx.m4 $(top_srcdir)/m4/font.m4 \
|
||||
$(top_srcdir)/m4/freetype2.m4 $(top_srcdir)/m4/gl.m4 \
|
||||
$(top_srcdir)/m4/glut.m4 $(top_srcdir)/m4/pkg.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(ftgldir)"
|
||||
libLTLIBRARIES_INSTALL = $(INSTALL)
|
||||
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||
am__DEPENDENCIES_1 =
|
||||
libftgl_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
am__objects_1 =
|
||||
am__objects_2 = libftgl_la-FTGlyph.lo libftgl_la-FTGlyphGlue.lo \
|
||||
libftgl_la-FTBitmapGlyph.lo libftgl_la-FTBufferGlyph.lo \
|
||||
libftgl_la-FTExtrudeGlyph.lo libftgl_la-FTOutlineGlyph.lo \
|
||||
libftgl_la-FTPixmapGlyph.lo libftgl_la-FTPolygonGlyph.lo \
|
||||
libftgl_la-FTTextureGlyph.lo $(am__objects_1)
|
||||
am__objects_3 = libftgl_la-FTFont.lo libftgl_la-FTFontGlue.lo \
|
||||
libftgl_la-FTBitmapFont.lo libftgl_la-FTBufferFont.lo \
|
||||
libftgl_la-FTExtrudeFont.lo libftgl_la-FTOutlineFont.lo \
|
||||
libftgl_la-FTPixmapFont.lo libftgl_la-FTPolygonFont.lo \
|
||||
libftgl_la-FTTextureFont.lo $(am__objects_1)
|
||||
am__objects_4 = libftgl_la-FTLayout.lo libftgl_la-FTLayoutGlue.lo \
|
||||
libftgl_la-FTSimpleLayout.lo $(am__objects_1)
|
||||
am__objects_5 = $(am__objects_1)
|
||||
am_libftgl_la_OBJECTS = libftgl_la-FTBuffer.lo libftgl_la-FTCharmap.lo \
|
||||
libftgl_la-FTContour.lo libftgl_la-FTFace.lo \
|
||||
libftgl_la-FTGlyphContainer.lo libftgl_la-FTLibrary.lo \
|
||||
libftgl_la-FTPoint.lo libftgl_la-FTSize.lo \
|
||||
libftgl_la-FTVectoriser.lo $(am__objects_2) $(am__objects_3) \
|
||||
$(am__objects_4) $(am__objects_5) $(am__objects_1)
|
||||
libftgl_la_OBJECTS = $(am_libftgl_la_OBJECTS)
|
||||
libftgl_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libftgl_la_CXXFLAGS) \
|
||||
$(CXXFLAGS) $(libftgl_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/.auto/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
|
||||
$(LDFLAGS) -o $@
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
|
||||
$(LDFLAGS) -o $@
|
||||
SOURCES = $(libftgl_la_SOURCES)
|
||||
DIST_SOURCES = $(libftgl_la_SOURCES)
|
||||
ftglHEADERS_INSTALL = $(INSTALL_HEADER)
|
||||
HEADERS = $(ftgl_HEADERS)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONVERT = @CONVERT@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
|
||||
CPPUNIT_LIBS = @CPPUNIT_LIBS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DVIPS = @DVIPS@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EPSTOPDF = @EPSTOPDF@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
FRAMEWORK_OPENGL = @FRAMEWORK_OPENGL@
|
||||
FT2_CFLAGS = @FT2_CFLAGS@
|
||||
FT2_CONFIG = @FT2_CONFIG@
|
||||
FT2_LIBS = @FT2_LIBS@
|
||||
GLUT_CFLAGS = @GLUT_CFLAGS@
|
||||
GLUT_LIBS = @GLUT_LIBS@
|
||||
GL_CFLAGS = @GL_CFLAGS@
|
||||
GL_LIBS = @GL_LIBS@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
KPSEWHICH = @KPSEWHICH@
|
||||
LATEX = @LATEX@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_MAJOR = @LT_MAJOR@
|
||||
LT_MICRO = @LT_MICRO@
|
||||
LT_MINOR = @LT_MINOR@
|
||||
LT_VERSION = @LT_VERSION@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
XMKMF = @XMKMF@
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LIBS = @X_LIBS@
|
||||
X_PRE_LIBS = @X_PRE_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
lib_LTLIBRARIES = libftgl.la
|
||||
libftgl_la_SOURCES = \
|
||||
FTBuffer.cpp \
|
||||
FTCharmap.cpp \
|
||||
FTCharmap.h \
|
||||
FTCharToGlyphIndexMap.h \
|
||||
FTContour.cpp \
|
||||
FTContour.h \
|
||||
FTFace.cpp \
|
||||
FTFace.h \
|
||||
FTGlyphContainer.cpp \
|
||||
FTGlyphContainer.h \
|
||||
FTInternals.h \
|
||||
FTLibrary.cpp \
|
||||
FTLibrary.h \
|
||||
FTList.h \
|
||||
FTPoint.cpp \
|
||||
FTSize.cpp \
|
||||
FTSize.h \
|
||||
FTVector.h \
|
||||
FTVectoriser.cpp \
|
||||
FTVectoriser.h \
|
||||
FTUnicode.h \
|
||||
$(ftglyph_sources) \
|
||||
$(ftfont_sources) \
|
||||
$(ftlayout_sources) \
|
||||
$(ftgl_headers) \
|
||||
$(NULL)
|
||||
|
||||
libftgl_la_CPPFLAGS = -IFTGlyph -IFTFont -IFTLayout
|
||||
libftgl_la_CXXFLAGS = $(FT2_CFLAGS) $(GL_CFLAGS)
|
||||
libftgl_la_LDFLAGS = \
|
||||
-no-undefined -version-number $(LT_VERSION)
|
||||
|
||||
libftgl_la_LIBADD = \
|
||||
$(FT2_LIBS) $(GL_LIBS)
|
||||
|
||||
ftgldir = $(includedir)/FTGL
|
||||
ftgl_HEADERS = $(ftgl_headers)
|
||||
ftgl_headers = \
|
||||
FTGL/ftgl.h \
|
||||
FTGL/FTBBox.h \
|
||||
FTGL/FTBuffer.h \
|
||||
FTGL/FTPoint.h \
|
||||
FTGL/FTGlyph.h \
|
||||
FTGL/FTBitmapGlyph.h \
|
||||
FTGL/FTBufferGlyph.h \
|
||||
FTGL/FTExtrdGlyph.h \
|
||||
FTGL/FTOutlineGlyph.h \
|
||||
FTGL/FTPixmapGlyph.h \
|
||||
FTGL/FTPolyGlyph.h \
|
||||
FTGL/FTTextureGlyph.h \
|
||||
FTGL/FTFont.h \
|
||||
FTGL/FTGLBitmapFont.h \
|
||||
FTGL/FTBufferFont.h \
|
||||
FTGL/FTGLExtrdFont.h \
|
||||
FTGL/FTGLOutlineFont.h \
|
||||
FTGL/FTGLPixmapFont.h \
|
||||
FTGL/FTGLPolygonFont.h \
|
||||
FTGL/FTGLTextureFont.h \
|
||||
FTGL/FTLayout.h \
|
||||
FTGL/FTSimpleLayout.h \
|
||||
${NULL}
|
||||
|
||||
ftglyph_sources = \
|
||||
FTGlyph/FTGlyph.cpp \
|
||||
FTGlyph/FTGlyphImpl.h \
|
||||
FTGlyph/FTGlyphGlue.cpp \
|
||||
FTGlyph/FTBitmapGlyph.cpp \
|
||||
FTGlyph/FTBitmapGlyphImpl.h \
|
||||
FTGlyph/FTBufferGlyph.cpp \
|
||||
FTGlyph/FTBufferGlyphImpl.h \
|
||||
FTGlyph/FTExtrudeGlyph.cpp \
|
||||
FTGlyph/FTExtrudeGlyphImpl.h \
|
||||
FTGlyph/FTOutlineGlyph.cpp \
|
||||
FTGlyph/FTOutlineGlyphImpl.h \
|
||||
FTGlyph/FTPixmapGlyph.cpp \
|
||||
FTGlyph/FTPixmapGlyphImpl.h \
|
||||
FTGlyph/FTPolygonGlyph.cpp \
|
||||
FTGlyph/FTPolygonGlyphImpl.h \
|
||||
FTGlyph/FTTextureGlyph.cpp \
|
||||
FTGlyph/FTTextureGlyphImpl.h \
|
||||
$(NULL)
|
||||
|
||||
ftfont_sources = \
|
||||
FTFont/FTFont.cpp \
|
||||
FTFont/FTFontImpl.h \
|
||||
FTFont/FTFontGlue.cpp \
|
||||
FTFont/FTBitmapFont.cpp \
|
||||
FTFont/FTBitmapFontImpl.h \
|
||||
FTFont/FTBufferFont.cpp \
|
||||
FTFont/FTBufferFontImpl.h \
|
||||
FTFont/FTExtrudeFont.cpp \
|
||||
FTFont/FTExtrudeFontImpl.h \
|
||||
FTFont/FTOutlineFont.cpp \
|
||||
FTFont/FTOutlineFontImpl.h \
|
||||
FTFont/FTPixmapFont.cpp \
|
||||
FTFont/FTPixmapFontImpl.h \
|
||||
FTFont/FTPolygonFont.cpp \
|
||||
FTFont/FTPolygonFontImpl.h \
|
||||
FTFont/FTTextureFont.cpp \
|
||||
FTFont/FTTextureFontImpl.h \
|
||||
$(NULL)
|
||||
|
||||
ftlayout_sources = \
|
||||
FTLayout/FTLayout.cpp \
|
||||
FTLayout/FTLayoutImpl.h \
|
||||
FTLayout/FTLayoutGlue.cpp \
|
||||
FTLayout/FTSimpleLayout.cpp \
|
||||
FTLayout/FTSimpleLayoutImpl.h \
|
||||
$(NULL)
|
||||
|
||||
NULL =
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .cpp .lo .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu src/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
|
||||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
f=$(am__strip_dir) \
|
||||
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
|
||||
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-libLTLIBRARIES:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||
p=$(am__strip_dir) \
|
||||
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
|
||||
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
|
||||
done
|
||||
|
||||
clean-libLTLIBRARIES:
|
||||
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
||||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||
test "$$dir" != "$$p" || dir=.; \
|
||||
echo "rm -f \"$${dir}/so_locations\""; \
|
||||
rm -f "$${dir}/so_locations"; \
|
||||
done
|
||||
libftgl.la: $(libftgl_la_OBJECTS) $(libftgl_la_DEPENDENCIES)
|
||||
$(libftgl_la_LINK) -rpath $(libdir) $(libftgl_la_OBJECTS) $(libftgl_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTBitmapFont.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTBitmapGlyph.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTBuffer.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTBufferFont.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTBufferGlyph.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTCharmap.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTContour.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTExtrudeFont.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTExtrudeGlyph.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTFace.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTFont.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTFontGlue.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTGlyph.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTGlyphContainer.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTGlyphGlue.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTLayout.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTLayoutGlue.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTLibrary.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTOutlineFont.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTOutlineGlyph.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTPixmapFont.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTPixmapGlyph.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTPoint.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTPolygonFont.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTPolygonGlyph.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTSimpleLayout.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTSize.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTTextureFont.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTTextureGlyph.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libftgl_la-FTVectoriser.Plo@am__quote@
|
||||
|
||||
.cpp.o:
|
||||
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.obj:
|
||||
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.cpp.lo:
|
||||
@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
|
||||
|
||||
libftgl_la-FTBuffer.lo: FTBuffer.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTBuffer.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTBuffer.Tpo -c -o libftgl_la-FTBuffer.lo `test -f 'FTBuffer.cpp' || echo '$(srcdir)/'`FTBuffer.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTBuffer.Tpo $(DEPDIR)/libftgl_la-FTBuffer.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTBuffer.cpp' object='libftgl_la-FTBuffer.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTBuffer.lo `test -f 'FTBuffer.cpp' || echo '$(srcdir)/'`FTBuffer.cpp
|
||||
|
||||
libftgl_la-FTCharmap.lo: FTCharmap.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTCharmap.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTCharmap.Tpo -c -o libftgl_la-FTCharmap.lo `test -f 'FTCharmap.cpp' || echo '$(srcdir)/'`FTCharmap.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTCharmap.Tpo $(DEPDIR)/libftgl_la-FTCharmap.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTCharmap.cpp' object='libftgl_la-FTCharmap.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTCharmap.lo `test -f 'FTCharmap.cpp' || echo '$(srcdir)/'`FTCharmap.cpp
|
||||
|
||||
libftgl_la-FTContour.lo: FTContour.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTContour.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTContour.Tpo -c -o libftgl_la-FTContour.lo `test -f 'FTContour.cpp' || echo '$(srcdir)/'`FTContour.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTContour.Tpo $(DEPDIR)/libftgl_la-FTContour.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTContour.cpp' object='libftgl_la-FTContour.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTContour.lo `test -f 'FTContour.cpp' || echo '$(srcdir)/'`FTContour.cpp
|
||||
|
||||
libftgl_la-FTFace.lo: FTFace.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTFace.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTFace.Tpo -c -o libftgl_la-FTFace.lo `test -f 'FTFace.cpp' || echo '$(srcdir)/'`FTFace.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTFace.Tpo $(DEPDIR)/libftgl_la-FTFace.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTFace.cpp' object='libftgl_la-FTFace.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTFace.lo `test -f 'FTFace.cpp' || echo '$(srcdir)/'`FTFace.cpp
|
||||
|
||||
libftgl_la-FTGlyphContainer.lo: FTGlyphContainer.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTGlyphContainer.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTGlyphContainer.Tpo -c -o libftgl_la-FTGlyphContainer.lo `test -f 'FTGlyphContainer.cpp' || echo '$(srcdir)/'`FTGlyphContainer.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTGlyphContainer.Tpo $(DEPDIR)/libftgl_la-FTGlyphContainer.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTGlyphContainer.cpp' object='libftgl_la-FTGlyphContainer.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTGlyphContainer.lo `test -f 'FTGlyphContainer.cpp' || echo '$(srcdir)/'`FTGlyphContainer.cpp
|
||||
|
||||
libftgl_la-FTLibrary.lo: FTLibrary.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTLibrary.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTLibrary.Tpo -c -o libftgl_la-FTLibrary.lo `test -f 'FTLibrary.cpp' || echo '$(srcdir)/'`FTLibrary.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTLibrary.Tpo $(DEPDIR)/libftgl_la-FTLibrary.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTLibrary.cpp' object='libftgl_la-FTLibrary.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTLibrary.lo `test -f 'FTLibrary.cpp' || echo '$(srcdir)/'`FTLibrary.cpp
|
||||
|
||||
libftgl_la-FTPoint.lo: FTPoint.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTPoint.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTPoint.Tpo -c -o libftgl_la-FTPoint.lo `test -f 'FTPoint.cpp' || echo '$(srcdir)/'`FTPoint.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTPoint.Tpo $(DEPDIR)/libftgl_la-FTPoint.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTPoint.cpp' object='libftgl_la-FTPoint.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTPoint.lo `test -f 'FTPoint.cpp' || echo '$(srcdir)/'`FTPoint.cpp
|
||||
|
||||
libftgl_la-FTSize.lo: FTSize.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTSize.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTSize.Tpo -c -o libftgl_la-FTSize.lo `test -f 'FTSize.cpp' || echo '$(srcdir)/'`FTSize.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTSize.Tpo $(DEPDIR)/libftgl_la-FTSize.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTSize.cpp' object='libftgl_la-FTSize.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTSize.lo `test -f 'FTSize.cpp' || echo '$(srcdir)/'`FTSize.cpp
|
||||
|
||||
libftgl_la-FTVectoriser.lo: FTVectoriser.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTVectoriser.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTVectoriser.Tpo -c -o libftgl_la-FTVectoriser.lo `test -f 'FTVectoriser.cpp' || echo '$(srcdir)/'`FTVectoriser.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTVectoriser.Tpo $(DEPDIR)/libftgl_la-FTVectoriser.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTVectoriser.cpp' object='libftgl_la-FTVectoriser.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTVectoriser.lo `test -f 'FTVectoriser.cpp' || echo '$(srcdir)/'`FTVectoriser.cpp
|
||||
|
||||
libftgl_la-FTGlyph.lo: FTGlyph/FTGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTGlyph.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTGlyph.Tpo -c -o libftgl_la-FTGlyph.lo `test -f 'FTGlyph/FTGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTGlyph.Tpo $(DEPDIR)/libftgl_la-FTGlyph.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTGlyph/FTGlyph.cpp' object='libftgl_la-FTGlyph.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTGlyph.lo `test -f 'FTGlyph/FTGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTGlyph.cpp
|
||||
|
||||
libftgl_la-FTGlyphGlue.lo: FTGlyph/FTGlyphGlue.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTGlyphGlue.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTGlyphGlue.Tpo -c -o libftgl_la-FTGlyphGlue.lo `test -f 'FTGlyph/FTGlyphGlue.cpp' || echo '$(srcdir)/'`FTGlyph/FTGlyphGlue.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTGlyphGlue.Tpo $(DEPDIR)/libftgl_la-FTGlyphGlue.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTGlyph/FTGlyphGlue.cpp' object='libftgl_la-FTGlyphGlue.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTGlyphGlue.lo `test -f 'FTGlyph/FTGlyphGlue.cpp' || echo '$(srcdir)/'`FTGlyph/FTGlyphGlue.cpp
|
||||
|
||||
libftgl_la-FTBitmapGlyph.lo: FTGlyph/FTBitmapGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTBitmapGlyph.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTBitmapGlyph.Tpo -c -o libftgl_la-FTBitmapGlyph.lo `test -f 'FTGlyph/FTBitmapGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTBitmapGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTBitmapGlyph.Tpo $(DEPDIR)/libftgl_la-FTBitmapGlyph.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTGlyph/FTBitmapGlyph.cpp' object='libftgl_la-FTBitmapGlyph.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTBitmapGlyph.lo `test -f 'FTGlyph/FTBitmapGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTBitmapGlyph.cpp
|
||||
|
||||
libftgl_la-FTBufferGlyph.lo: FTGlyph/FTBufferGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTBufferGlyph.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTBufferGlyph.Tpo -c -o libftgl_la-FTBufferGlyph.lo `test -f 'FTGlyph/FTBufferGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTBufferGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTBufferGlyph.Tpo $(DEPDIR)/libftgl_la-FTBufferGlyph.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTGlyph/FTBufferGlyph.cpp' object='libftgl_la-FTBufferGlyph.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTBufferGlyph.lo `test -f 'FTGlyph/FTBufferGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTBufferGlyph.cpp
|
||||
|
||||
libftgl_la-FTExtrudeGlyph.lo: FTGlyph/FTExtrudeGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTExtrudeGlyph.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTExtrudeGlyph.Tpo -c -o libftgl_la-FTExtrudeGlyph.lo `test -f 'FTGlyph/FTExtrudeGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTExtrudeGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTExtrudeGlyph.Tpo $(DEPDIR)/libftgl_la-FTExtrudeGlyph.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTGlyph/FTExtrudeGlyph.cpp' object='libftgl_la-FTExtrudeGlyph.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTExtrudeGlyph.lo `test -f 'FTGlyph/FTExtrudeGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTExtrudeGlyph.cpp
|
||||
|
||||
libftgl_la-FTOutlineGlyph.lo: FTGlyph/FTOutlineGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTOutlineGlyph.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTOutlineGlyph.Tpo -c -o libftgl_la-FTOutlineGlyph.lo `test -f 'FTGlyph/FTOutlineGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTOutlineGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTOutlineGlyph.Tpo $(DEPDIR)/libftgl_la-FTOutlineGlyph.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTGlyph/FTOutlineGlyph.cpp' object='libftgl_la-FTOutlineGlyph.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTOutlineGlyph.lo `test -f 'FTGlyph/FTOutlineGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTOutlineGlyph.cpp
|
||||
|
||||
libftgl_la-FTPixmapGlyph.lo: FTGlyph/FTPixmapGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTPixmapGlyph.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTPixmapGlyph.Tpo -c -o libftgl_la-FTPixmapGlyph.lo `test -f 'FTGlyph/FTPixmapGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTPixmapGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTPixmapGlyph.Tpo $(DEPDIR)/libftgl_la-FTPixmapGlyph.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTGlyph/FTPixmapGlyph.cpp' object='libftgl_la-FTPixmapGlyph.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTPixmapGlyph.lo `test -f 'FTGlyph/FTPixmapGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTPixmapGlyph.cpp
|
||||
|
||||
libftgl_la-FTPolygonGlyph.lo: FTGlyph/FTPolygonGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTPolygonGlyph.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTPolygonGlyph.Tpo -c -o libftgl_la-FTPolygonGlyph.lo `test -f 'FTGlyph/FTPolygonGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTPolygonGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTPolygonGlyph.Tpo $(DEPDIR)/libftgl_la-FTPolygonGlyph.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTGlyph/FTPolygonGlyph.cpp' object='libftgl_la-FTPolygonGlyph.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTPolygonGlyph.lo `test -f 'FTGlyph/FTPolygonGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTPolygonGlyph.cpp
|
||||
|
||||
libftgl_la-FTTextureGlyph.lo: FTGlyph/FTTextureGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTTextureGlyph.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTTextureGlyph.Tpo -c -o libftgl_la-FTTextureGlyph.lo `test -f 'FTGlyph/FTTextureGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTTextureGlyph.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTTextureGlyph.Tpo $(DEPDIR)/libftgl_la-FTTextureGlyph.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTGlyph/FTTextureGlyph.cpp' object='libftgl_la-FTTextureGlyph.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTTextureGlyph.lo `test -f 'FTGlyph/FTTextureGlyph.cpp' || echo '$(srcdir)/'`FTGlyph/FTTextureGlyph.cpp
|
||||
|
||||
libftgl_la-FTFont.lo: FTFont/FTFont.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTFont.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTFont.Tpo -c -o libftgl_la-FTFont.lo `test -f 'FTFont/FTFont.cpp' || echo '$(srcdir)/'`FTFont/FTFont.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTFont.Tpo $(DEPDIR)/libftgl_la-FTFont.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTFont/FTFont.cpp' object='libftgl_la-FTFont.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTFont.lo `test -f 'FTFont/FTFont.cpp' || echo '$(srcdir)/'`FTFont/FTFont.cpp
|
||||
|
||||
libftgl_la-FTFontGlue.lo: FTFont/FTFontGlue.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTFontGlue.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTFontGlue.Tpo -c -o libftgl_la-FTFontGlue.lo `test -f 'FTFont/FTFontGlue.cpp' || echo '$(srcdir)/'`FTFont/FTFontGlue.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTFontGlue.Tpo $(DEPDIR)/libftgl_la-FTFontGlue.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTFont/FTFontGlue.cpp' object='libftgl_la-FTFontGlue.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTFontGlue.lo `test -f 'FTFont/FTFontGlue.cpp' || echo '$(srcdir)/'`FTFont/FTFontGlue.cpp
|
||||
|
||||
libftgl_la-FTBitmapFont.lo: FTFont/FTBitmapFont.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTBitmapFont.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTBitmapFont.Tpo -c -o libftgl_la-FTBitmapFont.lo `test -f 'FTFont/FTBitmapFont.cpp' || echo '$(srcdir)/'`FTFont/FTBitmapFont.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTBitmapFont.Tpo $(DEPDIR)/libftgl_la-FTBitmapFont.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTFont/FTBitmapFont.cpp' object='libftgl_la-FTBitmapFont.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTBitmapFont.lo `test -f 'FTFont/FTBitmapFont.cpp' || echo '$(srcdir)/'`FTFont/FTBitmapFont.cpp
|
||||
|
||||
libftgl_la-FTBufferFont.lo: FTFont/FTBufferFont.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTBufferFont.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTBufferFont.Tpo -c -o libftgl_la-FTBufferFont.lo `test -f 'FTFont/FTBufferFont.cpp' || echo '$(srcdir)/'`FTFont/FTBufferFont.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTBufferFont.Tpo $(DEPDIR)/libftgl_la-FTBufferFont.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTFont/FTBufferFont.cpp' object='libftgl_la-FTBufferFont.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTBufferFont.lo `test -f 'FTFont/FTBufferFont.cpp' || echo '$(srcdir)/'`FTFont/FTBufferFont.cpp
|
||||
|
||||
libftgl_la-FTExtrudeFont.lo: FTFont/FTExtrudeFont.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTExtrudeFont.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTExtrudeFont.Tpo -c -o libftgl_la-FTExtrudeFont.lo `test -f 'FTFont/FTExtrudeFont.cpp' || echo '$(srcdir)/'`FTFont/FTExtrudeFont.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTExtrudeFont.Tpo $(DEPDIR)/libftgl_la-FTExtrudeFont.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTFont/FTExtrudeFont.cpp' object='libftgl_la-FTExtrudeFont.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTExtrudeFont.lo `test -f 'FTFont/FTExtrudeFont.cpp' || echo '$(srcdir)/'`FTFont/FTExtrudeFont.cpp
|
||||
|
||||
libftgl_la-FTOutlineFont.lo: FTFont/FTOutlineFont.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTOutlineFont.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTOutlineFont.Tpo -c -o libftgl_la-FTOutlineFont.lo `test -f 'FTFont/FTOutlineFont.cpp' || echo '$(srcdir)/'`FTFont/FTOutlineFont.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTOutlineFont.Tpo $(DEPDIR)/libftgl_la-FTOutlineFont.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTFont/FTOutlineFont.cpp' object='libftgl_la-FTOutlineFont.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTOutlineFont.lo `test -f 'FTFont/FTOutlineFont.cpp' || echo '$(srcdir)/'`FTFont/FTOutlineFont.cpp
|
||||
|
||||
libftgl_la-FTPixmapFont.lo: FTFont/FTPixmapFont.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTPixmapFont.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTPixmapFont.Tpo -c -o libftgl_la-FTPixmapFont.lo `test -f 'FTFont/FTPixmapFont.cpp' || echo '$(srcdir)/'`FTFont/FTPixmapFont.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTPixmapFont.Tpo $(DEPDIR)/libftgl_la-FTPixmapFont.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTFont/FTPixmapFont.cpp' object='libftgl_la-FTPixmapFont.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTPixmapFont.lo `test -f 'FTFont/FTPixmapFont.cpp' || echo '$(srcdir)/'`FTFont/FTPixmapFont.cpp
|
||||
|
||||
libftgl_la-FTPolygonFont.lo: FTFont/FTPolygonFont.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTPolygonFont.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTPolygonFont.Tpo -c -o libftgl_la-FTPolygonFont.lo `test -f 'FTFont/FTPolygonFont.cpp' || echo '$(srcdir)/'`FTFont/FTPolygonFont.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTPolygonFont.Tpo $(DEPDIR)/libftgl_la-FTPolygonFont.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTFont/FTPolygonFont.cpp' object='libftgl_la-FTPolygonFont.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTPolygonFont.lo `test -f 'FTFont/FTPolygonFont.cpp' || echo '$(srcdir)/'`FTFont/FTPolygonFont.cpp
|
||||
|
||||
libftgl_la-FTTextureFont.lo: FTFont/FTTextureFont.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTTextureFont.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTTextureFont.Tpo -c -o libftgl_la-FTTextureFont.lo `test -f 'FTFont/FTTextureFont.cpp' || echo '$(srcdir)/'`FTFont/FTTextureFont.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTTextureFont.Tpo $(DEPDIR)/libftgl_la-FTTextureFont.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTFont/FTTextureFont.cpp' object='libftgl_la-FTTextureFont.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTTextureFont.lo `test -f 'FTFont/FTTextureFont.cpp' || echo '$(srcdir)/'`FTFont/FTTextureFont.cpp
|
||||
|
||||
libftgl_la-FTLayout.lo: FTLayout/FTLayout.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTLayout.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTLayout.Tpo -c -o libftgl_la-FTLayout.lo `test -f 'FTLayout/FTLayout.cpp' || echo '$(srcdir)/'`FTLayout/FTLayout.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTLayout.Tpo $(DEPDIR)/libftgl_la-FTLayout.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTLayout/FTLayout.cpp' object='libftgl_la-FTLayout.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTLayout.lo `test -f 'FTLayout/FTLayout.cpp' || echo '$(srcdir)/'`FTLayout/FTLayout.cpp
|
||||
|
||||
libftgl_la-FTLayoutGlue.lo: FTLayout/FTLayoutGlue.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTLayoutGlue.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTLayoutGlue.Tpo -c -o libftgl_la-FTLayoutGlue.lo `test -f 'FTLayout/FTLayoutGlue.cpp' || echo '$(srcdir)/'`FTLayout/FTLayoutGlue.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTLayoutGlue.Tpo $(DEPDIR)/libftgl_la-FTLayoutGlue.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTLayout/FTLayoutGlue.cpp' object='libftgl_la-FTLayoutGlue.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTLayoutGlue.lo `test -f 'FTLayout/FTLayoutGlue.cpp' || echo '$(srcdir)/'`FTLayout/FTLayoutGlue.cpp
|
||||
|
||||
libftgl_la-FTSimpleLayout.lo: FTLayout/FTSimpleLayout.cpp
|
||||
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -MT libftgl_la-FTSimpleLayout.lo -MD -MP -MF $(DEPDIR)/libftgl_la-FTSimpleLayout.Tpo -c -o libftgl_la-FTSimpleLayout.lo `test -f 'FTLayout/FTSimpleLayout.cpp' || echo '$(srcdir)/'`FTLayout/FTSimpleLayout.cpp
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libftgl_la-FTSimpleLayout.Tpo $(DEPDIR)/libftgl_la-FTSimpleLayout.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='FTLayout/FTSimpleLayout.cpp' object='libftgl_la-FTSimpleLayout.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libftgl_la_CPPFLAGS) $(CPPFLAGS) $(libftgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libftgl_la-FTSimpleLayout.lo `test -f 'FTLayout/FTSimpleLayout.cpp' || echo '$(srcdir)/'`FTLayout/FTSimpleLayout.cpp
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
install-ftglHEADERS: $(ftgl_HEADERS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(ftgldir)" || $(MKDIR_P) "$(DESTDIR)$(ftgldir)"
|
||||
@list='$(ftgl_HEADERS)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
f=$(am__strip_dir) \
|
||||
echo " $(ftglHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(ftgldir)/$$f'"; \
|
||||
$(ftglHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(ftgldir)/$$f"; \
|
||||
done
|
||||
|
||||
uninstall-ftglHEADERS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(ftgl_HEADERS)'; for p in $$list; do \
|
||||
f=$(am__strip_dir) \
|
||||
echo " rm -f '$(DESTDIR)$(ftgldir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(ftgldir)/$$f"; \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LTLIBRARIES) $(HEADERS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(ftgldir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-ftglHEADERS
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-exec-am: install-libLTLIBRARIES
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-ftglHEADERS uninstall-libLTLIBRARIES
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libLTLIBRARIES clean-libtool ctags distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am \
|
||||
install-ftglHEADERS install-html install-html-am install-info \
|
||||
install-info-am install-libLTLIBRARIES install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-ftglHEADERS \
|
||||
uninstall-libLTLIBRARIES
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
5
bazaar/FTGL/src/config.h
Normal file
5
bazaar/FTGL/src/config.h
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
#ifndef _FTGL_config_h_
|
||||
#define _FTGL_config_h_
|
||||
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue