pygame / src / freetype / ft_wrap.h

Full commit
tanoku 1b15594 

marcus a2c775e 

tanoku 1b15594 

tanoku 22f14a8 

tanoku 1b15594 
tanoku feeee63 

tanoku 1b15594 

tanoku eb45fec 

tanoku d081b5a 

tanoku eb45fec 
marcus a2c775e 
tanoku 2495706 

marcus a2c775e 

tanoku 1b15594 

marcus a2c775e 
tanoku 1b15594 

tanoku 22f14a8 

tanoku feeee63 
tanoku 1b15594 

tanoku 46addbe 

tanoku 1b15594 

tanoku 4ac12fc 

tanoku 6e7e174 
tanoku 22f14a8 
tanoku 143596d 
tanoku 22f14a8 

tanoku 4e3cfe2 
tanoku 22f14a8 

tanoku 9d6c5d4 
tanoku ab851f4 
tanoku 1b15594 
tanoku 143596d 

tanoku 4e3cfe2 

tanoku eb45fec 
tanoku cfaa061 
tanoku eb45fec 

tanoku 77c3ad6 
tanoku 2495706 
tanoku d081b5a 
tanoku 2495706 

tanoku 1b15594 
  pygame - Python Game Library
  Copyright (C) 2009 Vicent Marti

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Library General Public
  License as published by the Free Software Foundation; either
  version 2 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  Library General Public License for more details.

  You should have received a copy of the GNU Library General Public
  License along with this library; if not, write to the Free
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA



#include "pgfreetype.h"

#   include "pgsdl.h"

typedef struct
    FT_Library library;
    FTC_Manager cache_manager;
    FTC_SBitCache cache_sbit;
    FTC_ImageCache cache_img;
    FTC_CMapCache cache_charmap;

    char *_error_msg;
} FreeTypeInstance;

typedef struct __rendermode
    int         kerning_degree;
    FT_Fixed    center;            /* 0..1 */
    FT_Matrix*  matrix;            /* string transformation */

    FT_Matrix   _rotation_matrix;

    FT_Byte     hinted;
    FT_Byte     vertical;
    FT_Byte     antialias;
    FT_Byte     kerning_mode;
    FT_Byte     autohint;
} FontRenderMode;

typedef struct  FontGlyph_
    FT_UInt    glyph_index;
    FT_Glyph   image;    

    FT_Pos     delta;    
    FT_Vector  vvector;  
    FT_Vector  vadvance; 

} FontGlyph;

typedef struct FontText_
    FontGlyph *glyphs;
    int length;
    FT_UInt32 _hash;

} FontText;

typedef struct {
    FreeTypeInstance *freetype;
} _FreeTypeState;

#ifdef IS_PYTHON_3
extern struct PyModuleDef _freetypemodule;
#define FREETYPE_MOD_STATE(mod) ((_FreeTypeState*)PyModule_GetState(mod))
#define FREETYPE_STATE FREETYPE_MOD_STATE(PyState_FindModule(&_freetypemodule))
extern _FreeTypeState _modstate;
#define FREETYPE_MOD_STATE(mod) (&_modstate)

#define ASSERT_GRAB_FREETYPE(ft_ptr, rvalue)                    \
    ft_ptr = FREETYPE_STATE->freetype;                          \
    if (ft_ptr == NULL)                                         \
    {                                                           \
        PyErr_SetString(PyExc_PyGameError,                      \
            "The FreeType 2 library hasn't been initialized");  \
        return (rvalue);                                        \

#define GET_FONT_ID(f) (&((PyFreeTypeFont *)f)->id)

#define FT_FLOOR(X)	((X & -64) / 64)
#define FT_CEIL(X)	(((X + 63) & -64) / 64)

const char *PGFT_GetError(FreeTypeInstance *);
void    PGFT_Quit(FreeTypeInstance *);
int     PGFT_Init(FreeTypeInstance **);
int     PGFT_TryLoadFont_Filename(FreeTypeInstance *, 
            PyFreeTypeFont *, const char *, int);
void    PGFT_UnloadFont(FreeTypeInstance *, PyFreeTypeFont *);

int     PGFT_Face_GetHeight(FreeTypeInstance *ft, PyFreeTypeFont *);
int     PGFT_Face_IsFixedWidth(FreeTypeInstance *ft, PyFreeTypeFont *);
const char * PGFT_Face_GetName(FreeTypeInstance *ft, PyFreeTypeFont *);

FT_UInt16 *PGFT_BuildUnicodeString(PyObject *, int *);
PyObject  *PGFT_BuildSDLSurface(FT_Byte *buffer, int width, int height);

int     PGFT_GetTextSize(FreeTypeInstance *, PyFreeTypeFont *,
            const FT_UInt16 *, int, int *, int *, int *);

int     PGFT_GetMetrics(FreeTypeInstance *ft, PyFreeTypeFont *font,
            int character, int font_size, int bbmode, 
            void *minx, void *maxx, void *miny, void *maxy, void *advance);

PyObject *PGFT_Render_PixelArray(FreeTypeInstance *ft, PyFreeTypeFont *font,
        const FT_UInt16 *text, int font_size, int *_width, int *_height);
PyObject *PGFT_Render_NewSurface(FreeTypeInstance *ft, PyFreeTypeFont *font,
        const FT_UInt16 *text, int font_size, int *_width, int *_height,
        PyColor *fg_color, PyColor *bg_color);

int PGFT_Render_ExistingSurface(FreeTypeInstance *ft, PyFreeTypeFont *font,
    PyObject *text, int font_size, PySDLSurface *_surface,
    int *_width, int *_height, int x, int y, PyColor *py_fgcolor);

FontText *PGFT_BuildFontText(FreeTypeInstance *ft, PyFreeTypeFont *font, 
    PyObject *text, int pt_sizem, FontRenderMode *mode);