Update sounds
							
								
								
									
										
											BIN
										
									
								
								assets/audio/sound/ambient_1.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								assets/audio/sound/complete.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								assets/audio/sound/die.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								assets/audio/sound/explosion_bit.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								assets/audio/sound/fire.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								assets/font/logo.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								assets/font/main.ttf
									
									
									
									
									
										Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 571 B  | 
| 
		 Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 585 B  | 
							
								
								
									
										
											BIN
										
									
								
								assets/img/asteroid3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 559 B  | 
							
								
								
									
										
											BIN
										
									
								
								assets/img/background.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 21 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								assets/img/background_start.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 7.3 KiB  | 
| 
		 Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 624 B  | 
							
								
								
									
										
											BIN
										
									
								
								assets/sprite/explosion.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.4 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								assets/sprite/fire.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								assets_Sonia/img/asteroid1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 11 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								assets_Sonia/img/asteroid2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 13 KiB  | 
| 
		 Before Width: | Height: | Size: 374 KiB After Width: | Height: | Size: 374 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								assets_Sonia/img/ship.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 7.6 KiB  | 
@@ -1,42 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ft2build.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType 2 build and setup macros.                                   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* This is the `entry point' for FreeType header file inclusions.  It is */
 | 
			
		||||
  /* the only header file which should be included directly; all other     */
 | 
			
		||||
  /* FreeType header files should be accessed with macro names (after      */
 | 
			
		||||
  /* including `ft2build.h').                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* A typical example is                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   #include <ft2build.h>                                               */
 | 
			
		||||
  /*   #include FT_FREETYPE_H                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FT2BUILD_H__
 | 
			
		||||
#define __FT2BUILD_H__
 | 
			
		||||
 | 
			
		||||
#include <freetype/config/ftheader.h>
 | 
			
		||||
 | 
			
		||||
#endif /* __FT2BUILD_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,187 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftadvanc.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Quick computation of advance widths (specification only).            */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2008-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTADVANC_H__
 | 
			
		||||
#define __FTADVANC_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @section:
 | 
			
		||||
   *   quick_advance
 | 
			
		||||
   *
 | 
			
		||||
   * @title:
 | 
			
		||||
   *   Quick retrieval of advance values
 | 
			
		||||
   *
 | 
			
		||||
   * @abstract:
 | 
			
		||||
   *   Retrieve horizontal and vertical advance values without processing
 | 
			
		||||
   *   glyph outlines, if possible.
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This section contains functions to quickly extract advance values
 | 
			
		||||
   *   without handling glyph outlines, if possible.
 | 
			
		||||
   *
 | 
			
		||||
   * @order:
 | 
			
		||||
   *   FT_Get_Advance
 | 
			
		||||
   *   FT_Get_Advances
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Const>                                                               */
 | 
			
		||||
  /*    FT_ADVANCE_FLAG_FAST_ONLY                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A bit-flag to be OR-ed with the `flags' parameter of the           */
 | 
			
		||||
  /*    @FT_Get_Advance and @FT_Get_Advances functions.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    If set, it indicates that you want these functions to fail if the  */
 | 
			
		||||
  /*    corresponding hinting mode or font driver doesn't allow for very   */
 | 
			
		||||
  /*    quick advance computation.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Typically, glyphs that are either unscaled, unhinted, bitmapped,   */
 | 
			
		||||
  /*    or light-hinted can have their advance width computed very         */
 | 
			
		||||
  /*    quickly.                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Normal and bytecode hinted modes that require loading, scaling,    */
 | 
			
		||||
  /*    and hinting of the glyph outline, are extremely slow by            */
 | 
			
		||||
  /*    comparison.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define FT_ADVANCE_FLAG_FAST_ONLY  0x20000000L
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Advance                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieve the advance value of a given glyph outline in an          */
 | 
			
		||||
  /*    @FT_Face.                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face       :: The source @FT_Face handle.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    gindex     :: The glyph index.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    load_flags :: A set of bit flags similar to those used when        */
 | 
			
		||||
  /*                  calling @FT_Load_Glyph, used to determine what kind  */
 | 
			
		||||
  /*                  of advances you need.                                */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    padvance :: The advance value.  If scaling is performed (based on  */
 | 
			
		||||
  /*                the value of `load_flags'), the advance value is in    */
 | 
			
		||||
  /*                16.16 format.  Otherwise, it is in font units.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                If @FT_LOAD_VERTICAL_LAYOUT is set, this is the        */
 | 
			
		||||
  /*                vertical advance corresponding to a vertical layout.   */
 | 
			
		||||
  /*                Otherwise, it is the horizontal advance in a           */
 | 
			
		||||
  /*                horizontal layout.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and   */
 | 
			
		||||
  /*    if the corresponding font backend doesn't have a quick way to      */
 | 
			
		||||
  /*    retrieve the advances.                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    A scaled advance is returned in 16.16 format but isn't transformed */
 | 
			
		||||
  /*    by the affine transformation specified by @FT_Set_Transform.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_Advance( FT_Face    face,
 | 
			
		||||
                  FT_UInt    gindex,
 | 
			
		||||
                  FT_Int32   load_flags,
 | 
			
		||||
                  FT_Fixed  *padvance );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Advances                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieve the advance values of several glyph outlines in an        */
 | 
			
		||||
  /*    @FT_Face.                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face        :: The source @FT_Face handle.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    start       :: The first glyph index.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    count       :: The number of advance values you want to retrieve.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    load_flags  :: A set of bit flags similar to those used when       */
 | 
			
		||||
  /*                   calling @FT_Load_Glyph.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    padvance :: The advance values.  This array, to be provided by the */
 | 
			
		||||
  /*                caller, must contain at least `count' elements.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                If scaling is performed (based on the value of         */
 | 
			
		||||
  /*                `load_flags'), the advance values are in 16.16 format. */
 | 
			
		||||
  /*                Otherwise, they are in font units.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                If @FT_LOAD_VERTICAL_LAYOUT is set, these are the      */
 | 
			
		||||
  /*                vertical advances corresponding to a vertical layout.  */
 | 
			
		||||
  /*                Otherwise, they are the horizontal advances in a       */
 | 
			
		||||
  /*                horizontal layout.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0 means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and   */
 | 
			
		||||
  /*    if the corresponding font backend doesn't have a quick way to      */
 | 
			
		||||
  /*    retrieve the advances.                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Scaled advances are returned in 16.16 format but aren't            */
 | 
			
		||||
  /*    transformed by the affine transformation specified by              */
 | 
			
		||||
  /*    @FT_Set_Transform.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_Advances( FT_Face    face,
 | 
			
		||||
                   FT_UInt    start,
 | 
			
		||||
                   FT_UInt    count,
 | 
			
		||||
                   FT_Int32   load_flags,
 | 
			
		||||
                   FT_Fixed  *padvances );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTADVANC_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,503 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftautoh.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for controlling the auto-hinter (specification only).   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2012-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTAUTOH_H__
 | 
			
		||||
#define __FTAUTOH_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @section:
 | 
			
		||||
   *   auto_hinter
 | 
			
		||||
   *
 | 
			
		||||
   * @title:
 | 
			
		||||
   *   The auto-hinter
 | 
			
		||||
   *
 | 
			
		||||
   * @abstract:
 | 
			
		||||
   *   Controlling the auto-hinting module.
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   While FreeType's auto-hinter doesn't expose API functions by itself,
 | 
			
		||||
   *   it is possible to control its behaviour with @FT_Property_Set and
 | 
			
		||||
   *   @FT_Property_Get.  The following lists the available properties
 | 
			
		||||
   *   together with the necessary macros and structures.
 | 
			
		||||
   *
 | 
			
		||||
   *   Note that the auto-hinter's module name is `autofitter' for
 | 
			
		||||
   *   historical reasons.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @property:
 | 
			
		||||
   *   glyph-to-script-map
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   *Experimental* *only*
 | 
			
		||||
   *
 | 
			
		||||
   *   The auto-hinter provides various script modules to hint glyphs.
 | 
			
		||||
   *   Examples of supported scripts are Latin or CJK.  Before a glyph is
 | 
			
		||||
   *   auto-hinted, the Unicode character map of the font gets examined, and
 | 
			
		||||
   *   the script is then determined based on Unicode character ranges, see
 | 
			
		||||
   *   below.
 | 
			
		||||
   *
 | 
			
		||||
   *   OpenType fonts, however, often provide much more glyphs than
 | 
			
		||||
   *   character codes (small caps, superscripts, ligatures, swashes, etc.),
 | 
			
		||||
   *   to be controlled by so-called `features'.  Handling OpenType features
 | 
			
		||||
   *   can be quite complicated and thus needs a separate library on top of
 | 
			
		||||
   *   FreeType.
 | 
			
		||||
   *
 | 
			
		||||
   *   The mapping between glyph indices and scripts (in the auto-hinter
 | 
			
		||||
   *   sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an
 | 
			
		||||
   *   array with `num_glyphs' elements, as found in the font's @FT_Face
 | 
			
		||||
   *   structure.  The `glyph-to-script-map' property returns a pointer to
 | 
			
		||||
   *   this array, which can be modified as needed.  Note that the
 | 
			
		||||
   *   modification should happen before the first glyph gets processed by
 | 
			
		||||
   *   the auto-hinter so that the global analysis of the font shapes
 | 
			
		||||
   *   actually uses the modified mapping.
 | 
			
		||||
   *
 | 
			
		||||
   *   The following example code demonstrates how to access it (omitting
 | 
			
		||||
   *   the error handling).
 | 
			
		||||
   *
 | 
			
		||||
   *   {
 | 
			
		||||
   *     FT_Library                library;
 | 
			
		||||
   *     FT_Face                   face;
 | 
			
		||||
   *     FT_Prop_GlyphToScriptMap  prop;
 | 
			
		||||
   *
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Init_FreeType( &library );
 | 
			
		||||
   *     FT_New_Face( library, "foo.ttf", 0, &face );
 | 
			
		||||
   *
 | 
			
		||||
   *     prop.face = face;
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Property_Get( library, "autofitter",
 | 
			
		||||
   *                               "glyph-to-script-map", &prop );
 | 
			
		||||
   *
 | 
			
		||||
   *     // adjust `prop.map' as needed right here
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT );
 | 
			
		||||
   *   }
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   FT_AUTOHINTER_SCRIPT_XXX
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   *Experimental* *only*
 | 
			
		||||
   *
 | 
			
		||||
   *   A list of constants used for the @glyph-to-script-map property to
 | 
			
		||||
   *   specify the script submodule the auto-hinter should use for hinting a
 | 
			
		||||
   *   particular glyph.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_AUTOHINTER_SCRIPT_NONE ::
 | 
			
		||||
   *     Don't auto-hint this glyph.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_AUTOHINTER_SCRIPT_LATIN ::
 | 
			
		||||
   *     Apply the latin auto-hinter.  For the auto-hinter, `latin' is a
 | 
			
		||||
   *     very broad term, including Cyrillic and Greek also since characters
 | 
			
		||||
   *     from those scripts share the same design constraints.
 | 
			
		||||
   *
 | 
			
		||||
   *     By default, characters from the following Unicode ranges are
 | 
			
		||||
   *     assigned to this submodule.
 | 
			
		||||
   *
 | 
			
		||||
   *     {
 | 
			
		||||
   *       U+0020 - U+007F  // Basic Latin (no control characters)
 | 
			
		||||
   *       U+00A0 - U+00FF  // Latin-1 Supplement (no control characters)
 | 
			
		||||
   *       U+0100 - U+017F  // Latin Extended-A
 | 
			
		||||
   *       U+0180 - U+024F  // Latin Extended-B
 | 
			
		||||
   *       U+0250 - U+02AF  // IPA Extensions
 | 
			
		||||
   *       U+02B0 - U+02FF  // Spacing Modifier Letters
 | 
			
		||||
   *       U+0300 - U+036F  // Combining Diacritical Marks
 | 
			
		||||
   *       U+0370 - U+03FF  // Greek and Coptic
 | 
			
		||||
   *       U+0400 - U+04FF  // Cyrillic
 | 
			
		||||
   *       U+0500 - U+052F  // Cyrillic Supplement
 | 
			
		||||
   *       U+1D00 - U+1D7F  // Phonetic Extensions
 | 
			
		||||
   *       U+1D80 - U+1DBF  // Phonetic Extensions Supplement
 | 
			
		||||
   *       U+1DC0 - U+1DFF  // Combining Diacritical Marks Supplement
 | 
			
		||||
   *       U+1E00 - U+1EFF  // Latin Extended Additional
 | 
			
		||||
   *       U+1F00 - U+1FFF  // Greek Extended
 | 
			
		||||
   *       U+2000 - U+206F  // General Punctuation
 | 
			
		||||
   *       U+2070 - U+209F  // Superscripts and Subscripts
 | 
			
		||||
   *       U+20A0 - U+20CF  // Currency Symbols
 | 
			
		||||
   *       U+2150 - U+218F  // Number Forms
 | 
			
		||||
   *       U+2460 - U+24FF  // Enclosed Alphanumerics
 | 
			
		||||
   *       U+2C60 - U+2C7F  // Latin Extended-C
 | 
			
		||||
   *       U+2DE0 - U+2DFF  // Cyrillic Extended-A
 | 
			
		||||
   *       U+2E00 - U+2E7F  // Supplemental Punctuation
 | 
			
		||||
   *       U+A640 - U+A69F  // Cyrillic Extended-B
 | 
			
		||||
   *       U+A720 - U+A7FF  // Latin Extended-D
 | 
			
		||||
   *       U+FB00 - U+FB06  // Alphab. Present. Forms (Latin Ligatures)
 | 
			
		||||
   *      U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols
 | 
			
		||||
   *      U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement
 | 
			
		||||
   *     }
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_AUTOHINTER_SCRIPT_CJK ::
 | 
			
		||||
   *     Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old
 | 
			
		||||
   *     Vietnamese, and some other scripts.
 | 
			
		||||
   *
 | 
			
		||||
   *     By default, characters from the following Unicode ranges are
 | 
			
		||||
   *     assigned to this submodule.
 | 
			
		||||
   *
 | 
			
		||||
   *     {
 | 
			
		||||
   *       U+1100 - U+11FF  // Hangul Jamo
 | 
			
		||||
   *       U+2E80 - U+2EFF  // CJK Radicals Supplement
 | 
			
		||||
   *       U+2F00 - U+2FDF  // Kangxi Radicals
 | 
			
		||||
   *       U+2FF0 - U+2FFF  // Ideographic Description Characters
 | 
			
		||||
   *       U+3000 - U+303F  // CJK Symbols and Punctuation
 | 
			
		||||
   *       U+3040 - U+309F  // Hiragana
 | 
			
		||||
   *       U+30A0 - U+30FF  // Katakana
 | 
			
		||||
   *       U+3100 - U+312F  // Bopomofo
 | 
			
		||||
   *       U+3130 - U+318F  // Hangul Compatibility Jamo
 | 
			
		||||
   *       U+3190 - U+319F  // Kanbun
 | 
			
		||||
   *       U+31A0 - U+31BF  // Bopomofo Extended
 | 
			
		||||
   *       U+31C0 - U+31EF  // CJK Strokes
 | 
			
		||||
   *       U+31F0 - U+31FF  // Katakana Phonetic Extensions
 | 
			
		||||
   *       U+3200 - U+32FF  // Enclosed CJK Letters and Months
 | 
			
		||||
   *       U+3300 - U+33FF  // CJK Compatibility
 | 
			
		||||
   *       U+3400 - U+4DBF  // CJK Unified Ideographs Extension A
 | 
			
		||||
   *       U+4DC0 - U+4DFF  // Yijing Hexagram Symbols
 | 
			
		||||
   *       U+4E00 - U+9FFF  // CJK Unified Ideographs
 | 
			
		||||
   *       U+A960 - U+A97F  // Hangul Jamo Extended-A
 | 
			
		||||
   *       U+AC00 - U+D7AF  // Hangul Syllables
 | 
			
		||||
   *       U+D7B0 - U+D7FF  // Hangul Jamo Extended-B
 | 
			
		||||
   *       U+F900 - U+FAFF  // CJK Compatibility Ideographs
 | 
			
		||||
   *       U+FE10 - U+FE1F  // Vertical forms
 | 
			
		||||
   *       U+FE30 - U+FE4F  // CJK Compatibility Forms
 | 
			
		||||
   *       U+FF00 - U+FFEF  // Halfwidth and Fullwidth Forms
 | 
			
		||||
   *      U+1B000 - U+1B0FF // Kana Supplement
 | 
			
		||||
   *      U+1D300 - U+1D35F // Tai Xuan Hing Symbols
 | 
			
		||||
   *      U+1F200 - U+1F2FF // Enclosed Ideographic Supplement
 | 
			
		||||
   *      U+20000 - U+2A6DF // CJK Unified Ideographs Extension B
 | 
			
		||||
   *      U+2A700 - U+2B73F // CJK Unified Ideographs Extension C
 | 
			
		||||
   *      U+2B740 - U+2B81F // CJK Unified Ideographs Extension D
 | 
			
		||||
   *      U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement
 | 
			
		||||
   *     }
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_AUTOHINTER_SCRIPT_INDIC ::
 | 
			
		||||
   *     Apply the indic auto-hinter, covering all major scripts from the
 | 
			
		||||
   *     Indian sub-continent and some other related scripts like Thai, Lao,
 | 
			
		||||
   *     or Tibetan.
 | 
			
		||||
   *
 | 
			
		||||
   *     By default, characters from the following Unicode ranges are
 | 
			
		||||
   *     assigned to this submodule.
 | 
			
		||||
   *
 | 
			
		||||
   *     {
 | 
			
		||||
   *       U+0900 - U+0DFF  // Indic Range
 | 
			
		||||
   *       U+0F00 - U+0FFF  // Tibetan
 | 
			
		||||
   *       U+1900 - U+194F  // Limbu
 | 
			
		||||
   *       U+1B80 - U+1BBF  // Sundanese
 | 
			
		||||
   *       U+1C80 - U+1CDF  // Meetei Mayak
 | 
			
		||||
   *       U+A800 - U+A82F  // Syloti Nagri
 | 
			
		||||
   *      U+11800 - U+118DF // Sharada
 | 
			
		||||
   *     }
 | 
			
		||||
   *
 | 
			
		||||
   *     Note that currently Indic support is rudimentary only, missing blue
 | 
			
		||||
   *     zone support.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_AUTOHINTER_SCRIPT_NONE   0
 | 
			
		||||
#define FT_AUTOHINTER_SCRIPT_LATIN  1
 | 
			
		||||
#define FT_AUTOHINTER_SCRIPT_CJK    2
 | 
			
		||||
#define FT_AUTOHINTER_SCRIPT_INDIC  3
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_Prop_GlyphToScriptMap
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   *Experimental* *only*
 | 
			
		||||
   *
 | 
			
		||||
   *   The data exchange structure for the @glyph-to-script-map property.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  FT_Prop_GlyphToScriptMap_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Face     face;
 | 
			
		||||
    FT_UShort*  map;
 | 
			
		||||
 | 
			
		||||
  } FT_Prop_GlyphToScriptMap;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @property:
 | 
			
		||||
   *   fallback-script
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   *Experimental* *only*
 | 
			
		||||
   *
 | 
			
		||||
   *   If no auto-hinter script module can be assigned to a glyph, a
 | 
			
		||||
   *   fallback script gets assigned to it (see also the
 | 
			
		||||
   *   @glyph-to-script-map property).  By default, this is
 | 
			
		||||
   *   @FT_AUTOHINTER_SCRIPT_CJK.  Using the `fallback-script' property,
 | 
			
		||||
   *   this fallback value can be changed.
 | 
			
		||||
   *
 | 
			
		||||
   *   {
 | 
			
		||||
   *     FT_Library  library;
 | 
			
		||||
   *     FT_UInt     fallback_script = FT_AUTOHINTER_SCRIPT_NONE;
 | 
			
		||||
   *
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Init_FreeType( &library );
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Property_Set( library, "autofitter",
 | 
			
		||||
   *                               "fallback-script", &fallback_script );
 | 
			
		||||
   *   }
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This property can be used with @FT_Property_Get also.
 | 
			
		||||
   *
 | 
			
		||||
   *   It's important to use the right timing for changing this value: The
 | 
			
		||||
   *   creation of the glyph-to-script map that eventually uses the
 | 
			
		||||
   *   fallback script value gets triggered either by setting or reading a
 | 
			
		||||
   *   face-specific property like @glyph-to-script-map, or by auto-hinting
 | 
			
		||||
   *   any glyph from that face.  In particular, if you have already created
 | 
			
		||||
   *   an @FT_Face structure but not loaded any glyph (using the
 | 
			
		||||
   *   auto-hinter), a change of the fallback script will affect this face.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @property:
 | 
			
		||||
   *   default-script
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   *Experimental* *only*
 | 
			
		||||
   *
 | 
			
		||||
   *   If FreeType gets compiled with FT_CONFIG_OPTION_USE_HARFBUZZ to make
 | 
			
		||||
   *   the HarfBuzz library access OpenType features for getting better
 | 
			
		||||
   *   glyph coverages, this property sets the (auto-fitter) script to be
 | 
			
		||||
   *   used for the default (OpenType) script data of a font's GSUB table.
 | 
			
		||||
   *   Features for the default script are intended for all scripts not
 | 
			
		||||
   *   explicitly handled in GSUB; an example is a `dlig' feature,
 | 
			
		||||
   *   containing the combination of the characters `T', `E', and `L' to
 | 
			
		||||
   *   form a `TEL' ligature.
 | 
			
		||||
   *
 | 
			
		||||
   *   By default, this is @FT_AUTOHINTER_SCRIPT_LATIN.  Using the
 | 
			
		||||
   *   `default-script' property, this default value can be changed.
 | 
			
		||||
   *
 | 
			
		||||
   *   {
 | 
			
		||||
   *     FT_Library  library;
 | 
			
		||||
   *     FT_UInt     default_script = FT_AUTOHINTER_SCRIPT_NONE;
 | 
			
		||||
   *
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Init_FreeType( &library );
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Property_Set( library, "autofitter",
 | 
			
		||||
   *                               "default-script", &default_script );
 | 
			
		||||
   *   }
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This property can be used with @FT_Property_Get also.
 | 
			
		||||
   *
 | 
			
		||||
   *   It's important to use the right timing for changing this value: The
 | 
			
		||||
   *   creation of the glyph-to-script map that eventually uses the
 | 
			
		||||
   *   default script value gets triggered either by setting or reading a
 | 
			
		||||
   *   face-specific property like @glyph-to-script-map, or by auto-hinting
 | 
			
		||||
   *   any glyph from that face.  In particular, if you have already created
 | 
			
		||||
   *   an @FT_Face structure but not loaded any glyph (using the
 | 
			
		||||
   *   auto-hinter), a change of the default script will affect this face.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @property:
 | 
			
		||||
   *   increase-x-height
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   For ppem values in the range 6~<= ppem <= `increase-x-height', round
 | 
			
		||||
   *   up the font's x~height much more often than normally.  If the value
 | 
			
		||||
   *   is set to~0, which is the default, this feature is switched off.  Use
 | 
			
		||||
   *   this property to improve the legibility of small font sizes if
 | 
			
		||||
   *   necessary.
 | 
			
		||||
   *
 | 
			
		||||
   *   {
 | 
			
		||||
   *     FT_Library               library;
 | 
			
		||||
   *     FT_Face                  face;
 | 
			
		||||
   *     FT_Prop_IncreaseXHeight  prop;
 | 
			
		||||
   *
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Init_FreeType( &library );
 | 
			
		||||
   *     FT_New_Face( library, "foo.ttf", 0, &face );
 | 
			
		||||
   *     FT_Set_Char_Size( face, 10 * 64, 0, 72, 0 );
 | 
			
		||||
   *
 | 
			
		||||
   *     prop.face  = face;
 | 
			
		||||
   *     prop.limit = 14;
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Property_Set( library, "autofitter",
 | 
			
		||||
   *                               "increase-x-height", &prop );
 | 
			
		||||
   *   }
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This property can be used with @FT_Property_Get also.
 | 
			
		||||
   *
 | 
			
		||||
   *   Set this value right after calling @FT_Set_Char_Size, but before
 | 
			
		||||
   *   loading any glyph (using the auto-hinter).
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_Prop_IncreaseXHeight
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The data exchange structure for the @increase-x-height property.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  FT_Prop_IncreaseXHeight_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Face  face;
 | 
			
		||||
    FT_UInt  limit;
 | 
			
		||||
 | 
			
		||||
  } FT_Prop_IncreaseXHeight;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @property:
 | 
			
		||||
   *   warping
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   *Experimental* *only*
 | 
			
		||||
   *
 | 
			
		||||
   *   If FreeType gets compiled with option AF_CONFIG_OPTION_USE_WARPER to
 | 
			
		||||
   *   activate the warp hinting code in the auto-hinter, this property
 | 
			
		||||
   *   switches warping on and off.
 | 
			
		||||
   *
 | 
			
		||||
   *   Warping only works in `light' auto-hinting mode.  The idea of the
 | 
			
		||||
   *   code is to slightly scale and shift a glyph along the non-hinted
 | 
			
		||||
   *   dimension (which is usually the horizontal axis) so that as much of
 | 
			
		||||
   *   its segments are aligned (more or less) to the grid.  To find out a
 | 
			
		||||
   *   glyph's optimal scaling and shifting value, various parameter
 | 
			
		||||
   *   combinations are tried and scored.
 | 
			
		||||
   *
 | 
			
		||||
   *   By default, warping is off.  The example below shows how to switch on
 | 
			
		||||
   *   warping (omitting the error handling).
 | 
			
		||||
   *
 | 
			
		||||
   *   {
 | 
			
		||||
   *     FT_Library  library;
 | 
			
		||||
   *     FT_Bool     warping = 1;
 | 
			
		||||
   *
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Init_FreeType( &library );
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Property_Set( library, "autofitter",
 | 
			
		||||
   *                               "warping", &warping );
 | 
			
		||||
   *   }
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This property can be used with @FT_Property_Get also.
 | 
			
		||||
   *
 | 
			
		||||
   *   The warping code can also change advance widths.  Have a look at the
 | 
			
		||||
   *   `lsb_delta' and `rsb_delta' fields in the @FT_GlyphSlotRec structure
 | 
			
		||||
   *   for details on improving inter-glyph distances while rendering.
 | 
			
		||||
   *
 | 
			
		||||
   *   Since warping is a global property of the auto-hinter it is best to
 | 
			
		||||
   *   change its value before rendering any face.  Otherwise, you should
 | 
			
		||||
   *   reload all faces that get auto-hinted in `light' hinting mode.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @property:
 | 
			
		||||
   *   no-stem-darkening[autofit]
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   *Experimental* *only,* *requires* *linear* *alpha* *blending* *and*
 | 
			
		||||
   *   *gamma* *correction*
 | 
			
		||||
   *
 | 
			
		||||
   *   Stem darkening emboldens glyphs at smaller sizes to make them more
 | 
			
		||||
   *   readable on common low-DPI screens when using linear alpha blending
 | 
			
		||||
   *   and gamma correction, see @FT_Render_Glyph.  When not using linear
 | 
			
		||||
   *   alpha blending and gamma correction, glyphs will appear heavy and
 | 
			
		||||
   *   fuzzy!
 | 
			
		||||
   *
 | 
			
		||||
   *   Gamma correction essentially lightens fonts since shades of grey are
 | 
			
		||||
   *   shifted to higher pixel values (=~higher brightness) to match the
 | 
			
		||||
   *   original intention to the reality of our screens.  The side-effect is
 | 
			
		||||
   *   that glyphs `thin out'.  Mac OS~X and Adobe's proprietary font
 | 
			
		||||
   *   rendering library implement a counter-measure: stem darkening at
 | 
			
		||||
   *   smaller sizes where shades of gray dominate.  By emboldening a glyph
 | 
			
		||||
   *   slightly in relation to its pixel size, individual pixels get higher
 | 
			
		||||
   *   coverage of filled-in outlines and are therefore `blacker'.  This
 | 
			
		||||
   *   counteracts the `thinning out' of glyphs, making text remain readable
 | 
			
		||||
   *   at smaller sizes.  All glyphs that pass through the auto-hinter will
 | 
			
		||||
   *   be emboldened unless this property is set to TRUE.
 | 
			
		||||
   *
 | 
			
		||||
   *   See the description of the CFF driver for algorithmic details.  Total
 | 
			
		||||
   *   consistency with the CFF driver is currently not achieved because the
 | 
			
		||||
   *   emboldening method differs and glyphs must be scaled down on the
 | 
			
		||||
   *   Y-axis to keep outline points inside their precomputed blue zones.
 | 
			
		||||
   *   The smaller the size (especially 9ppem and down), the higher the loss
 | 
			
		||||
   *   of emboldening versus the CFF driver.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @property:
 | 
			
		||||
   *   darkening-parameters[autofit]
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   *Experimental* *only*
 | 
			
		||||
   *
 | 
			
		||||
   *   See the description of the CFF driver for details.  This
 | 
			
		||||
   *   implementation appropriates the
 | 
			
		||||
   *   CFF_CONFIG_OPTION_DARKENING_PARAMETER_* #defines for consistency.
 | 
			
		||||
   *   Note the differences described in @no-stem-darkening[autofit].
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTAUTOH_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,101 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftbbox.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType exact bbox computation (specification).                     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* This component has a _single_ role: to compute exact outline bounding */
 | 
			
		||||
  /* boxes.                                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* It is separated from the rest of the engine for various technical     */
 | 
			
		||||
  /* reasons.  It may well be integrated in `ftoutln' later.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTBBOX_H__
 | 
			
		||||
#define __FTBBOX_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    outline_processing                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Get_BBox                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Compute the exact bounding box of an outline.  This is slower      */
 | 
			
		||||
  /*    than computing the control box.  However, it uses an advanced      */
 | 
			
		||||
  /*    algorithm that returns _very_ quickly when the two boxes           */
 | 
			
		||||
  /*    coincide.  Otherwise, the outline Bézier arcs are traversed to     */
 | 
			
		||||
  /*    extract their extrema.                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    outline :: A pointer to the source outline.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    abbox   :: The outline's exact bounding box.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    If the font is tricky and the glyph has been loaded with           */
 | 
			
		||||
  /*    @FT_LOAD_NO_SCALE, the resulting BBox is meaningless.  To get      */
 | 
			
		||||
  /*    reasonable values for the BBox it is necessary to load the glyph   */
 | 
			
		||||
  /*    at a large ppem value (so that the hinting instructions can        */
 | 
			
		||||
  /*    properly shift and scale the subglyphs), then extracting the BBox, */
 | 
			
		||||
  /*    which can be eventually converted back to font units.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Get_BBox( FT_Outline*  outline,
 | 
			
		||||
                       FT_BBox     *abbox );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTBBOX_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Local Variables: */
 | 
			
		||||
/* coding: utf-8    */
 | 
			
		||||
/* End:             */
 | 
			
		||||
@@ -1,210 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftbdf.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for accessing BDF-specific strings (specification).     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTBDF_H__
 | 
			
		||||
#define __FTBDF_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    bdf_fonts                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    BDF and PCF Files                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    BDF and PCF specific API.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of functions specific to BDF */
 | 
			
		||||
  /*    and PCF fonts.                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *    BDF_PropertyType
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    A list of BDF property types.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *    BDF_PROPERTY_TYPE_NONE ::
 | 
			
		||||
   *      Value~0 is used to indicate a missing property.
 | 
			
		||||
   *
 | 
			
		||||
   *    BDF_PROPERTY_TYPE_ATOM ::
 | 
			
		||||
   *      Property is a string atom.
 | 
			
		||||
   *
 | 
			
		||||
   *    BDF_PROPERTY_TYPE_INTEGER ::
 | 
			
		||||
   *      Property is a 32-bit signed integer.
 | 
			
		||||
   *
 | 
			
		||||
   *    BDF_PROPERTY_TYPE_CARDINAL ::
 | 
			
		||||
   *      Property is a 32-bit unsigned integer.
 | 
			
		||||
   */
 | 
			
		||||
  typedef enum  BDF_PropertyType_
 | 
			
		||||
  {
 | 
			
		||||
    BDF_PROPERTY_TYPE_NONE     = 0,
 | 
			
		||||
    BDF_PROPERTY_TYPE_ATOM     = 1,
 | 
			
		||||
    BDF_PROPERTY_TYPE_INTEGER  = 2,
 | 
			
		||||
    BDF_PROPERTY_TYPE_CARDINAL = 3
 | 
			
		||||
 | 
			
		||||
  } BDF_PropertyType;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *    BDF_Property
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    A handle to a @BDF_PropertyRec structure to model a given
 | 
			
		||||
   *    BDF/PCF property.
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct BDF_PropertyRec_*  BDF_Property;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @struct:
 | 
			
		||||
  *    BDF_PropertyRec
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    This structure models a given BDF/PCF property.
 | 
			
		||||
  *
 | 
			
		||||
  * @fields:
 | 
			
		||||
  *    type ::
 | 
			
		||||
  *      The property type.
 | 
			
		||||
  *
 | 
			
		||||
  *    u.atom ::
 | 
			
		||||
  *      The atom string, if type is @BDF_PROPERTY_TYPE_ATOM.  May be
 | 
			
		||||
  *      NULL, indicating an empty string.
 | 
			
		||||
  *
 | 
			
		||||
  *    u.integer ::
 | 
			
		||||
  *      A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
 | 
			
		||||
  *
 | 
			
		||||
  *    u.cardinal ::
 | 
			
		||||
  *      An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL.
 | 
			
		||||
  */
 | 
			
		||||
  typedef struct  BDF_PropertyRec_
 | 
			
		||||
  {
 | 
			
		||||
    BDF_PropertyType  type;
 | 
			
		||||
    union {
 | 
			
		||||
      const char*     atom;
 | 
			
		||||
      FT_Int32        integer;
 | 
			
		||||
      FT_UInt32       cardinal;
 | 
			
		||||
 | 
			
		||||
    } u;
 | 
			
		||||
 | 
			
		||||
  } BDF_PropertyRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_Get_BDF_Charset_ID
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Retrieve a BDF font character set identity, according to
 | 
			
		||||
  *    the BDF specification.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    acharset_encoding ::
 | 
			
		||||
  *       Charset encoding, as a C~string, owned by the face.
 | 
			
		||||
  *
 | 
			
		||||
  *    acharset_registry ::
 | 
			
		||||
  *       Charset registry, as a C~string, owned by the face.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function only works with BDF faces, returning an error otherwise.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_BDF_Charset_ID( FT_Face       face,
 | 
			
		||||
                         const char*  *acharset_encoding,
 | 
			
		||||
                         const char*  *acharset_registry );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_Get_BDF_Property
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Retrieve a BDF property from a BDF or PCF font file.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face :: A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    name :: The property name.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    aproperty :: The property.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function works with BDF _and_ PCF fonts.  It returns an error
 | 
			
		||||
  *   otherwise.  It also returns an error if the property is not in the
 | 
			
		||||
  *   font.
 | 
			
		||||
  *
 | 
			
		||||
  *   A `property' is a either key-value pair within the STARTPROPERTIES
 | 
			
		||||
  *   ... ENDPROPERTIES block of a BDF font or a key-value pair from the
 | 
			
		||||
  *   `info->props' array within a `FontRec' structure of a PCF font.
 | 
			
		||||
  *
 | 
			
		||||
  *   Integer properties are always stored as `signed' within PCF fonts;
 | 
			
		||||
  *   consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
 | 
			
		||||
  *   for BDF fonts only.
 | 
			
		||||
  *
 | 
			
		||||
  *   In case of error, `aproperty->type' is always set to
 | 
			
		||||
  *   @BDF_PROPERTY_TYPE_NONE.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_BDF_Property( FT_Face           face,
 | 
			
		||||
                       const char*       prop_name,
 | 
			
		||||
                       BDF_PropertyRec  *aproperty );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTBDF_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,240 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftbitmap.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType utility functions for bitmaps (specification).              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2004-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTBITMAP_H__
 | 
			
		||||
#define __FTBITMAP_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    bitmap_handling                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Bitmap Handling                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Handling FT_Bitmap objects.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains functions for handling @FT_Bitmap objects.   */
 | 
			
		||||
  /*    Note that none of the functions changes the bitmap's `flow' (as    */
 | 
			
		||||
  /*    indicated by the sign of the `pitch' field in `FT_Bitmap').        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Bitmap_Init                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Initialize a pointer to an @FT_Bitmap structure.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    abitmap :: A pointer to the bitmap structure.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    A deprecated name for the same function is `FT_Bitmap_New'.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Bitmap_Init( FT_Bitmap  *abitmap );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* deprecated */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Bitmap_New( FT_Bitmap  *abitmap );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Bitmap_Copy                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Copy a bitmap into another one.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle to a library object.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    source  :: A handle to the source bitmap.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    target  :: A handle to the target bitmap.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Bitmap_Copy( FT_Library        library,
 | 
			
		||||
                  const FT_Bitmap  *source,
 | 
			
		||||
                  FT_Bitmap        *target);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Bitmap_Embolden                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Embolden a bitmap.  The new bitmap will be about `xStrength'       */
 | 
			
		||||
  /*    pixels wider and `yStrength' pixels higher.  The left and bottom   */
 | 
			
		||||
  /*    borders are kept unchanged.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library   :: A handle to a library object.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    xStrength :: How strong the glyph is emboldened horizontally.      */
 | 
			
		||||
  /*                 Expressed in 26.6 pixel format.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    yStrength :: How strong the glyph is emboldened vertically.        */
 | 
			
		||||
  /*                 Expressed in 26.6 pixel format.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    bitmap    :: A handle to the target bitmap.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The current implementation restricts `xStrength' to be less than   */
 | 
			
		||||
  /*    or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    If you want to embolden the bitmap owned by a @FT_GlyphSlotRec,    */
 | 
			
		||||
  /*    you should call @FT_GlyphSlot_Own_Bitmap on the slot first.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format    */
 | 
			
		||||
  /*    are converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp).          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Bitmap_Embolden( FT_Library  library,
 | 
			
		||||
                      FT_Bitmap*  bitmap,
 | 
			
		||||
                      FT_Pos      xStrength,
 | 
			
		||||
                      FT_Pos      yStrength );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Bitmap_Convert                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp */
 | 
			
		||||
  /*    to a bitmap object with depth 8bpp, making the number of used      */
 | 
			
		||||
  /*    bytes line (a.k.a. the `pitch') a multiple of `alignment'.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library   :: A handle to a library object.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    source    :: The source bitmap.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    alignment :: The pitch of the bitmap is a multiple of this         */
 | 
			
		||||
  /*                 parameter.  Common values are 1, 2, or 4.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    target    :: The target bitmap.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    It is possible to call @FT_Bitmap_Convert multiple times without   */
 | 
			
		||||
  /*    calling @FT_Bitmap_Done (the memory is simply reallocated).        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Use @FT_Bitmap_Done to finally remove the bitmap object.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The `library' argument is taken to have access to FreeType's       */
 | 
			
		||||
  /*    memory handling functions.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Bitmap_Convert( FT_Library        library,
 | 
			
		||||
                     const FT_Bitmap  *source,
 | 
			
		||||
                     FT_Bitmap        *target,
 | 
			
		||||
                     FT_Int            alignment );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_GlyphSlot_Own_Bitmap                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Make sure that a glyph slot owns `slot->bitmap'.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    slot :: The glyph slot.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This function is to be used in combination with                    */
 | 
			
		||||
  /*    @FT_Bitmap_Embolden.                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Bitmap_Done                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Destroy a bitmap object initialized with @FT_Bitmap_Init.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle to a library object.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    bitmap  :: The bitmap object to be freed.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The `library' argument is taken to have access to FreeType's       */
 | 
			
		||||
  /*    memory handling functions.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Bitmap_Done( FT_Library  library,
 | 
			
		||||
                  FT_Bitmap  *bitmap );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTBITMAP_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,102 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftbzip2.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Bzip2-compressed stream support.                                     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2010-2015 by                                                 */
 | 
			
		||||
/*  Joel Klinghed.                                                         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTBZIP2_H__
 | 
			
		||||
#define __FTBZIP2_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    bzip2                                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    BZIP2 Streams                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Using bzip2-compressed font files.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of Bzip2-specific functions. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *   FT_Stream_OpenBzip2
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   Open a new stream to parse bzip2-compressed font files.  This is
 | 
			
		||||
  *   mainly used to support the compressed `*.pcf.bz2' fonts that come
 | 
			
		||||
  *   with XFree86.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *   stream ::
 | 
			
		||||
  *     The target embedding stream.
 | 
			
		||||
  *
 | 
			
		||||
  *   source ::
 | 
			
		||||
  *     The source stream.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   The source stream must be opened _before_ calling this function.
 | 
			
		||||
  *
 | 
			
		||||
  *   Calling the internal function `FT_Stream_Close' on the new stream will
 | 
			
		||||
  *   *not* call `FT_Stream_Close' on the source stream.  None of the stream
 | 
			
		||||
  *   objects will be released to the heap.
 | 
			
		||||
  *
 | 
			
		||||
  *   The stream implementation is very basic and resets the decompression
 | 
			
		||||
  *   process each time seeking backwards is needed within the stream.
 | 
			
		||||
  *
 | 
			
		||||
  *   In certain builds of the library, bzip2 compression recognition is
 | 
			
		||||
  *   automatically handled when calling @FT_New_Face or @FT_Open_Face.
 | 
			
		||||
  *   This means that if no font driver is capable of handling the raw
 | 
			
		||||
  *   compressed file, the library will try to open a bzip2 compressed stream
 | 
			
		||||
  *   from it and re-open the face with it.
 | 
			
		||||
  *
 | 
			
		||||
  *   This function may return `FT_Err_Unimplemented_Feature' if your build
 | 
			
		||||
  *   of FreeType was not compiled with bzip2 support.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stream_OpenBzip2( FT_Stream  stream,
 | 
			
		||||
                       FT_Stream  source );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTBZIP2_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,262 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftcffdrv.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for controlling the CFF driver (specification only).    */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2013-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTCFFDRV_H__
 | 
			
		||||
#define __FTCFFDRV_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @section:
 | 
			
		||||
   *   cff_driver
 | 
			
		||||
   *
 | 
			
		||||
   * @title:
 | 
			
		||||
   *   The CFF driver
 | 
			
		||||
   *
 | 
			
		||||
   * @abstract:
 | 
			
		||||
   *   Controlling the CFF driver module.
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   While FreeType's CFF driver doesn't expose API functions by itself,
 | 
			
		||||
   *   it is possible to control its behaviour with @FT_Property_Set and
 | 
			
		||||
   *   @FT_Property_Get.  The list below gives the available properties
 | 
			
		||||
   *   together with the necessary macros and structures.
 | 
			
		||||
   *
 | 
			
		||||
   *   The CFF driver's module name is `cff'.
 | 
			
		||||
   *
 | 
			
		||||
   *   *Hinting* *and* *antialiasing* *principles* *of* *the* *new* *engine*
 | 
			
		||||
   *
 | 
			
		||||
   *   The rasterizer is positioning horizontal features (e.g., ascender
 | 
			
		||||
   *   height & x-height, or crossbars) on the pixel grid and minimizing the
 | 
			
		||||
   *   amount of antialiasing applied to them, while placing vertical
 | 
			
		||||
   *   features (vertical stems) on the pixel grid without hinting, thus
 | 
			
		||||
   *   representing the stem position and weight accurately.  Sometimes the
 | 
			
		||||
   *   vertical stems may be only partially black.  In this context,
 | 
			
		||||
   *   `antialiasing' means that stems are not positioned exactly on pixel
 | 
			
		||||
   *   borders, causing a fuzzy appearance.
 | 
			
		||||
   *
 | 
			
		||||
   *   There are two principles behind this approach.
 | 
			
		||||
   *
 | 
			
		||||
   *   1) No hinting in the horizontal direction: Unlike `superhinted'
 | 
			
		||||
   *   TrueType, which changes glyph widths to accommodate regular
 | 
			
		||||
   *   inter-glyph spacing, Adobe's approach is `faithful to the design' in
 | 
			
		||||
   *   representing both the glyph width and the inter-glyph spacing
 | 
			
		||||
   *   designed for the font.  This makes the screen display as close as it
 | 
			
		||||
   *   can be to the result one would get with infinite resolution, while
 | 
			
		||||
   *   preserving what is considered the key characteristics of each glyph.
 | 
			
		||||
   *   Note that the distances between unhinted and grid-fitted positions at
 | 
			
		||||
   *   small sizes are comparable to kerning values and thus would be
 | 
			
		||||
   *   noticeable (and distracting) while reading if hinting were applied.
 | 
			
		||||
   *
 | 
			
		||||
   *   One of the reasons to not hint horizontally is antialiasing for LCD
 | 
			
		||||
   *   screens: The pixel geometry of modern displays supplies three
 | 
			
		||||
   *   vertical sub-pixels as the eye moves horizontally across each visible
 | 
			
		||||
   *   pixel.  On devices where we can be certain this characteristic is
 | 
			
		||||
   *   present a rasterizer can take advantage of the sub-pixels to add
 | 
			
		||||
   *   increments of weight.  In Western writing systems this turns out to
 | 
			
		||||
   *   be the more critical direction anyway; the weights and spacing of
 | 
			
		||||
   *   vertical stems (see above) are central to Armenian, Cyrillic, Greek,
 | 
			
		||||
   *   and Latin type designs.  Even when the rasterizer uses greyscale
 | 
			
		||||
   *   antialiasing instead of color (a necessary compromise when one
 | 
			
		||||
   *   doesn't know the screen characteristics), the unhinted vertical
 | 
			
		||||
   *   features preserve the design's weight and spacing much better than
 | 
			
		||||
   *   aliased type would.
 | 
			
		||||
   *
 | 
			
		||||
   *   2) Aligment in the vertical direction: Weights and spacing along the
 | 
			
		||||
   *   y~axis are less critical; what is much more important is the visual
 | 
			
		||||
   *   alignment of related features (like cap-height and x-height).  The
 | 
			
		||||
   *   sense of alignment for these is enhanced by the sharpness of grid-fit
 | 
			
		||||
   *   edges, while the cruder vertical resolution (full pixels instead of
 | 
			
		||||
   *   1/3 pixels) is less of a problem.
 | 
			
		||||
   *
 | 
			
		||||
   *   On the technical side, horizontal alignment zones for ascender,
 | 
			
		||||
   *   x-height, and other important height values (traditionally called
 | 
			
		||||
   *   `blue zones') as defined in the font are positioned independently,
 | 
			
		||||
   *   each being rounded to the nearest pixel edge, taking care of
 | 
			
		||||
   *   overshoot suppression at small sizes, stem darkening, and scaling.
 | 
			
		||||
   *
 | 
			
		||||
   *   Hstems (this is, hint values defined in the font to help align
 | 
			
		||||
   *   horizontal features) that fall within a blue zone are said to be
 | 
			
		||||
   *   `captured' and are aligned to that zone.  Uncaptured stems are moved
 | 
			
		||||
   *   in one of four ways, top edge up or down, bottom edge up or down.
 | 
			
		||||
   *   Unless there are conflicting hstems, the smallest movement is taken
 | 
			
		||||
   *   to minimize distortion.
 | 
			
		||||
   *
 | 
			
		||||
   * @order:
 | 
			
		||||
   *   hinting-engine
 | 
			
		||||
   *   no-stem-darkening[cff]
 | 
			
		||||
   *   darkening-parameters[cff]
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @property:
 | 
			
		||||
   *   hinting-engine
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Thanks to Adobe, which contributed a new hinting (and parsing)
 | 
			
		||||
   *   engine, an application can select between `freetype' and `adobe' if
 | 
			
		||||
   *   compiled with CFF_CONFIG_OPTION_OLD_ENGINE.  If this configuration
 | 
			
		||||
   *   macro isn't defined, `hinting-engine' does nothing.
 | 
			
		||||
   *
 | 
			
		||||
   *   The default engine is `freetype' if CFF_CONFIG_OPTION_OLD_ENGINE is
 | 
			
		||||
   *   defined, and `adobe' otherwise.
 | 
			
		||||
   *
 | 
			
		||||
   *   The following example code demonstrates how to select Adobe's hinting
 | 
			
		||||
   *   engine (omitting the error handling).
 | 
			
		||||
   *
 | 
			
		||||
   *   {
 | 
			
		||||
   *     FT_Library  library;
 | 
			
		||||
   *     FT_UInt     hinting_engine = FT_CFF_HINTING_ADOBE;
 | 
			
		||||
   *
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Init_FreeType( &library );
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Property_Set( library, "cff",
 | 
			
		||||
   *                               "hinting-engine", &hinting_engine );
 | 
			
		||||
   *   }
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This property can be used with @FT_Property_Get also.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   FT_CFF_HINTING_XXX
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A list of constants used for the @hinting-engine property to select
 | 
			
		||||
   *   the hinting engine for CFF fonts.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_CFF_HINTING_FREETYPE ::
 | 
			
		||||
   *     Use the old FreeType hinting engine.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_CFF_HINTING_ADOBE ::
 | 
			
		||||
   *     Use the hinting engine contributed by Adobe.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_CFF_HINTING_FREETYPE  0
 | 
			
		||||
#define FT_CFF_HINTING_ADOBE     1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @property:
 | 
			
		||||
   *   no-stem-darkening[cff]
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   By default, the Adobe CFF engine darkens stems at smaller sizes,
 | 
			
		||||
   *   regardless of hinting, to enhance contrast.  This feature requires
 | 
			
		||||
   *   a rendering system with proper gamma correction.  Setting this
 | 
			
		||||
   *   property, stem darkening gets switched off.
 | 
			
		||||
   *
 | 
			
		||||
   *   Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set.
 | 
			
		||||
   *
 | 
			
		||||
   *   {
 | 
			
		||||
   *     FT_Library  library;
 | 
			
		||||
   *     FT_Bool     no_stem_darkening = TRUE;
 | 
			
		||||
   *
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Init_FreeType( &library );
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Property_Set( library, "cff",
 | 
			
		||||
   *                               "no-stem-darkening", &no_stem_darkening );
 | 
			
		||||
   *   }
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This property can be used with @FT_Property_Get also.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @property:
 | 
			
		||||
   *   darkening-parameters[cff]
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   By default, the Adobe CFF engine darkens stems as follows (if the
 | 
			
		||||
   *   `no-stem-darkening' property isn't set):
 | 
			
		||||
   *
 | 
			
		||||
   *   {
 | 
			
		||||
   *     stem width <= 0.5px:   darkening amount = 0.4px
 | 
			
		||||
   *     stem width  = 1px:     darkening amount = 0.275px
 | 
			
		||||
   *     stem width  = 1.667px: darkening amount = 0.275px
 | 
			
		||||
   *     stem width >= 2.333px: darkening amount = 0px
 | 
			
		||||
   *   }
 | 
			
		||||
   *
 | 
			
		||||
   *   and piecewise linear in-between.  At configuration time, these four
 | 
			
		||||
   *   control points can be set with the macro
 | 
			
		||||
   *   `CFF_CONFIG_OPTION_DARKENING_PARAMETERS'.  At runtime, the control
 | 
			
		||||
   *   points can be changed using the `darkening-parameters' property, as
 | 
			
		||||
   *   the following example demonstrates.
 | 
			
		||||
   *
 | 
			
		||||
   *   {
 | 
			
		||||
   *     FT_Library  library;
 | 
			
		||||
   *     FT_Int      darken_params[8] = {  500, 300,   // x1, y1
 | 
			
		||||
   *                                      1000, 200,   // x2, y2
 | 
			
		||||
   *                                      1500, 100,   // x3, y3
 | 
			
		||||
   *                                      2000,   0 }; // x4, y4
 | 
			
		||||
   *
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Init_FreeType( &library );
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Property_Set( library, "cff",
 | 
			
		||||
   *                               "darkening-parameters", darken_params );
 | 
			
		||||
   *   }
 | 
			
		||||
   *
 | 
			
		||||
   *   The x~values give the stem width, and the y~values the darkening
 | 
			
		||||
   *   amount.  The unit is 1000th of pixels.  All coordinate values must be
 | 
			
		||||
   *   positive; the x~values must be monotonically increasing; the
 | 
			
		||||
   *   y~values must be monotonically decreasing and smaller than or
 | 
			
		||||
   *   equal to 500 (corresponding to half a pixel); the slope of each
 | 
			
		||||
   *   linear piece must be shallower than -1 (e.g., -.4).
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This property can be used with @FT_Property_Get also.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __FTCFFDRV_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,135 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* This file defines the structure of the FreeType reference.              */
 | 
			
		||||
/* It is used by the python script that generates the HTML files.          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Chapter>                                                               */
 | 
			
		||||
/*    general_remarks                                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Title>                                                                 */
 | 
			
		||||
/*    General Remarks                                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Sections>                                                              */
 | 
			
		||||
/*    header_inclusion                                                     */
 | 
			
		||||
/*    user_allocation                                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Chapter>                                                               */
 | 
			
		||||
/*    core_api                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Title>                                                                 */
 | 
			
		||||
/*    Core API                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Sections>                                                              */
 | 
			
		||||
/*    version                                                              */
 | 
			
		||||
/*    basic_types                                                          */
 | 
			
		||||
/*    base_interface                                                       */
 | 
			
		||||
/*    glyph_variants                                                       */
 | 
			
		||||
/*    glyph_management                                                     */
 | 
			
		||||
/*    mac_specific                                                         */
 | 
			
		||||
/*    sizes_management                                                     */
 | 
			
		||||
/*    header_file_macros                                                   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Chapter>                                                               */
 | 
			
		||||
/*    format_specific                                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Title>                                                                 */
 | 
			
		||||
/*    Format-Specific API                                                  */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Sections>                                                              */
 | 
			
		||||
/*    multiple_masters                                                     */
 | 
			
		||||
/*    truetype_tables                                                      */
 | 
			
		||||
/*    type1_tables                                                         */
 | 
			
		||||
/*    sfnt_names                                                           */
 | 
			
		||||
/*    bdf_fonts                                                            */
 | 
			
		||||
/*    cid_fonts                                                            */
 | 
			
		||||
/*    pfr_fonts                                                            */
 | 
			
		||||
/*    winfnt_fonts                                                         */
 | 
			
		||||
/*    font_formats                                                         */
 | 
			
		||||
/*    gasp_table                                                           */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Chapter>                                                               */
 | 
			
		||||
/*    module_specific                                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Title>                                                                 */
 | 
			
		||||
/*    Controlling FreeType Modules                                         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Sections>                                                              */
 | 
			
		||||
/*    auto_hinter                                                          */
 | 
			
		||||
/*    cff_driver                                                           */
 | 
			
		||||
/*    tt_driver                                                            */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Chapter>                                                               */
 | 
			
		||||
/*    cache_subsystem                                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Title>                                                                 */
 | 
			
		||||
/*    Cache Sub-System                                                     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Sections>                                                              */
 | 
			
		||||
/*    cache_subsystem                                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Chapter>                                                               */
 | 
			
		||||
/*    support_api                                                          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Title>                                                                 */
 | 
			
		||||
/*    Support API                                                          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Sections>                                                              */
 | 
			
		||||
/*    computations                                                         */
 | 
			
		||||
/*    list_processing                                                      */
 | 
			
		||||
/*    outline_processing                                                   */
 | 
			
		||||
/*    quick_advance                                                        */
 | 
			
		||||
/*    bitmap_handling                                                      */
 | 
			
		||||
/*    raster                                                               */
 | 
			
		||||
/*    glyph_stroker                                                        */
 | 
			
		||||
/*    system_interface                                                     */
 | 
			
		||||
/*    module_management                                                    */
 | 
			
		||||
/*    gzip                                                                 */
 | 
			
		||||
/*    lzw                                                                  */
 | 
			
		||||
/*    bzip2                                                                */
 | 
			
		||||
/*    lcd_filtering                                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Chapter>                                                               */
 | 
			
		||||
/*    error_codes                                                          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Title>                                                                 */
 | 
			
		||||
/*    Error Codes                                                          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* <Sections>                                                              */
 | 
			
		||||
/*    error_enumerations                                                   */
 | 
			
		||||
/*    error_code_values                                                    */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
@@ -1,168 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftcid.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for accessing CID font information (specification).     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2007-2015 by                                                 */
 | 
			
		||||
/*  Dereg Clegg and Michael Toftdal.                                       */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTCID_H__
 | 
			
		||||
#define __FTCID_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    cid_fonts                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    CID Fonts                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    CID-keyed font specific API.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of CID-keyed font specific   */
 | 
			
		||||
  /*    functions.                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Get_CID_Registry_Ordering_Supplement
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Retrieve the Registry/Ordering/Supplement triple (also known as the
 | 
			
		||||
   *    "R/O/S") from a CID-keyed font.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face ::
 | 
			
		||||
   *       A handle to the input face.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *    registry ::
 | 
			
		||||
   *       The registry, as a C~string, owned by the face.
 | 
			
		||||
   *
 | 
			
		||||
   *    ordering ::
 | 
			
		||||
   *       The ordering, as a C~string, owned by the face.
 | 
			
		||||
   *
 | 
			
		||||
   *    supplement ::
 | 
			
		||||
   *       The supplement.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *    This function only works with CID faces, returning an error
 | 
			
		||||
   *    otherwise.
 | 
			
		||||
   *
 | 
			
		||||
   * @since:
 | 
			
		||||
   *    2.3.6
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_CID_Registry_Ordering_Supplement( FT_Face       face,
 | 
			
		||||
                                           const char*  *registry,
 | 
			
		||||
                                           const char*  *ordering,
 | 
			
		||||
                                           FT_Int       *supplement);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Get_CID_Is_Internally_CID_Keyed
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Retrieve the type of the input face, CID keyed or not.  In
 | 
			
		||||
   *    constrast to the @FT_IS_CID_KEYED macro this function returns
 | 
			
		||||
   *    successfully also for CID-keyed fonts in an SNFT wrapper.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face ::
 | 
			
		||||
   *       A handle to the input face.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *    is_cid ::
 | 
			
		||||
   *       The type of the face as an @FT_Bool.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *    This function only works with CID faces and OpenType fonts,
 | 
			
		||||
   *    returning an error otherwise.
 | 
			
		||||
   *
 | 
			
		||||
   * @since:
 | 
			
		||||
   *    2.3.9
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_CID_Is_Internally_CID_Keyed( FT_Face   face,
 | 
			
		||||
                                      FT_Bool  *is_cid );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Get_CID_From_Glyph_Index
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Retrieve the CID of the input glyph index.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face ::
 | 
			
		||||
   *       A handle to the input face.
 | 
			
		||||
   *
 | 
			
		||||
   *    glyph_index ::
 | 
			
		||||
   *       The input glyph index.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *    cid ::
 | 
			
		||||
   *       The CID as an @FT_UInt.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *    This function only works with CID faces and OpenType fonts,
 | 
			
		||||
   *    returning an error otherwise.
 | 
			
		||||
   *
 | 
			
		||||
   * @since:
 | 
			
		||||
   *    2.3.9
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_CID_From_Glyph_Index( FT_Face   face,
 | 
			
		||||
                               FT_UInt   glyph_index,
 | 
			
		||||
                               FT_UInt  *cid );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTCID_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,276 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  fterrdef.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType error codes (specification).                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*   error_code_values                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*   Error Code Values                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*   All possible error codes returned by FreeType functions.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*   The list below is taken verbatim from the file `fterrdef.h'         */
 | 
			
		||||
  /*   (loaded automatically by including `FT_FREETYPE_H').  The first     */
 | 
			
		||||
  /*   argument of the `FT_ERROR_DEF_' macro is the error label; by        */
 | 
			
		||||
  /*   default, the prefix `FT_Err_' gets added so that you get error      */
 | 
			
		||||
  /*   names like `FT_Err_Cannot_Open_Resource'.  The second argument is   */
 | 
			
		||||
  /*   the error code, and the last argument an error string, which is not */
 | 
			
		||||
  /*   used by FreeType.                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Within your application you should *only* use error names and       */
 | 
			
		||||
  /*   *never* its numeric values!  The latter might (and actually do)     */
 | 
			
		||||
  /*   change in forthcoming FreeType versions.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Macro `FT_NOERRORDEF_' defines `FT_Err_Ok', which is always zero.   */
 | 
			
		||||
  /*   See the `Error Enumerations' subsection how to automatically        */
 | 
			
		||||
  /*   generate a list of error strings.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Enum>                                                                */
 | 
			
		||||
  /*    FT_Err_XXX                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  /* generic errors */
 | 
			
		||||
 | 
			
		||||
  FT_NOERRORDEF_( Ok,                                        0x00,
 | 
			
		||||
                  "no error" )
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Cannot_Open_Resource,                        0x01,
 | 
			
		||||
                "cannot open resource" )
 | 
			
		||||
  FT_ERRORDEF_( Unknown_File_Format,                         0x02,
 | 
			
		||||
                "unknown file format" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_File_Format,                         0x03,
 | 
			
		||||
                "broken file" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Version,                             0x04,
 | 
			
		||||
                "invalid FreeType version" )
 | 
			
		||||
  FT_ERRORDEF_( Lower_Module_Version,                        0x05,
 | 
			
		||||
                "module version is too low" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Argument,                            0x06,
 | 
			
		||||
                "invalid argument" )
 | 
			
		||||
  FT_ERRORDEF_( Unimplemented_Feature,                       0x07,
 | 
			
		||||
                "unimplemented feature" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Table,                               0x08,
 | 
			
		||||
                "broken table" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Offset,                              0x09,
 | 
			
		||||
                "broken offset within table" )
 | 
			
		||||
  FT_ERRORDEF_( Array_Too_Large,                             0x0A,
 | 
			
		||||
                "array allocation size too large" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Module,                              0x0B,
 | 
			
		||||
                "missing module" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Property,                            0x0C,
 | 
			
		||||
                "missing property" )
 | 
			
		||||
 | 
			
		||||
  /* glyph/character errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Glyph_Index,                         0x10,
 | 
			
		||||
                "invalid glyph index" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Character_Code,                      0x11,
 | 
			
		||||
                "invalid character code" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Glyph_Format,                        0x12,
 | 
			
		||||
                "unsupported glyph image format" )
 | 
			
		||||
  FT_ERRORDEF_( Cannot_Render_Glyph,                         0x13,
 | 
			
		||||
                "cannot render this glyph format" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Outline,                             0x14,
 | 
			
		||||
                "invalid outline" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Composite,                           0x15,
 | 
			
		||||
                "invalid composite glyph" )
 | 
			
		||||
  FT_ERRORDEF_( Too_Many_Hints,                              0x16,
 | 
			
		||||
                "too many hints" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Pixel_Size,                          0x17,
 | 
			
		||||
                "invalid pixel size" )
 | 
			
		||||
 | 
			
		||||
  /* handle errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Handle,                              0x20,
 | 
			
		||||
                "invalid object handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Library_Handle,                      0x21,
 | 
			
		||||
                "invalid library handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Driver_Handle,                       0x22,
 | 
			
		||||
                "invalid module handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Face_Handle,                         0x23,
 | 
			
		||||
                "invalid face handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Size_Handle,                         0x24,
 | 
			
		||||
                "invalid size handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Slot_Handle,                         0x25,
 | 
			
		||||
                "invalid glyph slot handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_CharMap_Handle,                      0x26,
 | 
			
		||||
                "invalid charmap handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Cache_Handle,                        0x27,
 | 
			
		||||
                "invalid cache manager handle" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Stream_Handle,                       0x28,
 | 
			
		||||
                "invalid stream handle" )
 | 
			
		||||
 | 
			
		||||
  /* driver errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Too_Many_Drivers,                            0x30,
 | 
			
		||||
                "too many modules" )
 | 
			
		||||
  FT_ERRORDEF_( Too_Many_Extensions,                         0x31,
 | 
			
		||||
                "too many extensions" )
 | 
			
		||||
 | 
			
		||||
  /* memory errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Out_Of_Memory,                               0x40,
 | 
			
		||||
                "out of memory" )
 | 
			
		||||
  FT_ERRORDEF_( Unlisted_Object,                             0x41,
 | 
			
		||||
                "unlisted object" )
 | 
			
		||||
 | 
			
		||||
  /* stream errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Cannot_Open_Stream,                          0x51,
 | 
			
		||||
                "cannot open stream" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Stream_Seek,                         0x52,
 | 
			
		||||
                "invalid stream seek" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Stream_Skip,                         0x53,
 | 
			
		||||
                "invalid stream skip" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Stream_Read,                         0x54,
 | 
			
		||||
                "invalid stream read" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Stream_Operation,                    0x55,
 | 
			
		||||
                "invalid stream operation" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Frame_Operation,                     0x56,
 | 
			
		||||
                "invalid frame operation" )
 | 
			
		||||
  FT_ERRORDEF_( Nested_Frame_Access,                         0x57,
 | 
			
		||||
                "nested frame access" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Frame_Read,                          0x58,
 | 
			
		||||
                "invalid frame read" )
 | 
			
		||||
 | 
			
		||||
  /* raster errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Raster_Uninitialized,                        0x60,
 | 
			
		||||
                "raster uninitialized" )
 | 
			
		||||
  FT_ERRORDEF_( Raster_Corrupted,                            0x61,
 | 
			
		||||
                "raster corrupted" )
 | 
			
		||||
  FT_ERRORDEF_( Raster_Overflow,                             0x62,
 | 
			
		||||
                "raster overflow" )
 | 
			
		||||
  FT_ERRORDEF_( Raster_Negative_Height,                      0x63,
 | 
			
		||||
                "negative height while rastering" )
 | 
			
		||||
 | 
			
		||||
  /* cache errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Too_Many_Caches,                             0x70,
 | 
			
		||||
                "too many registered caches" )
 | 
			
		||||
 | 
			
		||||
  /* TrueType and SFNT errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Opcode,                              0x80,
 | 
			
		||||
                "invalid opcode" )
 | 
			
		||||
  FT_ERRORDEF_( Too_Few_Arguments,                           0x81,
 | 
			
		||||
                "too few arguments" )
 | 
			
		||||
  FT_ERRORDEF_( Stack_Overflow,                              0x82,
 | 
			
		||||
                "stack overflow" )
 | 
			
		||||
  FT_ERRORDEF_( Code_Overflow,                               0x83,
 | 
			
		||||
                "code overflow" )
 | 
			
		||||
  FT_ERRORDEF_( Bad_Argument,                                0x84,
 | 
			
		||||
                "bad argument" )
 | 
			
		||||
  FT_ERRORDEF_( Divide_By_Zero,                              0x85,
 | 
			
		||||
                "division by zero" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Reference,                           0x86,
 | 
			
		||||
                "invalid reference" )
 | 
			
		||||
  FT_ERRORDEF_( Debug_OpCode,                                0x87,
 | 
			
		||||
                "found debug opcode" )
 | 
			
		||||
  FT_ERRORDEF_( ENDF_In_Exec_Stream,                         0x88,
 | 
			
		||||
                "found ENDF opcode in execution stream" )
 | 
			
		||||
  FT_ERRORDEF_( Nested_DEFS,                                 0x89,
 | 
			
		||||
                "nested DEFS" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_CodeRange,                           0x8A,
 | 
			
		||||
                "invalid code range" )
 | 
			
		||||
  FT_ERRORDEF_( Execution_Too_Long,                          0x8B,
 | 
			
		||||
                "execution context too long" )
 | 
			
		||||
  FT_ERRORDEF_( Too_Many_Function_Defs,                      0x8C,
 | 
			
		||||
                "too many function definitions" )
 | 
			
		||||
  FT_ERRORDEF_( Too_Many_Instruction_Defs,                   0x8D,
 | 
			
		||||
                "too many instruction definitions" )
 | 
			
		||||
  FT_ERRORDEF_( Table_Missing,                               0x8E,
 | 
			
		||||
                "SFNT font table missing" )
 | 
			
		||||
  FT_ERRORDEF_( Horiz_Header_Missing,                        0x8F,
 | 
			
		||||
                "horizontal header (hhea) table missing" )
 | 
			
		||||
  FT_ERRORDEF_( Locations_Missing,                           0x90,
 | 
			
		||||
                "locations (loca) table missing" )
 | 
			
		||||
  FT_ERRORDEF_( Name_Table_Missing,                          0x91,
 | 
			
		||||
                "name table missing" )
 | 
			
		||||
  FT_ERRORDEF_( CMap_Table_Missing,                          0x92,
 | 
			
		||||
                "character map (cmap) table missing" )
 | 
			
		||||
  FT_ERRORDEF_( Hmtx_Table_Missing,                          0x93,
 | 
			
		||||
                "horizontal metrics (hmtx) table missing" )
 | 
			
		||||
  FT_ERRORDEF_( Post_Table_Missing,                          0x94,
 | 
			
		||||
                "PostScript (post) table missing" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Horiz_Metrics,                       0x95,
 | 
			
		||||
                "invalid horizontal metrics" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_CharMap_Format,                      0x96,
 | 
			
		||||
                "invalid character map (cmap) format" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_PPem,                                0x97,
 | 
			
		||||
                "invalid ppem value" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Vert_Metrics,                        0x98,
 | 
			
		||||
                "invalid vertical metrics" )
 | 
			
		||||
  FT_ERRORDEF_( Could_Not_Find_Context,                      0x99,
 | 
			
		||||
                "could not find context" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Post_Table_Format,                   0x9A,
 | 
			
		||||
                "invalid PostScript (post) table format" )
 | 
			
		||||
  FT_ERRORDEF_( Invalid_Post_Table,                          0x9B,
 | 
			
		||||
                "invalid PostScript (post) table" )
 | 
			
		||||
 | 
			
		||||
  /* CFF, CID, and Type 1 errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Syntax_Error,                                0xA0,
 | 
			
		||||
                "opcode syntax error" )
 | 
			
		||||
  FT_ERRORDEF_( Stack_Underflow,                             0xA1,
 | 
			
		||||
                "argument stack underflow" )
 | 
			
		||||
  FT_ERRORDEF_( Ignore,                                      0xA2,
 | 
			
		||||
                "ignore" )
 | 
			
		||||
  FT_ERRORDEF_( No_Unicode_Glyph_Name,                       0xA3,
 | 
			
		||||
                "no Unicode glyph name found" )
 | 
			
		||||
  FT_ERRORDEF_( Glyph_Too_Big,                               0xA4,
 | 
			
		||||
                "glyph too big for hinting" )
 | 
			
		||||
 | 
			
		||||
  /* BDF errors */
 | 
			
		||||
 | 
			
		||||
  FT_ERRORDEF_( Missing_Startfont_Field,                     0xB0,
 | 
			
		||||
                "`STARTFONT' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Font_Field,                          0xB1,
 | 
			
		||||
                "`FONT' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Size_Field,                          0xB2,
 | 
			
		||||
                "`SIZE' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Fontboundingbox_Field,               0xB3,
 | 
			
		||||
                "`FONTBOUNDINGBOX' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Chars_Field,                         0xB4,
 | 
			
		||||
                "`CHARS' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Startchar_Field,                     0xB5,
 | 
			
		||||
                "`STARTCHAR' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Encoding_Field,                      0xB6,
 | 
			
		||||
                "`ENCODING' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Missing_Bbx_Field,                           0xB7,
 | 
			
		||||
                "`BBX' field missing" )
 | 
			
		||||
  FT_ERRORDEF_( Bbx_Too_Big,                                 0xB8,
 | 
			
		||||
                "`BBX' too big" )
 | 
			
		||||
  FT_ERRORDEF_( Corrupted_Font_Header,                       0xB9,
 | 
			
		||||
                "Font header corrupted or missing fields" )
 | 
			
		||||
  FT_ERRORDEF_( Corrupted_Font_Glyphs,                       0xBA,
 | 
			
		||||
                "Font glyphs corrupted or missing fields" )
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,216 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  fterrors.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType error code handling (specification).                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*   error_enumerations                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*   Error Enumerations                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*   How to handle errors and error strings.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*   The header file `fterrors.h' (which is automatically included by    */
 | 
			
		||||
  /*   `freetype.h' defines the handling of FreeType's enumeration         */
 | 
			
		||||
  /*   constants.  It can also be used to generate error message strings   */
 | 
			
		||||
  /*   with a small macro trick explained below.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   *Error* *Formats*                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be   */
 | 
			
		||||
  /*   defined in `ftoption.h' in order to make the higher byte indicate   */
 | 
			
		||||
  /*   the module where the error has happened (this is not compatible     */
 | 
			
		||||
  /*   with standard builds of FreeType 2, however).  See the file    */
 | 
			
		||||
  /*   `ftmoderr.h' for more details.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   *Error* *Message* *Strings*                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Error definitions are set up with special macros that allow client  */
 | 
			
		||||
  /*   applications to build a table of error message strings.  The        */
 | 
			
		||||
  /*   strings are not included in a normal build of FreeType 2 to    */
 | 
			
		||||
  /*   save space (most client applications do not use them).              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   To do so, you have to define the following macros before including  */
 | 
			
		||||
  /*   this file.                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   {                                                                   */
 | 
			
		||||
  /*     FT_ERROR_START_LIST                                               */
 | 
			
		||||
  /*   }                                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   This macro is called before anything else to define the start of    */
 | 
			
		||||
  /*   the error list.  It is followed by several FT_ERROR_DEF calls.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   {                                                                   */
 | 
			
		||||
  /*     FT_ERROR_DEF( e, v, s )                                           */
 | 
			
		||||
  /*   }                                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   This macro is called to define one single error.  `e' is the error  */
 | 
			
		||||
  /*   code identifier (e.g., `Invalid_Argument'), `v' is the error's      */
 | 
			
		||||
  /*   numerical value, and `s' is the corresponding error string.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   {                                                                   */
 | 
			
		||||
  /*     FT_ERROR_END_LIST                                                 */
 | 
			
		||||
  /*   }                                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   This macro ends the list.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Additionally, you have to undefine `__FTERRORS_H__' before          */
 | 
			
		||||
  /*   #including this file.                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Here is a simple example.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   {                                                                   */
 | 
			
		||||
  /*     #undef __FTERRORS_H__                                             */
 | 
			
		||||
  /*     #define FT_ERRORDEF( e, v, s )  { e, s },                         */
 | 
			
		||||
  /*     #define FT_ERROR_START_LIST     {                                 */
 | 
			
		||||
  /*     #define FT_ERROR_END_LIST       { 0, NULL } };                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     const struct                                                      */
 | 
			
		||||
  /*     {                                                                 */
 | 
			
		||||
  /*       int          err_code;                                          */
 | 
			
		||||
  /*       const char*  err_msg;                                           */
 | 
			
		||||
  /*     } ft_errors[] =                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     #include FT_ERRORS_H                                              */
 | 
			
		||||
  /*   }                                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   Note that `FT_Err_Ok' is _not_ defined with `FT_ERRORDEF' but with  */
 | 
			
		||||
  /*   `FT_NOERRORDEF'; it is always zero.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
#ifndef __FTERRORS_H__
 | 
			
		||||
#define __FTERRORS_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* include module base error codes */
 | 
			
		||||
#include FT_MODULE_ERRORS_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*****                       SETUP MACROS                      *****/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#undef  FT_NEED_EXTERN_C
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* FT_ERR_PREFIX is used as a prefix for error identifiers. */
 | 
			
		||||
  /* By default, we use `FT_Err_'.                            */
 | 
			
		||||
  /*                                                          */
 | 
			
		||||
#ifndef FT_ERR_PREFIX
 | 
			
		||||
#define FT_ERR_PREFIX  FT_Err_
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* FT_ERR_BASE is used as the base for module-specific errors. */
 | 
			
		||||
  /*                                                             */
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS
 | 
			
		||||
 | 
			
		||||
#ifndef FT_ERR_BASE
 | 
			
		||||
#define FT_ERR_BASE  FT_Mod_Err_Base
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#undef FT_ERR_BASE
 | 
			
		||||
#define FT_ERR_BASE  0
 | 
			
		||||
 | 
			
		||||
#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* If FT_ERRORDEF is not defined, we need to define a simple */
 | 
			
		||||
  /* enumeration type.                                         */
 | 
			
		||||
  /*                                                           */
 | 
			
		||||
#ifndef FT_ERRORDEF
 | 
			
		||||
 | 
			
		||||
#define FT_ERRORDEF( e, v, s )  e = v,
 | 
			
		||||
#define FT_ERROR_START_LIST     enum {
 | 
			
		||||
#define FT_ERROR_END_LIST       FT_ERR_CAT( FT_ERR_PREFIX, Max ) };
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#define FT_NEED_EXTERN_C
 | 
			
		||||
  extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* !FT_ERRORDEF */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* this macro is used to define an error */
 | 
			
		||||
#define FT_ERRORDEF_( e, v, s )                                             \
 | 
			
		||||
          FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s )
 | 
			
		||||
 | 
			
		||||
  /* this is only used for <module>_Err_Ok, which must be 0! */
 | 
			
		||||
#define FT_NOERRORDEF_( e, v, s )                             \
 | 
			
		||||
          FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_ERROR_START_LIST
 | 
			
		||||
  FT_ERROR_START_LIST
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* now include the error codes */
 | 
			
		||||
#include FT_ERROR_DEFINITIONS_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_ERROR_END_LIST
 | 
			
		||||
  FT_ERROR_END_LIST
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*****                      SIMPLE CLEANUP                     *****/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifdef FT_NEED_EXTERN_C
 | 
			
		||||
  }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#undef FT_ERROR_START_LIST
 | 
			
		||||
#undef FT_ERROR_END_LIST
 | 
			
		||||
 | 
			
		||||
#undef FT_ERRORDEF
 | 
			
		||||
#undef FT_ERRORDEF_
 | 
			
		||||
#undef FT_NOERRORDEF_
 | 
			
		||||
 | 
			
		||||
#undef FT_NEED_EXTERN_C
 | 
			
		||||
#undef FT_ERR_BASE
 | 
			
		||||
 | 
			
		||||
  /* FT_ERR_PREFIX is needed internally */
 | 
			
		||||
#ifndef FT2_BUILD_LIBRARY
 | 
			
		||||
#undef FT_ERR_PREFIX
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* __FTERRORS_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,92 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftfntfmt.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Support functions for font formats.                                  */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTFNTFMT_H__
 | 
			
		||||
#define __FTFNTFMT_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*   font_formats                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*   Font Formats                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*   Getting the font format.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*   The single function in this section can be used to get the font     */
 | 
			
		||||
  /*   format.  Note that this information is not needed normally;         */
 | 
			
		||||
  /*   however, there are special cases (like in PDF devices) where it is  */
 | 
			
		||||
  /*   important to differentiate, in spite of FreeType's uniform API.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*   FT_Get_Font_Format                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*   Return a string describing the format of a given face.  Possible    */
 | 
			
		||||
  /*   values are `TrueType', `Type~1', `BDF', `PCF', `Type~42',           */
 | 
			
		||||
  /*   `CID~Type~1', `CFF', `PFR', and `Windows~FNT'.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   The return value is suitable to be used as an X11 FONT_PROPERTY.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*   face ::                                                             */
 | 
			
		||||
  /*     Input face handle.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*   Font format string.  NULL in case of error.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*   A deprecated name for the same function is                          */
 | 
			
		||||
  /*   `FT_Get_X11_Font_Format'.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( const char* )
 | 
			
		||||
  FT_Get_Font_Format( FT_Face  face );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* deprecated */
 | 
			
		||||
  FT_EXPORT( const char* )
 | 
			
		||||
  FT_Get_X11_Font_Format( FT_Face  face );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTFNTFMT_H__ */
 | 
			
		||||
@@ -1,129 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftgasp.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Access of TrueType's `gasp' table (specification).                   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2007-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef _FT_GASP_H_
 | 
			
		||||
#define _FT_GASP_H_
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @section:
 | 
			
		||||
   *   gasp_table
 | 
			
		||||
   *
 | 
			
		||||
   * @title:
 | 
			
		||||
   *   Gasp Table
 | 
			
		||||
   *
 | 
			
		||||
   * @abstract:
 | 
			
		||||
   *   Retrieving TrueType `gasp' table entries.
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The function @FT_Get_Gasp can be used to query a TrueType or OpenType
 | 
			
		||||
   *   font for specific entries in its `gasp' table, if any.  This is
 | 
			
		||||
   *   mainly useful when implementing native TrueType hinting with the
 | 
			
		||||
   *   bytecode interpreter to duplicate the Windows text rendering results.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   FT_GASP_XXX
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A list of values and/or bit-flags returned by the @FT_Get_Gasp
 | 
			
		||||
   *   function.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_GASP_NO_TABLE ::
 | 
			
		||||
   *     This special value means that there is no GASP table in this face.
 | 
			
		||||
   *     It is up to the client to decide what to do.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_GASP_DO_GRIDFIT ::
 | 
			
		||||
   *     Grid-fitting and hinting should be performed at the specified ppem.
 | 
			
		||||
   *     This *really* means TrueType bytecode interpretation.  If this bit
 | 
			
		||||
   *     is not set, no hinting gets applied.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_GASP_DO_GRAY ::
 | 
			
		||||
   *     Anti-aliased rendering should be performed at the specified ppem.
 | 
			
		||||
   *     If not set, do monochrome rendering.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_GASP_SYMMETRIC_SMOOTHING ::
 | 
			
		||||
   *     If set, smoothing along multiple axes must be used with ClearType.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_GASP_SYMMETRIC_GRIDFIT ::
 | 
			
		||||
   *     Grid-fitting must be used with ClearType's symmetric smoothing.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   The bit-flags `FT_GASP_DO_GRIDFIT' and `FT_GASP_DO_GRAY' are to be
 | 
			
		||||
   *   used for standard font rasterization only.  Independently of that,
 | 
			
		||||
   *   `FT_GASP_SYMMETRIC_SMOOTHING' and `FT_GASP_SYMMETRIC_GRIDFIT' are to
 | 
			
		||||
   *   be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT' and
 | 
			
		||||
   *   `FT_GASP_DO_GRAY' are consequently ignored).
 | 
			
		||||
   *
 | 
			
		||||
   *   `ClearType' is Microsoft's implementation of LCD rendering, partly
 | 
			
		||||
   *   protected by patents.
 | 
			
		||||
   *
 | 
			
		||||
   * @since:
 | 
			
		||||
   *   2.3.0
 | 
			
		||||
   */
 | 
			
		||||
#define FT_GASP_NO_TABLE               -1
 | 
			
		||||
#define FT_GASP_DO_GRIDFIT           0x01
 | 
			
		||||
#define FT_GASP_DO_GRAY              0x02
 | 
			
		||||
#define FT_GASP_SYMMETRIC_SMOOTHING  0x08
 | 
			
		||||
#define FT_GASP_SYMMETRIC_GRIDFIT    0x10
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @func:
 | 
			
		||||
   *   FT_Get_Gasp
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Read the `gasp' table from a TrueType or OpenType font file and
 | 
			
		||||
   *   return the entry corresponding to a given character pixel size.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   face :: The source face handle.
 | 
			
		||||
   *   ppem :: The vertical character pixel size.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no
 | 
			
		||||
   *   `gasp' table in the face.
 | 
			
		||||
   *
 | 
			
		||||
   * @since:
 | 
			
		||||
   *   2.3.0
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Int )
 | 
			
		||||
  FT_Get_Gasp( FT_Face  face,
 | 
			
		||||
               FT_UInt  ppem );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* _FT_GASP_H_ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,605 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftglyph.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType convenience functions to handle glyphs (specification).     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* This file contains the definition of several convenience functions    */
 | 
			
		||||
  /* that can be used by client applications to easily retrieve glyph      */
 | 
			
		||||
  /* bitmaps and outlines from a given face.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* These functions should be optional if you are writing a font server   */
 | 
			
		||||
  /* or text layout engine on top of FreeType.  However, they are pretty   */
 | 
			
		||||
  /* handy for many other simple uses of the library.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTGLYPH_H__
 | 
			
		||||
#define __FTGLYPH_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    glyph_management                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Glyph Management                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Generic interface to manage individual glyph data.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains definitions used to manage glyph data        */
 | 
			
		||||
  /*    through generic FT_Glyph objects.  Each of them can contain a      */
 | 
			
		||||
  /*    bitmap, a vector outline, or even images in other formats.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* forward declaration to a private type */
 | 
			
		||||
  typedef struct FT_Glyph_Class_  FT_Glyph_Class;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Glyph                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Handle to an object used to model generic glyph images.  It is a   */
 | 
			
		||||
  /*    pointer to the @FT_GlyphRec structure and can contain a glyph      */
 | 
			
		||||
  /*    bitmap or pointer.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    Glyph objects are not owned by the library.  You must thus release */
 | 
			
		||||
  /*    them manually (through @FT_Done_Glyph) _before_ calling            */
 | 
			
		||||
  /*    @FT_Done_FreeType.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct FT_GlyphRec_*  FT_Glyph;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_GlyphRec                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The root glyph structure contains a given glyph image plus its     */
 | 
			
		||||
  /*    advance width in 16.16 fixed-point format.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    library :: A handle to the FreeType library object.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    clazz   :: A pointer to the glyph's class.  Private.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    format  :: The format of the glyph's image.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    advance :: A 16.16 vector that gives the glyph's advance width.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_GlyphRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Library             library;
 | 
			
		||||
    const FT_Glyph_Class*  clazz;
 | 
			
		||||
    FT_Glyph_Format        format;
 | 
			
		||||
    FT_Vector              advance;
 | 
			
		||||
 | 
			
		||||
  } FT_GlyphRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_BitmapGlyph                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to an object used to model a bitmap glyph image.  This is */
 | 
			
		||||
  /*    a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct FT_BitmapGlyphRec_*  FT_BitmapGlyph;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_BitmapGlyphRec                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used for bitmap glyph images.  This really is a        */
 | 
			
		||||
  /*    `sub-class' of @FT_GlyphRec.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    root   :: The root @FT_Glyph fields.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    left   :: The left-side bearing, i.e., the horizontal distance     */
 | 
			
		||||
  /*              from the current pen position to the left border of the  */
 | 
			
		||||
  /*              glyph bitmap.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    top    :: The top-side bearing, i.e., the vertical distance from   */
 | 
			
		||||
  /*              the current pen position to the top border of the glyph  */
 | 
			
		||||
  /*              bitmap.  This distance is positive for upwards~y!        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    bitmap :: A descriptor for the bitmap.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have       */
 | 
			
		||||
  /*    `glyph->format == FT_GLYPH_FORMAT_BITMAP'.  This lets you access   */
 | 
			
		||||
  /*    the bitmap's contents easily.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The corresponding pixel buffer is always owned by @FT_BitmapGlyph  */
 | 
			
		||||
  /*    and is thus created and destroyed with it.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_BitmapGlyphRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_GlyphRec  root;
 | 
			
		||||
    FT_Int       left;
 | 
			
		||||
    FT_Int       top;
 | 
			
		||||
    FT_Bitmap    bitmap;
 | 
			
		||||
 | 
			
		||||
  } FT_BitmapGlyphRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_OutlineGlyph                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to an object used to model an outline glyph image.  This  */
 | 
			
		||||
  /*    is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct FT_OutlineGlyphRec_*  FT_OutlineGlyph;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_OutlineGlyphRec                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used for outline (vectorial) glyph images.  This       */
 | 
			
		||||
  /*    really is a `sub-class' of @FT_GlyphRec.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    root    :: The root @FT_Glyph fields.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    outline :: A descriptor for the outline.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have      */
 | 
			
		||||
  /*    `glyph->format == FT_GLYPH_FORMAT_OUTLINE'.  This lets you access  */
 | 
			
		||||
  /*    the outline's content easily.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    As the outline is extracted from a glyph slot, its coordinates are */
 | 
			
		||||
  /*    expressed normally in 26.6 pixels, unless the flag                 */
 | 
			
		||||
  /*    @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The outline's tables are always owned by the object and are        */
 | 
			
		||||
  /*    destroyed with it.                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_OutlineGlyphRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_GlyphRec  root;
 | 
			
		||||
    FT_Outline   outline;
 | 
			
		||||
 | 
			
		||||
  } FT_OutlineGlyphRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Glyph                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A function used to extract a glyph image from a slot.  Note that   */
 | 
			
		||||
  /*    the created @FT_Glyph object must be released with @FT_Done_Glyph. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    slot   :: A handle to the source glyph slot.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    aglyph :: A handle to the glyph object.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_Glyph( FT_GlyphSlot  slot,
 | 
			
		||||
                FT_Glyph     *aglyph );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Glyph_Copy                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A function used to copy a glyph image.  Note that the created      */
 | 
			
		||||
  /*    @FT_Glyph object must be released with @FT_Done_Glyph.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    source :: A handle to the source glyph object.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    target :: A handle to the target glyph object.  0~in case of       */
 | 
			
		||||
  /*              error.                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Glyph_Copy( FT_Glyph   source,
 | 
			
		||||
                 FT_Glyph  *target );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Glyph_Transform                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Transform a glyph image if its format is scalable.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    glyph  :: A handle to the target glyph object.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    matrix :: A pointer to a 2x2 matrix to apply.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    delta  :: A pointer to a 2d vector to apply.  Coordinates are      */
 | 
			
		||||
  /*              expressed in 1/64th of a pixel.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code (if not 0, the glyph format is not scalable).  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The 2x2 transformation matrix is also applied to the glyph's       */
 | 
			
		||||
  /*    advance vector.                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Glyph_Transform( FT_Glyph    glyph,
 | 
			
		||||
                      FT_Matrix*  matrix,
 | 
			
		||||
                      FT_Vector*  delta );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Enum>                                                                */
 | 
			
		||||
  /*    FT_Glyph_BBox_Mode                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The mode how the values of @FT_Glyph_Get_CBox are returned.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Values>                                                              */
 | 
			
		||||
  /*    FT_GLYPH_BBOX_UNSCALED ::                                          */
 | 
			
		||||
  /*      Return unscaled font units.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_GLYPH_BBOX_SUBPIXELS ::                                         */
 | 
			
		||||
  /*      Return unfitted 26.6 coordinates.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_GLYPH_BBOX_GRIDFIT ::                                           */
 | 
			
		||||
  /*      Return grid-fitted 26.6 coordinates.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_GLYPH_BBOX_TRUNCATE ::                                          */
 | 
			
		||||
  /*      Return coordinates in integer pixels.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_GLYPH_BBOX_PIXELS ::                                            */
 | 
			
		||||
  /*      Return grid-fitted pixel coordinates.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef enum  FT_Glyph_BBox_Mode_
 | 
			
		||||
  {
 | 
			
		||||
    FT_GLYPH_BBOX_UNSCALED  = 0,
 | 
			
		||||
    FT_GLYPH_BBOX_SUBPIXELS = 0,
 | 
			
		||||
    FT_GLYPH_BBOX_GRIDFIT   = 1,
 | 
			
		||||
    FT_GLYPH_BBOX_TRUNCATE  = 2,
 | 
			
		||||
    FT_GLYPH_BBOX_PIXELS    = 3
 | 
			
		||||
 | 
			
		||||
  } FT_Glyph_BBox_Mode;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* these constants are deprecated; use the corresponding */
 | 
			
		||||
  /* `FT_Glyph_BBox_Mode' values instead                   */
 | 
			
		||||
#define ft_glyph_bbox_unscaled   FT_GLYPH_BBOX_UNSCALED
 | 
			
		||||
#define ft_glyph_bbox_subpixels  FT_GLYPH_BBOX_SUBPIXELS
 | 
			
		||||
#define ft_glyph_bbox_gridfit    FT_GLYPH_BBOX_GRIDFIT
 | 
			
		||||
#define ft_glyph_bbox_truncate   FT_GLYPH_BBOX_TRUNCATE
 | 
			
		||||
#define ft_glyph_bbox_pixels     FT_GLYPH_BBOX_PIXELS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Glyph_Get_CBox                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return a glyph's `control box'.  The control box encloses all the  */
 | 
			
		||||
  /*    outline's points, including Bézier control points.  Though it      */
 | 
			
		||||
  /*    coincides with the exact bounding box for most glyphs, it can be   */
 | 
			
		||||
  /*    slightly larger in some situations (like when rotating an outline  */
 | 
			
		||||
  /*    that contains Bézier outside arcs).                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Computing the control box is very fast, while getting the bounding */
 | 
			
		||||
  /*    box can take much more time as it needs to walk over all segments  */
 | 
			
		||||
  /*    and arcs in the outline.  To get the latter, you can use the       */
 | 
			
		||||
  /*    `ftbbox' component, which is dedicated to this single task.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    glyph :: A handle to the source glyph object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    mode  :: The mode that indicates how to interpret the returned     */
 | 
			
		||||
  /*             bounding box values.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    acbox :: The glyph coordinate bounding box.  Coordinates are       */
 | 
			
		||||
  /*             expressed in 1/64th of pixels if it is grid-fitted.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    Coordinates are relative to the glyph origin, using the y~upwards  */
 | 
			
		||||
  /*    convention.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode'   */
 | 
			
		||||
  /*    must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font        */
 | 
			
		||||
  /*    units in 26.6 pixel format.  The value @FT_GLYPH_BBOX_SUBPIXELS    */
 | 
			
		||||
  /*    is another name for this constant.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    If the font is tricky and the glyph has been loaded with           */
 | 
			
		||||
  /*    @FT_LOAD_NO_SCALE, the resulting CBox is meaningless.  To get      */
 | 
			
		||||
  /*    reasonable values for the CBox it is necessary to load the glyph   */
 | 
			
		||||
  /*    at a large ppem value (so that the hinting instructions can        */
 | 
			
		||||
  /*    properly shift and scale the subglyphs), then extracting the CBox, */
 | 
			
		||||
  /*    which can be eventually converted back to font units.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Note that the maximum coordinates are exclusive, which means that  */
 | 
			
		||||
  /*    one can compute the width and height of the glyph image (be it in  */
 | 
			
		||||
  /*    integer or 26.6 pixels) as:                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    {                                                                  */
 | 
			
		||||
  /*      width  = bbox.xMax - bbox.xMin;                                  */
 | 
			
		||||
  /*      height = bbox.yMax - bbox.yMin;                                  */
 | 
			
		||||
  /*    }                                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Note also that for 26.6 coordinates, if `bbox_mode' is set to      */
 | 
			
		||||
  /*    @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted,  */
 | 
			
		||||
  /*    which corresponds to:                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    {                                                                  */
 | 
			
		||||
  /*      bbox.xMin = FLOOR(bbox.xMin);                                    */
 | 
			
		||||
  /*      bbox.yMin = FLOOR(bbox.yMin);                                    */
 | 
			
		||||
  /*      bbox.xMax = CEILING(bbox.xMax);                                  */
 | 
			
		||||
  /*      bbox.yMax = CEILING(bbox.yMax);                                  */
 | 
			
		||||
  /*    }                                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    To get the bbox in pixel coordinates, set `bbox_mode' to           */
 | 
			
		||||
  /*    @FT_GLYPH_BBOX_TRUNCATE.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    To get the bbox in grid-fitted pixel coordinates, set `bbox_mode'  */
 | 
			
		||||
  /*    to @FT_GLYPH_BBOX_PIXELS.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Glyph_Get_CBox( FT_Glyph  glyph,
 | 
			
		||||
                     FT_UInt   bbox_mode,
 | 
			
		||||
                     FT_BBox  *acbox );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Glyph_To_Bitmap                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Convert a given glyph object to a bitmap glyph object.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    the_glyph   :: A pointer to a handle to the target glyph.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    render_mode :: An enumeration that describes how the data is       */
 | 
			
		||||
  /*                   rendered.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    origin      :: A pointer to a vector used to translate the glyph   */
 | 
			
		||||
  /*                   image before rendering.  Can be~0 (if no            */
 | 
			
		||||
  /*                   translation).  The origin is expressed in           */
 | 
			
		||||
  /*                   26.6 pixels.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    destroy     :: A boolean that indicates that the original glyph    */
 | 
			
		||||
  /*                   image should be destroyed by this function.  It is  */
 | 
			
		||||
  /*                   never destroyed in case of error.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This function does nothing if the glyph format isn't scalable.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The glyph image is translated with the `origin' vector before      */
 | 
			
		||||
  /*    rendering.                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The first parameter is a pointer to an @FT_Glyph handle, that will */
 | 
			
		||||
  /*    be _replaced_ by this function (with newly allocated data).        */
 | 
			
		||||
  /*    Typically, you would use (omitting error handling):                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*      {                                                                */
 | 
			
		||||
  /*        FT_Glyph        glyph;                                         */
 | 
			
		||||
  /*        FT_BitmapGlyph  glyph_bitmap;                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        // load glyph                                                  */
 | 
			
		||||
  /*        error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT );     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        // extract glyph image                                         */
 | 
			
		||||
  /*        error = FT_Get_Glyph( face->glyph, &glyph );                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        // convert to a bitmap (default render mode + destroying old)  */
 | 
			
		||||
  /*        if ( glyph->format != FT_GLYPH_FORMAT_BITMAP )                 */
 | 
			
		||||
  /*        {                                                              */
 | 
			
		||||
  /*          error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL,   */
 | 
			
		||||
  /*                                      0, 1 );                          */
 | 
			
		||||
  /*          if ( error ) // `glyph' unchanged                            */
 | 
			
		||||
  /*            ...                                                        */
 | 
			
		||||
  /*        }                                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        // access bitmap content by typecasting                        */
 | 
			
		||||
  /*        glyph_bitmap = (FT_BitmapGlyph)glyph;                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        // do funny stuff with it, like blitting/drawing               */
 | 
			
		||||
  /*        ...                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        // discard glyph image (bitmap or not)                         */
 | 
			
		||||
  /*        FT_Done_Glyph( glyph );                                        */
 | 
			
		||||
  /*      }                                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Here another example, again without error handling:                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*      {                                                                */
 | 
			
		||||
  /*        FT_Glyph  glyphs[MAX_GLYPHS]                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        ...                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        for ( idx = 0; i < MAX_GLYPHS; i++ )                           */
 | 
			
		||||
  /*          error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) ||       */
 | 
			
		||||
  /*                  FT_Get_Glyph ( face->glyph, &glyph[idx] );           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        ...                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        for ( idx = 0; i < MAX_GLYPHS; i++ )                           */
 | 
			
		||||
  /*        {                                                              */
 | 
			
		||||
  /*          FT_Glyph  bitmap = glyphs[idx];                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*          ...                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*          // after this call, `bitmap' no longer points into           */
 | 
			
		||||
  /*          // the `glyphs' array (and the old value isn't destroyed)    */
 | 
			
		||||
  /*          FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 );    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*          ...                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*          FT_Done_Glyph( bitmap );                                     */
 | 
			
		||||
  /*        }                                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        ...                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*        for ( idx = 0; i < MAX_GLYPHS; i++ )                           */
 | 
			
		||||
  /*          FT_Done_Glyph( glyphs[idx] );                                */
 | 
			
		||||
  /*      }                                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Glyph_To_Bitmap( FT_Glyph*       the_glyph,
 | 
			
		||||
                      FT_Render_Mode  render_mode,
 | 
			
		||||
                      FT_Vector*      origin,
 | 
			
		||||
                      FT_Bool         destroy );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Done_Glyph                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Destroy a given glyph.                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    glyph :: A handle to the target glyph object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Done_Glyph( FT_Glyph  glyph );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* other helpful functions */
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    computations                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Matrix_Multiply                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Perform the matrix operation `b = a*b'.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    a :: A pointer to matrix `a'.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    b :: A pointer to matrix `b'.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The result is undefined if either `a' or `b' is zero.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Matrix_Multiply( const FT_Matrix*  a,
 | 
			
		||||
                      FT_Matrix*        b );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Matrix_Invert                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Invert a 2x2 matrix.  Return an error if it can't be inverted.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    matrix :: A pointer to the target matrix.  Remains untouched in    */
 | 
			
		||||
  /*              case of error.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Matrix_Invert( FT_Matrix*  matrix );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTGLYPH_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Local Variables: */
 | 
			
		||||
/* coding: utf-8    */
 | 
			
		||||
/* End:             */
 | 
			
		||||
@@ -1,357 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftgxval.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for validating TrueTypeGX/AAT tables (specification).   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2004-2015 by                                                 */
 | 
			
		||||
/*  Masatake YAMATO, Redhat K.K,                                           */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* gxvalid is derived from both gxlayout module and otvalid module.        */
 | 
			
		||||
/* Development of gxlayout is supported by the Information-technology      */
 | 
			
		||||
/* Promotion Agency(IPA), Japan.                                           */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTGXVAL_H__
 | 
			
		||||
#define __FTGXVAL_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    gx_validation                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    TrueTypeGX/AAT Validation                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    An API to validate TrueTypeGX/AAT tables.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of functions to validate     */
 | 
			
		||||
  /*    some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd,  */
 | 
			
		||||
  /*    trak, prop, lcar).                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Order>                                                               */
 | 
			
		||||
  /*    FT_TrueTypeGX_Validate                                             */
 | 
			
		||||
  /*    FT_TrueTypeGX_Free                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_ClassicKern_Validate                                            */
 | 
			
		||||
  /*    FT_ClassicKern_Free                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_VALIDATE_GX_LENGTH                                              */
 | 
			
		||||
  /*    FT_VALIDATE_GXXXX                                                  */
 | 
			
		||||
  /*    FT_VALIDATE_CKERNXXX                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Warning: Use FT_VALIDATE_XXX to validate a table.                     */
 | 
			
		||||
  /*          Following definitions are for gxvalid developers.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
#define FT_VALIDATE_feat_INDEX     0
 | 
			
		||||
#define FT_VALIDATE_mort_INDEX     1
 | 
			
		||||
#define FT_VALIDATE_morx_INDEX     2
 | 
			
		||||
#define FT_VALIDATE_bsln_INDEX     3
 | 
			
		||||
#define FT_VALIDATE_just_INDEX     4
 | 
			
		||||
#define FT_VALIDATE_kern_INDEX     5
 | 
			
		||||
#define FT_VALIDATE_opbd_INDEX     6
 | 
			
		||||
#define FT_VALIDATE_trak_INDEX     7
 | 
			
		||||
#define FT_VALIDATE_prop_INDEX     8
 | 
			
		||||
#define FT_VALIDATE_lcar_INDEX     9
 | 
			
		||||
#define FT_VALIDATE_GX_LAST_INDEX  FT_VALIDATE_lcar_INDEX
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_VALIDATE_GX_LENGTH
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The number of tables checked in this module.  Use it as a parameter
 | 
			
		||||
   *   for the `table-length' argument of function @FT_TrueTypeGX_Validate.
 | 
			
		||||
   */
 | 
			
		||||
#define FT_VALIDATE_GX_LENGTH     (FT_VALIDATE_GX_LAST_INDEX + 1)
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
  /* Up to 0x1000 is used by otvalid.
 | 
			
		||||
     Ox2xxx is reserved for feature OT extension. */
 | 
			
		||||
#define FT_VALIDATE_GX_START 0x4000
 | 
			
		||||
#define FT_VALIDATE_GX_BITFIELD( tag )                  \
 | 
			
		||||
  ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @enum:
 | 
			
		||||
  *    FT_VALIDATE_GXXXX
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    A list of bit-field constants used with @FT_TrueTypeGX_Validate to
 | 
			
		||||
  *    indicate which TrueTypeGX/AAT Type tables should be validated.
 | 
			
		||||
  *
 | 
			
		||||
  * @values:
 | 
			
		||||
  *    FT_VALIDATE_feat ::
 | 
			
		||||
  *      Validate `feat' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_mort ::
 | 
			
		||||
  *      Validate `mort' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_morx ::
 | 
			
		||||
  *      Validate `morx' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_bsln ::
 | 
			
		||||
  *      Validate `bsln' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_just ::
 | 
			
		||||
  *      Validate `just' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_kern ::
 | 
			
		||||
  *      Validate `kern' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_opbd ::
 | 
			
		||||
  *      Validate `opbd' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_trak ::
 | 
			
		||||
  *      Validate `trak' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_prop ::
 | 
			
		||||
  *      Validate `prop' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_lcar ::
 | 
			
		||||
  *      Validate `lcar' table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_GX ::
 | 
			
		||||
  *      Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern,
 | 
			
		||||
  *      opbd, trak, prop and lcar).
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
#define FT_VALIDATE_feat  FT_VALIDATE_GX_BITFIELD( feat )
 | 
			
		||||
#define FT_VALIDATE_mort  FT_VALIDATE_GX_BITFIELD( mort )
 | 
			
		||||
#define FT_VALIDATE_morx  FT_VALIDATE_GX_BITFIELD( morx )
 | 
			
		||||
#define FT_VALIDATE_bsln  FT_VALIDATE_GX_BITFIELD( bsln )
 | 
			
		||||
#define FT_VALIDATE_just  FT_VALIDATE_GX_BITFIELD( just )
 | 
			
		||||
#define FT_VALIDATE_kern  FT_VALIDATE_GX_BITFIELD( kern )
 | 
			
		||||
#define FT_VALIDATE_opbd  FT_VALIDATE_GX_BITFIELD( opbd )
 | 
			
		||||
#define FT_VALIDATE_trak  FT_VALIDATE_GX_BITFIELD( trak )
 | 
			
		||||
#define FT_VALIDATE_prop  FT_VALIDATE_GX_BITFIELD( prop )
 | 
			
		||||
#define FT_VALIDATE_lcar  FT_VALIDATE_GX_BITFIELD( lcar )
 | 
			
		||||
 | 
			
		||||
#define FT_VALIDATE_GX  ( FT_VALIDATE_feat | \
 | 
			
		||||
                          FT_VALIDATE_mort | \
 | 
			
		||||
                          FT_VALIDATE_morx | \
 | 
			
		||||
                          FT_VALIDATE_bsln | \
 | 
			
		||||
                          FT_VALIDATE_just | \
 | 
			
		||||
                          FT_VALIDATE_kern | \
 | 
			
		||||
                          FT_VALIDATE_opbd | \
 | 
			
		||||
                          FT_VALIDATE_trak | \
 | 
			
		||||
                          FT_VALIDATE_prop | \
 | 
			
		||||
                          FT_VALIDATE_lcar )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_TrueTypeGX_Validate
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Validate various TrueTypeGX tables to assure that all offsets and
 | 
			
		||||
  *    indices are valid.  The idea is that a higher-level library that
 | 
			
		||||
  *    actually does the text layout can access those tables without
 | 
			
		||||
  *    error checking (which can be quite time consuming).
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    validation_flags ::
 | 
			
		||||
  *       A bit field that specifies the tables to be validated.  See
 | 
			
		||||
  *       @FT_VALIDATE_GXXXX for possible values.
 | 
			
		||||
  *
 | 
			
		||||
  *    table_length ::
 | 
			
		||||
  *       The size of the `tables' array.  Normally, @FT_VALIDATE_GX_LENGTH
 | 
			
		||||
  *       should be passed.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    tables ::
 | 
			
		||||
  *       The array where all validated sfnt tables are stored.
 | 
			
		||||
  *       The array itself must be allocated by a client.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function only works with TrueTypeGX fonts, returning an error
 | 
			
		||||
  *   otherwise.
 | 
			
		||||
  *
 | 
			
		||||
  *   After use, the application should deallocate the buffers pointed to by
 | 
			
		||||
  *   each `tables' element, by calling @FT_TrueTypeGX_Free.  A NULL value
 | 
			
		||||
  *   indicates that the table either doesn't exist in the font, the
 | 
			
		||||
  *   application hasn't asked for validation, or the validator doesn't have
 | 
			
		||||
  *   the ability to validate the sfnt table.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_TrueTypeGX_Validate( FT_Face   face,
 | 
			
		||||
                          FT_UInt   validation_flags,
 | 
			
		||||
                          FT_Bytes  tables[FT_VALIDATE_GX_LENGTH],
 | 
			
		||||
                          FT_UInt   table_length );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_TrueTypeGX_Free
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Free the buffer allocated by TrueTypeGX validator.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    table ::
 | 
			
		||||
  *       The pointer to the buffer allocated by
 | 
			
		||||
  *       @FT_TrueTypeGX_Validate.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function must be used to free the buffer allocated by
 | 
			
		||||
  *   @FT_TrueTypeGX_Validate only.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_TrueTypeGX_Free( FT_Face   face,
 | 
			
		||||
                      FT_Bytes  table );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @enum:
 | 
			
		||||
  *    FT_VALIDATE_CKERNXXX
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    A list of bit-field constants used with @FT_ClassicKern_Validate
 | 
			
		||||
  *    to indicate the classic kern dialect or dialects.  If the selected
 | 
			
		||||
  *    type doesn't fit, @FT_ClassicKern_Validate regards the table as
 | 
			
		||||
  *    invalid.
 | 
			
		||||
  *
 | 
			
		||||
  * @values:
 | 
			
		||||
  *    FT_VALIDATE_MS ::
 | 
			
		||||
  *      Handle the `kern' table as a classic Microsoft kern table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_APPLE ::
 | 
			
		||||
  *      Handle the `kern' table as a classic Apple kern table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_CKERN ::
 | 
			
		||||
  *      Handle the `kern' as either classic Apple or Microsoft kern table.
 | 
			
		||||
  */
 | 
			
		||||
#define FT_VALIDATE_MS     ( FT_VALIDATE_GX_START << 0 )
 | 
			
		||||
#define FT_VALIDATE_APPLE  ( FT_VALIDATE_GX_START << 1 )
 | 
			
		||||
 | 
			
		||||
#define FT_VALIDATE_CKERN  ( FT_VALIDATE_MS | FT_VALIDATE_APPLE )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_ClassicKern_Validate
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Validate classic (16-bit format) kern table to assure that the offsets
 | 
			
		||||
  *    and indices are valid.  The idea is that a higher-level library that
 | 
			
		||||
  *    actually does the text layout can access those tables without error
 | 
			
		||||
  *    checking (which can be quite time consuming).
 | 
			
		||||
  *
 | 
			
		||||
  *    The `kern' table validator in @FT_TrueTypeGX_Validate deals with both
 | 
			
		||||
  *    the new 32-bit format and the classic 16-bit format, while
 | 
			
		||||
  *    FT_ClassicKern_Validate only supports the classic 16-bit format.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    validation_flags ::
 | 
			
		||||
  *       A bit field that specifies the dialect to be validated.  See
 | 
			
		||||
  *       @FT_VALIDATE_CKERNXXX for possible values.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    ckern_table ::
 | 
			
		||||
  *       A pointer to the kern table.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   After use, the application should deallocate the buffers pointed to by
 | 
			
		||||
  *   `ckern_table', by calling @FT_ClassicKern_Free.  A NULL value
 | 
			
		||||
  *   indicates that the table doesn't exist in the font.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_ClassicKern_Validate( FT_Face    face,
 | 
			
		||||
                           FT_UInt    validation_flags,
 | 
			
		||||
                           FT_Bytes  *ckern_table );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_ClassicKern_Free
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Free the buffer allocated by classic Kern validator.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    table ::
 | 
			
		||||
  *       The pointer to the buffer that is allocated by
 | 
			
		||||
  *       @FT_ClassicKern_Validate.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function must be used to free the buffer allocated by
 | 
			
		||||
  *   @FT_ClassicKern_Validate only.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_ClassicKern_Free( FT_Face   face,
 | 
			
		||||
                       FT_Bytes  table );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTGXVAL_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,148 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftgzip.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Gzip-compressed stream support.                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTGZIP_H__
 | 
			
		||||
#define __FTGZIP_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    gzip                                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    GZIP Streams                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Using gzip-compressed font files.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of Gzip-specific functions.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *   FT_Stream_OpenGzip
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   Open a new stream to parse gzip-compressed font files.  This is
 | 
			
		||||
  *   mainly used to support the compressed `*.pcf.gz' fonts that come
 | 
			
		||||
  *   with XFree86.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *   stream ::
 | 
			
		||||
  *     The target embedding stream.
 | 
			
		||||
  *
 | 
			
		||||
  *   source ::
 | 
			
		||||
  *     The source stream.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   The source stream must be opened _before_ calling this function.
 | 
			
		||||
  *
 | 
			
		||||
  *   Calling the internal function `FT_Stream_Close' on the new stream will
 | 
			
		||||
  *   *not* call `FT_Stream_Close' on the source stream.  None of the stream
 | 
			
		||||
  *   objects will be released to the heap.
 | 
			
		||||
  *
 | 
			
		||||
  *   The stream implementation is very basic and resets the decompression
 | 
			
		||||
  *   process each time seeking backwards is needed within the stream.
 | 
			
		||||
  *
 | 
			
		||||
  *   In certain builds of the library, gzip compression recognition is
 | 
			
		||||
  *   automatically handled when calling @FT_New_Face or @FT_Open_Face.
 | 
			
		||||
  *   This means that if no font driver is capable of handling the raw
 | 
			
		||||
  *   compressed file, the library will try to open a gzipped stream from
 | 
			
		||||
  *   it and re-open the face with it.
 | 
			
		||||
  *
 | 
			
		||||
  *   This function may return `FT_Err_Unimplemented_Feature' if your build
 | 
			
		||||
  *   of FreeType was not compiled with zlib support.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stream_OpenGzip( FT_Stream  stream,
 | 
			
		||||
                      FT_Stream  source );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *   FT_Gzip_Uncompress
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   Decompress a zipped input buffer into an output buffer.  This function
 | 
			
		||||
  *   is modeled after zlib's `uncompress' function.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *   memory ::
 | 
			
		||||
  *     A FreeType memory handle.
 | 
			
		||||
  *
 | 
			
		||||
  *   input ::
 | 
			
		||||
  *     The input buffer.
 | 
			
		||||
  *
 | 
			
		||||
  *   input_len ::
 | 
			
		||||
  *     The length of the input buffer.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *   output::
 | 
			
		||||
  *     The output buffer.
 | 
			
		||||
  *
 | 
			
		||||
  * @inout:
 | 
			
		||||
  *   output_len ::
 | 
			
		||||
  *     Before calling the function, this is the the total size of the
 | 
			
		||||
  *     output buffer, which must be large enough to hold the entire
 | 
			
		||||
  *     uncompressed data (so the size of the uncompressed data must be
 | 
			
		||||
  *     known in advance).  After calling the function, `output_len' is the
 | 
			
		||||
  *     size of the used data in `output'.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function may return `FT_Err_Unimplemented_Feature' if your build
 | 
			
		||||
  *   of FreeType was not compiled with zlib support.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Gzip_Uncompress( FT_Memory       memory,
 | 
			
		||||
                      FT_Byte*        output,
 | 
			
		||||
                      FT_ULong*       output_len,
 | 
			
		||||
                      const FT_Byte*  input,
 | 
			
		||||
                      FT_ULong        input_len );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTGZIP_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,354 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftincrem.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType incremental loading (specification).                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTINCREM_H__
 | 
			
		||||
#define __FTINCREM_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @section:
 | 
			
		||||
   *    incremental
 | 
			
		||||
   *
 | 
			
		||||
   * @title:
 | 
			
		||||
   *    Incremental Loading
 | 
			
		||||
   *
 | 
			
		||||
   * @abstract:
 | 
			
		||||
   *    Custom Glyph Loading.
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This section contains various functions used to perform so-called
 | 
			
		||||
   *   `incremental' glyph loading.  This is a mode where all glyphs loaded
 | 
			
		||||
   *   from a given @FT_Face are provided by the client application.
 | 
			
		||||
   *
 | 
			
		||||
   *   Apart from that, all other tables are loaded normally from the font
 | 
			
		||||
   *   file.  This mode is useful when FreeType is used within another
 | 
			
		||||
   *   engine, e.g., a PostScript Imaging Processor.
 | 
			
		||||
   *
 | 
			
		||||
   *   To enable this mode, you must use @FT_Open_Face, passing an
 | 
			
		||||
   *   @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an
 | 
			
		||||
   *   @FT_Incremental_Interface value.  See the comments for
 | 
			
		||||
   *   @FT_Incremental_InterfaceRec for an example.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Incremental
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   An opaque type describing a user-provided object used to implement
 | 
			
		||||
   *   `incremental' glyph loading within FreeType.  This is used to support
 | 
			
		||||
   *   embedded fonts in certain environments (e.g., PostScript interpreters),
 | 
			
		||||
   *   where the glyph data isn't in the font file, or must be overridden by
 | 
			
		||||
   *   different values.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   It is up to client applications to create and implement @FT_Incremental
 | 
			
		||||
   *   objects, as long as they provide implementations for the methods
 | 
			
		||||
   *   @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc
 | 
			
		||||
   *   and @FT_Incremental_GetGlyphMetricsFunc.
 | 
			
		||||
   *
 | 
			
		||||
   *   See the description of @FT_Incremental_InterfaceRec to understand how
 | 
			
		||||
   *   to use incremental objects with FreeType.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct FT_IncrementalRec_*  FT_Incremental;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_Incremental_MetricsRec
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A small structure used to contain the basic glyph metrics returned
 | 
			
		||||
   *   by the @FT_Incremental_GetGlyphMetricsFunc method.
 | 
			
		||||
   *
 | 
			
		||||
   * @fields:
 | 
			
		||||
   *   bearing_x ::
 | 
			
		||||
   *     Left bearing, in font units.
 | 
			
		||||
   *
 | 
			
		||||
   *   bearing_y ::
 | 
			
		||||
   *     Top bearing, in font units.
 | 
			
		||||
   *
 | 
			
		||||
   *   advance ::
 | 
			
		||||
   *     Horizontal component of glyph advance, in font units.
 | 
			
		||||
   *
 | 
			
		||||
   *   advance_v ::
 | 
			
		||||
   *     Vertical component of glyph advance, in font units.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   These correspond to horizontal or vertical metrics depending on the
 | 
			
		||||
   *   value of the `vertical' argument to the function
 | 
			
		||||
   *   @FT_Incremental_GetGlyphMetricsFunc.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  FT_Incremental_MetricsRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Long  bearing_x;
 | 
			
		||||
    FT_Long  bearing_y;
 | 
			
		||||
    FT_Long  advance;
 | 
			
		||||
    FT_Long  advance_v;     /* since 2.3.12 */
 | 
			
		||||
 | 
			
		||||
  } FT_Incremental_MetricsRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_Incremental_Metrics
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A handle to an @FT_Incremental_MetricsRec structure.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
   typedef struct FT_Incremental_MetricsRec_*  FT_Incremental_Metrics;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Incremental_GetGlyphDataFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function called by FreeType to access a given glyph's data bytes
 | 
			
		||||
   *   during @FT_Load_Glyph or @FT_Load_Char if incremental loading is
 | 
			
		||||
   *   enabled.
 | 
			
		||||
   *
 | 
			
		||||
   *   Note that the format of the glyph's data bytes depends on the font
 | 
			
		||||
   *   file format.  For TrueType, it must correspond to the raw bytes within
 | 
			
		||||
   *   the `glyf' table.  For PostScript formats, it must correspond to the
 | 
			
		||||
   *   *unencrypted* charstring bytes, without any `lenIV' header.  It is
 | 
			
		||||
   *   undefined for any other format.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   incremental ::
 | 
			
		||||
   *     Handle to an opaque @FT_Incremental handle provided by the client
 | 
			
		||||
   *     application.
 | 
			
		||||
   *
 | 
			
		||||
   *   glyph_index ::
 | 
			
		||||
   *     Index of relevant glyph.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   adata ::
 | 
			
		||||
   *     A structure describing the returned glyph data bytes (which will be
 | 
			
		||||
   *     accessed as a read-only byte block).
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   If this function returns successfully the method
 | 
			
		||||
   *   @FT_Incremental_FreeGlyphDataFunc will be called later to release
 | 
			
		||||
   *   the data bytes.
 | 
			
		||||
   *
 | 
			
		||||
   *   Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for
 | 
			
		||||
   *   compound glyphs.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental  incremental,
 | 
			
		||||
                                      FT_UInt         glyph_index,
 | 
			
		||||
                                      FT_Data*        adata );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Incremental_FreeGlyphDataFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to release the glyph data bytes returned by a
 | 
			
		||||
   *   successful call to @FT_Incremental_GetGlyphDataFunc.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   incremental ::
 | 
			
		||||
   *     A handle to an opaque @FT_Incremental handle provided by the client
 | 
			
		||||
   *     application.
 | 
			
		||||
   *
 | 
			
		||||
   *   data ::
 | 
			
		||||
   *     A structure describing the glyph data bytes (which will be accessed
 | 
			
		||||
   *     as a read-only byte block).
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental  incremental,
 | 
			
		||||
                                       FT_Data*        data );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Incremental_GetGlyphMetricsFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to retrieve the basic metrics of a given glyph index
 | 
			
		||||
   *   before accessing its data.  This is necessary because, in certain
 | 
			
		||||
   *   formats like TrueType, the metrics are stored in a different place from
 | 
			
		||||
   *   the glyph images proper.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   incremental ::
 | 
			
		||||
   *     A handle to an opaque @FT_Incremental handle provided by the client
 | 
			
		||||
   *     application.
 | 
			
		||||
   *
 | 
			
		||||
   *   glyph_index ::
 | 
			
		||||
   *     Index of relevant glyph.
 | 
			
		||||
   *
 | 
			
		||||
   *   vertical ::
 | 
			
		||||
   *     If true, return vertical metrics.
 | 
			
		||||
   *
 | 
			
		||||
   *   ametrics ::
 | 
			
		||||
   *     This parameter is used for both input and output.
 | 
			
		||||
   *     The original glyph metrics, if any, in font units.  If metrics are
 | 
			
		||||
   *     not available all the values must be set to zero.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   ametrics ::
 | 
			
		||||
   *     The replacement glyph metrics in font units.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Incremental_GetGlyphMetricsFunc)
 | 
			
		||||
                      ( FT_Incremental              incremental,
 | 
			
		||||
                        FT_UInt                     glyph_index,
 | 
			
		||||
                        FT_Bool                     vertical,
 | 
			
		||||
                        FT_Incremental_MetricsRec  *ametrics );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_Incremental_FuncsRec
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A table of functions for accessing fonts that load data
 | 
			
		||||
   *   incrementally.  Used in @FT_Incremental_InterfaceRec.
 | 
			
		||||
   *
 | 
			
		||||
   * @fields:
 | 
			
		||||
   *   get_glyph_data ::
 | 
			
		||||
   *     The function to get glyph data.  Must not be null.
 | 
			
		||||
   *
 | 
			
		||||
   *   free_glyph_data ::
 | 
			
		||||
   *     The function to release glyph data.  Must not be null.
 | 
			
		||||
   *
 | 
			
		||||
   *   get_glyph_metrics ::
 | 
			
		||||
   *     The function to get glyph metrics.  May be null if the font does
 | 
			
		||||
   *     not provide overriding glyph metrics.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  FT_Incremental_FuncsRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Incremental_GetGlyphDataFunc     get_glyph_data;
 | 
			
		||||
    FT_Incremental_FreeGlyphDataFunc    free_glyph_data;
 | 
			
		||||
    FT_Incremental_GetGlyphMetricsFunc  get_glyph_metrics;
 | 
			
		||||
 | 
			
		||||
  } FT_Incremental_FuncsRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_Incremental_InterfaceRec
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A structure to be used with @FT_Open_Face to indicate that the user
 | 
			
		||||
   *   wants to support incremental glyph loading.  You should use it with
 | 
			
		||||
   *   @FT_PARAM_TAG_INCREMENTAL as in the following example:
 | 
			
		||||
   *
 | 
			
		||||
   *     {
 | 
			
		||||
   *       FT_Incremental_InterfaceRec  inc_int;
 | 
			
		||||
   *       FT_Parameter                 parameter;
 | 
			
		||||
   *       FT_Open_Args                 open_args;
 | 
			
		||||
   *
 | 
			
		||||
   *
 | 
			
		||||
   *       // set up incremental descriptor
 | 
			
		||||
   *       inc_int.funcs  = my_funcs;
 | 
			
		||||
   *       inc_int.object = my_object;
 | 
			
		||||
   *
 | 
			
		||||
   *       // set up optional parameter
 | 
			
		||||
   *       parameter.tag  = FT_PARAM_TAG_INCREMENTAL;
 | 
			
		||||
   *       parameter.data = &inc_int;
 | 
			
		||||
   *
 | 
			
		||||
   *       // set up FT_Open_Args structure
 | 
			
		||||
   *       open_args.flags      = FT_OPEN_PATHNAME | FT_OPEN_PARAMS;
 | 
			
		||||
   *       open_args.pathname   = my_font_pathname;
 | 
			
		||||
   *       open_args.num_params = 1;
 | 
			
		||||
   *       open_args.params     = ¶meter; // we use one optional argument
 | 
			
		||||
   *
 | 
			
		||||
   *       // open the font
 | 
			
		||||
   *       error = FT_Open_Face( library, &open_args, index, &face );
 | 
			
		||||
   *       ...
 | 
			
		||||
   *     }
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  FT_Incremental_InterfaceRec_
 | 
			
		||||
  {
 | 
			
		||||
    const FT_Incremental_FuncsRec*  funcs;
 | 
			
		||||
    FT_Incremental                  object;
 | 
			
		||||
 | 
			
		||||
  } FT_Incremental_InterfaceRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Incremental_Interface
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A pointer to an @FT_Incremental_InterfaceRec structure.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Incremental_InterfaceRec*   FT_Incremental_Interface;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @constant:
 | 
			
		||||
   *   FT_PARAM_TAG_INCREMENTAL
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A constant used as the tag of @FT_Parameter structures to indicate
 | 
			
		||||
   *   an incremental loading object to be used by FreeType.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_PARAM_TAG_INCREMENTAL  FT_MAKE_TAG( 'i', 'n', 'c', 'r' )
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTINCREM_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,293 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftlcdfil.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for color filtering of subpixel bitmap glyphs           */
 | 
			
		||||
/*    (specification).                                                     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2006-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FT_LCD_FILTER_H__
 | 
			
		||||
#define __FT_LCD_FILTER_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @section:
 | 
			
		||||
   *   lcd_filtering
 | 
			
		||||
   *
 | 
			
		||||
   * @title:
 | 
			
		||||
   *   LCD Filtering
 | 
			
		||||
   *
 | 
			
		||||
   * @abstract:
 | 
			
		||||
   *   Reduce color fringes of subpixel-rendered bitmaps.
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Subpixel rendering exploits the color-striped structure of LCD
 | 
			
		||||
   *   pixels, increasing the available resolution in the direction of the
 | 
			
		||||
   *   stripe (usually horizontal RGB) by a factor of~3.  Since these
 | 
			
		||||
   *   subpixels are color pixels, using them unfiltered creates severe
 | 
			
		||||
   *   color fringes.  Use the @FT_Library_SetLcdFilter API to specify a
 | 
			
		||||
   *   low-pass filter, which is then applied to subpixel-rendered bitmaps
 | 
			
		||||
   *   generated through @FT_Render_Glyph.  The filter sacrifices some of
 | 
			
		||||
   *   the higher resolution to reduce color fringes, making the glyph image
 | 
			
		||||
   *   slightly blurrier.  Positional improvements will remain.
 | 
			
		||||
   *
 | 
			
		||||
   *   Note that no filter is active by default, and that this function is
 | 
			
		||||
   *   *not* implemented in default builds of the library.  You need to
 | 
			
		||||
   *   #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file
 | 
			
		||||
   *   in order to activate it.
 | 
			
		||||
   *
 | 
			
		||||
   *   A filter should have two properties:
 | 
			
		||||
   *
 | 
			
		||||
   *   1) It should be normalized, meaning the sum of the 5~components
 | 
			
		||||
   *      should be 256 (0x100).  It is possible to go above or under this
 | 
			
		||||
   *      target sum, however: going under means tossing out contrast, going
 | 
			
		||||
   *      over means invoking clamping and thereby non-linearities that
 | 
			
		||||
   *      increase contrast somewhat at the expense of greater distortion
 | 
			
		||||
   *      and color-fringing.  Contrast is better enhanced through stem
 | 
			
		||||
   *      darkening.
 | 
			
		||||
   *
 | 
			
		||||
   *   2) It should be color-balanced, meaning a filter `{~a, b, c, b, a~}'
 | 
			
		||||
   *      where a~+ b~=~c.  It distributes the computed coverage for one
 | 
			
		||||
   *      subpixel to all subpixels equally, sacrificing some won resolution
 | 
			
		||||
   *      but drastically reducing color-fringing.  Positioning improvements
 | 
			
		||||
   *      remain!  Note that color-fringing can only really be minimized
 | 
			
		||||
   *      when using a color-balanced filter and alpha-blending the glyph
 | 
			
		||||
   *      onto a surface in linear space; see @FT_Render_Glyph.
 | 
			
		||||
   *
 | 
			
		||||
   *   Regarding the form, a filter can be a `boxy' filter or a `beveled'
 | 
			
		||||
   *   filter.  Boxy filters are sharper but are less forgiving of non-ideal
 | 
			
		||||
   *   gamma curves of a screen (viewing angles!), beveled filters are
 | 
			
		||||
   *   fuzzier but more tolerant.
 | 
			
		||||
   *
 | 
			
		||||
   *   Examples:
 | 
			
		||||
   *
 | 
			
		||||
   *   - [0x10 0x40 0x70 0x40 0x10] is beveled and neither balanced nor
 | 
			
		||||
   *     normalized.
 | 
			
		||||
   *
 | 
			
		||||
   *   - [0x1A 0x33 0x4D 0x33 0x1A] is beveled and balanced but not
 | 
			
		||||
   *     normalized.
 | 
			
		||||
   *
 | 
			
		||||
   *   - [0x19 0x33 0x66 0x4c 0x19] is beveled and normalized but not
 | 
			
		||||
   *     balanced.
 | 
			
		||||
   *
 | 
			
		||||
   *   - [0x00 0x4c 0x66 0x4c 0x00] is boxily beveled and normalized but not
 | 
			
		||||
   *     balanced.
 | 
			
		||||
   *
 | 
			
		||||
   *   - [0x00 0x55 0x56 0x55 0x00] is boxy, normalized, and almost
 | 
			
		||||
   *     balanced.
 | 
			
		||||
   *
 | 
			
		||||
   *   - [0x08 0x4D 0x56 0x4D 0x08] is beveled, normalized and, almost
 | 
			
		||||
   *     balanced.
 | 
			
		||||
   *
 | 
			
		||||
   *   It is important to understand that linear alpha blending and gamma
 | 
			
		||||
   *   correction is critical for correctly rendering glyphs onto surfaces
 | 
			
		||||
   *   without artifacts and even more critical when subpixel rendering is
 | 
			
		||||
   *   involved.
 | 
			
		||||
   *
 | 
			
		||||
   *   Each of the 3~alpha values (subpixels) is independently used to blend
 | 
			
		||||
   *   one color channel.  That is, red alpha blends the red channel of the
 | 
			
		||||
   *   text color with the red channel of the background pixel.  The
 | 
			
		||||
   *   distribution of density values by the color-balanced filter assumes
 | 
			
		||||
   *   alpha blending is done in linear space; only then color artifacts
 | 
			
		||||
   *   cancel out.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /****************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   FT_LcdFilter
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A list of values to identify various types of LCD filters.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_LCD_FILTER_NONE ::
 | 
			
		||||
   *     Do not perform filtering.  When used with subpixel rendering, this
 | 
			
		||||
   *     results in sometimes severe color fringes.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_LCD_FILTER_DEFAULT ::
 | 
			
		||||
   *     The default filter reduces color fringes considerably, at the cost
 | 
			
		||||
   *     of a slight blurriness in the output.
 | 
			
		||||
   *
 | 
			
		||||
   *     It is a beveled, normalized, and color-balanced five-tap filter
 | 
			
		||||
   *     that is more forgiving to screens with non-ideal gamma curves and
 | 
			
		||||
   *     viewing angles.  Note that while color-fringing is reduced, it can
 | 
			
		||||
   *     only be minimized by using linear alpha blending and gamma
 | 
			
		||||
   *     correction to render glyphs onto surfaces.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_LCD_FILTER_LIGHT ::
 | 
			
		||||
   *     The light filter is a variant that is sharper at the cost of
 | 
			
		||||
   *     slightly more color fringes than the default one.
 | 
			
		||||
   *
 | 
			
		||||
   *     It is a boxy, normalized, and color-balanced three-tap filter that
 | 
			
		||||
   *     is less forgiving to screens with non-ideal gamma curves and
 | 
			
		||||
   *     viewing angles.  This filter works best when the rendering system
 | 
			
		||||
   *     uses linear alpha blending and gamma correction to render glyphs
 | 
			
		||||
   *     onto surfaces.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_LCD_FILTER_LEGACY ::
 | 
			
		||||
   *     This filter corresponds to the original libXft color filter.  It
 | 
			
		||||
   *     provides high contrast output but can exhibit really bad color
 | 
			
		||||
   *     fringes if glyphs are not extremely well hinted to the pixel grid.
 | 
			
		||||
   *     In other words, it only works well if the TrueType bytecode
 | 
			
		||||
   *     interpreter is enabled *and* high-quality hinted fonts are used.
 | 
			
		||||
   *
 | 
			
		||||
   *     This filter is only provided for comparison purposes, and might be
 | 
			
		||||
   *     disabled or stay unsupported in the future.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_LCD_FILTER_LEGACY1 ::
 | 
			
		||||
   *     For historical reasons, the FontConfig library returns a different
 | 
			
		||||
   *     enumeration value for legacy LCD filtering.  To make code work that
 | 
			
		||||
   *     (incorrectly) forwards FontConfig's enumeration value to
 | 
			
		||||
   *     @FT_Library_SetLcdFilter without proper mapping, it is thus easiest
 | 
			
		||||
   *     to have another enumeration value, which is completely equal to
 | 
			
		||||
   *     `FT_LCD_FILTER_LEGACY'.
 | 
			
		||||
   *
 | 
			
		||||
   * @since:
 | 
			
		||||
   *   2.3.0 (`FT_LCD_FILTER_LEGACY1' since 2.6.2)
 | 
			
		||||
   */
 | 
			
		||||
  typedef enum  FT_LcdFilter_
 | 
			
		||||
  {
 | 
			
		||||
    FT_LCD_FILTER_NONE    = 0,
 | 
			
		||||
    FT_LCD_FILTER_DEFAULT = 1,
 | 
			
		||||
    FT_LCD_FILTER_LIGHT   = 2,
 | 
			
		||||
    FT_LCD_FILTER_LEGACY1 = 3,
 | 
			
		||||
    FT_LCD_FILTER_LEGACY  = 16,
 | 
			
		||||
 | 
			
		||||
    FT_LCD_FILTER_MAX   /* do not remove */
 | 
			
		||||
 | 
			
		||||
  } FT_LcdFilter;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @func:
 | 
			
		||||
   *   FT_Library_SetLcdFilter
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This function is used to apply color filtering to LCD decimated
 | 
			
		||||
   *   bitmaps, like the ones used when calling @FT_Render_Glyph with
 | 
			
		||||
   *   @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   library ::
 | 
			
		||||
   *     A handle to the target library instance.
 | 
			
		||||
   *
 | 
			
		||||
   *   filter ::
 | 
			
		||||
   *     The filter type.
 | 
			
		||||
   *
 | 
			
		||||
   *     You can use @FT_LCD_FILTER_NONE here to disable this feature, or
 | 
			
		||||
   *     @FT_LCD_FILTER_DEFAULT to use a default filter that should work
 | 
			
		||||
   *     well on most LCD screens.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This feature is always disabled by default.  Clients must make an
 | 
			
		||||
   *   explicit call to this function with a `filter' value other than
 | 
			
		||||
   *   @FT_LCD_FILTER_NONE in order to enable it.
 | 
			
		||||
   *
 | 
			
		||||
   *   Due to *PATENTS* covering subpixel rendering, this function doesn't
 | 
			
		||||
   *   do anything except returning `FT_Err_Unimplemented_Feature' if the
 | 
			
		||||
   *   configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
 | 
			
		||||
   *   defined in your build of the library, which should correspond to all
 | 
			
		||||
   *   default builds of FreeType.
 | 
			
		||||
   *
 | 
			
		||||
   *   The filter affects glyph bitmaps rendered through @FT_Render_Glyph,
 | 
			
		||||
   *   @FT_Outline_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char.
 | 
			
		||||
   *
 | 
			
		||||
   *   It does _not_ affect the output of @FT_Outline_Render and
 | 
			
		||||
   *   @FT_Outline_Get_Bitmap.
 | 
			
		||||
   *
 | 
			
		||||
   *   If this feature is activated, the dimensions of LCD glyph bitmaps are
 | 
			
		||||
   *   either larger or taller than the dimensions of the corresponding
 | 
			
		||||
   *   outline with regards to the pixel grid.  For example, for
 | 
			
		||||
   *   @FT_RENDER_MODE_LCD, the filter adds up to 3~pixels to the left, and
 | 
			
		||||
   *   up to 3~pixels to the right.
 | 
			
		||||
   *
 | 
			
		||||
   *   The bitmap offset values are adjusted correctly, so clients shouldn't
 | 
			
		||||
   *   need to modify their layout and glyph positioning code when enabling
 | 
			
		||||
   *   the filter.
 | 
			
		||||
   *
 | 
			
		||||
   * @since:
 | 
			
		||||
   *   2.3.0
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Library_SetLcdFilter( FT_Library    library,
 | 
			
		||||
                           FT_LcdFilter  filter );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @func:
 | 
			
		||||
   *   FT_Library_SetLcdFilterWeights
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Use this function to override the filter weights selected by
 | 
			
		||||
   *   @FT_Library_SetLcdFilter.  By default, FreeType uses the quintuple
 | 
			
		||||
   *   (0x00, 0x55, 0x56, 0x55, 0x00) for FT_LCD_FILTER_LIGHT, and (0x10,
 | 
			
		||||
   *   0x40, 0x70, 0x40, 0x10) for FT_LCD_FILTER_DEFAULT and
 | 
			
		||||
   *   FT_LCD_FILTER_LEGACY.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   library ::
 | 
			
		||||
   *     A handle to the target library instance.
 | 
			
		||||
   *
 | 
			
		||||
   *   weights ::
 | 
			
		||||
   *     A pointer to an array; the function copies the first five bytes and
 | 
			
		||||
   *     uses them to specify the filter weights.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   Due to *PATENTS* covering subpixel rendering, this function doesn't
 | 
			
		||||
   *   do anything except returning `FT_Err_Unimplemented_Feature' if the
 | 
			
		||||
   *   configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
 | 
			
		||||
   *   defined in your build of the library, which should correspond to all
 | 
			
		||||
   *   default builds of FreeType.
 | 
			
		||||
   *
 | 
			
		||||
   *   This function must be called after @FT_Library_SetLcdFilter to have
 | 
			
		||||
   *   any effect.
 | 
			
		||||
   *
 | 
			
		||||
   * @since:
 | 
			
		||||
   *   2.4.0
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Library_SetLcdFilterWeights( FT_Library      library,
 | 
			
		||||
                                  unsigned char  *weights );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FT_LCD_FILTER_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,276 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftlist.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Generic list support for FreeType (specification).                   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*  This file implements functions relative to list processing.  Its     */
 | 
			
		||||
  /*  data structures are defined in `freetype.h'.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTLIST_H__
 | 
			
		||||
#define __FTLIST_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    list_processing                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    List Processing                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Simple management of lists.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains various definitions related to list          */
 | 
			
		||||
  /*    processing using doubly-linked nodes.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Order>                                                               */
 | 
			
		||||
  /*    FT_List                                                            */
 | 
			
		||||
  /*    FT_ListNode                                                        */
 | 
			
		||||
  /*    FT_ListRec                                                         */
 | 
			
		||||
  /*    FT_ListNodeRec                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_List_Add                                                        */
 | 
			
		||||
  /*    FT_List_Insert                                                     */
 | 
			
		||||
  /*    FT_List_Find                                                       */
 | 
			
		||||
  /*    FT_List_Remove                                                     */
 | 
			
		||||
  /*    FT_List_Up                                                         */
 | 
			
		||||
  /*    FT_List_Iterate                                                    */
 | 
			
		||||
  /*    FT_List_Iterator                                                   */
 | 
			
		||||
  /*    FT_List_Finalize                                                   */
 | 
			
		||||
  /*    FT_List_Destructor                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Find                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Find the list node for a given listed object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    list :: A pointer to the parent list.                              */
 | 
			
		||||
  /*    data :: The address of the listed object.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    List node.  NULL if it wasn't found.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_ListNode )
 | 
			
		||||
  FT_List_Find( FT_List  list,
 | 
			
		||||
                void*    data );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Add                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Append an element to the end of a list.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    list :: A pointer to the parent list.                              */
 | 
			
		||||
  /*    node :: The node to append.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_List_Add( FT_List      list,
 | 
			
		||||
               FT_ListNode  node );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Insert                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Insert an element at the head of a list.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    list :: A pointer to parent list.                                  */
 | 
			
		||||
  /*    node :: The node to insert.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_List_Insert( FT_List      list,
 | 
			
		||||
                  FT_ListNode  node );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Remove                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Remove a node from a list.  This function doesn't check whether    */
 | 
			
		||||
  /*    the node is in the list!                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    node :: The node to remove.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    list :: A pointer to the parent list.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_List_Remove( FT_List      list,
 | 
			
		||||
                  FT_ListNode  node );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Up                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Move a node to the head/top of a list.  Used to maintain LRU       */
 | 
			
		||||
  /*    lists.                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    list :: A pointer to the parent list.                              */
 | 
			
		||||
  /*    node :: The node to move.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_List_Up( FT_List      list,
 | 
			
		||||
              FT_ListNode  node );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_List_Iterator                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    An FT_List iterator function that is called during a list parse    */
 | 
			
		||||
  /*    by @FT_List_Iterate.                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    node :: The current iteration list node.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    user :: A typeless pointer passed to @FT_List_Iterate.             */
 | 
			
		||||
  /*            Can be used to point to the iteration's state.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_List_Iterator)( FT_ListNode  node,
 | 
			
		||||
                       void*        user );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Iterate                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Parse a list and calls a given iterator function on each element.  */
 | 
			
		||||
  /*    Note that parsing is stopped as soon as one of the iterator calls  */
 | 
			
		||||
  /*    returns a non-zero value.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    list     :: A handle to the list.                                  */
 | 
			
		||||
  /*    iterator :: An iterator function, called on each node of the list. */
 | 
			
		||||
  /*    user     :: A user-supplied field that is passed as the second     */
 | 
			
		||||
  /*                argument to the iterator.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    The result (a FreeType error code) of the last iterator call.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_List_Iterate( FT_List           list,
 | 
			
		||||
                   FT_List_Iterator  iterator,
 | 
			
		||||
                   void*             user );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_List_Destructor                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    An @FT_List iterator function that is called during a list         */
 | 
			
		||||
  /*    finalization by @FT_List_Finalize to destroy all elements in a     */
 | 
			
		||||
  /*    given list.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    system :: The current system object.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    data   :: The current object to destroy.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    user   :: A typeless pointer passed to @FT_List_Iterate.  It can   */
 | 
			
		||||
  /*              be used to point to the iteration's state.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_List_Destructor)( FT_Memory  memory,
 | 
			
		||||
                         void*      data,
 | 
			
		||||
                         void*      user );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_List_Finalize                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Destroy all elements in the list as well as the list itself.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    list    :: A handle to the list.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    destroy :: A list destructor that will be applied to each element  */
 | 
			
		||||
  /*               of the list.  Set this to NULL if not needed.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    memory  :: The current memory object that handles deallocation.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    user    :: A user-supplied field that is passed as the last        */
 | 
			
		||||
  /*               argument to the destructor.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This function expects that all nodes added by @FT_List_Add or      */
 | 
			
		||||
  /*    @FT_List_Insert have been dynamically allocated.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_List_Finalize( FT_List             list,
 | 
			
		||||
                    FT_List_Destructor  destroy,
 | 
			
		||||
                    FT_Memory           memory,
 | 
			
		||||
                    void*               user );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTLIST_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,99 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftlzw.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    LZW-compressed stream support.                                       */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2004-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTLZW_H__
 | 
			
		||||
#define __FTLZW_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    lzw                                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    LZW Streams                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Using LZW-compressed font files.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of LZW-specific functions.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 /************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *   FT_Stream_OpenLZW
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   Open a new stream to parse LZW-compressed font files.  This is
 | 
			
		||||
  *   mainly used to support the compressed `*.pcf.Z' fonts that come
 | 
			
		||||
  *   with XFree86.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *   stream :: The target embedding stream.
 | 
			
		||||
  *
 | 
			
		||||
  *   source :: The source stream.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   The source stream must be opened _before_ calling this function.
 | 
			
		||||
  *
 | 
			
		||||
  *   Calling the internal function `FT_Stream_Close' on the new stream will
 | 
			
		||||
  *   *not* call `FT_Stream_Close' on the source stream.  None of the stream
 | 
			
		||||
  *   objects will be released to the heap.
 | 
			
		||||
  *
 | 
			
		||||
  *   The stream implementation is very basic and resets the decompression
 | 
			
		||||
  *   process each time seeking backwards is needed within the stream
 | 
			
		||||
  *
 | 
			
		||||
  *   In certain builds of the library, LZW compression recognition is
 | 
			
		||||
  *   automatically handled when calling @FT_New_Face or @FT_Open_Face.
 | 
			
		||||
  *   This means that if no font driver is capable of handling the raw
 | 
			
		||||
  *   compressed file, the library will try to open a LZW stream from it
 | 
			
		||||
  *   and re-open the face with it.
 | 
			
		||||
  *
 | 
			
		||||
  *   This function may return `FT_Err_Unimplemented_Feature' if your build
 | 
			
		||||
  *   of FreeType was not compiled with LZW support.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stream_OpenLZW( FT_Stream  stream,
 | 
			
		||||
                     FT_Stream  source );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTLZW_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,274 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftmac.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Additional Mac-specific API.                                         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* NOTE: Include this file after FT_FREETYPE_H and after any               */
 | 
			
		||||
/*       Mac-specific headers (because this header uses Mac types such as  */
 | 
			
		||||
/*       Handle, FSSpec, FSRef, etc.)                                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTMAC_H__
 | 
			
		||||
#define __FTMAC_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* gcc-3.4.1 and later can warn about functions tagged as deprecated */
 | 
			
		||||
#ifndef FT_DEPRECATED_ATTRIBUTE
 | 
			
		||||
#if defined(__GNUC__)                                               && \
 | 
			
		||||
    ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)))
 | 
			
		||||
#define FT_DEPRECATED_ATTRIBUTE  __attribute__((deprecated))
 | 
			
		||||
#else
 | 
			
		||||
#define FT_DEPRECATED_ATTRIBUTE
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    mac_specific                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Mac Specific Interface                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Only available on the Macintosh.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The following definitions are only available if FreeType is        */
 | 
			
		||||
  /*    compiled on a Macintosh.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_New_Face_From_FOND                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Create a new face object from a FOND resource.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library    :: A handle to the library resource.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    fond       :: A FOND resource.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index :: Only supported for the -1 `sanity check' special     */
 | 
			
		||||
  /*                  case.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    aface      :: A handle to a new face object.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Notes>                                                               */
 | 
			
		||||
  /*    This function can be used to create @FT_Face objects from fonts    */
 | 
			
		||||
  /*    that are installed in the system as follows.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    {                                                                  */
 | 
			
		||||
  /*      fond = GetResource( 'FOND', fontName );                          */
 | 
			
		||||
  /*      error = FT_New_Face_From_FOND( library, fond, 0, &face );        */
 | 
			
		||||
  /*    }                                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_New_Face_From_FOND( FT_Library  library,
 | 
			
		||||
                         Handle      fond,
 | 
			
		||||
                         FT_Long     face_index,
 | 
			
		||||
                         FT_Face    *aface )
 | 
			
		||||
                       FT_DEPRECATED_ATTRIBUTE;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_GetFile_From_Mac_Name                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return an FSSpec for the disk file containing the named font.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    fontName   :: Mac OS name of the font (e.g., Times New Roman       */
 | 
			
		||||
  /*                  Bold).                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    pathSpec   :: FSSpec to the file.  For passing to                  */
 | 
			
		||||
  /*                  @FT_New_Face_From_FSSpec.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index :: Index of the face.  For passing to                   */
 | 
			
		||||
  /*                  @FT_New_Face_From_FSSpec.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_GetFile_From_Mac_Name( const char*  fontName,
 | 
			
		||||
                            FSSpec*      pathSpec,
 | 
			
		||||
                            FT_Long*     face_index )
 | 
			
		||||
                          FT_DEPRECATED_ATTRIBUTE;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_GetFile_From_Mac_ATS_Name                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return an FSSpec for the disk file containing the named font.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    fontName   :: Mac OS name of the font in ATS framework.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    pathSpec   :: FSSpec to the file. For passing to                   */
 | 
			
		||||
  /*                  @FT_New_Face_From_FSSpec.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index :: Index of the face. For passing to                    */
 | 
			
		||||
  /*                  @FT_New_Face_From_FSSpec.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_GetFile_From_Mac_ATS_Name( const char*  fontName,
 | 
			
		||||
                                FSSpec*      pathSpec,
 | 
			
		||||
                                FT_Long*     face_index )
 | 
			
		||||
                              FT_DEPRECATED_ATTRIBUTE;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_GetFilePath_From_Mac_ATS_Name                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return a pathname of the disk file and face index for given font   */
 | 
			
		||||
  /*    name that is handled by ATS framework.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    fontName    :: Mac OS name of the font in ATS framework.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    path        :: Buffer to store pathname of the file.  For passing  */
 | 
			
		||||
  /*                   to @FT_New_Face.  The client must allocate this     */
 | 
			
		||||
  /*                   buffer before calling this function.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxPathSize :: Lengths of the buffer `path' that client allocated. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index  :: Index of the face.  For passing to @FT_New_Face.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_GetFilePath_From_Mac_ATS_Name( const char*  fontName,
 | 
			
		||||
                                    UInt8*       path,
 | 
			
		||||
                                    UInt32       maxPathSize,
 | 
			
		||||
                                    FT_Long*     face_index )
 | 
			
		||||
                                  FT_DEPRECATED_ATTRIBUTE;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_New_Face_From_FSSpec                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Create a new face object from a given resource and typeface index  */
 | 
			
		||||
  /*    using an FSSpec to the font file.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library    :: A handle to the library resource.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    spec       :: FSSpec to the font file.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index :: The index of the face within the resource.  The      */
 | 
			
		||||
  /*                  first face has index~0.                              */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    aface      :: A handle to a new face object.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    @FT_New_Face_From_FSSpec is identical to @FT_New_Face except       */
 | 
			
		||||
  /*    it accepts an FSSpec instead of a path.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_New_Face_From_FSSpec( FT_Library     library,
 | 
			
		||||
                           const FSSpec  *spec,
 | 
			
		||||
                           FT_Long        face_index,
 | 
			
		||||
                           FT_Face       *aface )
 | 
			
		||||
                         FT_DEPRECATED_ATTRIBUTE;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_New_Face_From_FSRef                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Create a new face object from a given resource and typeface index  */
 | 
			
		||||
  /*    using an FSRef to the font file.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library    :: A handle to the library resource.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    spec       :: FSRef to the font file.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    face_index :: The index of the face within the resource.  The      */
 | 
			
		||||
  /*                  first face has index~0.                              */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    aface      :: A handle to a new face object.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    @FT_New_Face_From_FSRef is identical to @FT_New_Face except        */
 | 
			
		||||
  /*    it accepts an FSRef instead of a path.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_New_Face_From_FSRef( FT_Library    library,
 | 
			
		||||
                          const FSRef  *ref,
 | 
			
		||||
                          FT_Long       face_index,
 | 
			
		||||
                          FT_Face      *aface )
 | 
			
		||||
                        FT_DEPRECATED_ATTRIBUTE;
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __FTMAC_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,384 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftmm.h                                                                 */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType Multiple Master font interface (specification).             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTMM_H__
 | 
			
		||||
#define __FTMM_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_TYPE1_TABLES_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    multiple_masters                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Multiple Masters                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    How to manage Multiple Masters fonts.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The following types and functions are used to manage Multiple      */
 | 
			
		||||
  /*    Master fonts, i.e., the selection of specific design instances by  */
 | 
			
		||||
  /*    setting design axis coordinates.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    George Williams has extended this interface to make it work with   */
 | 
			
		||||
  /*    both Type~1 Multiple Masters fonts and GX distortable (var)        */
 | 
			
		||||
  /*    fonts.  Some of these routines only work with MM fonts, others     */
 | 
			
		||||
  /*    will work with both types.  They are similar enough that a         */
 | 
			
		||||
  /*    consistent interface makes sense.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_MM_Axis                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple structure used to model a given axis in design space for  */
 | 
			
		||||
  /*    Multiple Masters fonts.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This structure can't be used for GX var fonts.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    name    :: The axis's name.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    minimum :: The axis's minimum design coordinate.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maximum :: The axis's maximum design coordinate.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_MM_Axis_
 | 
			
		||||
  {
 | 
			
		||||
    FT_String*  name;
 | 
			
		||||
    FT_Long     minimum;
 | 
			
		||||
    FT_Long     maximum;
 | 
			
		||||
 | 
			
		||||
  } FT_MM_Axis;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Multi_Master                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model the axes and space of a Multiple Masters */
 | 
			
		||||
  /*    font.                                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This structure can't be used for GX var fonts.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    num_axis    :: Number of axes.  Cannot exceed~4.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    num_designs :: Number of designs; should be normally 2^num_axis    */
 | 
			
		||||
  /*                   even though the Type~1 specification strangely      */
 | 
			
		||||
  /*                   allows for intermediate designs to be present.      */
 | 
			
		||||
  /*                   This number cannot exceed~16.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    axis        :: A table of axis descriptors.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Multi_Master_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UInt     num_axis;
 | 
			
		||||
    FT_UInt     num_designs;
 | 
			
		||||
    FT_MM_Axis  axis[T1_MAX_MM_AXIS];
 | 
			
		||||
 | 
			
		||||
  } FT_Multi_Master;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Var_Axis                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple structure used to model a given axis in design space for  */
 | 
			
		||||
  /*    Multiple Masters and GX var fonts.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    name    :: The axis's name.                                        */
 | 
			
		||||
  /*               Not always meaningful for GX.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    minimum :: The axis's minimum design coordinate.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    def     :: The axis's default design coordinate.                   */
 | 
			
		||||
  /*               FreeType computes meaningful default values for MM; it  */
 | 
			
		||||
  /*               is then an integer value, not in 16.16 format.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maximum :: The axis's maximum design coordinate.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    tag     :: The axis's tag (the GX equivalent to `name').           */
 | 
			
		||||
  /*               FreeType provides default values for MM if possible.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    strid   :: The entry in `name' table (another GX version of        */
 | 
			
		||||
  /*               `name').                                                */
 | 
			
		||||
  /*               Not meaningful for MM.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Var_Axis_
 | 
			
		||||
  {
 | 
			
		||||
    FT_String*  name;
 | 
			
		||||
 | 
			
		||||
    FT_Fixed    minimum;
 | 
			
		||||
    FT_Fixed    def;
 | 
			
		||||
    FT_Fixed    maximum;
 | 
			
		||||
 | 
			
		||||
    FT_ULong    tag;
 | 
			
		||||
    FT_UInt     strid;
 | 
			
		||||
 | 
			
		||||
  } FT_Var_Axis;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Var_Named_Style                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple structure used to model a named style in a GX var font.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This structure can't be used for MM fonts.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    coords :: The design coordinates for this style.                   */
 | 
			
		||||
  /*              This is an array with one entry for each axis.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    strid  :: The entry in `name' table identifying this style.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Var_Named_Style_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed*  coords;
 | 
			
		||||
    FT_UInt    strid;
 | 
			
		||||
 | 
			
		||||
  } FT_Var_Named_Style;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_MM_Var                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model the axes and space of a Multiple Masters */
 | 
			
		||||
  /*    or GX var distortable font.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Some fields are specific to one format and not to the other.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    num_axis        :: The number of axes.  The maximum value is~4 for */
 | 
			
		||||
  /*                       MM; no limit in GX.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    num_designs     :: The number of designs; should be normally       */
 | 
			
		||||
  /*                       2^num_axis for MM fonts.  Not meaningful for GX */
 | 
			
		||||
  /*                       (where every glyph could have a different       */
 | 
			
		||||
  /*                       number of designs).                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    num_namedstyles :: The number of named styles; only meaningful for */
 | 
			
		||||
  /*                       GX that allows certain design coordinates to    */
 | 
			
		||||
  /*                       have a string ID (in the `name' table)          */
 | 
			
		||||
  /*                       associated with them.  The font can tell the    */
 | 
			
		||||
  /*                       user that, for example, Weight=1.5 is `Bold'.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    axis            :: An axis descriptor table.                       */
 | 
			
		||||
  /*                       GX fonts contain slightly more data than MM.    */
 | 
			
		||||
  /*                       Memory management of this pointer is done       */
 | 
			
		||||
  /*                       internally by FreeType.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    namedstyle      :: A named style table.                            */
 | 
			
		||||
  /*                       Only meaningful with GX.                        */
 | 
			
		||||
  /*                       Memory management of this pointer is done       */
 | 
			
		||||
  /*                       internally by FreeType.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_MM_Var_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UInt              num_axis;
 | 
			
		||||
    FT_UInt              num_designs;
 | 
			
		||||
    FT_UInt              num_namedstyles;
 | 
			
		||||
    FT_Var_Axis*         axis;
 | 
			
		||||
    FT_Var_Named_Style*  namedstyle;
 | 
			
		||||
 | 
			
		||||
  } FT_MM_Var;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Multi_Master                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieve the Multiple Master descriptor of a given font.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function can't be used with GX fonts.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face    :: A handle to the source face.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    amaster :: The Multiple Masters descriptor.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_Multi_Master( FT_Face           face,
 | 
			
		||||
                       FT_Multi_Master  *amaster );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_MM_Var                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieve the Multiple Master/GX var descriptor of a given font.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face    :: A handle to the source face.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    amaster :: The Multiple Masters/GX var descriptor.                 */
 | 
			
		||||
  /*               Allocates a data structure, which the user must         */
 | 
			
		||||
  /*               deallocate with `free' after use.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_MM_Var( FT_Face      face,
 | 
			
		||||
                 FT_MM_Var*  *amaster );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Set_MM_Design_Coordinates                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    For Multiple Masters fonts, choose an interpolated font design     */
 | 
			
		||||
  /*    through design coordinates.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function can't be used with GX fonts.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    face       :: A handle to the source face.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    num_coords :: The number of available design coordinates.  If it   */
 | 
			
		||||
  /*                  is larger than the number of axes, ignore the excess */
 | 
			
		||||
  /*                  values.  If it is smaller than the number of axes,   */
 | 
			
		||||
  /*                  use default values for the remaining axes.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    coords     :: An array of design coordinates.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Set_MM_Design_Coordinates( FT_Face   face,
 | 
			
		||||
                                FT_UInt   num_coords,
 | 
			
		||||
                                FT_Long*  coords );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Set_Var_Design_Coordinates                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    For Multiple Master or GX Var fonts, choose an interpolated font   */
 | 
			
		||||
  /*    design through design coordinates.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    face       :: A handle to the source face.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    num_coords :: The number of available design coordinates.  If it   */
 | 
			
		||||
  /*                  is larger than the number of axes, ignore the excess */
 | 
			
		||||
  /*                  values.  If it is smaller than the number of axes,   */
 | 
			
		||||
  /*                  use default values for the remaining axes.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    coords     :: An array of design coordinates.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Set_Var_Design_Coordinates( FT_Face    face,
 | 
			
		||||
                                 FT_UInt    num_coords,
 | 
			
		||||
                                 FT_Fixed*  coords );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Set_MM_Blend_Coordinates                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    For Multiple Masters and GX var fonts, choose an interpolated font */
 | 
			
		||||
  /*    design through normalized blend coordinates.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    face       :: A handle to the source face.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    num_coords :: The number of available design coordinates.  If it   */
 | 
			
		||||
  /*                  is larger than the number of axes, ignore the excess */
 | 
			
		||||
  /*                  values.  If it is smaller than the number of axes,   */
 | 
			
		||||
  /*                  use default values for the remaining axes.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    coords     :: The design coordinates array (each element must be   */
 | 
			
		||||
  /*                  between 0 and 1.0).                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Set_MM_Blend_Coordinates( FT_Face    face,
 | 
			
		||||
                               FT_UInt    num_coords,
 | 
			
		||||
                               FT_Fixed*  coords );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Set_Var_Blend_Coordinates                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This is another name of @FT_Set_MM_Blend_Coordinates.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Set_Var_Blend_Coordinates( FT_Face    face,
 | 
			
		||||
                                FT_UInt    num_coords,
 | 
			
		||||
                                FT_Fixed*  coords );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTMM_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,672 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftmodapi.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType modules public interface (specification).                   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTMODAPI_H__
 | 
			
		||||
#define __FTMODAPI_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    module_management                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Module Management                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    How to add, upgrade, remove, and control modules from FreeType.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The definitions below are used to manage modules within FreeType.  */
 | 
			
		||||
  /*    Modules can be added, upgraded, and removed at runtime.            */
 | 
			
		||||
  /*    Additionally, some module properties can be controlled also.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Here is a list of possible values of the `module_name' field in    */
 | 
			
		||||
  /*    the @FT_Module_Class structure.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    {                                                                  */
 | 
			
		||||
  /*      autofitter                                                       */
 | 
			
		||||
  /*      bdf                                                              */
 | 
			
		||||
  /*      cff                                                              */
 | 
			
		||||
  /*      gxvalid                                                          */
 | 
			
		||||
  /*      otvalid                                                          */
 | 
			
		||||
  /*      pcf                                                              */
 | 
			
		||||
  /*      pfr                                                              */
 | 
			
		||||
  /*      psaux                                                            */
 | 
			
		||||
  /*      pshinter                                                         */
 | 
			
		||||
  /*      psnames                                                          */
 | 
			
		||||
  /*      raster1                                                          */
 | 
			
		||||
  /*      sfnt                                                             */
 | 
			
		||||
  /*      smooth, smooth-lcd, smooth-lcdv                                  */
 | 
			
		||||
  /*      truetype                                                         */
 | 
			
		||||
  /*      type1                                                            */
 | 
			
		||||
  /*      type42                                                           */
 | 
			
		||||
  /*      t1cid                                                            */
 | 
			
		||||
  /*      winfonts                                                         */
 | 
			
		||||
  /*    }                                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Note that the FreeType Cache sub-system is not a FreeType module.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Order>                                                               */
 | 
			
		||||
  /*    FT_Module                                                          */
 | 
			
		||||
  /*    FT_Module_Constructor                                              */
 | 
			
		||||
  /*    FT_Module_Destructor                                               */
 | 
			
		||||
  /*    FT_Module_Requester                                                */
 | 
			
		||||
  /*    FT_Module_Class                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Add_Module                                                      */
 | 
			
		||||
  /*    FT_Get_Module                                                      */
 | 
			
		||||
  /*    FT_Remove_Module                                                   */
 | 
			
		||||
  /*    FT_Add_Default_Modules                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Property_Set                                                    */
 | 
			
		||||
  /*    FT_Property_Get                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_New_Library                                                     */
 | 
			
		||||
  /*    FT_Done_Library                                                    */
 | 
			
		||||
  /*    FT_Reference_Library                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Renderer                                                        */
 | 
			
		||||
  /*    FT_Renderer_Class                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Get_Renderer                                                    */
 | 
			
		||||
  /*    FT_Set_Renderer                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Set_Debug_Hook                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* module bit flags */
 | 
			
		||||
#define FT_MODULE_FONT_DRIVER         1  /* this module is a font driver  */
 | 
			
		||||
#define FT_MODULE_RENDERER            2  /* this module is a renderer     */
 | 
			
		||||
#define FT_MODULE_HINTER              4  /* this module is a glyph hinter */
 | 
			
		||||
#define FT_MODULE_STYLER              8  /* this module is a styler       */
 | 
			
		||||
 | 
			
		||||
#define FT_MODULE_DRIVER_SCALABLE      0x100  /* the driver supports      */
 | 
			
		||||
                                              /* scalable fonts           */
 | 
			
		||||
#define FT_MODULE_DRIVER_NO_OUTLINES   0x200  /* the driver does not      */
 | 
			
		||||
                                              /* support vector outlines  */
 | 
			
		||||
#define FT_MODULE_DRIVER_HAS_HINTER    0x400  /* the driver provides its  */
 | 
			
		||||
                                              /* own hinter               */
 | 
			
		||||
#define FT_MODULE_DRIVER_HINTS_LIGHTLY 0x800  /* the driver's hinter      */
 | 
			
		||||
                                              /* produces LIGHT hints     */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* deprecated values */
 | 
			
		||||
#define ft_module_font_driver         FT_MODULE_FONT_DRIVER
 | 
			
		||||
#define ft_module_renderer            FT_MODULE_RENDERER
 | 
			
		||||
#define ft_module_hinter              FT_MODULE_HINTER
 | 
			
		||||
#define ft_module_styler              FT_MODULE_STYLER
 | 
			
		||||
 | 
			
		||||
#define ft_module_driver_scalable       FT_MODULE_DRIVER_SCALABLE
 | 
			
		||||
#define ft_module_driver_no_outlines    FT_MODULE_DRIVER_NO_OUTLINES
 | 
			
		||||
#define ft_module_driver_has_hinter     FT_MODULE_DRIVER_HAS_HINTER
 | 
			
		||||
#define ft_module_driver_hints_lightly  FT_MODULE_DRIVER_HINTS_LIGHTLY
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Pointer  FT_Module_Interface;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_Module_Constructor                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A function used to initialize (not create) a new module object.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    module :: The module to initialize.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Module_Constructor)( FT_Module  module );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_Module_Destructor                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A function used to finalize (not destroy) a given module object.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    module :: The module to finalize.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Module_Destructor)( FT_Module  module );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_Module_Requester                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A function used to query a given module for a specific interface.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    module :: The module to be searched.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    name ::   The name of the interface in the module.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_Module_Interface
 | 
			
		||||
  (*FT_Module_Requester)( FT_Module    module,
 | 
			
		||||
                          const char*  name );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Module_Class                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The module class descriptor.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    module_flags    :: Bit flags describing the module.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_size     :: The size of one module object/instance in       */
 | 
			
		||||
  /*                       bytes.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_name     :: The name of the module.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_version  :: The version, as a 16.16 fixed number            */
 | 
			
		||||
  /*                       (major.minor).                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_requires :: The version of FreeType this module requires,   */
 | 
			
		||||
  /*                       as a 16.16 fixed number (major.minor).  Starts  */
 | 
			
		||||
  /*                       at version 2.0, i.e., 0x20000.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_init     :: The initializing function.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_done     :: The finalizing function.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    get_interface   :: The interface requesting function.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Module_Class_
 | 
			
		||||
  {
 | 
			
		||||
    FT_ULong               module_flags;
 | 
			
		||||
    FT_Long                module_size;
 | 
			
		||||
    const FT_String*       module_name;
 | 
			
		||||
    FT_Fixed               module_version;
 | 
			
		||||
    FT_Fixed               module_requires;
 | 
			
		||||
 | 
			
		||||
    const void*            module_interface;
 | 
			
		||||
 | 
			
		||||
    FT_Module_Constructor  module_init;
 | 
			
		||||
    FT_Module_Destructor   module_done;
 | 
			
		||||
    FT_Module_Requester    get_interface;
 | 
			
		||||
 | 
			
		||||
  } FT_Module_Class;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Add_Module                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Add a new module to a given library instance.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library :: A handle to the library object.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    clazz   :: A pointer to class descriptor for the module.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    An error will be returned if a module already exists by that name, */
 | 
			
		||||
  /*    or if the module requires a version of FreeType that is too great. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Add_Module( FT_Library              library,
 | 
			
		||||
                 const FT_Module_Class*  clazz );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Module                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Find a module by its name.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library     :: A handle to the library object.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    module_name :: The module's name (as an ASCII string).             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    A module handle.  0~if none was found.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    FreeType's internal modules aren't documented very well, and you   */
 | 
			
		||||
  /*    should look up the source code for details.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Module )
 | 
			
		||||
  FT_Get_Module( FT_Library   library,
 | 
			
		||||
                 const char*  module_name );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Remove_Module                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Remove a given module from a library instance.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library :: A handle to a library object.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    module  :: A handle to a module object.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The module object is destroyed by the function in case of success. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Remove_Module( FT_Library  library,
 | 
			
		||||
                    FT_Module   module );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Property_Set
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Set a property for a given module.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    library ::
 | 
			
		||||
   *       A handle to the library the module is part of.
 | 
			
		||||
   *
 | 
			
		||||
   *    module_name ::
 | 
			
		||||
   *       The module name.
 | 
			
		||||
   *
 | 
			
		||||
   *    property_name ::
 | 
			
		||||
   *       The property name.  Properties are described in the `Synopsis'
 | 
			
		||||
   *       subsection of the module's documentation.
 | 
			
		||||
   *
 | 
			
		||||
   *       Note that only a few modules have properties.
 | 
			
		||||
   *
 | 
			
		||||
   *    value ::
 | 
			
		||||
   *       A generic pointer to a variable or structure that gives the new
 | 
			
		||||
   *       value of the property.  The exact definition of `value' is
 | 
			
		||||
   *       dependent on the property; see the `Synopsis' subsection of the
 | 
			
		||||
   *       module's documentation.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *    If `module_name' isn't a valid module name, or `property_name'
 | 
			
		||||
   *    doesn't specify a valid property, or if `value' doesn't represent a
 | 
			
		||||
   *    valid value for the given property, an error is returned.
 | 
			
		||||
   *
 | 
			
		||||
   *    The following example sets property `bar' (a simple integer) in
 | 
			
		||||
   *    module `foo' to value~1.
 | 
			
		||||
   *
 | 
			
		||||
   *    {
 | 
			
		||||
   *      FT_UInt  bar;
 | 
			
		||||
   *
 | 
			
		||||
   *
 | 
			
		||||
   *      bar = 1;
 | 
			
		||||
   *      FT_Property_Set( library, "foo", "bar", &bar );
 | 
			
		||||
   *    }
 | 
			
		||||
   *
 | 
			
		||||
   *    Note that the FreeType Cache sub-system doesn't recognize module
 | 
			
		||||
   *    property changes.  To avoid glyph lookup confusion within the cache
 | 
			
		||||
   *    you should call @FTC_Manager_Reset to completely flush the cache if
 | 
			
		||||
   *    a module property gets changed after @FTC_Manager_New has been
 | 
			
		||||
   *    called.
 | 
			
		||||
   *
 | 
			
		||||
   *    It is not possible to set properties of the FreeType Cache
 | 
			
		||||
   *    sub-system itself with FT_Property_Set; use @FTC_Property_Set
 | 
			
		||||
   *    instead.
 | 
			
		||||
   *
 | 
			
		||||
   *  @since:
 | 
			
		||||
   *    2.4.11
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Property_Set( FT_Library        library,
 | 
			
		||||
                   const FT_String*  module_name,
 | 
			
		||||
                   const FT_String*  property_name,
 | 
			
		||||
                   const void*       value );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Property_Get
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Get a module's property value.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    library ::
 | 
			
		||||
   *       A handle to the library the module is part of.
 | 
			
		||||
   *
 | 
			
		||||
   *    module_name ::
 | 
			
		||||
   *       The module name.
 | 
			
		||||
   *
 | 
			
		||||
   *    property_name ::
 | 
			
		||||
   *       The property name.  Properties are described in the `Synopsis'
 | 
			
		||||
   *       subsection of the module's documentation.
 | 
			
		||||
   *
 | 
			
		||||
   * @inout:
 | 
			
		||||
   *    value ::
 | 
			
		||||
   *       A generic pointer to a variable or structure that gives the
 | 
			
		||||
   *       value of the property.  The exact definition of `value' is
 | 
			
		||||
   *       dependent on the property; see the `Synopsis' subsection of the
 | 
			
		||||
   *       module's documentation.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *    If `module_name' isn't a valid module name, or `property_name'
 | 
			
		||||
   *    doesn't specify a valid property, or if `value' doesn't represent a
 | 
			
		||||
   *    valid value for the given property, an error is returned.
 | 
			
		||||
   *
 | 
			
		||||
   *    The following example gets property `baz' (a range) in module `foo'.
 | 
			
		||||
   *
 | 
			
		||||
   *    {
 | 
			
		||||
   *      typedef  range_
 | 
			
		||||
   *      {
 | 
			
		||||
   *        FT_Int32  min;
 | 
			
		||||
   *        FT_Int32  max;
 | 
			
		||||
   *
 | 
			
		||||
   *      } range;
 | 
			
		||||
   *
 | 
			
		||||
   *      range  baz;
 | 
			
		||||
   *
 | 
			
		||||
   *
 | 
			
		||||
   *      FT_Property_Get( library, "foo", "baz", &baz );
 | 
			
		||||
   *    }
 | 
			
		||||
   *
 | 
			
		||||
   *    It is not possible to retrieve properties of the FreeType Cache
 | 
			
		||||
   *    sub-system with FT_Property_Get; use @FTC_Property_Get instead.
 | 
			
		||||
   *
 | 
			
		||||
   *  @since:
 | 
			
		||||
   *    2.4.11
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Property_Get( FT_Library        library,
 | 
			
		||||
                   const FT_String*  module_name,
 | 
			
		||||
                   const FT_String*  property_name,
 | 
			
		||||
                   void*             value );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Reference_Library                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A counter gets initialized to~1 at the time an @FT_Library         */
 | 
			
		||||
  /*    structure is created.  This function increments the counter.       */
 | 
			
		||||
  /*    @FT_Done_Library then only destroys a library if the counter is~1, */
 | 
			
		||||
  /*    otherwise it simply decrements the counter.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function helps in managing life-cycles of structures that     */
 | 
			
		||||
  /*    reference @FT_Library objects.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle to a target library object.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Since>                                                               */
 | 
			
		||||
  /*    2.4.2                                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Reference_Library( FT_Library  library );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_New_Library                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This function is used to create a new FreeType library instance    */
 | 
			
		||||
  /*    from a given memory object.  It is thus possible to use libraries  */
 | 
			
		||||
  /*    with distinct memory allocators within the same program.  Note,    */
 | 
			
		||||
  /*    however, that the used @FT_Memory structure is expected to remain  */
 | 
			
		||||
  /*    valid for the life of the @FT_Library object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Normally, you would call this function (followed by a call to      */
 | 
			
		||||
  /*    @FT_Add_Default_Modules or a series of calls to @FT_Add_Module)    */
 | 
			
		||||
  /*    instead of @FT_Init_FreeType to initialize the FreeType library.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a      */
 | 
			
		||||
  /*    library instance.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    memory   :: A handle to the original memory object.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    alibrary :: A pointer to handle of a new library object.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    See the discussion of reference counters in the description of     */
 | 
			
		||||
  /*    @FT_Reference_Library.                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_New_Library( FT_Memory    memory,
 | 
			
		||||
                  FT_Library  *alibrary );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Done_Library                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Discard a given library object.  This closes all drivers and       */
 | 
			
		||||
  /*    discards all resource objects.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle to the target library.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    See the discussion of reference counters in the description of     */
 | 
			
		||||
  /*    @FT_Reference_Library.                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Done_Library( FT_Library  library );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_DebugHook_Func)( void*  arg );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Set_Debug_Hook                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Set a debug hook function for debugging the interpreter of a font  */
 | 
			
		||||
  /*    format.                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library    :: A handle to the library object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    hook_index :: The index of the debug hook.  You should use the     */
 | 
			
		||||
  /*                  values defined in `ftobjs.h', e.g.,                  */
 | 
			
		||||
  /*                  `FT_DEBUG_HOOK_TRUETYPE'.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    debug_hook :: The function used to debug the interpreter.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    Currently, four debug hook slots are available, but only two (for  */
 | 
			
		||||
  /*    the TrueType and the Type~1 interpreter) are defined.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Since the internal headers of FreeType are no longer installed,    */
 | 
			
		||||
  /*    the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly.      */
 | 
			
		||||
  /*    This is a bug and will be fixed in a forthcoming release.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Set_Debug_Hook( FT_Library         library,
 | 
			
		||||
                     FT_UInt            hook_index,
 | 
			
		||||
                     FT_DebugHook_Func  debug_hook );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Add_Default_Modules                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Add the set of default drivers to a given library object.          */
 | 
			
		||||
  /*    This is only useful when you create a library object with          */
 | 
			
		||||
  /*    @FT_New_Library (usually to plug a custom memory manager).         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library :: A handle to a new library object.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Add_Default_Modules( FT_Library  library );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @section:
 | 
			
		||||
   *   truetype_engine
 | 
			
		||||
   *
 | 
			
		||||
   * @title:
 | 
			
		||||
   *   The TrueType Engine
 | 
			
		||||
   *
 | 
			
		||||
   * @abstract:
 | 
			
		||||
   *   TrueType bytecode support.
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This section contains a function used to query the level of TrueType
 | 
			
		||||
   *   bytecode support compiled in this version of the library.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   *  @enum:
 | 
			
		||||
   *     FT_TrueTypeEngineType
 | 
			
		||||
   *
 | 
			
		||||
   *  @description:
 | 
			
		||||
   *     A list of values describing which kind of TrueType bytecode
 | 
			
		||||
   *     engine is implemented in a given FT_Library instance.  It is used
 | 
			
		||||
   *     by the @FT_Get_TrueType_Engine_Type function.
 | 
			
		||||
   *
 | 
			
		||||
   *  @values:
 | 
			
		||||
   *     FT_TRUETYPE_ENGINE_TYPE_NONE ::
 | 
			
		||||
   *       The library doesn't implement any kind of bytecode interpreter.
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_TRUETYPE_ENGINE_TYPE_UNPATENTED ::
 | 
			
		||||
   *       The library implements a bytecode interpreter that doesn't
 | 
			
		||||
   *       support the patented operations of the TrueType virtual machine.
 | 
			
		||||
   *
 | 
			
		||||
   *       Its main use is to load certain Asian fonts that position and
 | 
			
		||||
   *       scale glyph components with bytecode instructions.  It produces
 | 
			
		||||
   *       bad output for most other fonts.
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
 | 
			
		||||
   *       The library implements a bytecode interpreter that covers
 | 
			
		||||
   *       the full instruction set of the TrueType virtual machine (this
 | 
			
		||||
   *       was governed by patents until May 2010, hence the name).
 | 
			
		||||
   *
 | 
			
		||||
   *  @since:
 | 
			
		||||
   *     2.2
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef enum  FT_TrueTypeEngineType_
 | 
			
		||||
  {
 | 
			
		||||
    FT_TRUETYPE_ENGINE_TYPE_NONE = 0,
 | 
			
		||||
    FT_TRUETYPE_ENGINE_TYPE_UNPATENTED,
 | 
			
		||||
    FT_TRUETYPE_ENGINE_TYPE_PATENTED
 | 
			
		||||
 | 
			
		||||
  } FT_TrueTypeEngineType;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   *  @func:
 | 
			
		||||
   *     FT_Get_TrueType_Engine_Type
 | 
			
		||||
   *
 | 
			
		||||
   *  @description:
 | 
			
		||||
   *     Return an @FT_TrueTypeEngineType value to indicate which level of
 | 
			
		||||
   *     the TrueType virtual machine a given library instance supports.
 | 
			
		||||
   *
 | 
			
		||||
   *  @input:
 | 
			
		||||
   *     library ::
 | 
			
		||||
   *       A library instance.
 | 
			
		||||
   *
 | 
			
		||||
   *  @return:
 | 
			
		||||
   *     A value indicating which level is supported.
 | 
			
		||||
   *
 | 
			
		||||
   *  @since:
 | 
			
		||||
   *     2.2
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_TrueTypeEngineType )
 | 
			
		||||
  FT_Get_TrueType_Engine_Type( FT_Library  library );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTMODAPI_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,194 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftmoderr.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType module error offsets (specification).                       */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2001-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* This file is used to define the FreeType module error codes.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* If the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in `ftoption.h' is    */
 | 
			
		||||
  /* set, the lower byte of an error value identifies the error code as    */
 | 
			
		||||
  /* usual.  In addition, the higher byte identifies the module.  For      */
 | 
			
		||||
  /* example, the error `FT_Err_Invalid_File_Format' has value 0x0003, the */
 | 
			
		||||
  /* error `TT_Err_Invalid_File_Format' has value 0x1303, the error        */
 | 
			
		||||
  /* `T1_Err_Invalid_File_Format' has value 0x1403, etc.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Note that `FT_Err_Ok', `TT_Err_Ok', etc. are always equal to zero,    */
 | 
			
		||||
  /* including the high byte.                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* If FT_CONFIG_OPTION_USE_MODULE_ERRORS isn't set, the higher byte of   */
 | 
			
		||||
  /* an error value is set to zero.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* To hide the various `XXX_Err_' prefixes in the source code, FreeType  */
 | 
			
		||||
  /* provides some macros in `fttypes.h'.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   FT_ERR( err )                                                       */
 | 
			
		||||
  /*     Add current error module prefix (as defined with the              */
 | 
			
		||||
  /*     `FT_ERR_PREFIX' macro) to `err'.  For example, in the BDF module  */
 | 
			
		||||
  /*     the line                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*       error = FT_ERR( Invalid_Outline );                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     expands to                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*       error = BDF_Err_Invalid_Outline;                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     For simplicity, you can always use `FT_Err_Ok' directly instead   */
 | 
			
		||||
  /*     of `FT_ERR( Ok )'.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   FT_ERR_EQ( errcode, err )                                           */
 | 
			
		||||
  /*   FT_ERR_NEQ( errcode, err )                                          */
 | 
			
		||||
  /*     Compare error code `errcode' with the error `err' for equality    */
 | 
			
		||||
  /*     and inequality, respectively.  Example:                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*       if ( FT_ERR_EQ( error, Invalid_Outline ) )                      */
 | 
			
		||||
  /*         ...                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     Using this macro you don't have to think about error prefixes.    */
 | 
			
		||||
  /*     Of course, if module errors are not active, the above example is  */
 | 
			
		||||
  /*     the same as                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*       if ( error == FT_Err_Invalid_Outline )                          */
 | 
			
		||||
  /*         ...                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   FT_ERROR_BASE( errcode )                                            */
 | 
			
		||||
  /*   FT_ERROR_MODULE( errcode )                                          */
 | 
			
		||||
  /*     Get base error and module error code, respectively.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* It can also be used to create a module error message table easily     */
 | 
			
		||||
  /* with something like                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*   {                                                                   */
 | 
			
		||||
  /*     #undef __FTMODERR_H__                                             */
 | 
			
		||||
  /*     #define FT_MODERRDEF( e, v, s )  { FT_Mod_Err_ ## e, s },         */
 | 
			
		||||
  /*     #define FT_MODERR_START_LIST     {                                */
 | 
			
		||||
  /*     #define FT_MODERR_END_LIST       { 0, 0 } };                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     const struct                                                      */
 | 
			
		||||
  /*     {                                                                 */
 | 
			
		||||
  /*       int          mod_err_offset;                                    */
 | 
			
		||||
  /*       const char*  mod_err_msg                                        */
 | 
			
		||||
  /*     } ft_mod_errors[] =                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*     #include FT_MODULE_ERRORS_H                                       */
 | 
			
		||||
  /*   }                                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTMODERR_H__
 | 
			
		||||
#define __FTMODERR_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*****                       SETUP MACROS                      *****/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#undef  FT_NEED_EXTERN_C
 | 
			
		||||
 | 
			
		||||
#ifndef FT_MODERRDEF
 | 
			
		||||
 | 
			
		||||
#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS
 | 
			
		||||
#define FT_MODERRDEF( e, v, s )  FT_Mod_Err_ ## e = v,
 | 
			
		||||
#else
 | 
			
		||||
#define FT_MODERRDEF( e, v, s )  FT_Mod_Err_ ## e = 0,
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define FT_MODERR_START_LIST  enum {
 | 
			
		||||
#define FT_MODERR_END_LIST    FT_Mod_Err_Max };
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#define FT_NEED_EXTERN_C
 | 
			
		||||
  extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* !FT_MODERRDEF */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*****               LIST MODULE ERROR BASES                   *****/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_MODERR_START_LIST
 | 
			
		||||
  FT_MODERR_START_LIST
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_MODERRDEF( Base,      0x000, "base module" )
 | 
			
		||||
  FT_MODERRDEF( Autofit,   0x100, "autofitter module" )
 | 
			
		||||
  FT_MODERRDEF( BDF,       0x200, "BDF module" )
 | 
			
		||||
  FT_MODERRDEF( Bzip2,     0x300, "Bzip2 module" )
 | 
			
		||||
  FT_MODERRDEF( Cache,     0x400, "cache module" )
 | 
			
		||||
  FT_MODERRDEF( CFF,       0x500, "CFF module" )
 | 
			
		||||
  FT_MODERRDEF( CID,       0x600, "CID module" )
 | 
			
		||||
  FT_MODERRDEF( Gzip,      0x700, "Gzip module" )
 | 
			
		||||
  FT_MODERRDEF( LZW,       0x800, "LZW module" )
 | 
			
		||||
  FT_MODERRDEF( OTvalid,   0x900, "OpenType validation module" )
 | 
			
		||||
  FT_MODERRDEF( PCF,       0xA00, "PCF module" )
 | 
			
		||||
  FT_MODERRDEF( PFR,       0xB00, "PFR module" )
 | 
			
		||||
  FT_MODERRDEF( PSaux,     0xC00, "PS auxiliary module" )
 | 
			
		||||
  FT_MODERRDEF( PShinter,  0xD00, "PS hinter module" )
 | 
			
		||||
  FT_MODERRDEF( PSnames,   0xE00, "PS names module" )
 | 
			
		||||
  FT_MODERRDEF( Raster,    0xF00, "raster module" )
 | 
			
		||||
  FT_MODERRDEF( SFNT,     0x1000, "SFNT module" )
 | 
			
		||||
  FT_MODERRDEF( Smooth,   0x1100, "smooth raster module" )
 | 
			
		||||
  FT_MODERRDEF( TrueType, 0x1200, "TrueType module" )
 | 
			
		||||
  FT_MODERRDEF( Type1,    0x1300, "Type 1 module" )
 | 
			
		||||
  FT_MODERRDEF( Type42,   0x1400, "Type 42 module" )
 | 
			
		||||
  FT_MODERRDEF( Winfonts, 0x1500, "Windows FON/FNT module" )
 | 
			
		||||
  FT_MODERRDEF( GXvalid,  0x1600, "GX validation module" )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_MODERR_END_LIST
 | 
			
		||||
  FT_MODERR_END_LIST
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*****                      CLEANUP                            *****/
 | 
			
		||||
  /*****                                                         *****/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
  /*******************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef FT_NEED_EXTERN_C
 | 
			
		||||
  }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#undef FT_MODERR_START_LIST
 | 
			
		||||
#undef FT_MODERR_END_LIST
 | 
			
		||||
#undef FT_MODERRDEF
 | 
			
		||||
#undef FT_NEED_EXTERN_C
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __FTMODERR_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,204 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftotval.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for validating OpenType tables (specification).         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2004-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/* Warning: This module might be moved to a different library in the       */
 | 
			
		||||
/*          future to avoid a tight dependency between FreeType and the    */
 | 
			
		||||
/*          OpenType specification.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTOTVAL_H__
 | 
			
		||||
#define __FTOTVAL_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    ot_validation                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    OpenType Validation                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    An API to validate OpenType tables.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of functions to validate     */
 | 
			
		||||
  /*    some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Order>                                                               */
 | 
			
		||||
  /*    FT_OpenType_Validate                                               */
 | 
			
		||||
  /*    FT_OpenType_Free                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_VALIDATE_OTXXX                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @enum:
 | 
			
		||||
  *    FT_VALIDATE_OTXXX
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    A list of bit-field constants used with @FT_OpenType_Validate to
 | 
			
		||||
  *    indicate which OpenType tables should be validated.
 | 
			
		||||
  *
 | 
			
		||||
  * @values:
 | 
			
		||||
  *    FT_VALIDATE_BASE ::
 | 
			
		||||
  *      Validate BASE table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_GDEF ::
 | 
			
		||||
  *      Validate GDEF table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_GPOS ::
 | 
			
		||||
  *      Validate GPOS table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_GSUB ::
 | 
			
		||||
  *      Validate GSUB table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_JSTF ::
 | 
			
		||||
  *      Validate JSTF table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_MATH ::
 | 
			
		||||
  *      Validate MATH table.
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_VALIDATE_OT ::
 | 
			
		||||
  *      Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
#define FT_VALIDATE_BASE  0x0100
 | 
			
		||||
#define FT_VALIDATE_GDEF  0x0200
 | 
			
		||||
#define FT_VALIDATE_GPOS  0x0400
 | 
			
		||||
#define FT_VALIDATE_GSUB  0x0800
 | 
			
		||||
#define FT_VALIDATE_JSTF  0x1000
 | 
			
		||||
#define FT_VALIDATE_MATH  0x2000
 | 
			
		||||
 | 
			
		||||
#define FT_VALIDATE_OT  FT_VALIDATE_BASE | \
 | 
			
		||||
                        FT_VALIDATE_GDEF | \
 | 
			
		||||
                        FT_VALIDATE_GPOS | \
 | 
			
		||||
                        FT_VALIDATE_GSUB | \
 | 
			
		||||
                        FT_VALIDATE_JSTF | \
 | 
			
		||||
                        FT_VALIDATE_MATH
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_OpenType_Validate
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Validate various OpenType tables to assure that all offsets and
 | 
			
		||||
  *    indices are valid.  The idea is that a higher-level library that
 | 
			
		||||
  *    actually does the text layout can access those tables without
 | 
			
		||||
  *    error checking (which can be quite time consuming).
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    validation_flags ::
 | 
			
		||||
  *       A bit field that specifies the tables to be validated.  See
 | 
			
		||||
  *       @FT_VALIDATE_OTXXX for possible values.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    BASE_table ::
 | 
			
		||||
  *       A pointer to the BASE table.
 | 
			
		||||
  *
 | 
			
		||||
  *    GDEF_table ::
 | 
			
		||||
  *       A pointer to the GDEF table.
 | 
			
		||||
  *
 | 
			
		||||
  *    GPOS_table ::
 | 
			
		||||
  *       A pointer to the GPOS table.
 | 
			
		||||
  *
 | 
			
		||||
  *    GSUB_table ::
 | 
			
		||||
  *       A pointer to the GSUB table.
 | 
			
		||||
  *
 | 
			
		||||
  *    JSTF_table ::
 | 
			
		||||
  *       A pointer to the JSTF table.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function only works with OpenType fonts, returning an error
 | 
			
		||||
  *   otherwise.
 | 
			
		||||
  *
 | 
			
		||||
  *   After use, the application should deallocate the five tables with
 | 
			
		||||
  *   @FT_OpenType_Free.  A NULL value indicates that the table either
 | 
			
		||||
  *   doesn't exist in the font, or the application hasn't asked for
 | 
			
		||||
  *   validation.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_OpenType_Validate( FT_Face    face,
 | 
			
		||||
                        FT_UInt    validation_flags,
 | 
			
		||||
                        FT_Bytes  *BASE_table,
 | 
			
		||||
                        FT_Bytes  *GDEF_table,
 | 
			
		||||
                        FT_Bytes  *GPOS_table,
 | 
			
		||||
                        FT_Bytes  *GSUB_table,
 | 
			
		||||
                        FT_Bytes  *JSTF_table );
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_OpenType_Free
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Free the buffer allocated by OpenType validator.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face ::
 | 
			
		||||
  *       A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    table ::
 | 
			
		||||
  *       The pointer to the buffer that is allocated by
 | 
			
		||||
  *       @FT_OpenType_Validate.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   This function must be used to free the buffer allocated by
 | 
			
		||||
  *   @FT_OpenType_Validate only.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_OpenType_Free( FT_Face   face,
 | 
			
		||||
                    FT_Bytes  table );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTOTVAL_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,574 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftoutln.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Support for the FT_Outline type used to store glyph shapes of        */
 | 
			
		||||
/*    most scalable font formats (specification).                          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTOUTLN_H__
 | 
			
		||||
#define __FTOUTLN_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    outline_processing                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Outline Processing                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Functions to create, transform, and render vectorial glyph images. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains routines used to create and destroy scalable */
 | 
			
		||||
  /*    glyph images known as `outlines'.  These can also be measured,     */
 | 
			
		||||
  /*    transformed, and converted into bitmaps and pixmaps.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Order>                                                               */
 | 
			
		||||
  /*    FT_Outline                                                         */
 | 
			
		||||
  /*    FT_Outline_New                                                     */
 | 
			
		||||
  /*    FT_Outline_Done                                                    */
 | 
			
		||||
  /*    FT_Outline_Copy                                                    */
 | 
			
		||||
  /*    FT_Outline_Translate                                               */
 | 
			
		||||
  /*    FT_Outline_Transform                                               */
 | 
			
		||||
  /*    FT_Outline_Embolden                                                */
 | 
			
		||||
  /*    FT_Outline_EmboldenXY                                              */
 | 
			
		||||
  /*    FT_Outline_Reverse                                                 */
 | 
			
		||||
  /*    FT_Outline_Check                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Outline_Get_CBox                                                */
 | 
			
		||||
  /*    FT_Outline_Get_BBox                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Outline_Get_Bitmap                                              */
 | 
			
		||||
  /*    FT_Outline_Render                                                  */
 | 
			
		||||
  /*    FT_Outline_Decompose                                               */
 | 
			
		||||
  /*    FT_Outline_Funcs                                                   */
 | 
			
		||||
  /*    FT_Outline_MoveToFunc                                              */
 | 
			
		||||
  /*    FT_Outline_LineToFunc                                              */
 | 
			
		||||
  /*    FT_Outline_ConicToFunc                                             */
 | 
			
		||||
  /*    FT_Outline_CubicToFunc                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Orientation                                                     */
 | 
			
		||||
  /*    FT_Outline_Get_Orientation                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_OUTLINE_XXX                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Decompose                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Walk over an outline's structure to decompose it into individual   */
 | 
			
		||||
  /*    segments and Bézier arcs.  This function also emits `move to'      */
 | 
			
		||||
  /*    operations to indicate the start of new contours in the outline.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    outline        :: A pointer to the source target.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    func_interface :: A table of `emitters', i.e., function pointers   */
 | 
			
		||||
  /*                      called during decomposition to indicate path     */
 | 
			
		||||
  /*                      operations.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    user           :: A typeless pointer that is passed to each        */
 | 
			
		||||
  /*                      emitter during the decomposition.  It can be     */
 | 
			
		||||
  /*                      used to store the state during the               */
 | 
			
		||||
  /*                      decomposition.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    A contour that contains a single point only is represented by a    */
 | 
			
		||||
  /*    `move to' operation followed by `line to' to the same point.  In   */
 | 
			
		||||
  /*    most cases, it is best to filter this out before using the         */
 | 
			
		||||
  /*    outline for stroking purposes (otherwise it would result in a      */
 | 
			
		||||
  /*    visible dot when round caps are used).                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Decompose( FT_Outline*              outline,
 | 
			
		||||
                        const FT_Outline_Funcs*  func_interface,
 | 
			
		||||
                        void*                    user );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_New                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Create a new outline of a given size.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library     :: A handle to the library object from where the       */
 | 
			
		||||
  /*                   outline is allocated.  Note however that the new    */
 | 
			
		||||
  /*                   outline will *not* necessarily be *freed*, when     */
 | 
			
		||||
  /*                   destroying the library, by @FT_Done_FreeType.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    numPoints   :: The maximum number of points within the outline.    */
 | 
			
		||||
  /*                   Must be smaller than or equal to 0xFFFF (65535).    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    numContours :: The maximum number of contours within the outline.  */
 | 
			
		||||
  /*                   This value must be in the range 0 to `numPoints'.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    anoutline   :: A handle to the new outline.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The reason why this function takes a `library' parameter is simply */
 | 
			
		||||
  /*    to use the library's memory allocator.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_New( FT_Library   library,
 | 
			
		||||
                  FT_UInt      numPoints,
 | 
			
		||||
                  FT_Int       numContours,
 | 
			
		||||
                  FT_Outline  *anoutline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_New_Internal( FT_Memory    memory,
 | 
			
		||||
                           FT_UInt      numPoints,
 | 
			
		||||
                           FT_Int       numContours,
 | 
			
		||||
                           FT_Outline  *anoutline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Done                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Destroy an outline created with @FT_Outline_New.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle of the library object used to allocate the     */
 | 
			
		||||
  /*               outline.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    outline :: A pointer to the outline object to be discarded.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    If the outline's `owner' field is not set, only the outline        */
 | 
			
		||||
  /*    descriptor will be released.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The reason why this function takes an `library' parameter is       */
 | 
			
		||||
  /*    simply to use ft_mem_free().                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Done( FT_Library   library,
 | 
			
		||||
                   FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Done_Internal( FT_Memory    memory,
 | 
			
		||||
                            FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Check                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Check the contents of an outline descriptor.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    outline :: A handle to a source outline.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Check( FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Get_CBox                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return an outline's `control box'.  The control box encloses all   */
 | 
			
		||||
  /*    the outline's points, including Bézier control points.  Though it  */
 | 
			
		||||
  /*    coincides with the exact bounding box for most glyphs, it can be   */
 | 
			
		||||
  /*    slightly larger in some situations (like when rotating an outline  */
 | 
			
		||||
  /*    that contains Bézier outside arcs).                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Computing the control box is very fast, while getting the bounding */
 | 
			
		||||
  /*    box can take much more time as it needs to walk over all segments  */
 | 
			
		||||
  /*    and arcs in the outline.  To get the latter, you can use the       */
 | 
			
		||||
  /*    `ftbbox' component, which is dedicated to this single task.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    outline :: A pointer to the source outline descriptor.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    acbox   :: The outline's control box.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    See @FT_Glyph_Get_CBox for a discussion of tricky fonts.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Outline_Get_CBox( const FT_Outline*  outline,
 | 
			
		||||
                       FT_BBox           *acbox );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Translate                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Apply a simple translation to the points of an outline.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    outline :: A pointer to the target outline descriptor.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    xOffset :: The horizontal offset.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    yOffset :: The vertical offset.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Outline_Translate( const FT_Outline*  outline,
 | 
			
		||||
                        FT_Pos             xOffset,
 | 
			
		||||
                        FT_Pos             yOffset );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Copy                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Copy an outline into another one.  Both objects must have the      */
 | 
			
		||||
  /*    same sizes (number of points & number of contours) when this       */
 | 
			
		||||
  /*    function is called.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    source :: A handle to the source outline.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    target :: A handle to the target outline.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Copy( const FT_Outline*  source,
 | 
			
		||||
                   FT_Outline        *target );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Transform                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Apply a simple 2x2 matrix to all of an outline's points.  Useful   */
 | 
			
		||||
  /*    for applying rotations, slanting, flipping, etc.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    outline :: A pointer to the target outline descriptor.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    matrix  :: A pointer to the transformation matrix.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    You can use @FT_Outline_Translate if you need to translate the     */
 | 
			
		||||
  /*    outline's points.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Outline_Transform( const FT_Outline*  outline,
 | 
			
		||||
                        const FT_Matrix*   matrix );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Embolden                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Embolden an outline.  The new outline will be at most 4~times      */
 | 
			
		||||
  /*    `strength' pixels wider and higher.  You may think of the left and */
 | 
			
		||||
  /*    bottom borders as unchanged.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Negative `strength' values to reduce the outline thickness are     */
 | 
			
		||||
  /*    possible also.                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    outline  :: A handle to the target outline.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    strength :: How strong the glyph is emboldened.  Expressed in      */
 | 
			
		||||
  /*                26.6 pixel format.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The used algorithm to increase or decrease the thickness of the    */
 | 
			
		||||
  /*    glyph doesn't change the number of points; this means that certain */
 | 
			
		||||
  /*    situations like acute angles or intersections are sometimes        */
 | 
			
		||||
  /*    handled incorrectly.                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    If you need `better' metrics values you should call                */
 | 
			
		||||
  /*    @FT_Outline_Get_CBox or @FT_Outline_Get_BBox.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Example call:                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    {                                                                  */
 | 
			
		||||
  /*      FT_Load_Glyph( face, index, FT_LOAD_DEFAULT );                   */
 | 
			
		||||
  /*      if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE )            */
 | 
			
		||||
  /*        FT_Outline_Embolden( &face->glyph->outline, strength );        */
 | 
			
		||||
  /*    }                                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    To get meaningful results, font scaling values must be set with    */
 | 
			
		||||
  /*    functions like @FT_Set_Char_Size before calling FT_Render_Glyph.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Embolden( FT_Outline*  outline,
 | 
			
		||||
                       FT_Pos       strength );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_EmboldenXY                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Embolden an outline.  The new outline will be `xstrength' pixels   */
 | 
			
		||||
  /*    wider and `ystrength' pixels higher.  Otherwise, it is similar to  */
 | 
			
		||||
  /*    @FT_Outline_Embolden, which uses the same strength in both         */
 | 
			
		||||
  /*    directions.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_EmboldenXY( FT_Outline*  outline,
 | 
			
		||||
                         FT_Pos       xstrength,
 | 
			
		||||
                         FT_Pos       ystrength );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Reverse                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Reverse the drawing direction of an outline.  This is used to      */
 | 
			
		||||
  /*    ensure consistent fill conventions for mirrored glyphs.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    outline :: A pointer to the target outline descriptor.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in     */
 | 
			
		||||
  /*    the outline's `flags' field.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    It shouldn't be used by a normal client application, unless it     */
 | 
			
		||||
  /*    knows what it is doing.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Outline_Reverse( FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Get_Bitmap                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Render an outline within a bitmap.  The outline's image is simply  */
 | 
			
		||||
  /*    OR-ed to the target bitmap.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle to a FreeType library object.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    outline :: A pointer to the source outline descriptor.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    abitmap :: A pointer to the target bitmap descriptor.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This function does NOT CREATE the bitmap, it only renders an       */
 | 
			
		||||
  /*    outline image within the one you pass to it!  Consequently, the    */
 | 
			
		||||
  /*    various fields in `abitmap' should be set accordingly.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    It will use the raster corresponding to the default glyph format.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The value of the `num_grays' field in `abitmap' is ignored.  If    */
 | 
			
		||||
  /*    you select the gray-level rasterizer, and you want less than 256   */
 | 
			
		||||
  /*    gray levels, you have to use @FT_Outline_Render directly.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Get_Bitmap( FT_Library        library,
 | 
			
		||||
                         FT_Outline*       outline,
 | 
			
		||||
                         const FT_Bitmap  *abitmap );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Outline_Render                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Render an outline within a bitmap using the current scan-convert.  */
 | 
			
		||||
  /*    This function uses an @FT_Raster_Params structure as an argument,  */
 | 
			
		||||
  /*    allowing advanced features like direct composition, translucency,  */
 | 
			
		||||
  /*    etc.                                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle to a FreeType library object.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    outline :: A pointer to the source outline descriptor.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    params  :: A pointer to an @FT_Raster_Params structure used to     */
 | 
			
		||||
  /*               describe the rendering operation.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    You should know what you are doing and how @FT_Raster_Params works */
 | 
			
		||||
  /*    to use this function.                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The field `params.source' will be set to `outline' before the scan */
 | 
			
		||||
  /*    converter is called, which means that the value you give to it is  */
 | 
			
		||||
  /*    actually ignored.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The gray-level rasterizer always uses 256 gray levels.  If you     */
 | 
			
		||||
  /*    want less gray levels, you have to provide your own span callback. */
 | 
			
		||||
  /*    See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the   */
 | 
			
		||||
  /*    @FT_Raster_Params structure for more details.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Outline_Render( FT_Library         library,
 | 
			
		||||
                     FT_Outline*        outline,
 | 
			
		||||
                     FT_Raster_Params*  params );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @enum:
 | 
			
		||||
  *   FT_Orientation
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   A list of values used to describe an outline's contour orientation.
 | 
			
		||||
  *
 | 
			
		||||
  *   The TrueType and PostScript specifications use different conventions
 | 
			
		||||
  *   to determine whether outline contours should be filled or unfilled.
 | 
			
		||||
  *
 | 
			
		||||
  * @values:
 | 
			
		||||
  *   FT_ORIENTATION_TRUETYPE ::
 | 
			
		||||
  *     According to the TrueType specification, clockwise contours must
 | 
			
		||||
  *     be filled, and counter-clockwise ones must be unfilled.
 | 
			
		||||
  *
 | 
			
		||||
  *   FT_ORIENTATION_POSTSCRIPT ::
 | 
			
		||||
  *     According to the PostScript specification, counter-clockwise contours
 | 
			
		||||
  *     must be filled, and clockwise ones must be unfilled.
 | 
			
		||||
  *
 | 
			
		||||
  *   FT_ORIENTATION_FILL_RIGHT ::
 | 
			
		||||
  *     This is identical to @FT_ORIENTATION_TRUETYPE, but is used to
 | 
			
		||||
  *     remember that in TrueType, everything that is to the right of
 | 
			
		||||
  *     the drawing direction of a contour must be filled.
 | 
			
		||||
  *
 | 
			
		||||
  *   FT_ORIENTATION_FILL_LEFT ::
 | 
			
		||||
  *     This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to
 | 
			
		||||
  *     remember that in PostScript, everything that is to the left of
 | 
			
		||||
  *     the drawing direction of a contour must be filled.
 | 
			
		||||
  *
 | 
			
		||||
  *   FT_ORIENTATION_NONE ::
 | 
			
		||||
  *     The orientation cannot be determined.  That is, different parts of
 | 
			
		||||
  *     the glyph have different orientation.
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
  typedef enum  FT_Orientation_
 | 
			
		||||
  {
 | 
			
		||||
    FT_ORIENTATION_TRUETYPE   = 0,
 | 
			
		||||
    FT_ORIENTATION_POSTSCRIPT = 1,
 | 
			
		||||
    FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE,
 | 
			
		||||
    FT_ORIENTATION_FILL_LEFT  = FT_ORIENTATION_POSTSCRIPT,
 | 
			
		||||
    FT_ORIENTATION_NONE
 | 
			
		||||
 | 
			
		||||
  } FT_Orientation;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *   FT_Outline_Get_Orientation
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   This function analyzes a glyph outline and tries to compute its
 | 
			
		||||
  *   fill orientation (see @FT_Orientation).  This is done by integrating
 | 
			
		||||
  *   the total area covered by the outline. The positive integral
 | 
			
		||||
  *   corresponds to the clockwise orientation and @FT_ORIENTATION_POSTSCRIPT
 | 
			
		||||
  *   is returned. The negative integral corresponds to the counter-clockwise
 | 
			
		||||
  *   orientation and @FT_ORIENTATION_TRUETYPE is returned.
 | 
			
		||||
  *
 | 
			
		||||
  *   Note that this will return @FT_ORIENTATION_TRUETYPE for empty
 | 
			
		||||
  *   outlines.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *   outline ::
 | 
			
		||||
  *     A handle to the source outline.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   The orientation.
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Orientation )
 | 
			
		||||
  FT_Outline_Get_Orientation( FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTOUTLN_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Local Variables: */
 | 
			
		||||
/* coding: utf-8    */
 | 
			
		||||
/* End:             */
 | 
			
		||||
@@ -1,172 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftpfr.h                                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for accessing PFR-specific data (specification only).   */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTPFR_H__
 | 
			
		||||
#define __FTPFR_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    pfr_fonts                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    PFR Fonts                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    PFR/TrueDoc specific API.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of PFR-specific functions.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_Get_PFR_Metrics
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Return the outline and metrics resolutions of a given PFR face.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face :: Handle to the input face.  It can be a non-PFR face.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    aoutline_resolution ::
 | 
			
		||||
  *      Outline resolution.  This is equivalent to `face->units_per_EM'
 | 
			
		||||
  *      for non-PFR fonts.  Optional (parameter can be NULL).
 | 
			
		||||
  *
 | 
			
		||||
  *    ametrics_resolution ::
 | 
			
		||||
  *      Metrics resolution.  This is equivalent to `outline_resolution'
 | 
			
		||||
  *      for non-PFR fonts.  Optional (parameter can be NULL).
 | 
			
		||||
  *
 | 
			
		||||
  *    ametrics_x_scale ::
 | 
			
		||||
  *      A 16.16 fixed-point number used to scale distance expressed
 | 
			
		||||
  *      in metrics units to device sub-pixels.  This is equivalent to
 | 
			
		||||
  *      `face->size->x_scale', but for metrics only.  Optional (parameter
 | 
			
		||||
  *      can be NULL).
 | 
			
		||||
  *
 | 
			
		||||
  *    ametrics_y_scale ::
 | 
			
		||||
  *      Same as `ametrics_x_scale' but for the vertical direction.
 | 
			
		||||
  *      optional (parameter can be NULL).
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *    FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   If the input face is not a PFR, this function will return an error.
 | 
			
		||||
  *   However, in all cases, it will return valid values.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_PFR_Metrics( FT_Face    face,
 | 
			
		||||
                      FT_UInt   *aoutline_resolution,
 | 
			
		||||
                      FT_UInt   *ametrics_resolution,
 | 
			
		||||
                      FT_Fixed  *ametrics_x_scale,
 | 
			
		||||
                      FT_Fixed  *ametrics_y_scale );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_Get_PFR_Kerning
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Return the kerning pair corresponding to two glyphs in a PFR face.
 | 
			
		||||
  *    The distance is expressed in metrics units, unlike the result of
 | 
			
		||||
  *    @FT_Get_Kerning.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face  :: A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    left  :: Index of the left glyph.
 | 
			
		||||
  *
 | 
			
		||||
  *    right :: Index of the right glyph.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    avector :: A kerning vector.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *    FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *    This function always return distances in original PFR metrics
 | 
			
		||||
  *    units.  This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED
 | 
			
		||||
  *    mode, which always returns distances converted to outline units.
 | 
			
		||||
  *
 | 
			
		||||
  *    You can use the value of the `x_scale' and `y_scale' parameters
 | 
			
		||||
  *    returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels.
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_PFR_Kerning( FT_Face     face,
 | 
			
		||||
                      FT_UInt     left,
 | 
			
		||||
                      FT_UInt     right,
 | 
			
		||||
                      FT_Vector  *avector );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**********************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *    FT_Get_PFR_Advance
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    Return a given glyph advance, expressed in original metrics units,
 | 
			
		||||
  *    from a PFR font.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *    face   :: A handle to the input face.
 | 
			
		||||
  *
 | 
			
		||||
  *    gindex :: The glyph index.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *    aadvance :: The glyph advance in metrics units.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *    FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *    You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics
 | 
			
		||||
  *    to convert the advance to device sub-pixels (i.e., 1/64th of pixels).
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_PFR_Advance( FT_Face   face,
 | 
			
		||||
                      FT_UInt   gindex,
 | 
			
		||||
                      FT_Pos   *aadvance );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTPFR_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,232 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftrender.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType renderer modules public interface (specification).          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTRENDER_H__
 | 
			
		||||
#define __FTRENDER_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_MODULE_H
 | 
			
		||||
#include FT_GLYPH_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    module_management                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* create a new glyph object */
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Glyph_InitFunc)( FT_Glyph      glyph,
 | 
			
		||||
                        FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
  /* destroys a given glyph object */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Glyph_DoneFunc)( FT_Glyph  glyph );
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Glyph_TransformFunc)( FT_Glyph          glyph,
 | 
			
		||||
                             const FT_Matrix*  matrix,
 | 
			
		||||
                             const FT_Vector*  delta );
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Glyph_GetBBoxFunc)( FT_Glyph  glyph,
 | 
			
		||||
                           FT_BBox*  abbox );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Glyph_CopyFunc)( FT_Glyph   source,
 | 
			
		||||
                        FT_Glyph   target );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Glyph_PrepareFunc)( FT_Glyph      glyph,
 | 
			
		||||
                           FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
/* deprecated */
 | 
			
		||||
#define FT_Glyph_Init_Func       FT_Glyph_InitFunc
 | 
			
		||||
#define FT_Glyph_Done_Func       FT_Glyph_DoneFunc
 | 
			
		||||
#define FT_Glyph_Transform_Func  FT_Glyph_TransformFunc
 | 
			
		||||
#define FT_Glyph_BBox_Func       FT_Glyph_GetBBoxFunc
 | 
			
		||||
#define FT_Glyph_Copy_Func       FT_Glyph_CopyFunc
 | 
			
		||||
#define FT_Glyph_Prepare_Func    FT_Glyph_PrepareFunc
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  struct  FT_Glyph_Class_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Long                 glyph_size;
 | 
			
		||||
    FT_Glyph_Format         glyph_format;
 | 
			
		||||
    FT_Glyph_InitFunc       glyph_init;
 | 
			
		||||
    FT_Glyph_DoneFunc       glyph_done;
 | 
			
		||||
    FT_Glyph_CopyFunc       glyph_copy;
 | 
			
		||||
    FT_Glyph_TransformFunc  glyph_transform;
 | 
			
		||||
    FT_Glyph_GetBBoxFunc    glyph_bbox;
 | 
			
		||||
    FT_Glyph_PrepareFunc    glyph_prepare;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Renderer_RenderFunc)( FT_Renderer       renderer,
 | 
			
		||||
                             FT_GlyphSlot      slot,
 | 
			
		||||
                             FT_UInt           mode,
 | 
			
		||||
                             const FT_Vector*  origin );
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Renderer_TransformFunc)( FT_Renderer       renderer,
 | 
			
		||||
                                FT_GlyphSlot      slot,
 | 
			
		||||
                                const FT_Matrix*  matrix,
 | 
			
		||||
                                const FT_Vector*  delta );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Renderer_GetCBoxFunc)( FT_Renderer   renderer,
 | 
			
		||||
                              FT_GlyphSlot  slot,
 | 
			
		||||
                              FT_BBox*      cbox );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef FT_Error
 | 
			
		||||
  (*FT_Renderer_SetModeFunc)( FT_Renderer  renderer,
 | 
			
		||||
                              FT_ULong     mode_tag,
 | 
			
		||||
                              FT_Pointer   mode_ptr );
 | 
			
		||||
 | 
			
		||||
/* deprecated identifiers */
 | 
			
		||||
#define FTRenderer_render  FT_Renderer_RenderFunc
 | 
			
		||||
#define FTRenderer_transform  FT_Renderer_TransformFunc
 | 
			
		||||
#define FTRenderer_getCBox  FT_Renderer_GetCBoxFunc
 | 
			
		||||
#define FTRenderer_setMode  FT_Renderer_SetModeFunc
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Renderer_Class                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The renderer module class descriptor.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    root            :: The root @FT_Module_Class fields.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    glyph_format    :: The glyph image format this renderer handles.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    render_glyph    :: A method used to render the image that is in a  */
 | 
			
		||||
  /*                       given glyph slot into a bitmap.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    transform_glyph :: A method used to transform the image that is in */
 | 
			
		||||
  /*                       a given glyph slot.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    get_glyph_cbox  :: A method used to access the glyph's cbox.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    set_mode        :: A method used to pass additional parameters.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    raster_class    :: For @FT_GLYPH_FORMAT_OUTLINE renderers only.    */
 | 
			
		||||
  /*                       This is a pointer to its raster's class.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Renderer_Class_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Module_Class            root;
 | 
			
		||||
 | 
			
		||||
    FT_Glyph_Format            glyph_format;
 | 
			
		||||
 | 
			
		||||
    FT_Renderer_RenderFunc     render_glyph;
 | 
			
		||||
    FT_Renderer_TransformFunc  transform_glyph;
 | 
			
		||||
    FT_Renderer_GetCBoxFunc    get_glyph_cbox;
 | 
			
		||||
    FT_Renderer_SetModeFunc    set_mode;
 | 
			
		||||
 | 
			
		||||
    FT_Raster_Funcs*           raster_class;
 | 
			
		||||
 | 
			
		||||
  } FT_Renderer_Class;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Renderer                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieve the current renderer for a given glyph format.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    library :: A handle to the library object.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    format  :: The glyph format.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    A renderer handle.  0~if none found.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    An error will be returned if a module already exists by that name, */
 | 
			
		||||
  /*    or if the module requires a version of FreeType that is too great. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    To add a new renderer, simply use @FT_Add_Module.  To retrieve a   */
 | 
			
		||||
  /*    renderer by its name, use @FT_Get_Module.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Renderer )
 | 
			
		||||
  FT_Get_Renderer( FT_Library       library,
 | 
			
		||||
                   FT_Glyph_Format  format );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Set_Renderer                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Set the current renderer to use, and set additional mode.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <InOut>                                                               */
 | 
			
		||||
  /*    library    :: A handle to the library object.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    renderer   :: A handle to the renderer object.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    num_params :: The number of additional parameters.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    parameters :: Additional parameters.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    In case of success, the renderer will be used to convert glyph     */
 | 
			
		||||
  /*    images in the renderer's known format into bitmaps.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This doesn't change the current renderer for other formats.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Currently, no FreeType renderer module uses `parameters'; you      */
 | 
			
		||||
  /*    should thus always pass NULL as the value.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Set_Renderer( FT_Library     library,
 | 
			
		||||
                   FT_Renderer    renderer,
 | 
			
		||||
                   FT_UInt        num_params,
 | 
			
		||||
                   FT_Parameter*  parameters );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTRENDER_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,159 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftsizes.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType size objects management (specification).                    */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* Typical application would normally not need to use these functions.   */
 | 
			
		||||
  /* However, they have been placed in a public API for the rare cases     */
 | 
			
		||||
  /* where they are needed.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTSIZES_H__
 | 
			
		||||
#define __FTSIZES_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    sizes_management                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Size Management                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Managing multiple sizes per face.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    When creating a new face object (e.g., with @FT_New_Face), an      */
 | 
			
		||||
  /*    @FT_Size object is automatically created and used to store all     */
 | 
			
		||||
  /*    pixel-size dependent information, available in the `face->size'    */
 | 
			
		||||
  /*    field.                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    It is however possible to create more sizes for a given face,      */
 | 
			
		||||
  /*    mostly in order to manage several character pixel sizes of the     */
 | 
			
		||||
  /*    same font family and style.  See @FT_New_Size and @FT_Done_Size.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only           */
 | 
			
		||||
  /*    modify the contents of the current `active' size; you thus need    */
 | 
			
		||||
  /*    to use @FT_Activate_Size to change it.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    99% of applications won't need the functions provided here,        */
 | 
			
		||||
  /*    especially if they use the caching sub-system, so be cautious      */
 | 
			
		||||
  /*    when using these.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_New_Size                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Create a new size object from a given face object.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face :: A handle to a parent face object.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    asize :: A handle to a new size object.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    You need to call @FT_Activate_Size in order to select the new size */
 | 
			
		||||
  /*    for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size,      */
 | 
			
		||||
  /*    @FT_Load_Glyph, @FT_Load_Char, etc.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_New_Size( FT_Face   face,
 | 
			
		||||
               FT_Size*  size );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Done_Size                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Discard a given size object.  Note that @FT_Done_Face              */
 | 
			
		||||
  /*    automatically discards all size objects allocated with             */
 | 
			
		||||
  /*    @FT_New_Size.                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    size :: A handle to a target size object.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Done_Size( FT_Size  size );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Activate_Size                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Even though it is possible to create several size objects for a    */
 | 
			
		||||
  /*    given face (see @FT_New_Size for details), functions like          */
 | 
			
		||||
  /*    @FT_Load_Glyph or @FT_Load_Char only use the one that has been     */
 | 
			
		||||
  /*    activated last to determine the `current character pixel size'.    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function can be used to `activate' a previously created size  */
 | 
			
		||||
  /*    object.                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    size :: A handle to a target size object.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    If `face' is the size's parent face object, this function changes  */
 | 
			
		||||
  /*    the value of `face->size' to the input size handle.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Activate_Size( FT_Size  size );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTSIZES_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,200 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftsnames.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Simple interface to access SFNT name tables (which are used          */
 | 
			
		||||
/*    to hold font names, copyright info, notices, etc.) (specification).  */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    This is _not_ used to retrieve glyph names!                          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FT_SFNT_NAMES_H__
 | 
			
		||||
#define __FT_SFNT_NAMES_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    sfnt_names                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    SFNT Names                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Access the names embedded in TrueType and OpenType files.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The TrueType and OpenType specifications allow the inclusion of    */
 | 
			
		||||
  /*    a special `names table' in font files.  This table contains        */
 | 
			
		||||
  /*    textual (and internationalized) information regarding the font,    */
 | 
			
		||||
  /*    like family name, copyright, version, etc.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    The definitions below are used to access them if available.        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Note that this has nothing to do with glyph names!                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_SfntName                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model an SFNT `name' table entry.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    platform_id :: The platform ID for `string'.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    encoding_id :: The encoding ID for `string'.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    language_id :: The language ID for `string'.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    name_id     :: An identifier for `string'.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    string      :: The `name' string.  Note that its format differs    */
 | 
			
		||||
  /*                   depending on the (platform,encoding) pair.  It can  */
 | 
			
		||||
  /*                   be a Pascal String, a UTF-16 one, etc.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                   Generally speaking, the string is not               */
 | 
			
		||||
  /*                   zero-terminated.  Please refer to the TrueType      */
 | 
			
		||||
  /*                   specification for details.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    string_len  :: The length of `string' in bytes.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    Possible values for `platform_id', `encoding_id', `language_id',   */
 | 
			
		||||
  /*    and `name_id' are given in the file `ttnameid.h'.  For details     */
 | 
			
		||||
  /*    please refer to the TrueType or OpenType specification.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX,       */
 | 
			
		||||
  /*    @TT_ISO_ID_XXX, and @TT_MS_ID_XXX.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_SfntName_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UShort  platform_id;
 | 
			
		||||
    FT_UShort  encoding_id;
 | 
			
		||||
    FT_UShort  language_id;
 | 
			
		||||
    FT_UShort  name_id;
 | 
			
		||||
 | 
			
		||||
    FT_Byte*   string;      /* this string is *not* null-terminated! */
 | 
			
		||||
    FT_UInt    string_len;  /* in bytes */
 | 
			
		||||
 | 
			
		||||
  } FT_SfntName;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Sfnt_Name_Count                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieve the number of name strings in the SFNT `name' table.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face :: A handle to the source face.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    The number of strings in the `name' table.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_UInt )
 | 
			
		||||
  FT_Get_Sfnt_Name_Count( FT_Face  face );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Sfnt_Name                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Retrieve a string of the SFNT `name' table for a given index.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face  :: A handle to the source face.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    idx   :: The index of the `name' string.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Output>                                                              */
 | 
			
		||||
  /*    aname :: The indexed @FT_SfntName structure.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    FreeType error code.  0~means success.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The `string' array returned in the `aname' structure is not        */
 | 
			
		||||
  /*    null-terminated.  The application should deallocate it if it is no */
 | 
			
		||||
  /*    longer in use.                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Use @FT_Get_Sfnt_Name_Count to get the total number of available   */
 | 
			
		||||
  /*    `name' table entries, then do a loop until you get the right       */
 | 
			
		||||
  /*    platform, encoding, and name ID.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_Sfnt_Name( FT_Face       face,
 | 
			
		||||
                    FT_UInt       idx,
 | 
			
		||||
                    FT_SfntName  *aname );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @constant:
 | 
			
		||||
   *   FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A constant used as the tag of @FT_Parameter structures to make
 | 
			
		||||
   *   FT_Open_Face() ignore preferred family subfamily names in `name'
 | 
			
		||||
   *   table since OpenType version 1.4.  For backwards compatibility with
 | 
			
		||||
   *   legacy systems that have a 4-face-per-family restriction.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY  FT_MAKE_TAG( 'i', 'g', 'p', 'f' )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /***************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @constant:
 | 
			
		||||
   *   FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A constant used as the tag of @FT_Parameter structures to make
 | 
			
		||||
   *   FT_Open_Face() ignore preferred subfamily names in `name' table since
 | 
			
		||||
   *   OpenType version 1.4.  For backwards compatibility with legacy
 | 
			
		||||
   *   systems that have a 4-face-per-family restriction.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY  FT_MAKE_TAG( 'i', 'g', 'p', 's' )
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FT_SFNT_NAMES_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,785 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftstroke.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType path stroker (specification).                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2002-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FT_STROKE_H__
 | 
			
		||||
#define __FT_STROKE_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_OUTLINE_H
 | 
			
		||||
#include FT_GLYPH_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @section:
 | 
			
		||||
  *    glyph_stroker
 | 
			
		||||
  *
 | 
			
		||||
  * @title:
 | 
			
		||||
  *    Glyph Stroker
 | 
			
		||||
  *
 | 
			
		||||
  * @abstract:
 | 
			
		||||
  *    Generating bordered and stroked glyphs.
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *    This component generates stroked outlines of a given vectorial
 | 
			
		||||
  *    glyph.  It also allows you to retrieve the `outside' and/or the
 | 
			
		||||
  *    `inside' borders of the stroke.
 | 
			
		||||
  *
 | 
			
		||||
  *    This can be useful to generate `bordered' glyph, i.e., glyphs
 | 
			
		||||
  *    displayed with a coloured (and anti-aliased) border around their
 | 
			
		||||
  *    shape.
 | 
			
		||||
  *
 | 
			
		||||
  * @order:
 | 
			
		||||
  *    FT_Stroker
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_Stroker_LineJoin
 | 
			
		||||
  *    FT_Stroker_LineCap
 | 
			
		||||
  *    FT_StrokerBorder
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_Outline_GetInsideBorder
 | 
			
		||||
  *    FT_Outline_GetOutsideBorder
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_Glyph_Stroke
 | 
			
		||||
  *    FT_Glyph_StrokeBorder
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_Stroker_New
 | 
			
		||||
  *    FT_Stroker_Set
 | 
			
		||||
  *    FT_Stroker_Rewind
 | 
			
		||||
  *    FT_Stroker_ParseOutline
 | 
			
		||||
  *    FT_Stroker_Done
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_Stroker_BeginSubPath
 | 
			
		||||
  *    FT_Stroker_EndSubPath
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_Stroker_LineTo
 | 
			
		||||
  *    FT_Stroker_ConicTo
 | 
			
		||||
  *    FT_Stroker_CubicTo
 | 
			
		||||
  *
 | 
			
		||||
  *    FT_Stroker_GetBorderCounts
 | 
			
		||||
  *    FT_Stroker_ExportBorder
 | 
			
		||||
  *    FT_Stroker_GetCounts
 | 
			
		||||
  *    FT_Stroker_Export
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @type:
 | 
			
		||||
  *   FT_Stroker
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   Opaque handle to a path stroker object.
 | 
			
		||||
  */
 | 
			
		||||
  typedef struct FT_StrokerRec_*  FT_Stroker;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   FT_Stroker_LineJoin
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   These values determine how two joining lines are rendered
 | 
			
		||||
   *   in a stroker.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_STROKER_LINEJOIN_ROUND ::
 | 
			
		||||
   *     Used to render rounded line joins.  Circular arcs are used
 | 
			
		||||
   *     to join two lines smoothly.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_STROKER_LINEJOIN_BEVEL ::
 | 
			
		||||
   *     Used to render beveled line joins.  The outer corner of
 | 
			
		||||
   *     the joined lines is filled by enclosing the triangular
 | 
			
		||||
   *     region of the corner with a straight line between the
 | 
			
		||||
   *     outer corners of each stroke.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_STROKER_LINEJOIN_MITER_FIXED ::
 | 
			
		||||
   *     Used to render mitered line joins, with fixed bevels if the
 | 
			
		||||
   *     miter limit is exceeded.  The outer edges of the strokes
 | 
			
		||||
   *     for the two segments are extended until they meet at an
 | 
			
		||||
   *     angle.  If the segments meet at too sharp an angle (such
 | 
			
		||||
   *     that the miter would extend from the intersection of the
 | 
			
		||||
   *     segments a distance greater than the product of the miter
 | 
			
		||||
   *     limit value and the border radius), then a bevel join (see
 | 
			
		||||
   *     above) is used instead.  This prevents long spikes being
 | 
			
		||||
   *     created.  FT_STROKER_LINEJOIN_MITER_FIXED generates a miter
 | 
			
		||||
   *     line join as used in PostScript and PDF.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_STROKER_LINEJOIN_MITER_VARIABLE ::
 | 
			
		||||
   *   FT_STROKER_LINEJOIN_MITER ::
 | 
			
		||||
   *     Used to render mitered line joins, with variable bevels if
 | 
			
		||||
   *     the miter limit is exceeded.  The intersection of the
 | 
			
		||||
   *     strokes is clipped at a line perpendicular to the bisector
 | 
			
		||||
   *     of the angle between the strokes, at the distance from the
 | 
			
		||||
   *     intersection of the segments equal to the product of the
 | 
			
		||||
   *     miter limit value and the border radius.  This prevents
 | 
			
		||||
   *     long spikes being created.
 | 
			
		||||
   *     FT_STROKER_LINEJOIN_MITER_VARIABLE generates a mitered line
 | 
			
		||||
   *     join as used in XPS.  FT_STROKER_LINEJOIN_MITER is an alias
 | 
			
		||||
   *     for FT_STROKER_LINEJOIN_MITER_VARIABLE, retained for
 | 
			
		||||
   *     backwards compatibility.
 | 
			
		||||
   */
 | 
			
		||||
  typedef enum  FT_Stroker_LineJoin_
 | 
			
		||||
  {
 | 
			
		||||
    FT_STROKER_LINEJOIN_ROUND          = 0,
 | 
			
		||||
    FT_STROKER_LINEJOIN_BEVEL          = 1,
 | 
			
		||||
    FT_STROKER_LINEJOIN_MITER_VARIABLE = 2,
 | 
			
		||||
    FT_STROKER_LINEJOIN_MITER          = FT_STROKER_LINEJOIN_MITER_VARIABLE,
 | 
			
		||||
    FT_STROKER_LINEJOIN_MITER_FIXED    = 3
 | 
			
		||||
 | 
			
		||||
  } FT_Stroker_LineJoin;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   FT_Stroker_LineCap
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   These values determine how the end of opened sub-paths are
 | 
			
		||||
   *   rendered in a stroke.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_STROKER_LINECAP_BUTT ::
 | 
			
		||||
   *     The end of lines is rendered as a full stop on the last
 | 
			
		||||
   *     point itself.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_STROKER_LINECAP_ROUND ::
 | 
			
		||||
   *     The end of lines is rendered as a half-circle around the
 | 
			
		||||
   *     last point.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_STROKER_LINECAP_SQUARE ::
 | 
			
		||||
   *     The end of lines is rendered as a square around the
 | 
			
		||||
   *     last point.
 | 
			
		||||
   */
 | 
			
		||||
  typedef enum  FT_Stroker_LineCap_
 | 
			
		||||
  {
 | 
			
		||||
    FT_STROKER_LINECAP_BUTT = 0,
 | 
			
		||||
    FT_STROKER_LINECAP_ROUND,
 | 
			
		||||
    FT_STROKER_LINECAP_SQUARE
 | 
			
		||||
 | 
			
		||||
  } FT_Stroker_LineCap;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   FT_StrokerBorder
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   These values are used to select a given stroke border
 | 
			
		||||
   *   in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_STROKER_BORDER_LEFT ::
 | 
			
		||||
   *     Select the left border, relative to the drawing direction.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_STROKER_BORDER_RIGHT ::
 | 
			
		||||
   *     Select the right border, relative to the drawing direction.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   Applications are generally interested in the `inside' and `outside'
 | 
			
		||||
   *   borders.  However, there is no direct mapping between these and the
 | 
			
		||||
   *   `left' and `right' ones, since this really depends on the glyph's
 | 
			
		||||
   *   drawing orientation, which varies between font formats.
 | 
			
		||||
   *
 | 
			
		||||
   *   You can however use @FT_Outline_GetInsideBorder and
 | 
			
		||||
   *   @FT_Outline_GetOutsideBorder to get these.
 | 
			
		||||
   */
 | 
			
		||||
  typedef enum  FT_StrokerBorder_
 | 
			
		||||
  {
 | 
			
		||||
    FT_STROKER_BORDER_LEFT = 0,
 | 
			
		||||
    FT_STROKER_BORDER_RIGHT
 | 
			
		||||
 | 
			
		||||
  } FT_StrokerBorder;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Outline_GetInsideBorder
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Retrieve the @FT_StrokerBorder value corresponding to the
 | 
			
		||||
   *   `inside' borders of a given outline.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   outline ::
 | 
			
		||||
   *     The source outline handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The border index.  @FT_STROKER_BORDER_RIGHT for empty or invalid
 | 
			
		||||
   *   outlines.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_StrokerBorder )
 | 
			
		||||
  FT_Outline_GetInsideBorder( FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Outline_GetOutsideBorder
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Retrieve the @FT_StrokerBorder value corresponding to the
 | 
			
		||||
   *   `outside' borders of a given outline.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   outline ::
 | 
			
		||||
   *     The source outline handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The border index.  @FT_STROKER_BORDER_LEFT for empty or invalid
 | 
			
		||||
   *   outlines.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_StrokerBorder )
 | 
			
		||||
  FT_Outline_GetOutsideBorder( FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_New
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Create a new stroker object.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   library ::
 | 
			
		||||
   *     FreeType library handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   astroker ::
 | 
			
		||||
   *     A new stroker object handle.  NULL in case of error.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0~means success.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_New( FT_Library   library,
 | 
			
		||||
                  FT_Stroker  *astroker );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_Set
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Reset a stroker object's attributes.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   radius ::
 | 
			
		||||
   *     The border radius.
 | 
			
		||||
   *
 | 
			
		||||
   *   line_cap ::
 | 
			
		||||
   *     The line cap style.
 | 
			
		||||
   *
 | 
			
		||||
   *   line_join ::
 | 
			
		||||
   *     The line join style.
 | 
			
		||||
   *
 | 
			
		||||
   *   miter_limit ::
 | 
			
		||||
   *     The miter limit for the FT_STROKER_LINEJOIN_MITER_FIXED and
 | 
			
		||||
   *     FT_STROKER_LINEJOIN_MITER_VARIABLE line join styles,
 | 
			
		||||
   *     expressed as 16.16 fixed-point value.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   The radius is expressed in the same units as the outline
 | 
			
		||||
   *   coordinates.
 | 
			
		||||
   *
 | 
			
		||||
   *   This function calls @FT_Stroker_Rewind automatically.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Stroker_Set( FT_Stroker           stroker,
 | 
			
		||||
                  FT_Fixed             radius,
 | 
			
		||||
                  FT_Stroker_LineCap   line_cap,
 | 
			
		||||
                  FT_Stroker_LineJoin  line_join,
 | 
			
		||||
                  FT_Fixed             miter_limit );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_Rewind
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Reset a stroker object without changing its attributes.
 | 
			
		||||
   *   You should call this function before beginning a new
 | 
			
		||||
   *   series of calls to @FT_Stroker_BeginSubPath or
 | 
			
		||||
   *   @FT_Stroker_EndSubPath.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Stroker_Rewind( FT_Stroker  stroker );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_ParseOutline
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A convenience function used to parse a whole outline with
 | 
			
		||||
   *   the stroker.  The resulting outline(s) can be retrieved
 | 
			
		||||
   *   later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   outline ::
 | 
			
		||||
   *     The source outline.
 | 
			
		||||
   *
 | 
			
		||||
   *   opened ::
 | 
			
		||||
   *     A boolean.  If~1, the outline is treated as an open path instead
 | 
			
		||||
   *     of a closed one.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   If `opened' is~0 (the default), the outline is treated as a closed
 | 
			
		||||
   *   path, and the stroker generates two distinct `border' outlines.
 | 
			
		||||
   *
 | 
			
		||||
   *   If `opened' is~1, the outline is processed as an open path, and the
 | 
			
		||||
   *   stroker generates a single `stroke' outline.
 | 
			
		||||
   *
 | 
			
		||||
   *   This function calls @FT_Stroker_Rewind automatically.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_ParseOutline( FT_Stroker   stroker,
 | 
			
		||||
                           FT_Outline*  outline,
 | 
			
		||||
                           FT_Bool      opened );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_BeginSubPath
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Start a new sub-path in the stroker.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   to ::
 | 
			
		||||
   *     A pointer to the start vector.
 | 
			
		||||
   *
 | 
			
		||||
   *   open ::
 | 
			
		||||
   *     A boolean.  If~1, the sub-path is treated as an open one.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This function is useful when you need to stroke a path that is
 | 
			
		||||
   *   not stored as an @FT_Outline object.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_BeginSubPath( FT_Stroker  stroker,
 | 
			
		||||
                           FT_Vector*  to,
 | 
			
		||||
                           FT_Bool     open );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_EndSubPath
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Close the current sub-path in the stroker.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   You should call this function after @FT_Stroker_BeginSubPath.
 | 
			
		||||
   *   If the subpath was not `opened', this function `draws' a
 | 
			
		||||
   *   single line segment to the start position when needed.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_EndSubPath( FT_Stroker  stroker );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_LineTo
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   `Draw' a single line segment in the stroker's current sub-path,
 | 
			
		||||
   *   from the last position.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   to ::
 | 
			
		||||
   *     A pointer to the destination point.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   You should call this function between @FT_Stroker_BeginSubPath and
 | 
			
		||||
   *   @FT_Stroker_EndSubPath.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_LineTo( FT_Stroker  stroker,
 | 
			
		||||
                     FT_Vector*  to );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_ConicTo
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   `Draw' a single quadratic Bézier in the stroker's current sub-path,
 | 
			
		||||
   *   from the last position.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   control ::
 | 
			
		||||
   *     A pointer to a Bézier control point.
 | 
			
		||||
   *
 | 
			
		||||
   *   to ::
 | 
			
		||||
   *     A pointer to the destination point.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   You should call this function between @FT_Stroker_BeginSubPath and
 | 
			
		||||
   *   @FT_Stroker_EndSubPath.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_ConicTo( FT_Stroker  stroker,
 | 
			
		||||
                      FT_Vector*  control,
 | 
			
		||||
                      FT_Vector*  to );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_CubicTo
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   `Draw' a single cubic Bézier in the stroker's current sub-path,
 | 
			
		||||
   *   from the last position.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   control1 ::
 | 
			
		||||
   *     A pointer to the first Bézier control point.
 | 
			
		||||
   *
 | 
			
		||||
   *   control2 ::
 | 
			
		||||
   *     A pointer to second Bézier control point.
 | 
			
		||||
   *
 | 
			
		||||
   *   to ::
 | 
			
		||||
   *     A pointer to the destination point.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   You should call this function between @FT_Stroker_BeginSubPath and
 | 
			
		||||
   *   @FT_Stroker_EndSubPath.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_CubicTo( FT_Stroker  stroker,
 | 
			
		||||
                      FT_Vector*  control1,
 | 
			
		||||
                      FT_Vector*  control2,
 | 
			
		||||
                      FT_Vector*  to );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_GetBorderCounts
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Call this function once you have finished parsing your paths
 | 
			
		||||
   *   with the stroker.  It returns the number of points and
 | 
			
		||||
   *   contours necessary to export one of the `border' or `stroke'
 | 
			
		||||
   *   outlines generated by the stroker.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   border ::
 | 
			
		||||
   *     The border index.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   anum_points ::
 | 
			
		||||
   *     The number of points.
 | 
			
		||||
   *
 | 
			
		||||
   *   anum_contours ::
 | 
			
		||||
   *     The number of contours.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   When an outline, or a sub-path, is `closed', the stroker generates
 | 
			
		||||
   *   two independent `border' outlines, named `left' and `right'.
 | 
			
		||||
   *
 | 
			
		||||
   *   When the outline, or a sub-path, is `opened', the stroker merges
 | 
			
		||||
   *   the `border' outlines with caps.  The `left' border receives all
 | 
			
		||||
   *   points, while the `right' border becomes empty.
 | 
			
		||||
   *
 | 
			
		||||
   *   Use the function @FT_Stroker_GetCounts instead if you want to
 | 
			
		||||
   *   retrieve the counts associated to both borders.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_GetBorderCounts( FT_Stroker        stroker,
 | 
			
		||||
                              FT_StrokerBorder  border,
 | 
			
		||||
                              FT_UInt          *anum_points,
 | 
			
		||||
                              FT_UInt          *anum_contours );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_ExportBorder
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Call this function after @FT_Stroker_GetBorderCounts to
 | 
			
		||||
   *   export the corresponding border to your own @FT_Outline
 | 
			
		||||
   *   structure.
 | 
			
		||||
   *
 | 
			
		||||
   *   Note that this function appends the border points and
 | 
			
		||||
   *   contours to your outline, but does not try to resize its
 | 
			
		||||
   *   arrays.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   border ::
 | 
			
		||||
   *     The border index.
 | 
			
		||||
   *
 | 
			
		||||
   *   outline ::
 | 
			
		||||
   *     The target outline handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   Always call this function after @FT_Stroker_GetBorderCounts to
 | 
			
		||||
   *   get sure that there is enough room in your @FT_Outline object to
 | 
			
		||||
   *   receive all new data.
 | 
			
		||||
   *
 | 
			
		||||
   *   When an outline, or a sub-path, is `closed', the stroker generates
 | 
			
		||||
   *   two independent `border' outlines, named `left' and `right'.
 | 
			
		||||
   *
 | 
			
		||||
   *   When the outline, or a sub-path, is `opened', the stroker merges
 | 
			
		||||
   *   the `border' outlines with caps.  The `left' border receives all
 | 
			
		||||
   *   points, while the `right' border becomes empty.
 | 
			
		||||
   *
 | 
			
		||||
   *   Use the function @FT_Stroker_Export instead if you want to
 | 
			
		||||
   *   retrieve all borders at once.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Stroker_ExportBorder( FT_Stroker        stroker,
 | 
			
		||||
                           FT_StrokerBorder  border,
 | 
			
		||||
                           FT_Outline*       outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_GetCounts
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Call this function once you have finished parsing your paths
 | 
			
		||||
   *   with the stroker.  It returns the number of points and
 | 
			
		||||
   *   contours necessary to export all points/borders from the stroked
 | 
			
		||||
   *   outline/path.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   anum_points ::
 | 
			
		||||
   *     The number of points.
 | 
			
		||||
   *
 | 
			
		||||
   *   anum_contours ::
 | 
			
		||||
   *     The number of contours.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Stroker_GetCounts( FT_Stroker  stroker,
 | 
			
		||||
                        FT_UInt    *anum_points,
 | 
			
		||||
                        FT_UInt    *anum_contours );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_Export
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Call this function after @FT_Stroker_GetBorderCounts to
 | 
			
		||||
   *   export all borders to your own @FT_Outline structure.
 | 
			
		||||
   *
 | 
			
		||||
   *   Note that this function appends the border points and
 | 
			
		||||
   *   contours to your outline, but does not try to resize its
 | 
			
		||||
   *   arrays.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     The target stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   outline ::
 | 
			
		||||
   *     The target outline handle.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Stroker_Export( FT_Stroker   stroker,
 | 
			
		||||
                     FT_Outline*  outline );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Stroker_Done
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Destroy a stroker object.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     A stroker handle.  Can be NULL.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Stroker_Done( FT_Stroker  stroker );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Glyph_Stroke
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Stroke a given outline glyph object with a given stroker.
 | 
			
		||||
   *
 | 
			
		||||
   * @inout:
 | 
			
		||||
   *   pglyph ::
 | 
			
		||||
   *     Source glyph handle on input, new glyph handle on output.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     A stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   destroy ::
 | 
			
		||||
   *     A Boolean.  If~1, the source glyph object is destroyed
 | 
			
		||||
   *     on success.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   The source glyph is untouched in case of error.
 | 
			
		||||
   *
 | 
			
		||||
   *   Adding stroke may yield a significantly wider and taller glyph
 | 
			
		||||
   *   depending on how large of a radius was used to stroke the glyph.  You
 | 
			
		||||
   *   may need to manually adjust horizontal and vertical advance amounts
 | 
			
		||||
   *   to account for this added size.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Glyph_Stroke( FT_Glyph    *pglyph,
 | 
			
		||||
                   FT_Stroker   stroker,
 | 
			
		||||
                   FT_Bool      destroy );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Glyph_StrokeBorder
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Stroke a given outline glyph object with a given stroker, but
 | 
			
		||||
   *   only return either its inside or outside border.
 | 
			
		||||
   *
 | 
			
		||||
   * @inout:
 | 
			
		||||
   *   pglyph ::
 | 
			
		||||
   *     Source glyph handle on input, new glyph handle on output.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stroker ::
 | 
			
		||||
   *     A stroker handle.
 | 
			
		||||
   *
 | 
			
		||||
   *   inside ::
 | 
			
		||||
   *     A Boolean.  If~1, return the inside border, otherwise
 | 
			
		||||
   *     the outside border.
 | 
			
		||||
   *
 | 
			
		||||
   *   destroy ::
 | 
			
		||||
   *     A Boolean.  If~1, the source glyph object is destroyed
 | 
			
		||||
   *     on success.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   The source glyph is untouched in case of error.
 | 
			
		||||
   *
 | 
			
		||||
   *   Adding stroke may yield a significantly wider and taller glyph
 | 
			
		||||
   *   depending on how large of a radius was used to stroke the glyph.  You
 | 
			
		||||
   *   may need to manually adjust horizontal and vertical advance amounts
 | 
			
		||||
   *   to account for this added size.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Glyph_StrokeBorder( FT_Glyph    *pglyph,
 | 
			
		||||
                         FT_Stroker   stroker,
 | 
			
		||||
                         FT_Bool      inside,
 | 
			
		||||
                         FT_Bool      destroy );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FT_STROKE_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Local Variables: */
 | 
			
		||||
/* coding: utf-8    */
 | 
			
		||||
/* End:             */
 | 
			
		||||
@@ -1,84 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftsynth.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType synthesizing code for emboldening and slanting              */
 | 
			
		||||
/*    (specification).                                                     */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2000-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*********                                                       *********/
 | 
			
		||||
  /*********        WARNING, THIS IS ALPHA CODE!  THIS API         *********/
 | 
			
		||||
  /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    *********/
 | 
			
		||||
  /*********            FREETYPE DEVELOPMENT TEAM                  *********/
 | 
			
		||||
  /*********                                                       *********/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Main reason for not lifting the functions in this module to a  */
 | 
			
		||||
  /* `standard' API is that the used parameters for emboldening and */
 | 
			
		||||
  /* slanting are not configurable.  Consider the functions as a    */
 | 
			
		||||
  /* code resource that should be copied into the application and   */
 | 
			
		||||
  /* adapted to the particular needs.                               */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTSYNTH_H__
 | 
			
		||||
#define __FTSYNTH_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
  /* Embolden a glyph by a `reasonable' value (which is highly a matter of */
 | 
			
		||||
  /* taste).  This function is actually a convenience function, providing  */
 | 
			
		||||
  /* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* For emboldened outlines the height, width, and advance metrics are    */
 | 
			
		||||
  /* increased by the strength of the emboldening -- this even affects     */
 | 
			
		||||
  /* mono-width fonts!                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* You can also call @FT_Outline_Get_CBox to get precise values.         */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_GlyphSlot_Embolden( FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
  /* Slant an outline glyph to the right by about 12 degrees. */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_GlyphSlot_Oblique( FT_GlyphSlot  slot );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTSYNTH_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,355 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftsystem.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType low-level system interface definition (specification).      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTSYSTEM_H__
 | 
			
		||||
#define __FTSYSTEM_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*   system_interface                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*   System Interface                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*   How FreeType manages memory and i/o.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*   This section contains various definitions related to memory         */
 | 
			
		||||
  /*   management and i/o access.  You need to understand this             */
 | 
			
		||||
  /*   information if you want to use a custom memory manager or you own   */
 | 
			
		||||
  /*   i/o streams.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                  M E M O R Y   M A N A G E M E N T                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Memory
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A handle to a given memory manager object, defined with an
 | 
			
		||||
   *   @FT_MemoryRec structure.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct FT_MemoryRec_*  FT_Memory;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   FT_Alloc_Func
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to allocate `size' bytes from `memory'.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   memory ::
 | 
			
		||||
   *     A handle to the source memory manager.
 | 
			
		||||
   *
 | 
			
		||||
   *   size ::
 | 
			
		||||
   *     The size in bytes to allocate.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   Address of new memory block.  0~in case of failure.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void*
 | 
			
		||||
  (*FT_Alloc_Func)( FT_Memory  memory,
 | 
			
		||||
                    long       size );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   FT_Free_Func
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to release a given block of memory.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   memory ::
 | 
			
		||||
   *     A handle to the source memory manager.
 | 
			
		||||
   *
 | 
			
		||||
   *   block ::
 | 
			
		||||
   *     The address of the target memory block.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Free_Func)( FT_Memory  memory,
 | 
			
		||||
                   void*      block );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   FT_Realloc_Func
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to re-allocate a given block of memory.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   memory ::
 | 
			
		||||
   *     A handle to the source memory manager.
 | 
			
		||||
   *
 | 
			
		||||
   *   cur_size ::
 | 
			
		||||
   *     The block's current size in bytes.
 | 
			
		||||
   *
 | 
			
		||||
   *   new_size ::
 | 
			
		||||
   *     The block's requested new size.
 | 
			
		||||
   *
 | 
			
		||||
   *   block ::
 | 
			
		||||
   *     The block's current address.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   New block address.  0~in case of memory shortage.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   In case of error, the old block must still be available.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void*
 | 
			
		||||
  (*FT_Realloc_Func)( FT_Memory  memory,
 | 
			
		||||
                      long       cur_size,
 | 
			
		||||
                      long       new_size,
 | 
			
		||||
                      void*      block );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_MemoryRec
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A structure used to describe a given memory manager to FreeType~2.
 | 
			
		||||
   *
 | 
			
		||||
   * @fields:
 | 
			
		||||
   *   user ::
 | 
			
		||||
   *     A generic typeless pointer for user data.
 | 
			
		||||
   *
 | 
			
		||||
   *   alloc ::
 | 
			
		||||
   *     A pointer type to an allocation function.
 | 
			
		||||
   *
 | 
			
		||||
   *   free ::
 | 
			
		||||
   *     A pointer type to an memory freeing function.
 | 
			
		||||
   *
 | 
			
		||||
   *   realloc ::
 | 
			
		||||
   *     A pointer type to a reallocation function.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  struct  FT_MemoryRec_
 | 
			
		||||
  {
 | 
			
		||||
    void*            user;
 | 
			
		||||
    FT_Alloc_Func    alloc;
 | 
			
		||||
    FT_Free_Func     free;
 | 
			
		||||
    FT_Realloc_Func  realloc;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                       I / O   M A N A G E M E N T                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Stream
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A handle to an input stream.
 | 
			
		||||
   *
 | 
			
		||||
   * @also:
 | 
			
		||||
   *   See @FT_StreamRec for the publicly accessible fields of a given
 | 
			
		||||
   *   stream object.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct FT_StreamRec_*  FT_Stream;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_StreamDesc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A union type used to store either a long or a pointer.  This is used
 | 
			
		||||
   *   to store a file descriptor or a `FILE*' in an input stream.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef union  FT_StreamDesc_
 | 
			
		||||
  {
 | 
			
		||||
    long   value;
 | 
			
		||||
    void*  pointer;
 | 
			
		||||
 | 
			
		||||
  } FT_StreamDesc;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   FT_Stream_IoFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to seek and read data from a given input stream.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   stream ::
 | 
			
		||||
   *     A handle to the source stream.
 | 
			
		||||
   *
 | 
			
		||||
   *   offset ::
 | 
			
		||||
   *     The offset of read in stream (always from start).
 | 
			
		||||
   *
 | 
			
		||||
   *   buffer ::
 | 
			
		||||
   *     The address of the read buffer.
 | 
			
		||||
   *
 | 
			
		||||
   *   count ::
 | 
			
		||||
   *     The number of bytes to read from the stream.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The number of bytes effectively read by the stream.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This function might be called to perform a seek or skip operation
 | 
			
		||||
   *   with a `count' of~0.  A non-zero return value then indicates an
 | 
			
		||||
   *   error.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef unsigned long
 | 
			
		||||
  (*FT_Stream_IoFunc)( FT_Stream       stream,
 | 
			
		||||
                       unsigned long   offset,
 | 
			
		||||
                       unsigned char*  buffer,
 | 
			
		||||
                       unsigned long   count );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @functype:
 | 
			
		||||
   *   FT_Stream_CloseFunc
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A function used to close a given input stream.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *  stream ::
 | 
			
		||||
   *     A handle to the target stream.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef void
 | 
			
		||||
  (*FT_Stream_CloseFunc)( FT_Stream  stream );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @struct:
 | 
			
		||||
   *   FT_StreamRec
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A structure used to describe an input stream.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   base ::
 | 
			
		||||
   *     For memory-based streams, this is the address of the first stream
 | 
			
		||||
   *     byte in memory.  This field should always be set to NULL for
 | 
			
		||||
   *     disk-based streams.
 | 
			
		||||
   *
 | 
			
		||||
   *   size ::
 | 
			
		||||
   *     The stream size in bytes.
 | 
			
		||||
   *
 | 
			
		||||
   *     In case of compressed streams where the size is unknown before
 | 
			
		||||
   *     actually doing the decompression, the value is set to 0x7FFFFFFF. 
 | 
			
		||||
   *     (Note that this size value can occur for normal streams also; it is
 | 
			
		||||
   *     thus just a hint.)
 | 
			
		||||
   *
 | 
			
		||||
   *   pos ::
 | 
			
		||||
   *     The current position within the stream.
 | 
			
		||||
   *
 | 
			
		||||
   *   descriptor ::
 | 
			
		||||
   *     This field is a union that can hold an integer or a pointer.  It is
 | 
			
		||||
   *     used by stream implementations to store file descriptors or `FILE*'
 | 
			
		||||
   *     pointers.
 | 
			
		||||
   *
 | 
			
		||||
   *   pathname ::
 | 
			
		||||
   *     This field is completely ignored by FreeType.  However, it is often
 | 
			
		||||
   *     useful during debugging to use it to store the stream's filename
 | 
			
		||||
   *     (where available).
 | 
			
		||||
   *
 | 
			
		||||
   *   read ::
 | 
			
		||||
   *     The stream's input function.
 | 
			
		||||
   *
 | 
			
		||||
   *   close ::
 | 
			
		||||
   *     The stream's close function.
 | 
			
		||||
   *
 | 
			
		||||
   *   memory ::
 | 
			
		||||
   *     The memory manager to use to preload frames.  This is set
 | 
			
		||||
   *     internally by FreeType and shouldn't be touched by stream
 | 
			
		||||
   *     implementations.
 | 
			
		||||
   *
 | 
			
		||||
   *   cursor ::
 | 
			
		||||
   *     This field is set and used internally by FreeType when parsing
 | 
			
		||||
   *     frames.
 | 
			
		||||
   *
 | 
			
		||||
   *   limit ::
 | 
			
		||||
   *     This field is set and used internally by FreeType when parsing
 | 
			
		||||
   *     frames.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef struct  FT_StreamRec_
 | 
			
		||||
  {
 | 
			
		||||
    unsigned char*       base;
 | 
			
		||||
    unsigned long        size;
 | 
			
		||||
    unsigned long        pos;
 | 
			
		||||
 | 
			
		||||
    FT_StreamDesc        descriptor;
 | 
			
		||||
    FT_StreamDesc        pathname;
 | 
			
		||||
    FT_Stream_IoFunc     read;
 | 
			
		||||
    FT_Stream_CloseFunc  close;
 | 
			
		||||
 | 
			
		||||
    FT_Memory            memory;
 | 
			
		||||
    unsigned char*       cursor;
 | 
			
		||||
    unsigned char*       limit;
 | 
			
		||||
 | 
			
		||||
  } FT_StreamRec;
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTSYSTEM_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,350 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  fttrigon.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType trigonometric functions (specification).                    */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2001-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTTRIGON_H__
 | 
			
		||||
#define __FTTRIGON_H__
 | 
			
		||||
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*   computations                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @type:
 | 
			
		||||
   *   FT_Angle
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   This type is used to model angle values in FreeType.  Note that the
 | 
			
		||||
   *   angle is a 16.16 fixed-point value expressed in degrees.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  typedef FT_Fixed  FT_Angle;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_ANGLE_PI
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The angle pi expressed in @FT_Angle units.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_ANGLE_PI  ( 180L << 16 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_ANGLE_2PI
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The angle 2*pi expressed in @FT_Angle units.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_ANGLE_2PI  ( FT_ANGLE_PI * 2 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_ANGLE_PI2
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The angle pi/2 expressed in @FT_Angle units.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_ANGLE_PI2  ( FT_ANGLE_PI / 2 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @macro:
 | 
			
		||||
   *   FT_ANGLE_PI4
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   The angle pi/4 expressed in @FT_Angle units.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define FT_ANGLE_PI4  ( FT_ANGLE_PI / 4 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Sin
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the sinus of a given angle in fixed-point format.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The input angle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The sinus value.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   If you need both the sinus and cosinus for a given angle, use the
 | 
			
		||||
   *   function @FT_Vector_Unit.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Fixed )
 | 
			
		||||
  FT_Sin( FT_Angle  angle );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Cos
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the cosinus of a given angle in fixed-point format.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The input angle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The cosinus value.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   If you need both the sinus and cosinus for a given angle, use the
 | 
			
		||||
   *   function @FT_Vector_Unit.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Fixed )
 | 
			
		||||
  FT_Cos( FT_Angle  angle );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Tan
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the tangent of a given angle in fixed-point format.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The input angle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The tangent value.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Fixed )
 | 
			
		||||
  FT_Tan( FT_Angle  angle );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Atan2
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the arc-tangent corresponding to a given vector (x,y) in
 | 
			
		||||
   *   the 2d plane.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   x ::
 | 
			
		||||
   *     The horizontal vector coordinate.
 | 
			
		||||
   *
 | 
			
		||||
   *   y ::
 | 
			
		||||
   *     The vertical vector coordinate.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The arc-tangent value (i.e. angle).
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Angle )
 | 
			
		||||
  FT_Atan2( FT_Fixed  x,
 | 
			
		||||
            FT_Fixed  y );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Angle_Diff
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the difference between two angles.  The result is always
 | 
			
		||||
   *   constrained to the ]-PI..PI] interval.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   angle1 ::
 | 
			
		||||
   *     First angle.
 | 
			
		||||
   *
 | 
			
		||||
   *   angle2 ::
 | 
			
		||||
   *     Second angle.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   Constrained value of `value2-value1'.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Angle )
 | 
			
		||||
  FT_Angle_Diff( FT_Angle  angle1,
 | 
			
		||||
                 FT_Angle  angle2 );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Vector_Unit
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the unit vector corresponding to a given angle.  After the
 | 
			
		||||
   *   call, the value of `vec.x' will be `cos(angle)', and the value of
 | 
			
		||||
   *   `vec.y' will be `sin(angle)'.
 | 
			
		||||
   *
 | 
			
		||||
   *   This function is useful to retrieve both the sinus and cosinus of a
 | 
			
		||||
   *   given angle quickly.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   vec ::
 | 
			
		||||
   *     The address of target vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The input angle.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Vector_Unit( FT_Vector*  vec,
 | 
			
		||||
                  FT_Angle    angle );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Vector_Rotate
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Rotate a vector by a given angle.
 | 
			
		||||
   *
 | 
			
		||||
   * @inout:
 | 
			
		||||
   *   vec ::
 | 
			
		||||
   *     The address of target vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The input angle.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Vector_Rotate( FT_Vector*  vec,
 | 
			
		||||
                    FT_Angle    angle );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Vector_Length
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Return the length of a given vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   vec ::
 | 
			
		||||
   *     The address of target vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   The vector length, expressed in the same units that the original
 | 
			
		||||
   *   vector coordinates.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Fixed )
 | 
			
		||||
  FT_Vector_Length( FT_Vector*  vec );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Vector_Polarize
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Compute both the length and angle of a given vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   vec ::
 | 
			
		||||
   *     The address of source vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   length ::
 | 
			
		||||
   *     The vector length.
 | 
			
		||||
   *
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The vector angle.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Vector_Polarize( FT_Vector*  vec,
 | 
			
		||||
                      FT_Fixed   *length,
 | 
			
		||||
                      FT_Angle   *angle );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *   FT_Vector_From_Polar
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Compute vector coordinates from a length and angle.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *   vec ::
 | 
			
		||||
   *     The address of source vector.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *   length ::
 | 
			
		||||
   *     The vector length.
 | 
			
		||||
   *
 | 
			
		||||
   *   angle ::
 | 
			
		||||
   *     The vector angle.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( void )
 | 
			
		||||
  FT_Vector_From_Polar( FT_Vector*  vec,
 | 
			
		||||
                        FT_Fixed    length,
 | 
			
		||||
                        FT_Angle    angle );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTTRIGON_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,310 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftttdrv.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for controlling the TrueType driver                     */
 | 
			
		||||
/*    (specification only).                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2013-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTTTDRV_H__
 | 
			
		||||
#define __FTTTDRV_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @section:
 | 
			
		||||
   *   tt_driver
 | 
			
		||||
   *
 | 
			
		||||
   * @title:
 | 
			
		||||
   *   The TrueType driver
 | 
			
		||||
   *
 | 
			
		||||
   * @abstract:
 | 
			
		||||
   *   Controlling the TrueType driver module.
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   While FreeType's TrueType driver doesn't expose API functions by
 | 
			
		||||
   *   itself, it is possible to control its behaviour with @FT_Property_Set
 | 
			
		||||
   *   and @FT_Property_Get.  The following lists the available properties
 | 
			
		||||
   *   together with the necessary macros and structures.
 | 
			
		||||
   *
 | 
			
		||||
   *   The TrueType driver's module name is `truetype'.
 | 
			
		||||
   *
 | 
			
		||||
   *   We start with a list of definitions, kindly provided by Greg
 | 
			
		||||
   *   Hitchcock.
 | 
			
		||||
   *
 | 
			
		||||
   *   _Bi-Level_ _Rendering_
 | 
			
		||||
   *
 | 
			
		||||
   *   Monochromatic rendering, exclusively used in the early days of
 | 
			
		||||
   *   TrueType by both Apple and Microsoft.  Microsoft's GDI interface
 | 
			
		||||
   *   supported hinting of the right-side bearing point, such that the
 | 
			
		||||
   *   advance width could be non-linear.  Most often this was done to
 | 
			
		||||
   *   achieve some level of glyph symmetry.  To enable reasonable
 | 
			
		||||
   *   performance (e.g., not having to run hinting on all glyphs just to
 | 
			
		||||
   *   get the widths) there was a bit in the head table indicating if the
 | 
			
		||||
   *   side bearing was hinted, and additional tables, `hdmx' and `LTSH', to
 | 
			
		||||
   *   cache hinting widths across multiple sizes and device aspect ratios.
 | 
			
		||||
   *
 | 
			
		||||
   *   _Font_ _Smoothing_
 | 
			
		||||
   *
 | 
			
		||||
   *   Microsoft's GDI implementation of anti-aliasing.  Not traditional
 | 
			
		||||
   *   anti-aliasing as the outlines were hinted before the sampling.  The
 | 
			
		||||
   *   widths matched the bi-level rendering.
 | 
			
		||||
   *
 | 
			
		||||
   *   _ClearType_ _Rendering_
 | 
			
		||||
   *
 | 
			
		||||
   *   Technique that uses physical subpixels to improve rendering on LCD
 | 
			
		||||
   *   (and other) displays.  Because of the higher resolution, many methods
 | 
			
		||||
   *   of improving symmetry in glyphs through hinting the right-side
 | 
			
		||||
   *   bearing were no longer necessary.  This lead to what GDI calls
 | 
			
		||||
   *   `natural widths' ClearType, see
 | 
			
		||||
   *   http://www.beatstamm.com/typography/RTRCh4.htm#Sec21.  Since hinting
 | 
			
		||||
   *   has extra resolution, most non-linearity went away, but it is still
 | 
			
		||||
   *   possible for hints to change the advance widths in this mode.
 | 
			
		||||
   *
 | 
			
		||||
   *   _ClearType_ _Compatible_ _Widths_
 | 
			
		||||
   *
 | 
			
		||||
   *   One of the earliest challenges with ClearType was allowing the
 | 
			
		||||
   *   implementation in GDI to be selected without requiring all UI and
 | 
			
		||||
   *   documents to reflow.  To address this, a compatible method of
 | 
			
		||||
   *   rendering ClearType was added where the font hints are executed once
 | 
			
		||||
   *   to determine the width in bi-level rendering, and then re-run in
 | 
			
		||||
   *   ClearType, with the difference in widths being absorbed in the font
 | 
			
		||||
   *   hints for ClearType (mostly in the white space of hints); see
 | 
			
		||||
   *   http://www.beatstamm.com/typography/RTRCh4.htm#Sec20.  Somewhat by
 | 
			
		||||
   *   definition, compatible width ClearType allows for non-linear widths,
 | 
			
		||||
   *   but only when the bi-level version has non-linear widths.
 | 
			
		||||
   *
 | 
			
		||||
   *   _ClearType_ _Subpixel_ _Positioning_
 | 
			
		||||
   *
 | 
			
		||||
   *   One of the nice benefits of ClearType is the ability to more crisply
 | 
			
		||||
   *   display fractional widths; unfortunately, the GDI model of integer
 | 
			
		||||
   *   bitmaps did not support this.  However, the WPF and Direct Write
 | 
			
		||||
   *   frameworks do support fractional widths.  DWrite calls this `natural
 | 
			
		||||
   *   mode', not to be confused with GDI's `natural widths'.  Subpixel
 | 
			
		||||
   *   positioning, in the current implementation of Direct Write,
 | 
			
		||||
   *   unfortunately does not support hinted advance widths, see
 | 
			
		||||
   *   http://www.beatstamm.com/typography/RTRCh4.htm#Sec22.  Note that the
 | 
			
		||||
   *   TrueType interpreter fully allows the advance width to be adjusted in
 | 
			
		||||
   *   this mode, just the DWrite client will ignore those changes.
 | 
			
		||||
   *
 | 
			
		||||
   *   _ClearType_ _Backwards_ _Compatibility_
 | 
			
		||||
   *
 | 
			
		||||
   *   This is a set of exceptions made in the TrueType interpreter to
 | 
			
		||||
   *   minimize hinting techniques that were problematic with the extra
 | 
			
		||||
   *   resolution of ClearType; see
 | 
			
		||||
   *   http://www.beatstamm.com/typography/RTRCh4.htm#Sec1 and
 | 
			
		||||
   *   http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx.
 | 
			
		||||
   *   This technique is not to be confused with ClearType compatible
 | 
			
		||||
   *   widths.  ClearType backwards compatibility has no direct impact on
 | 
			
		||||
   *   changing advance widths, but there might be an indirect impact on
 | 
			
		||||
   *   disabling some deltas.  This could be worked around in backwards
 | 
			
		||||
   *   compatibility mode.
 | 
			
		||||
   *
 | 
			
		||||
   *   _Native_ _ClearType_ _Mode_
 | 
			
		||||
   *
 | 
			
		||||
   *   (Not to be confused with `natural widths'.)  This mode removes all
 | 
			
		||||
   *   the exceptions in the TrueType interpreter when running with
 | 
			
		||||
   *   ClearType.  Any issues on widths would still apply, though.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @property:
 | 
			
		||||
   *   interpreter-version
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   Currently, two versions are available, representing the bytecode
 | 
			
		||||
   *   interpreter with and without subpixel hinting support,
 | 
			
		||||
   *   respectively.  The default is subpixel support if
 | 
			
		||||
   *   TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel
 | 
			
		||||
   *   support otherwise (since it isn't available then).
 | 
			
		||||
   *
 | 
			
		||||
   *   If subpixel hinting is on, many TrueType bytecode instructions behave
 | 
			
		||||
   *   differently compared to B/W or grayscale rendering (except if `native
 | 
			
		||||
   *   ClearType' is selected by the font).  The main idea is to render at a
 | 
			
		||||
   *   much increased horizontal resolution, then sampling down the created
 | 
			
		||||
   *   output to subpixel precision.  However, many older fonts are not
 | 
			
		||||
   *   suited to this and must be specially taken care of by applying
 | 
			
		||||
   *   (hardcoded) font-specific tweaks.
 | 
			
		||||
   *
 | 
			
		||||
   *   Details on subpixel hinting and some of the necessary tweaks can be
 | 
			
		||||
   *   found in Greg Hitchcock's whitepaper at
 | 
			
		||||
   *   `http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'.
 | 
			
		||||
   *
 | 
			
		||||
   *   The following example code demonstrates how to activate subpixel
 | 
			
		||||
   *   hinting (omitting the error handling).
 | 
			
		||||
   *
 | 
			
		||||
   *   {
 | 
			
		||||
   *     FT_Library  library;
 | 
			
		||||
   *     FT_Face     face;
 | 
			
		||||
   *     FT_UInt     interpreter_version = TT_INTERPRETER_VERSION_38;
 | 
			
		||||
   *
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Init_FreeType( &library );
 | 
			
		||||
   *
 | 
			
		||||
   *     FT_Property_Set( library, "truetype",
 | 
			
		||||
   *                               "interpreter-version",
 | 
			
		||||
   *                               &interpreter_version );
 | 
			
		||||
   *   }
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This property can be used with @FT_Property_Get also.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   TT_INTERPRETER_VERSION_XXX
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A list of constants used for the @interpreter-version property to
 | 
			
		||||
   *   select the hinting engine for Truetype fonts.
 | 
			
		||||
   *
 | 
			
		||||
   *   The numeric value in the constant names represents the version
 | 
			
		||||
   *   number as returned by the `GETINFO' bytecode instruction.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   TT_INTERPRETER_VERSION_35 ::
 | 
			
		||||
   *     Version~35 corresponds to MS rasterizer v.1.7 as used e.g. in
 | 
			
		||||
   *     Windows~98; only grayscale and B/W rasterizing is supported.
 | 
			
		||||
   *
 | 
			
		||||
   *   TT_INTERPRETER_VERSION_38 ::
 | 
			
		||||
   *     Version~38 corresponds to MS rasterizer v.1.9; it is roughly
 | 
			
		||||
   *     equivalent to the hinting provided by DirectWrite ClearType (as
 | 
			
		||||
   *     can be found, for example, in the Internet Explorer~9 running on
 | 
			
		||||
   *     Windows~7).
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This property controls the behaviour of the bytecode interpreter
 | 
			
		||||
   *   and thus how outlines get hinted.  It does *not* control how glyph
 | 
			
		||||
   *   get rasterized!  In particular, it does not control subpixel color
 | 
			
		||||
   *   filtering.
 | 
			
		||||
   *
 | 
			
		||||
   *   If FreeType has not been compiled with configuration option
 | 
			
		||||
   *   FT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version~38 causes an
 | 
			
		||||
   *   `FT_Err_Unimplemented_Feature' error.
 | 
			
		||||
   *
 | 
			
		||||
   *   Depending on the graphics framework, Microsoft uses different
 | 
			
		||||
   *   bytecode and rendering engines.  As a consequence, the version
 | 
			
		||||
   *   numbers returned by a call to the `GETINFO' bytecode instruction are
 | 
			
		||||
   *   more convoluted than desired.
 | 
			
		||||
   *
 | 
			
		||||
   *   Here are two tables that try to shed some light on the possible
 | 
			
		||||
   *   values for the MS rasterizer engine, together with the additional
 | 
			
		||||
   *   features introduced by it.
 | 
			
		||||
   *
 | 
			
		||||
   *   {
 | 
			
		||||
   *     GETINFO framework               version feature
 | 
			
		||||
   *     -------------------------------------------------------------------
 | 
			
		||||
   *         3   GDI (Win 3.1),            v1.0  16-bit, first version
 | 
			
		||||
   *             TrueImage
 | 
			
		||||
   *        33   GDI (Win NT 3.1),         v1.5  32-bit
 | 
			
		||||
   *             HP Laserjet
 | 
			
		||||
   *        34   GDI (Win 95)              v1.6  font smoothing,
 | 
			
		||||
   *                                             new SCANTYPE opcode
 | 
			
		||||
   *        35   GDI (Win 98/2000)         v1.7  (UN)SCALED_COMPONENT_OFFSET
 | 
			
		||||
   *                                               bits in composite glyphs
 | 
			
		||||
   *        36   MGDI (Win CE 2)           v1.6+ classic ClearType
 | 
			
		||||
   *        37   GDI (XP and later),       v1.8  ClearType
 | 
			
		||||
   *             GDI+ old (before Vista)
 | 
			
		||||
   *        38   GDI+ old (Vista, Win 7),  v1.9  subpixel ClearType,
 | 
			
		||||
   *             WPF                             Y-direction ClearType,
 | 
			
		||||
   *                                             additional error checking
 | 
			
		||||
   *        39   DWrite (before Win 8)     v2.0  subpixel ClearType flags
 | 
			
		||||
   *                                               in GETINFO opcode,
 | 
			
		||||
   *                                             bug fixes
 | 
			
		||||
   *        40   GDI+ (after Win 7),       v2.1  Y-direction ClearType flag
 | 
			
		||||
   *             DWrite (Win 8)                    in GETINFO opcode,
 | 
			
		||||
   *                                             Gray ClearType
 | 
			
		||||
   *   }
 | 
			
		||||
   *
 | 
			
		||||
   *   The `version' field gives a rough orientation only, since some
 | 
			
		||||
   *   applications provided certain features much earlier (as an example,
 | 
			
		||||
   *   Microsoft Reader used subpixel and Y-direction ClearType already in
 | 
			
		||||
   *   Windows 2000).  Similarly, updates to a given framework might include
 | 
			
		||||
   *   improved hinting support.
 | 
			
		||||
   *
 | 
			
		||||
   *   {
 | 
			
		||||
   *      version   sampling          rendering        comment
 | 
			
		||||
   *               x        y       x           y
 | 
			
		||||
   *     --------------------------------------------------------------
 | 
			
		||||
   *       v1.0   normal  normal  B/W           B/W    bi-level
 | 
			
		||||
   *       v1.6   high    high    gray          gray   grayscale
 | 
			
		||||
   *       v1.8   high    normal  color-filter  B/W    (GDI) ClearType
 | 
			
		||||
   *       v1.9   high    high    color-filter  gray   Color ClearType
 | 
			
		||||
   *       v2.1   high    normal  gray          B/W    Gray ClearType
 | 
			
		||||
   *       v2.1   high    high    gray          gray   Gray ClearType
 | 
			
		||||
   *   }
 | 
			
		||||
   *
 | 
			
		||||
   *   Color and Gray ClearType are the two available variants of
 | 
			
		||||
   *   `Y-direction ClearType', meaning grayscale rasterization along the
 | 
			
		||||
   *   Y-direction; the name used in the TrueType specification for this
 | 
			
		||||
   *   feature is `symmetric smoothing'.  `Classic ClearType' is the
 | 
			
		||||
   *   original algorithm used before introducing a modified version in
 | 
			
		||||
   *   Win~XP.  Another name for v1.6's grayscale rendering is `font
 | 
			
		||||
   *   smoothing', and `Color ClearType' is sometimes also called `DWrite
 | 
			
		||||
   *   ClearType'.  To differentiate between today's Color ClearType and the
 | 
			
		||||
   *   earlier ClearType variant with B/W rendering along the vertical axis,
 | 
			
		||||
   *   the latter is sometimes called `GDI ClearType'.
 | 
			
		||||
   *
 | 
			
		||||
   *   `Normal' and `high' sampling describe the (virtual) resolution to
 | 
			
		||||
   *   access the rasterized outline after the hinting process.  `Normal'
 | 
			
		||||
   *   means 1 sample per grid line (i.e., B/W).  In the current Microsoft
 | 
			
		||||
   *   implementation, `high' means an extra virtual resolution of 16x16 (or
 | 
			
		||||
   *   16x1) grid lines per pixel for bytecode instructions like `MIRP'.
 | 
			
		||||
   *   After hinting, these 16 grid lines are mapped to 6x5 (or 6x1) grid
 | 
			
		||||
   *   lines for color filtering if Color ClearType is activated.
 | 
			
		||||
   *
 | 
			
		||||
   *   Note that `Gray ClearType' is essentially the same as v1.6's
 | 
			
		||||
   *   grayscale rendering.  However, the GETINFO instruction handles it
 | 
			
		||||
   *   differently: v1.6 returns bit~12 (hinting for grayscale), while v2.1
 | 
			
		||||
   *   returns bits~13 (hinting for ClearType), 18 (symmetrical smoothing),
 | 
			
		||||
   *   and~19 (Gray ClearType).  Also, this mode respects bits 2 and~3 for
 | 
			
		||||
   *   the version~1 gasp table exclusively (like Color ClearType), while
 | 
			
		||||
   *   v1.6 only respects the values of version~0 (bits 0 and~1).
 | 
			
		||||
   *
 | 
			
		||||
   *   FreeType doesn't provide all capabilities of the most recent
 | 
			
		||||
   *   ClearType incarnation, thus we identify our subpixel support as
 | 
			
		||||
   *   version~38.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
#define TT_INTERPRETER_VERSION_35  35
 | 
			
		||||
#define TT_INTERPRETER_VERSION_38  38
 | 
			
		||||
 | 
			
		||||
 /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __FTTTDRV_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,602 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  fttypes.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType simple types definitions (specification only).              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTTYPES_H__
 | 
			
		||||
#define __FTTYPES_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_CONFIG_CONFIG_H
 | 
			
		||||
#include FT_SYSTEM_H
 | 
			
		||||
#include FT_IMAGE_H
 | 
			
		||||
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    basic_types                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Basic Data Types                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    The basic data types defined by the library.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the basic data types defined by FreeType~2,  */
 | 
			
		||||
  /*    ranging from simple scalar types to bitmap descriptors.  More      */
 | 
			
		||||
  /*    font-specific structures are defined in a different section.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Order>                                                               */
 | 
			
		||||
  /*    FT_Byte                                                            */
 | 
			
		||||
  /*    FT_Bytes                                                           */
 | 
			
		||||
  /*    FT_Char                                                            */
 | 
			
		||||
  /*    FT_Int                                                             */
 | 
			
		||||
  /*    FT_UInt                                                            */
 | 
			
		||||
  /*    FT_Int16                                                           */
 | 
			
		||||
  /*    FT_UInt16                                                          */
 | 
			
		||||
  /*    FT_Int32                                                           */
 | 
			
		||||
  /*    FT_UInt32                                                          */
 | 
			
		||||
  /*    FT_Int64                                                           */
 | 
			
		||||
  /*    FT_UInt64                                                          */
 | 
			
		||||
  /*    FT_Short                                                           */
 | 
			
		||||
  /*    FT_UShort                                                          */
 | 
			
		||||
  /*    FT_Long                                                            */
 | 
			
		||||
  /*    FT_ULong                                                           */
 | 
			
		||||
  /*    FT_Bool                                                            */
 | 
			
		||||
  /*    FT_Offset                                                          */
 | 
			
		||||
  /*    FT_PtrDist                                                         */
 | 
			
		||||
  /*    FT_String                                                          */
 | 
			
		||||
  /*    FT_Tag                                                             */
 | 
			
		||||
  /*    FT_Error                                                           */
 | 
			
		||||
  /*    FT_Fixed                                                           */
 | 
			
		||||
  /*    FT_Pointer                                                         */
 | 
			
		||||
  /*    FT_Pos                                                             */
 | 
			
		||||
  /*    FT_Vector                                                          */
 | 
			
		||||
  /*    FT_BBox                                                            */
 | 
			
		||||
  /*    FT_Matrix                                                          */
 | 
			
		||||
  /*    FT_FWord                                                           */
 | 
			
		||||
  /*    FT_UFWord                                                          */
 | 
			
		||||
  /*    FT_F2Dot14                                                         */
 | 
			
		||||
  /*    FT_UnitVector                                                      */
 | 
			
		||||
  /*    FT_F26Dot6                                                         */
 | 
			
		||||
  /*    FT_Data                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_MAKE_TAG                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Generic                                                         */
 | 
			
		||||
  /*    FT_Generic_Finalizer                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Bitmap                                                          */
 | 
			
		||||
  /*    FT_Pixel_Mode                                                      */
 | 
			
		||||
  /*    FT_Palette_Mode                                                    */
 | 
			
		||||
  /*    FT_Glyph_Format                                                    */
 | 
			
		||||
  /*    FT_IMAGE_TAG                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Bool                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef of unsigned char, used for simple booleans.  As usual,   */
 | 
			
		||||
  /*    values 1 and~0 represent true and false, respectively.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned char  FT_Bool;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_FWord                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A signed 16-bit integer used to store a distance in original font  */
 | 
			
		||||
  /*    units.                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed short  FT_FWord;   /* distance in FUnits */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_UFWord                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    An unsigned 16-bit integer used to store a distance in original    */
 | 
			
		||||
  /*    font units.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned short  FT_UFWord;  /* unsigned distance */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Char                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple typedef for the _signed_ char type.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed char  FT_Char;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Byte                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple typedef for the _unsigned_ char type.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned char  FT_Byte;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Bytes                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for constant memory areas.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef const FT_Byte*  FT_Bytes;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Tag                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for 32-bit tags (as used in the SFNT format).            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef FT_UInt32  FT_Tag;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_String                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple typedef for the char type, usually used for strings.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef char  FT_String;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Short                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for signed short.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed short  FT_Short;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_UShort                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for unsigned short.                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned short  FT_UShort;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Int                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for the int type.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed int  FT_Int;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_UInt                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for the unsigned int type.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned int  FT_UInt;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Long                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for signed long.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed long  FT_Long;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_ULong                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A typedef for unsigned long.                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef unsigned long  FT_ULong;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_F2Dot14                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A signed 2.14 fixed-point type used for unit vectors.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed short  FT_F2Dot14;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_F26Dot6                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A signed 26.6 fixed-point type used for vectorial pixel            */
 | 
			
		||||
  /*    coordinates.                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed long  FT_F26Dot6;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Fixed                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This type is used to store 16.16 fixed-point values, like scaling  */
 | 
			
		||||
  /*    values or matrix coefficients.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef signed long  FT_Fixed;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Error                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The FreeType error code type.  A value of~0 is always interpreted  */
 | 
			
		||||
  /*    as a successful operation.                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef int  FT_Error;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Pointer                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple typedef for a typeless pointer.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef void*  FT_Pointer;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_Offset                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This is equivalent to the ANSI~C `size_t' type, i.e., the largest  */
 | 
			
		||||
  /*    _unsigned_ integer type used to express a file size or position,   */
 | 
			
		||||
  /*    or a memory block size.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef size_t  FT_Offset;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_PtrDist                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the       */
 | 
			
		||||
  /*    largest _signed_ integer type used to express the distance         */
 | 
			
		||||
  /*    between two pointers.                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef ft_ptrdiff_t  FT_PtrDist;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_UnitVector                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple structure used to store a 2D vector unit vector.  Uses    */
 | 
			
		||||
  /*    FT_F2Dot14 types.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    x :: Horizontal coordinate.                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    y :: Vertical coordinate.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_UnitVector_
 | 
			
		||||
  {
 | 
			
		||||
    FT_F2Dot14  x;
 | 
			
		||||
    FT_F2Dot14  y;
 | 
			
		||||
 | 
			
		||||
  } FT_UnitVector;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Matrix                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A simple structure used to store a 2x2 matrix.  Coefficients are   */
 | 
			
		||||
  /*    in 16.16 fixed-point format.  The computation performed is:        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*       {                                                               */
 | 
			
		||||
  /*          x' = x*xx + y*xy                                             */
 | 
			
		||||
  /*          y' = x*yx + y*yy                                             */
 | 
			
		||||
  /*       }                                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    xx :: Matrix coefficient.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    xy :: Matrix coefficient.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    yx :: Matrix coefficient.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    yy :: Matrix coefficient.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Matrix_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed  xx, xy;
 | 
			
		||||
    FT_Fixed  yx, yy;
 | 
			
		||||
 | 
			
		||||
  } FT_Matrix;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Data                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Read-only binary data represented as a pointer and a length.       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    pointer :: The data.                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    length  :: The length of the data in bytes.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Data_
 | 
			
		||||
  {
 | 
			
		||||
    const FT_Byte*  pointer;
 | 
			
		||||
    FT_Int          length;
 | 
			
		||||
 | 
			
		||||
  } FT_Data;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <FuncType>                                                            */
 | 
			
		||||
  /*    FT_Generic_Finalizer                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Describe a function used to destroy the `client' data of any       */
 | 
			
		||||
  /*    FreeType object.  See the description of the @FT_Generic type for  */
 | 
			
		||||
  /*    details of usage.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    The address of the FreeType object that is under finalization.     */
 | 
			
		||||
  /*    Its client data is accessed through its `generic' field.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef void  (*FT_Generic_Finalizer)(void*  object);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_Generic                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Client applications often need to associate their own data to a    */
 | 
			
		||||
  /*    variety of FreeType core objects.  For example, a text layout API  */
 | 
			
		||||
  /*    might want to associate a glyph cache to a given size object.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Some FreeType object contains a `generic' field, of type           */
 | 
			
		||||
  /*    FT_Generic, which usage is left to client applications and font    */
 | 
			
		||||
  /*    servers.                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    It can be used to store a pointer to client-specific data, as well */
 | 
			
		||||
  /*    as the address of a `finalizer' function, which will be called by  */
 | 
			
		||||
  /*    FreeType when the object is destroyed (for example, the previous   */
 | 
			
		||||
  /*    client example would put the address of the glyph cache destructor */
 | 
			
		||||
  /*    in the `finalizer' field).                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    data      :: A typeless pointer to any client-specified data. This */
 | 
			
		||||
  /*                 field is completely ignored by the FreeType library.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    finalizer :: A pointer to a `generic finalizer' function, which    */
 | 
			
		||||
  /*                 will be called when the object is destroyed.  If this */
 | 
			
		||||
  /*                 field is set to NULL, no code will be called.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_Generic_
 | 
			
		||||
  {
 | 
			
		||||
    void*                 data;
 | 
			
		||||
    FT_Generic_Finalizer  finalizer;
 | 
			
		||||
 | 
			
		||||
  } FT_Generic;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Macro>                                                               */
 | 
			
		||||
  /*    FT_MAKE_TAG                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This macro converts four-letter tags that are used to label        */
 | 
			
		||||
  /*    TrueType tables into an unsigned long, to be used within FreeType. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The produced values *must* be 32-bit integers.  Don't redefine     */
 | 
			
		||||
  /*    this macro.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
 | 
			
		||||
          (FT_Tag)                        \
 | 
			
		||||
          ( ( (FT_ULong)_x1 << 24 ) |     \
 | 
			
		||||
            ( (FT_ULong)_x2 << 16 ) |     \
 | 
			
		||||
            ( (FT_ULong)_x3 <<  8 ) |     \
 | 
			
		||||
              (FT_ULong)_x4         )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                    L I S T   M A N A G E M E N T                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    list_processing                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_ListNode                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*     Many elements and objects in FreeType are listed through an       */
 | 
			
		||||
  /*     @FT_List record (see @FT_ListRec).  As its name suggests, an      */
 | 
			
		||||
  /*     FT_ListNode is a handle to a single list element.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct FT_ListNodeRec_*  FT_ListNode;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Type>                                                                */
 | 
			
		||||
  /*    FT_List                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to a list record (see @FT_ListRec).                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct FT_ListRec_*  FT_List;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_ListNodeRec                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to hold a single list element.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    prev :: The previous element in the list.  NULL if first.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    next :: The next element in the list.  NULL if last.               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    data :: A typeless pointer to the listed object.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_ListNodeRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_ListNode  prev;
 | 
			
		||||
    FT_ListNode  next;
 | 
			
		||||
    void*        data;
 | 
			
		||||
 | 
			
		||||
  } FT_ListNodeRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_ListRec                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to hold a simple doubly-linked list.  These are   */
 | 
			
		||||
  /*    used in many parts of FreeType.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    head :: The head (first element) of doubly-linked list.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    tail :: The tail (last element) of doubly-linked list.             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_ListRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_ListNode  head;
 | 
			
		||||
    FT_ListNode  tail;
 | 
			
		||||
 | 
			
		||||
  } FT_ListRec;
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FT_IS_EMPTY( list )  ( (list).head == 0 )
 | 
			
		||||
#define FT_BOOL( x )  ( (FT_Bool)( x ) )
 | 
			
		||||
 | 
			
		||||
  /* concatenate C tokens */
 | 
			
		||||
#define FT_ERR_XCAT( x, y )  x ## y
 | 
			
		||||
#define FT_ERR_CAT( x, y )   FT_ERR_XCAT( x, y )
 | 
			
		||||
 | 
			
		||||
  /* see `ftmoderr.h' for descriptions of the following macros */
 | 
			
		||||
 | 
			
		||||
#define FT_ERR( e )  FT_ERR_CAT( FT_ERR_PREFIX, e )
 | 
			
		||||
 | 
			
		||||
#define FT_ERROR_BASE( x )    ( (x) & 0xFF )
 | 
			
		||||
#define FT_ERROR_MODULE( x )  ( (x) & 0xFF00U )
 | 
			
		||||
 | 
			
		||||
#define FT_ERR_EQ( x, e )                                        \
 | 
			
		||||
          ( FT_ERROR_BASE( x ) == FT_ERROR_BASE( FT_ERR( e ) ) )
 | 
			
		||||
#define FT_ERR_NEQ( x, e )                                       \
 | 
			
		||||
          ( FT_ERROR_BASE( x ) != FT_ERROR_BASE( FT_ERR( e ) ) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTTYPES_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,275 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ftwinfnt.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    FreeType API for accessing Windows fnt-specific data.                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FTWINFNT_H__
 | 
			
		||||
#define __FTWINFNT_H__
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    winfnt_fonts                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Window FNT Files                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Windows FNT specific API.                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the declaration of Windows FNT specific      */
 | 
			
		||||
  /*    functions.                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @enum:
 | 
			
		||||
   *   FT_WinFNT_ID_XXX
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *   A list of valid values for the `charset' byte in
 | 
			
		||||
   *   @FT_WinFNT_HeaderRec.  Exact mapping tables for the various cpXXXX
 | 
			
		||||
   *   encodings (except for cp1361) can be found at
 | 
			
		||||
   *   ftp://ftp.unicode.org/Public in the MAPPINGS/VENDORS/MICSFT/WINDOWS
 | 
			
		||||
   *   subdirectory.  cp1361 is roughly a superset of
 | 
			
		||||
   *   MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT.
 | 
			
		||||
   *
 | 
			
		||||
   * @values:
 | 
			
		||||
   *   FT_WinFNT_ID_DEFAULT ::
 | 
			
		||||
   *     This is used for font enumeration and font creation as a
 | 
			
		||||
   *     `don't care' value.  Valid font files don't contain this value.
 | 
			
		||||
   *     When querying for information about the character set of the font
 | 
			
		||||
   *     that is currently selected into a specified device context, this
 | 
			
		||||
   *     return value (of the related Windows API) simply denotes failure.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_SYMBOL ::
 | 
			
		||||
   *     There is no known mapping table available.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_MAC ::
 | 
			
		||||
   *     Mac Roman encoding.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_OEM ::
 | 
			
		||||
   *     From Michael Pöttgen <michael@poettgen.de>:
 | 
			
		||||
   *
 | 
			
		||||
   *       The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM
 | 
			
		||||
   *       is used for the charset of vector fonts, like `modern.fon',
 | 
			
		||||
   *       `roman.fon', and `script.fon' on Windows.
 | 
			
		||||
   *
 | 
			
		||||
   *       The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value
 | 
			
		||||
   *       specifies a character set that is operating-system dependent.
 | 
			
		||||
   *
 | 
			
		||||
   *       The `IFIMETRICS' documentation from the `Windows Driver
 | 
			
		||||
   *       Development Kit' says: This font supports an OEM-specific
 | 
			
		||||
   *       character set.  The OEM character set is system dependent.
 | 
			
		||||
   *
 | 
			
		||||
   *       In general OEM, as opposed to ANSI (i.e., cp1252), denotes the
 | 
			
		||||
   *       second default codepage that most international versions of
 | 
			
		||||
   *       Windows have.  It is one of the OEM codepages from
 | 
			
		||||
   *
 | 
			
		||||
   *         https://msdn.microsoft.com/en-us/goglobal/bb964655,
 | 
			
		||||
   *
 | 
			
		||||
   *       and is used for the `DOS boxes', to support legacy applications.
 | 
			
		||||
   *       A German Windows version for example usually uses ANSI codepage
 | 
			
		||||
   *       1252 and OEM codepage 850.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP874 ::
 | 
			
		||||
   *     A superset of Thai TIS 620 and ISO 8859-11.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP932 ::
 | 
			
		||||
   *     A superset of Japanese Shift-JIS (with minor deviations).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP936 ::
 | 
			
		||||
   *     A superset of simplified Chinese GB 2312-1980 (with different
 | 
			
		||||
   *     ordering and minor deviations).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP949 ::
 | 
			
		||||
   *     A superset of Korean Hangul KS~C 5601-1987 (with different
 | 
			
		||||
   *     ordering and minor deviations).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP950 ::
 | 
			
		||||
   *     A superset of traditional Chinese Big~5 ETen (with different
 | 
			
		||||
   *     ordering and minor deviations).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1250 ::
 | 
			
		||||
   *     A superset of East European ISO 8859-2 (with slightly different
 | 
			
		||||
   *     ordering).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1251 ::
 | 
			
		||||
   *     A superset of Russian ISO 8859-5 (with different ordering).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1252 ::
 | 
			
		||||
   *     ANSI encoding.  A superset of ISO 8859-1.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1253 ::
 | 
			
		||||
   *     A superset of Greek ISO 8859-7 (with minor modifications).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1254 ::
 | 
			
		||||
   *     A superset of Turkish ISO 8859-9.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1255 ::
 | 
			
		||||
   *     A superset of Hebrew ISO 8859-8 (with some modifications).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1256 ::
 | 
			
		||||
   *     A superset of Arabic ISO 8859-6 (with different ordering).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1257 ::
 | 
			
		||||
   *     A superset of Baltic ISO 8859-13 (with some deviations).
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1258 ::
 | 
			
		||||
   *     For Vietnamese.  This encoding doesn't cover all necessary
 | 
			
		||||
   *     characters.
 | 
			
		||||
   *
 | 
			
		||||
   *   FT_WinFNT_ID_CP1361 ::
 | 
			
		||||
   *     Korean (Johab).
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
#define FT_WinFNT_ID_CP1252    0
 | 
			
		||||
#define FT_WinFNT_ID_DEFAULT   1
 | 
			
		||||
#define FT_WinFNT_ID_SYMBOL    2
 | 
			
		||||
#define FT_WinFNT_ID_MAC      77
 | 
			
		||||
#define FT_WinFNT_ID_CP932   128
 | 
			
		||||
#define FT_WinFNT_ID_CP949   129
 | 
			
		||||
#define FT_WinFNT_ID_CP1361  130
 | 
			
		||||
#define FT_WinFNT_ID_CP936   134
 | 
			
		||||
#define FT_WinFNT_ID_CP950   136
 | 
			
		||||
#define FT_WinFNT_ID_CP1253  161
 | 
			
		||||
#define FT_WinFNT_ID_CP1254  162
 | 
			
		||||
#define FT_WinFNT_ID_CP1258  163
 | 
			
		||||
#define FT_WinFNT_ID_CP1255  177
 | 
			
		||||
#define FT_WinFNT_ID_CP1256  178
 | 
			
		||||
#define FT_WinFNT_ID_CP1257  186
 | 
			
		||||
#define FT_WinFNT_ID_CP1251  204
 | 
			
		||||
#define FT_WinFNT_ID_CP874   222
 | 
			
		||||
#define FT_WinFNT_ID_CP1250  238
 | 
			
		||||
#define FT_WinFNT_ID_OEM     255
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_WinFNT_HeaderRec                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Windows FNT Header info.                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  FT_WinFNT_HeaderRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UShort  version;
 | 
			
		||||
    FT_ULong   file_size;
 | 
			
		||||
    FT_Byte    copyright[60];
 | 
			
		||||
    FT_UShort  file_type;
 | 
			
		||||
    FT_UShort  nominal_point_size;
 | 
			
		||||
    FT_UShort  vertical_resolution;
 | 
			
		||||
    FT_UShort  horizontal_resolution;
 | 
			
		||||
    FT_UShort  ascent;
 | 
			
		||||
    FT_UShort  internal_leading;
 | 
			
		||||
    FT_UShort  external_leading;
 | 
			
		||||
    FT_Byte    italic;
 | 
			
		||||
    FT_Byte    underline;
 | 
			
		||||
    FT_Byte    strike_out;
 | 
			
		||||
    FT_UShort  weight;
 | 
			
		||||
    FT_Byte    charset;
 | 
			
		||||
    FT_UShort  pixel_width;
 | 
			
		||||
    FT_UShort  pixel_height;
 | 
			
		||||
    FT_Byte    pitch_and_family;
 | 
			
		||||
    FT_UShort  avg_width;
 | 
			
		||||
    FT_UShort  max_width;
 | 
			
		||||
    FT_Byte    first_char;
 | 
			
		||||
    FT_Byte    last_char;
 | 
			
		||||
    FT_Byte    default_char;
 | 
			
		||||
    FT_Byte    break_char;
 | 
			
		||||
    FT_UShort  bytes_per_row;
 | 
			
		||||
    FT_ULong   device_offset;
 | 
			
		||||
    FT_ULong   face_name_offset;
 | 
			
		||||
    FT_ULong   bits_pointer;
 | 
			
		||||
    FT_ULong   bits_offset;
 | 
			
		||||
    FT_Byte    reserved;
 | 
			
		||||
    FT_ULong   flags;
 | 
			
		||||
    FT_UShort  A_space;
 | 
			
		||||
    FT_UShort  B_space;
 | 
			
		||||
    FT_UShort  C_space;
 | 
			
		||||
    FT_UShort  color_table_offset;
 | 
			
		||||
    FT_ULong   reserved1[4];
 | 
			
		||||
 | 
			
		||||
  } FT_WinFNT_HeaderRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    FT_WinFNT_Header                                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to an @FT_WinFNT_HeaderRec structure.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct FT_WinFNT_HeaderRec_*  FT_WinFNT_Header;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**********************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Get_WinFNT_Header
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Retrieve a Windows FNT font info header.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face    :: A handle to the input face.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *    aheader :: The WinFNT header.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *   FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *   This function only works with Windows FNT faces, returning an error
 | 
			
		||||
   *   otherwise.
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_WinFNT_Header( FT_Face               face,
 | 
			
		||||
                        FT_WinFNT_HeaderRec  *aheader );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __FTWINFNT_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Local Variables: */
 | 
			
		||||
/* coding: utf-8    */
 | 
			
		||||
/* End:             */
 | 
			
		||||
@@ -1,761 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  t1tables.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Basic Type 1/Type 2 tables definitions and interface (specification  */
 | 
			
		||||
/*    only).                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __T1TABLES_H__
 | 
			
		||||
#define __T1TABLES_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    type1_tables                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    Type 1 Tables                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    Type~1 (PostScript) specific font tables.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the definition of Type 1-specific tables,    */
 | 
			
		||||
  /*    including structures related to other PostScript font formats.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Order>                                                               */
 | 
			
		||||
  /*    PS_FontInfoRec                                                     */
 | 
			
		||||
  /*    PS_FontInfo                                                        */
 | 
			
		||||
  /*    PS_PrivateRec                                                      */
 | 
			
		||||
  /*    PS_Private                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    CID_FaceDictRec                                                    */
 | 
			
		||||
  /*    CID_FaceDict                                                       */
 | 
			
		||||
  /*    CID_FaceInfoRec                                                    */
 | 
			
		||||
  /*    CID_FaceInfo                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Has_PS_Glyph_Names                                              */
 | 
			
		||||
  /*    FT_Get_PS_Font_Info                                                */
 | 
			
		||||
  /*    FT_Get_PS_Font_Private                                             */
 | 
			
		||||
  /*    FT_Get_PS_Font_Value                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    T1_Blend_Flags                                                     */
 | 
			
		||||
  /*    T1_EncodingType                                                    */
 | 
			
		||||
  /*    PS_Dict_Keys                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */
 | 
			
		||||
  /* structures in order to support Multiple Master fonts.               */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    PS_FontInfoRec                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a Type~1 or Type~2 FontInfo dictionary.  */
 | 
			
		||||
  /*    Note that for Multiple Master fonts, each instance has its own     */
 | 
			
		||||
  /*    FontInfo dictionary.                                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  PS_FontInfoRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_String*  version;
 | 
			
		||||
    FT_String*  notice;
 | 
			
		||||
    FT_String*  full_name;
 | 
			
		||||
    FT_String*  family_name;
 | 
			
		||||
    FT_String*  weight;
 | 
			
		||||
    FT_Long     italic_angle;
 | 
			
		||||
    FT_Bool     is_fixed_pitch;
 | 
			
		||||
    FT_Short    underline_position;
 | 
			
		||||
    FT_UShort   underline_thickness;
 | 
			
		||||
 | 
			
		||||
  } PS_FontInfoRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    PS_FontInfo                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to a @PS_FontInfoRec structure.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct PS_FontInfoRec_*  PS_FontInfo;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    T1_FontInfo                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This type is equivalent to @PS_FontInfoRec.  It is deprecated but  */
 | 
			
		||||
  /*    kept to maintain source compatibility between various versions of  */
 | 
			
		||||
  /*    FreeType.                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef PS_FontInfoRec  T1_FontInfo;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    PS_PrivateRec                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a Type~1 or Type~2 private dictionary.   */
 | 
			
		||||
  /*    Note that for Multiple Master fonts, each instance has its own     */
 | 
			
		||||
  /*    Private dictionary.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  PS_PrivateRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Int     unique_id;
 | 
			
		||||
    FT_Int     lenIV;
 | 
			
		||||
 | 
			
		||||
    FT_Byte    num_blue_values;
 | 
			
		||||
    FT_Byte    num_other_blues;
 | 
			
		||||
    FT_Byte    num_family_blues;
 | 
			
		||||
    FT_Byte    num_family_other_blues;
 | 
			
		||||
 | 
			
		||||
    FT_Short   blue_values[14];
 | 
			
		||||
    FT_Short   other_blues[10];
 | 
			
		||||
 | 
			
		||||
    FT_Short   family_blues      [14];
 | 
			
		||||
    FT_Short   family_other_blues[10];
 | 
			
		||||
 | 
			
		||||
    FT_Fixed   blue_scale;
 | 
			
		||||
    FT_Int     blue_shift;
 | 
			
		||||
    FT_Int     blue_fuzz;
 | 
			
		||||
 | 
			
		||||
    FT_UShort  standard_width[1];
 | 
			
		||||
    FT_UShort  standard_height[1];
 | 
			
		||||
 | 
			
		||||
    FT_Byte    num_snap_widths;
 | 
			
		||||
    FT_Byte    num_snap_heights;
 | 
			
		||||
    FT_Bool    force_bold;
 | 
			
		||||
    FT_Bool    round_stem_up;
 | 
			
		||||
 | 
			
		||||
    FT_Short   snap_widths [13];  /* including std width  */
 | 
			
		||||
    FT_Short   snap_heights[13];  /* including std height */
 | 
			
		||||
 | 
			
		||||
    FT_Fixed   expansion_factor;
 | 
			
		||||
 | 
			
		||||
    FT_Long    language_group;
 | 
			
		||||
    FT_Long    password;
 | 
			
		||||
 | 
			
		||||
    FT_Short   min_feature[2];
 | 
			
		||||
 | 
			
		||||
  } PS_PrivateRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    PS_Private                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to a @PS_PrivateRec structure.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct PS_PrivateRec_*  PS_Private;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    T1_Private                                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*   This type is equivalent to @PS_PrivateRec.  It is deprecated but    */
 | 
			
		||||
  /*   kept to maintain source compatibility between various versions of   */
 | 
			
		||||
  /*   FreeType.                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef PS_PrivateRec  T1_Private;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Enum>                                                                */
 | 
			
		||||
  /*    T1_Blend_Flags                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A set of flags used to indicate which fields are present in a      */
 | 
			
		||||
  /*    given blend dictionary (font info or private).  Used to support    */
 | 
			
		||||
  /*    Multiple Masters fonts.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Values>                                                              */
 | 
			
		||||
  /*    T1_BLEND_UNDERLINE_POSITION ::                                     */
 | 
			
		||||
  /*    T1_BLEND_UNDERLINE_THICKNESS ::                                    */
 | 
			
		||||
  /*    T1_BLEND_ITALIC_ANGLE ::                                           */
 | 
			
		||||
  /*    T1_BLEND_BLUE_VALUES ::                                            */
 | 
			
		||||
  /*    T1_BLEND_OTHER_BLUES ::                                            */
 | 
			
		||||
  /*    T1_BLEND_STANDARD_WIDTH ::                                         */
 | 
			
		||||
  /*    T1_BLEND_STANDARD_HEIGHT ::                                        */
 | 
			
		||||
  /*    T1_BLEND_STEM_SNAP_WIDTHS ::                                       */
 | 
			
		||||
  /*    T1_BLEND_STEM_SNAP_HEIGHTS ::                                      */
 | 
			
		||||
  /*    T1_BLEND_BLUE_SCALE ::                                             */
 | 
			
		||||
  /*    T1_BLEND_BLUE_SHIFT ::                                             */
 | 
			
		||||
  /*    T1_BLEND_FAMILY_BLUES ::                                           */
 | 
			
		||||
  /*    T1_BLEND_FAMILY_OTHER_BLUES ::                                     */
 | 
			
		||||
  /*    T1_BLEND_FORCE_BOLD ::                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef enum  T1_Blend_Flags_
 | 
			
		||||
  {
 | 
			
		||||
    /* required fields in a FontInfo blend dictionary */
 | 
			
		||||
    T1_BLEND_UNDERLINE_POSITION = 0,
 | 
			
		||||
    T1_BLEND_UNDERLINE_THICKNESS,
 | 
			
		||||
    T1_BLEND_ITALIC_ANGLE,
 | 
			
		||||
 | 
			
		||||
    /* required fields in a Private blend dictionary */
 | 
			
		||||
    T1_BLEND_BLUE_VALUES,
 | 
			
		||||
    T1_BLEND_OTHER_BLUES,
 | 
			
		||||
    T1_BLEND_STANDARD_WIDTH,
 | 
			
		||||
    T1_BLEND_STANDARD_HEIGHT,
 | 
			
		||||
    T1_BLEND_STEM_SNAP_WIDTHS,
 | 
			
		||||
    T1_BLEND_STEM_SNAP_HEIGHTS,
 | 
			
		||||
    T1_BLEND_BLUE_SCALE,
 | 
			
		||||
    T1_BLEND_BLUE_SHIFT,
 | 
			
		||||
    T1_BLEND_FAMILY_BLUES,
 | 
			
		||||
    T1_BLEND_FAMILY_OTHER_BLUES,
 | 
			
		||||
    T1_BLEND_FORCE_BOLD,
 | 
			
		||||
 | 
			
		||||
    T1_BLEND_MAX    /* do not remove */
 | 
			
		||||
 | 
			
		||||
  } T1_Blend_Flags;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* these constants are deprecated; use the corresponding */
 | 
			
		||||
  /* `T1_Blend_Flags' values instead                       */
 | 
			
		||||
#define t1_blend_underline_position   T1_BLEND_UNDERLINE_POSITION
 | 
			
		||||
#define t1_blend_underline_thickness  T1_BLEND_UNDERLINE_THICKNESS
 | 
			
		||||
#define t1_blend_italic_angle         T1_BLEND_ITALIC_ANGLE
 | 
			
		||||
#define t1_blend_blue_values          T1_BLEND_BLUE_VALUES
 | 
			
		||||
#define t1_blend_other_blues          T1_BLEND_OTHER_BLUES
 | 
			
		||||
#define t1_blend_standard_widths      T1_BLEND_STANDARD_WIDTH
 | 
			
		||||
#define t1_blend_standard_height      T1_BLEND_STANDARD_HEIGHT
 | 
			
		||||
#define t1_blend_stem_snap_widths     T1_BLEND_STEM_SNAP_WIDTHS
 | 
			
		||||
#define t1_blend_stem_snap_heights    T1_BLEND_STEM_SNAP_HEIGHTS
 | 
			
		||||
#define t1_blend_blue_scale           T1_BLEND_BLUE_SCALE
 | 
			
		||||
#define t1_blend_blue_shift           T1_BLEND_BLUE_SHIFT
 | 
			
		||||
#define t1_blend_family_blues         T1_BLEND_FAMILY_BLUES
 | 
			
		||||
#define t1_blend_family_other_blues   T1_BLEND_FAMILY_OTHER_BLUES
 | 
			
		||||
#define t1_blend_force_bold           T1_BLEND_FORCE_BOLD
 | 
			
		||||
#define t1_blend_max                  T1_BLEND_MAX
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* maximum number of Multiple Masters designs, as defined in the spec */
 | 
			
		||||
#define T1_MAX_MM_DESIGNS     16
 | 
			
		||||
 | 
			
		||||
  /* maximum number of Multiple Masters axes, as defined in the spec */
 | 
			
		||||
#define T1_MAX_MM_AXIS        4
 | 
			
		||||
 | 
			
		||||
  /* maximum number of elements in a design map */
 | 
			
		||||
#define T1_MAX_MM_MAP_POINTS  20
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* this structure is used to store the BlendDesignMap entry for an axis */
 | 
			
		||||
  typedef struct  PS_DesignMap_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Byte    num_points;
 | 
			
		||||
    FT_Long*   design_points;
 | 
			
		||||
    FT_Fixed*  blend_points;
 | 
			
		||||
 | 
			
		||||
  } PS_DesignMapRec, *PS_DesignMap;
 | 
			
		||||
 | 
			
		||||
  /* backwards-compatible definition */
 | 
			
		||||
  typedef PS_DesignMapRec  T1_DesignMap;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  typedef struct  PS_BlendRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UInt          num_designs;
 | 
			
		||||
    FT_UInt          num_axis;
 | 
			
		||||
 | 
			
		||||
    FT_String*       axis_names[T1_MAX_MM_AXIS];
 | 
			
		||||
    FT_Fixed*        design_pos[T1_MAX_MM_DESIGNS];
 | 
			
		||||
    PS_DesignMapRec  design_map[T1_MAX_MM_AXIS];
 | 
			
		||||
 | 
			
		||||
    FT_Fixed*        weight_vector;
 | 
			
		||||
    FT_Fixed*        default_weight_vector;
 | 
			
		||||
 | 
			
		||||
    PS_FontInfo      font_infos[T1_MAX_MM_DESIGNS + 1];
 | 
			
		||||
    PS_Private       privates  [T1_MAX_MM_DESIGNS + 1];
 | 
			
		||||
 | 
			
		||||
    FT_ULong         blend_bitflags;
 | 
			
		||||
 | 
			
		||||
    FT_BBox*         bboxes    [T1_MAX_MM_DESIGNS + 1];
 | 
			
		||||
 | 
			
		||||
    /* since 2.3.0 */
 | 
			
		||||
 | 
			
		||||
    /* undocumented, optional: the default design instance;   */
 | 
			
		||||
    /* corresponds to default_weight_vector --                */
 | 
			
		||||
    /* num_default_design_vector == 0 means it is not present */
 | 
			
		||||
    /* in the font and associated metrics files               */
 | 
			
		||||
    FT_UInt          default_design_vector[T1_MAX_MM_DESIGNS];
 | 
			
		||||
    FT_UInt          num_default_design_vector;
 | 
			
		||||
 | 
			
		||||
  } PS_BlendRec, *PS_Blend;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* backwards-compatible definition */
 | 
			
		||||
  typedef PS_BlendRec  T1_Blend;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    CID_FaceDictRec                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to represent data in a CID top-level dictionary.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  CID_FaceDictRec_
 | 
			
		||||
  {
 | 
			
		||||
    PS_PrivateRec  private_dict;
 | 
			
		||||
 | 
			
		||||
    FT_UInt        len_buildchar;
 | 
			
		||||
    FT_Fixed       forcebold_threshold;
 | 
			
		||||
    FT_Pos         stroke_width;
 | 
			
		||||
    FT_Fixed       expansion_factor;
 | 
			
		||||
 | 
			
		||||
    FT_Byte        paint_type;
 | 
			
		||||
    FT_Byte        font_type;
 | 
			
		||||
    FT_Matrix      font_matrix;
 | 
			
		||||
    FT_Vector      font_offset;
 | 
			
		||||
 | 
			
		||||
    FT_UInt        num_subrs;
 | 
			
		||||
    FT_ULong       subrmap_offset;
 | 
			
		||||
    FT_Int         sd_bytes;
 | 
			
		||||
 | 
			
		||||
  } CID_FaceDictRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    CID_FaceDict                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to a @CID_FaceDictRec structure.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct CID_FaceDictRec_*  CID_FaceDict;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    CID_FontDict                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This type is equivalent to @CID_FaceDictRec.  It is deprecated but */
 | 
			
		||||
  /*    kept to maintain source compatibility between various versions of  */
 | 
			
		||||
  /*    FreeType.                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef CID_FaceDictRec  CID_FontDict;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    CID_FaceInfoRec                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to represent CID Face information.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  CID_FaceInfoRec_
 | 
			
		||||
  {
 | 
			
		||||
    FT_String*      cid_font_name;
 | 
			
		||||
    FT_Fixed        cid_version;
 | 
			
		||||
    FT_Int          cid_font_type;
 | 
			
		||||
 | 
			
		||||
    FT_String*      registry;
 | 
			
		||||
    FT_String*      ordering;
 | 
			
		||||
    FT_Int          supplement;
 | 
			
		||||
 | 
			
		||||
    PS_FontInfoRec  font_info;
 | 
			
		||||
    FT_BBox         font_bbox;
 | 
			
		||||
    FT_ULong        uid_base;
 | 
			
		||||
 | 
			
		||||
    FT_Int          num_xuid;
 | 
			
		||||
    FT_ULong        xuid[16];
 | 
			
		||||
 | 
			
		||||
    FT_ULong        cidmap_offset;
 | 
			
		||||
    FT_Int          fd_bytes;
 | 
			
		||||
    FT_Int          gd_bytes;
 | 
			
		||||
    FT_ULong        cid_count;
 | 
			
		||||
 | 
			
		||||
    FT_Int          num_dicts;
 | 
			
		||||
    CID_FaceDict    font_dicts;
 | 
			
		||||
 | 
			
		||||
    FT_ULong        data_offset;
 | 
			
		||||
 | 
			
		||||
  } CID_FaceInfoRec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    CID_FaceInfo                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A handle to a @CID_FaceInfoRec structure.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct CID_FaceInfoRec_*  CID_FaceInfo;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    CID_Info                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*   This type is equivalent to @CID_FaceInfoRec.  It is deprecated but  */
 | 
			
		||||
  /*   kept to maintain source compatibility between various versions of   */
 | 
			
		||||
  /*   FreeType.                                                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef CID_FaceInfoRec  CID_Info;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Has_PS_Glyph_Names
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Return true if a given face provides reliable PostScript glyph
 | 
			
		||||
   *    names.  This is similar to using the @FT_HAS_GLYPH_NAMES macro,
 | 
			
		||||
   *    except that certain fonts (mostly TrueType) contain incorrect
 | 
			
		||||
   *    glyph name tables.
 | 
			
		||||
   *
 | 
			
		||||
   *    When this function returns true, the caller is sure that the glyph
 | 
			
		||||
   *    names returned by @FT_Get_Glyph_Name are reliable.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face ::
 | 
			
		||||
   *       face handle
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    Boolean.  True if glyph names are reliable.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Int )
 | 
			
		||||
  FT_Has_PS_Glyph_Names( FT_Face  face );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Get_PS_Font_Info
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Retrieve the @PS_FontInfoRec structure corresponding to a given
 | 
			
		||||
   *    PostScript font.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face ::
 | 
			
		||||
   *       PostScript face handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *    afont_info ::
 | 
			
		||||
   *       Output font info structure pointer.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *    String pointers within the @PS_FontInfoRec structure are owned by
 | 
			
		||||
   *    the face and don't need to be freed by the caller.  Missing entries
 | 
			
		||||
   *    in the font's FontInfo dictionary are represented by NULL pointers.
 | 
			
		||||
   *
 | 
			
		||||
   *    If the font's format is not PostScript-based, this function will
 | 
			
		||||
   *    return the `FT_Err_Invalid_Argument' error code.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_PS_Font_Info( FT_Face      face,
 | 
			
		||||
                       PS_FontInfo  afont_info );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Get_PS_Font_Private
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Retrieve the @PS_PrivateRec structure corresponding to a given
 | 
			
		||||
   *    PostScript font.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face ::
 | 
			
		||||
   *       PostScript face handle.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *    afont_private ::
 | 
			
		||||
   *       Output private dictionary structure pointer.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    FreeType error code.  0~means success.
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *    The string pointers within the @PS_PrivateRec structure are owned by
 | 
			
		||||
   *    the face and don't need to be freed by the caller.
 | 
			
		||||
   *
 | 
			
		||||
   *    If the font's format is not PostScript-based, this function returns
 | 
			
		||||
   *    the `FT_Err_Invalid_Argument' error code.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Get_PS_Font_Private( FT_Face     face,
 | 
			
		||||
                          PS_Private  afont_private );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Enum>                                                                */
 | 
			
		||||
  /*    T1_EncodingType                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    An enumeration describing the `Encoding' entry in a Type 1         */
 | 
			
		||||
  /*    dictionary.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Values>                                                              */
 | 
			
		||||
  /*    T1_ENCODING_TYPE_NONE ::                                           */
 | 
			
		||||
  /*    T1_ENCODING_TYPE_ARRAY ::                                          */
 | 
			
		||||
  /*    T1_ENCODING_TYPE_STANDARD ::                                       */
 | 
			
		||||
  /*    T1_ENCODING_TYPE_ISOLATIN1 ::                                      */
 | 
			
		||||
  /*    T1_ENCODING_TYPE_EXPERT ::                                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef enum  T1_EncodingType_
 | 
			
		||||
  {
 | 
			
		||||
    T1_ENCODING_TYPE_NONE = 0,
 | 
			
		||||
    T1_ENCODING_TYPE_ARRAY,
 | 
			
		||||
    T1_ENCODING_TYPE_STANDARD,
 | 
			
		||||
    T1_ENCODING_TYPE_ISOLATIN1,
 | 
			
		||||
    T1_ENCODING_TYPE_EXPERT
 | 
			
		||||
 | 
			
		||||
  } T1_EncodingType;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Enum>                                                                */
 | 
			
		||||
  /*    PS_Dict_Keys                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    An enumeration used in calls to @FT_Get_PS_Font_Value to identify  */
 | 
			
		||||
  /*    the Type~1 dictionary entry to retrieve.                           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Values>                                                              */
 | 
			
		||||
  /*    PS_DICT_FONT_TYPE ::                                               */
 | 
			
		||||
  /*    PS_DICT_FONT_MATRIX ::                                             */
 | 
			
		||||
  /*    PS_DICT_FONT_BBOX ::                                               */
 | 
			
		||||
  /*    PS_DICT_PAINT_TYPE ::                                              */
 | 
			
		||||
  /*    PS_DICT_FONT_NAME ::                                               */
 | 
			
		||||
  /*    PS_DICT_UNIQUE_ID ::                                               */
 | 
			
		||||
  /*    PS_DICT_NUM_CHAR_STRINGS ::                                        */
 | 
			
		||||
  /*    PS_DICT_CHAR_STRING_KEY ::                                         */
 | 
			
		||||
  /*    PS_DICT_CHAR_STRING ::                                             */
 | 
			
		||||
  /*    PS_DICT_ENCODING_TYPE ::                                           */
 | 
			
		||||
  /*    PS_DICT_ENCODING_ENTRY ::                                          */
 | 
			
		||||
  /*    PS_DICT_NUM_SUBRS ::                                               */
 | 
			
		||||
  /*    PS_DICT_SUBR ::                                                    */
 | 
			
		||||
  /*    PS_DICT_STD_HW ::                                                  */
 | 
			
		||||
  /*    PS_DICT_STD_VW ::                                                  */
 | 
			
		||||
  /*    PS_DICT_NUM_BLUE_VALUES ::                                         */
 | 
			
		||||
  /*    PS_DICT_BLUE_VALUE ::                                              */
 | 
			
		||||
  /*    PS_DICT_BLUE_FUZZ ::                                               */
 | 
			
		||||
  /*    PS_DICT_NUM_OTHER_BLUES ::                                         */
 | 
			
		||||
  /*    PS_DICT_OTHER_BLUE ::                                              */
 | 
			
		||||
  /*    PS_DICT_NUM_FAMILY_BLUES ::                                        */
 | 
			
		||||
  /*    PS_DICT_FAMILY_BLUE ::                                             */
 | 
			
		||||
  /*    PS_DICT_NUM_FAMILY_OTHER_BLUES ::                                  */
 | 
			
		||||
  /*    PS_DICT_FAMILY_OTHER_BLUE ::                                       */
 | 
			
		||||
  /*    PS_DICT_BLUE_SCALE ::                                              */
 | 
			
		||||
  /*    PS_DICT_BLUE_SHIFT ::                                              */
 | 
			
		||||
  /*    PS_DICT_NUM_STEM_SNAP_H ::                                         */
 | 
			
		||||
  /*    PS_DICT_STEM_SNAP_H ::                                             */
 | 
			
		||||
  /*    PS_DICT_NUM_STEM_SNAP_V ::                                         */
 | 
			
		||||
  /*    PS_DICT_STEM_SNAP_V ::                                             */
 | 
			
		||||
  /*    PS_DICT_FORCE_BOLD ::                                              */
 | 
			
		||||
  /*    PS_DICT_RND_STEM_UP ::                                             */
 | 
			
		||||
  /*    PS_DICT_MIN_FEATURE ::                                             */
 | 
			
		||||
  /*    PS_DICT_LEN_IV ::                                                  */
 | 
			
		||||
  /*    PS_DICT_PASSWORD ::                                                */
 | 
			
		||||
  /*    PS_DICT_LANGUAGE_GROUP ::                                          */
 | 
			
		||||
  /*    PS_DICT_VERSION ::                                                 */
 | 
			
		||||
  /*    PS_DICT_NOTICE ::                                                  */
 | 
			
		||||
  /*    PS_DICT_FULL_NAME ::                                               */
 | 
			
		||||
  /*    PS_DICT_FAMILY_NAME ::                                             */
 | 
			
		||||
  /*    PS_DICT_WEIGHT ::                                                  */
 | 
			
		||||
  /*    PS_DICT_IS_FIXED_PITCH ::                                          */
 | 
			
		||||
  /*    PS_DICT_UNDERLINE_POSITION ::                                      */
 | 
			
		||||
  /*    PS_DICT_UNDERLINE_THICKNESS ::                                     */
 | 
			
		||||
  /*    PS_DICT_FS_TYPE ::                                                 */
 | 
			
		||||
  /*    PS_DICT_ITALIC_ANGLE ::                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef enum  PS_Dict_Keys_
 | 
			
		||||
  {
 | 
			
		||||
    /* conventionally in the font dictionary */
 | 
			
		||||
    PS_DICT_FONT_TYPE,              /* FT_Byte         */
 | 
			
		||||
    PS_DICT_FONT_MATRIX,            /* FT_Fixed        */
 | 
			
		||||
    PS_DICT_FONT_BBOX,              /* FT_Fixed        */
 | 
			
		||||
    PS_DICT_PAINT_TYPE,             /* FT_Byte         */
 | 
			
		||||
    PS_DICT_FONT_NAME,              /* FT_String*      */
 | 
			
		||||
    PS_DICT_UNIQUE_ID,              /* FT_Int          */
 | 
			
		||||
    PS_DICT_NUM_CHAR_STRINGS,       /* FT_Int          */
 | 
			
		||||
    PS_DICT_CHAR_STRING_KEY,        /* FT_String*      */
 | 
			
		||||
    PS_DICT_CHAR_STRING,            /* FT_String*      */
 | 
			
		||||
    PS_DICT_ENCODING_TYPE,          /* T1_EncodingType */
 | 
			
		||||
    PS_DICT_ENCODING_ENTRY,         /* FT_String*      */
 | 
			
		||||
 | 
			
		||||
    /* conventionally in the font Private dictionary */
 | 
			
		||||
    PS_DICT_NUM_SUBRS,              /* FT_Int     */
 | 
			
		||||
    PS_DICT_SUBR,                   /* FT_String* */
 | 
			
		||||
    PS_DICT_STD_HW,                 /* FT_UShort  */
 | 
			
		||||
    PS_DICT_STD_VW,                 /* FT_UShort  */
 | 
			
		||||
    PS_DICT_NUM_BLUE_VALUES,        /* FT_Byte    */
 | 
			
		||||
    PS_DICT_BLUE_VALUE,             /* FT_Short   */
 | 
			
		||||
    PS_DICT_BLUE_FUZZ,              /* FT_Int     */
 | 
			
		||||
    PS_DICT_NUM_OTHER_BLUES,        /* FT_Byte    */
 | 
			
		||||
    PS_DICT_OTHER_BLUE,             /* FT_Short   */
 | 
			
		||||
    PS_DICT_NUM_FAMILY_BLUES,       /* FT_Byte    */
 | 
			
		||||
    PS_DICT_FAMILY_BLUE,            /* FT_Short   */
 | 
			
		||||
    PS_DICT_NUM_FAMILY_OTHER_BLUES, /* FT_Byte    */
 | 
			
		||||
    PS_DICT_FAMILY_OTHER_BLUE,      /* FT_Short   */
 | 
			
		||||
    PS_DICT_BLUE_SCALE,             /* FT_Fixed   */
 | 
			
		||||
    PS_DICT_BLUE_SHIFT,             /* FT_Int     */
 | 
			
		||||
    PS_DICT_NUM_STEM_SNAP_H,        /* FT_Byte    */
 | 
			
		||||
    PS_DICT_STEM_SNAP_H,            /* FT_Short   */
 | 
			
		||||
    PS_DICT_NUM_STEM_SNAP_V,        /* FT_Byte    */
 | 
			
		||||
    PS_DICT_STEM_SNAP_V,            /* FT_Short   */
 | 
			
		||||
    PS_DICT_FORCE_BOLD,             /* FT_Bool    */
 | 
			
		||||
    PS_DICT_RND_STEM_UP,            /* FT_Bool    */
 | 
			
		||||
    PS_DICT_MIN_FEATURE,            /* FT_Short   */
 | 
			
		||||
    PS_DICT_LEN_IV,                 /* FT_Int     */
 | 
			
		||||
    PS_DICT_PASSWORD,               /* FT_Long    */
 | 
			
		||||
    PS_DICT_LANGUAGE_GROUP,         /* FT_Long    */
 | 
			
		||||
 | 
			
		||||
    /* conventionally in the font FontInfo dictionary */
 | 
			
		||||
    PS_DICT_VERSION,                /* FT_String* */
 | 
			
		||||
    PS_DICT_NOTICE,                 /* FT_String* */
 | 
			
		||||
    PS_DICT_FULL_NAME,              /* FT_String* */
 | 
			
		||||
    PS_DICT_FAMILY_NAME,            /* FT_String* */
 | 
			
		||||
    PS_DICT_WEIGHT,                 /* FT_String* */
 | 
			
		||||
    PS_DICT_IS_FIXED_PITCH,         /* FT_Bool    */
 | 
			
		||||
    PS_DICT_UNDERLINE_POSITION,     /* FT_Short   */
 | 
			
		||||
    PS_DICT_UNDERLINE_THICKNESS,    /* FT_UShort  */
 | 
			
		||||
    PS_DICT_FS_TYPE,                /* FT_UShort  */
 | 
			
		||||
    PS_DICT_ITALIC_ANGLE,           /* FT_Long    */
 | 
			
		||||
 | 
			
		||||
    PS_DICT_MAX = PS_DICT_ITALIC_ANGLE
 | 
			
		||||
 | 
			
		||||
  } PS_Dict_Keys;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /************************************************************************
 | 
			
		||||
   *
 | 
			
		||||
   * @function:
 | 
			
		||||
   *    FT_Get_PS_Font_Value
 | 
			
		||||
   *
 | 
			
		||||
   * @description:
 | 
			
		||||
   *    Retrieve the value for the supplied key from a PostScript font.
 | 
			
		||||
   *
 | 
			
		||||
   * @input:
 | 
			
		||||
   *    face ::
 | 
			
		||||
   *       PostScript face handle.
 | 
			
		||||
   *
 | 
			
		||||
   *    key ::
 | 
			
		||||
   *       An enumeration value representing the dictionary key to retrieve.
 | 
			
		||||
   *
 | 
			
		||||
   *    idx ::
 | 
			
		||||
   *       For array values, this specifies the index to be returned.
 | 
			
		||||
   *
 | 
			
		||||
   *    value ::
 | 
			
		||||
   *       A pointer to memory into which to write the value.
 | 
			
		||||
   *
 | 
			
		||||
   *    valen_len ::
 | 
			
		||||
   *       The size, in bytes, of the memory supplied for the value.
 | 
			
		||||
   *
 | 
			
		||||
   * @output:
 | 
			
		||||
   *    value ::
 | 
			
		||||
   *       The value matching the above key, if it exists.
 | 
			
		||||
   *
 | 
			
		||||
   * @return:
 | 
			
		||||
   *    The amount of memory (in bytes) required to hold the requested
 | 
			
		||||
   *    value (if it exists, -1 otherwise).
 | 
			
		||||
   *
 | 
			
		||||
   * @note:
 | 
			
		||||
   *    The values returned are not pointers into the internal structures of
 | 
			
		||||
   *    the face, but are `fresh' copies, so that the memory containing them
 | 
			
		||||
   *    belongs to the calling application.  This also enforces the
 | 
			
		||||
   *    `read-only' nature of these values, i.e., this function cannot be
 | 
			
		||||
   *    used to manipulate the face.
 | 
			
		||||
   *
 | 
			
		||||
   *    `value' is a void pointer because the values returned can be of
 | 
			
		||||
   *    various types.
 | 
			
		||||
   *
 | 
			
		||||
   *    If either `value' is NULL or `value_len' is too small, just the
 | 
			
		||||
   *    required memory size for the requested entry is returned.
 | 
			
		||||
   *
 | 
			
		||||
   *    The `idx' parameter is used, not only to retrieve elements of, for
 | 
			
		||||
   *    example, the FontMatrix or FontBBox, but also to retrieve name keys
 | 
			
		||||
   *    from the CharStrings dictionary, and the charstrings themselves.  It
 | 
			
		||||
   *    is ignored for atomic values.
 | 
			
		||||
   *
 | 
			
		||||
   *    PS_DICT_BLUE_SCALE returns a value that is scaled up by 1000.  To
 | 
			
		||||
   *    get the value as in the font stream, you need to divide by
 | 
			
		||||
   *    65536000.0 (to remove the FT_Fixed scale, and the x1000 scale).
 | 
			
		||||
   *
 | 
			
		||||
   *    IMPORTANT: Only key/value pairs read by the FreeType interpreter can
 | 
			
		||||
   *    be retrieved.  So, for example, PostScript procedures such as NP,
 | 
			
		||||
   *    ND, and RD are not available.  Arbitrary keys are, obviously, not be
 | 
			
		||||
   *    available either.
 | 
			
		||||
   *
 | 
			
		||||
   *    If the font's format is not PostScript-based, this function returns
 | 
			
		||||
   *    the `FT_Err_Invalid_Argument' error code.
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
  FT_EXPORT( FT_Long )
 | 
			
		||||
  FT_Get_PS_Font_Value( FT_Face       face,
 | 
			
		||||
                        PS_Dict_Keys  key,
 | 
			
		||||
                        FT_UInt       idx,
 | 
			
		||||
                        void         *value,
 | 
			
		||||
                        FT_Long       value_len );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __T1TABLES_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,829 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  tttables.h                                                             */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Basic SFNT/TrueType tables definitions and interface                 */
 | 
			
		||||
/*    (specification only).                                                */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __TTTABLES_H__
 | 
			
		||||
#define __TTTABLES_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Section>                                                             */
 | 
			
		||||
  /*    truetype_tables                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Title>                                                               */
 | 
			
		||||
  /*    TrueType Tables                                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Abstract>                                                            */
 | 
			
		||||
  /*    TrueType specific table types and functions.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    This section contains the definition of TrueType-specific tables   */
 | 
			
		||||
  /*    as well as some routines used to access and process them.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Order>                                                               */
 | 
			
		||||
  /*    TT_Header                                                          */
 | 
			
		||||
  /*    TT_HoriHeader                                                      */
 | 
			
		||||
  /*    TT_VertHeader                                                      */
 | 
			
		||||
  /*    TT_OS2                                                             */
 | 
			
		||||
  /*    TT_Postscript                                                      */
 | 
			
		||||
  /*    TT_PCLT                                                            */
 | 
			
		||||
  /*    TT_MaxProfile                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Sfnt_Tag                                                        */
 | 
			
		||||
  /*    FT_Get_Sfnt_Table                                                  */
 | 
			
		||||
  /*    FT_Load_Sfnt_Table                                                 */
 | 
			
		||||
  /*    FT_Sfnt_Table_Info                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_Get_CMap_Language_ID                                            */
 | 
			
		||||
  /*    FT_Get_CMap_Format                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_PARAM_TAG_UNPATENTED_HINTING                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_Header                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a TrueType font header table.  All       */
 | 
			
		||||
  /*    fields follow the TrueType specification.                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_Header_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed   Table_Version;
 | 
			
		||||
    FT_Fixed   Font_Revision;
 | 
			
		||||
 | 
			
		||||
    FT_Long    CheckSum_Adjust;
 | 
			
		||||
    FT_Long    Magic_Number;
 | 
			
		||||
 | 
			
		||||
    FT_UShort  Flags;
 | 
			
		||||
    FT_UShort  Units_Per_EM;
 | 
			
		||||
 | 
			
		||||
    FT_Long    Created [2];
 | 
			
		||||
    FT_Long    Modified[2];
 | 
			
		||||
 | 
			
		||||
    FT_Short   xMin;
 | 
			
		||||
    FT_Short   yMin;
 | 
			
		||||
    FT_Short   xMax;
 | 
			
		||||
    FT_Short   yMax;
 | 
			
		||||
 | 
			
		||||
    FT_UShort  Mac_Style;
 | 
			
		||||
    FT_UShort  Lowest_Rec_PPEM;
 | 
			
		||||
 | 
			
		||||
    FT_Short   Font_Direction;
 | 
			
		||||
    FT_Short   Index_To_Loc_Format;
 | 
			
		||||
    FT_Short   Glyph_Data_Format;
 | 
			
		||||
 | 
			
		||||
  } TT_Header;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_HoriHeader                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a TrueType horizontal header, the `hhea' */
 | 
			
		||||
  /*    table, as well as the corresponding horizontal metrics table,      */
 | 
			
		||||
  /*    i.e., the `hmtx' table.                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    Version                :: The table version.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Ascender               :: The font's ascender, i.e., the distance  */
 | 
			
		||||
  /*                              from the baseline to the top-most of all */
 | 
			
		||||
  /*                              glyph points found in the font.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                              This value is invalid in many fonts, as  */
 | 
			
		||||
  /*                              it is usually set by the font designer,  */
 | 
			
		||||
  /*                              and often reflects only a portion of the */
 | 
			
		||||
  /*                              glyphs found in the font (maybe ASCII).  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                              You should use the `sTypoAscender' field */
 | 
			
		||||
  /*                              of the OS/2 table instead if you want    */
 | 
			
		||||
  /*                              the correct one.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Descender              :: The font's descender, i.e., the distance */
 | 
			
		||||
  /*                              from the baseline to the bottom-most of  */
 | 
			
		||||
  /*                              all glyph points found in the font.  It  */
 | 
			
		||||
  /*                              is negative.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                              This value is invalid in many fonts, as  */
 | 
			
		||||
  /*                              it is usually set by the font designer,  */
 | 
			
		||||
  /*                              and often reflects only a portion of the */
 | 
			
		||||
  /*                              glyphs found in the font (maybe ASCII).  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                              You should use the `sTypoDescender'      */
 | 
			
		||||
  /*                              field of the OS/2 table instead if you   */
 | 
			
		||||
  /*                              want the correct one.                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Line_Gap               :: The font's line gap, i.e., the distance  */
 | 
			
		||||
  /*                              to add to the ascender and descender to  */
 | 
			
		||||
  /*                              get the BTB, i.e., the                   */
 | 
			
		||||
  /*                              baseline-to-baseline distance for the    */
 | 
			
		||||
  /*                              font.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    advance_Width_Max      :: This field is the maximum of all advance */
 | 
			
		||||
  /*                              widths found in the font.  It can be     */
 | 
			
		||||
  /*                              used to compute the maximum width of an  */
 | 
			
		||||
  /*                              arbitrary string of text.                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    min_Left_Side_Bearing  :: The minimum left side bearing of all     */
 | 
			
		||||
  /*                              glyphs within the font.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    min_Right_Side_Bearing :: The minimum right side bearing of all    */
 | 
			
		||||
  /*                              glyphs within the font.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    xMax_Extent            :: The maximum horizontal extent (i.e., the */
 | 
			
		||||
  /*                              `width' of a glyph's bounding box) for   */
 | 
			
		||||
  /*                              all glyphs in the font.                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    caret_Slope_Rise       :: The rise coefficient of the cursor's     */
 | 
			
		||||
  /*                              slope of the cursor (slope=rise/run).    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    caret_Slope_Run        :: The run coefficient of the cursor's      */
 | 
			
		||||
  /*                              slope.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Reserved               :: 8~reserved bytes.                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    metric_Data_Format     :: Always~0.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    number_Of_HMetrics     :: Number of HMetrics entries in the `hmtx' */
 | 
			
		||||
  /*                              table -- this value can be smaller than  */
 | 
			
		||||
  /*                              the total number of glyphs in the font.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    long_metrics           :: A pointer into the `hmtx' table.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    short_metrics          :: A pointer into the `hmtx' table.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should   */
 | 
			
		||||
  /*               be identical except for the names of their fields,      */
 | 
			
		||||
  /*               which are different.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*               This ensures that a single function in the `ttload'     */
 | 
			
		||||
  /*               module is able to read both the horizontal and vertical */
 | 
			
		||||
  /*               headers.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_HoriHeader_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed   Version;
 | 
			
		||||
    FT_Short   Ascender;
 | 
			
		||||
    FT_Short   Descender;
 | 
			
		||||
    FT_Short   Line_Gap;
 | 
			
		||||
 | 
			
		||||
    FT_UShort  advance_Width_Max;      /* advance width maximum */
 | 
			
		||||
 | 
			
		||||
    FT_Short   min_Left_Side_Bearing;  /* minimum left-sb       */
 | 
			
		||||
    FT_Short   min_Right_Side_Bearing; /* minimum right-sb      */
 | 
			
		||||
    FT_Short   xMax_Extent;            /* xmax extents          */
 | 
			
		||||
    FT_Short   caret_Slope_Rise;
 | 
			
		||||
    FT_Short   caret_Slope_Run;
 | 
			
		||||
    FT_Short   caret_Offset;
 | 
			
		||||
 | 
			
		||||
    FT_Short   Reserved[4];
 | 
			
		||||
 | 
			
		||||
    FT_Short   metric_Data_Format;
 | 
			
		||||
    FT_UShort  number_Of_HMetrics;
 | 
			
		||||
 | 
			
		||||
    /* The following fields are not defined by the TrueType specification */
 | 
			
		||||
    /* but they are used to connect the metrics header to the relevant    */
 | 
			
		||||
    /* `HMTX' table.                                                      */
 | 
			
		||||
 | 
			
		||||
    void*      long_metrics;
 | 
			
		||||
    void*      short_metrics;
 | 
			
		||||
 | 
			
		||||
  } TT_HoriHeader;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_VertHeader                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a TrueType vertical header, the `vhea'   */
 | 
			
		||||
  /*    table, as well as the corresponding vertical metrics table, i.e.,  */
 | 
			
		||||
  /*    the `vmtx' table.                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    Version                 :: The table version.                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Ascender                :: The font's ascender, i.e., the distance */
 | 
			
		||||
  /*                               from the baseline to the top-most of    */
 | 
			
		||||
  /*                               all glyph points found in the font.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                               This value is invalid in many fonts, as */
 | 
			
		||||
  /*                               it is usually set by the font designer, */
 | 
			
		||||
  /*                               and often reflects only a portion of    */
 | 
			
		||||
  /*                               the glyphs found in the font (maybe     */
 | 
			
		||||
  /*                               ASCII).                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                               You should use the `sTypoAscender'      */
 | 
			
		||||
  /*                               field of the OS/2 table instead if you  */
 | 
			
		||||
  /*                               want the correct one.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Descender               :: The font's descender, i.e., the         */
 | 
			
		||||
  /*                               distance from the baseline to the       */
 | 
			
		||||
  /*                               bottom-most of all glyph points found   */
 | 
			
		||||
  /*                               in the font.  It is negative.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                               This value is invalid in many fonts, as */
 | 
			
		||||
  /*                               it is usually set by the font designer, */
 | 
			
		||||
  /*                               and often reflects only a portion of    */
 | 
			
		||||
  /*                               the glyphs found in the font (maybe     */
 | 
			
		||||
  /*                               ASCII).                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                               You should use the `sTypoDescender'     */
 | 
			
		||||
  /*                               field of the OS/2 table instead if you  */
 | 
			
		||||
  /*                               want the correct one.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Line_Gap                :: The font's line gap, i.e., the distance */
 | 
			
		||||
  /*                               to add to the ascender and descender to */
 | 
			
		||||
  /*                               get the BTB, i.e., the                  */
 | 
			
		||||
  /*                               baseline-to-baseline distance for the   */
 | 
			
		||||
  /*                               font.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    advance_Height_Max      :: This field is the maximum of all        */
 | 
			
		||||
  /*                               advance heights found in the font.  It  */
 | 
			
		||||
  /*                               can be used to compute the maximum      */
 | 
			
		||||
  /*                               height of an arbitrary string of text.  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    min_Top_Side_Bearing    :: The minimum top side bearing of all     */
 | 
			
		||||
  /*                               glyphs within the font.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    min_Bottom_Side_Bearing :: The minimum bottom side bearing of all  */
 | 
			
		||||
  /*                               glyphs within the font.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    yMax_Extent             :: The maximum vertical extent (i.e., the  */
 | 
			
		||||
  /*                               `height' of a glyph's bounding box) for */
 | 
			
		||||
  /*                               all glyphs in the font.                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    caret_Slope_Rise        :: The rise coefficient of the cursor's    */
 | 
			
		||||
  /*                               slope of the cursor (slope=rise/run).   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    caret_Slope_Run         :: The run coefficient of the cursor's     */
 | 
			
		||||
  /*                               slope.                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    caret_Offset            :: The cursor's offset for slanted fonts.  */
 | 
			
		||||
  /*                               This value is `reserved' in vmtx        */
 | 
			
		||||
  /*                               version 1.0.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Reserved                :: 8~reserved bytes.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    metric_Data_Format      :: Always~0.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    number_Of_HMetrics      :: Number of VMetrics entries in the       */
 | 
			
		||||
  /*                               `vmtx' table -- this value can be       */
 | 
			
		||||
  /*                               smaller than the total number of glyphs */
 | 
			
		||||
  /*                               in the font.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    long_metrics           :: A pointer into the `vmtx' table.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    short_metrics          :: A pointer into the `vmtx' table.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should   */
 | 
			
		||||
  /*               be identical except for the names of their fields,      */
 | 
			
		||||
  /*               which are different.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*               This ensures that a single function in the `ttload'     */
 | 
			
		||||
  /*               module is able to read both the horizontal and vertical */
 | 
			
		||||
  /*               headers.                                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_VertHeader_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed   Version;
 | 
			
		||||
    FT_Short   Ascender;
 | 
			
		||||
    FT_Short   Descender;
 | 
			
		||||
    FT_Short   Line_Gap;
 | 
			
		||||
 | 
			
		||||
    FT_UShort  advance_Height_Max;      /* advance height maximum */
 | 
			
		||||
 | 
			
		||||
    FT_Short   min_Top_Side_Bearing;    /* minimum left-sb or top-sb       */
 | 
			
		||||
    FT_Short   min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb   */
 | 
			
		||||
    FT_Short   yMax_Extent;             /* xmax or ymax extents            */
 | 
			
		||||
    FT_Short   caret_Slope_Rise;
 | 
			
		||||
    FT_Short   caret_Slope_Run;
 | 
			
		||||
    FT_Short   caret_Offset;
 | 
			
		||||
 | 
			
		||||
    FT_Short   Reserved[4];
 | 
			
		||||
 | 
			
		||||
    FT_Short   metric_Data_Format;
 | 
			
		||||
    FT_UShort  number_Of_VMetrics;
 | 
			
		||||
 | 
			
		||||
    /* The following fields are not defined by the TrueType specification */
 | 
			
		||||
    /* but they're used to connect the metrics header to the relevant     */
 | 
			
		||||
    /* `HMTX' or `VMTX' table.                                            */
 | 
			
		||||
 | 
			
		||||
    void*      long_metrics;
 | 
			
		||||
    void*      short_metrics;
 | 
			
		||||
 | 
			
		||||
  } TT_VertHeader;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_OS2                                                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a TrueType OS/2 table.  All fields       */
 | 
			
		||||
  /*    comply to the OpenType specification.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Note that we now support old Mac fonts that do not include an OS/2 */
 | 
			
		||||
  /*    table.  In this case, the `version' field is always set to 0xFFFF. */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_OS2_
 | 
			
		||||
  {
 | 
			
		||||
    FT_UShort  version;                /* 0x0001 - more or 0xFFFF */
 | 
			
		||||
    FT_Short   xAvgCharWidth;
 | 
			
		||||
    FT_UShort  usWeightClass;
 | 
			
		||||
    FT_UShort  usWidthClass;
 | 
			
		||||
    FT_UShort  fsType;
 | 
			
		||||
    FT_Short   ySubscriptXSize;
 | 
			
		||||
    FT_Short   ySubscriptYSize;
 | 
			
		||||
    FT_Short   ySubscriptXOffset;
 | 
			
		||||
    FT_Short   ySubscriptYOffset;
 | 
			
		||||
    FT_Short   ySuperscriptXSize;
 | 
			
		||||
    FT_Short   ySuperscriptYSize;
 | 
			
		||||
    FT_Short   ySuperscriptXOffset;
 | 
			
		||||
    FT_Short   ySuperscriptYOffset;
 | 
			
		||||
    FT_Short   yStrikeoutSize;
 | 
			
		||||
    FT_Short   yStrikeoutPosition;
 | 
			
		||||
    FT_Short   sFamilyClass;
 | 
			
		||||
 | 
			
		||||
    FT_Byte    panose[10];
 | 
			
		||||
 | 
			
		||||
    FT_ULong   ulUnicodeRange1;        /* Bits 0-31   */
 | 
			
		||||
    FT_ULong   ulUnicodeRange2;        /* Bits 32-63  */
 | 
			
		||||
    FT_ULong   ulUnicodeRange3;        /* Bits 64-95  */
 | 
			
		||||
    FT_ULong   ulUnicodeRange4;        /* Bits 96-127 */
 | 
			
		||||
 | 
			
		||||
    FT_Char    achVendID[4];
 | 
			
		||||
 | 
			
		||||
    FT_UShort  fsSelection;
 | 
			
		||||
    FT_UShort  usFirstCharIndex;
 | 
			
		||||
    FT_UShort  usLastCharIndex;
 | 
			
		||||
    FT_Short   sTypoAscender;
 | 
			
		||||
    FT_Short   sTypoDescender;
 | 
			
		||||
    FT_Short   sTypoLineGap;
 | 
			
		||||
    FT_UShort  usWinAscent;
 | 
			
		||||
    FT_UShort  usWinDescent;
 | 
			
		||||
 | 
			
		||||
    /* only version 1 and higher: */
 | 
			
		||||
 | 
			
		||||
    FT_ULong   ulCodePageRange1;       /* Bits 0-31   */
 | 
			
		||||
    FT_ULong   ulCodePageRange2;       /* Bits 32-63  */
 | 
			
		||||
 | 
			
		||||
    /* only version 2 and higher: */
 | 
			
		||||
 | 
			
		||||
    FT_Short   sxHeight;
 | 
			
		||||
    FT_Short   sCapHeight;
 | 
			
		||||
    FT_UShort  usDefaultChar;
 | 
			
		||||
    FT_UShort  usBreakChar;
 | 
			
		||||
    FT_UShort  usMaxContext;
 | 
			
		||||
 | 
			
		||||
    /* only version 5 and higher: */
 | 
			
		||||
 | 
			
		||||
    FT_UShort  usLowerOpticalPointSize;       /* in twips (1/20th points) */
 | 
			
		||||
    FT_UShort  usUpperOpticalPointSize;       /* in twips (1/20th points) */
 | 
			
		||||
 | 
			
		||||
  } TT_OS2;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_Postscript                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a TrueType PostScript table.  All fields */
 | 
			
		||||
  /*    comply to the TrueType specification.  This structure does not     */
 | 
			
		||||
  /*    reference the PostScript glyph names, which can be nevertheless    */
 | 
			
		||||
  /*    accessed with the `ttpost' module.                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_Postscript_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed  FormatType;
 | 
			
		||||
    FT_Fixed  italicAngle;
 | 
			
		||||
    FT_Short  underlinePosition;
 | 
			
		||||
    FT_Short  underlineThickness;
 | 
			
		||||
    FT_ULong  isFixedPitch;
 | 
			
		||||
    FT_ULong  minMemType42;
 | 
			
		||||
    FT_ULong  maxMemType42;
 | 
			
		||||
    FT_ULong  minMemType1;
 | 
			
		||||
    FT_ULong  maxMemType1;
 | 
			
		||||
 | 
			
		||||
    /* Glyph names follow in the file, but we don't   */
 | 
			
		||||
    /* load them by default.  See the ttpost.c file.  */
 | 
			
		||||
 | 
			
		||||
  } TT_Postscript;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_PCLT                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    A structure used to model a TrueType PCLT table.  All fields       */
 | 
			
		||||
  /*    comply to the TrueType specification.                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_PCLT_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed   Version;
 | 
			
		||||
    FT_ULong   FontNumber;
 | 
			
		||||
    FT_UShort  Pitch;
 | 
			
		||||
    FT_UShort  xHeight;
 | 
			
		||||
    FT_UShort  Style;
 | 
			
		||||
    FT_UShort  TypeFamily;
 | 
			
		||||
    FT_UShort  CapHeight;
 | 
			
		||||
    FT_UShort  SymbolSet;
 | 
			
		||||
    FT_Char    TypeFace[16];
 | 
			
		||||
    FT_Char    CharacterComplement[8];
 | 
			
		||||
    FT_Char    FileName[6];
 | 
			
		||||
    FT_Char    StrokeWeight;
 | 
			
		||||
    FT_Char    WidthType;
 | 
			
		||||
    FT_Byte    SerifStyle;
 | 
			
		||||
    FT_Byte    Reserved;
 | 
			
		||||
 | 
			
		||||
  } TT_PCLT;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Struct>                                                              */
 | 
			
		||||
  /*    TT_MaxProfile                                                      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    The maximum profile is a table containing many max values, which   */
 | 
			
		||||
  /*    can be used to pre-allocate arrays.  This ensures that no memory   */
 | 
			
		||||
  /*    allocation occurs during a glyph load.                             */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Fields>                                                              */
 | 
			
		||||
  /*    version               :: The version number.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    numGlyphs             :: The number of glyphs in this TrueType     */
 | 
			
		||||
  /*                             font.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxPoints             :: The maximum number of points in a         */
 | 
			
		||||
  /*                             non-composite TrueType glyph.  See also   */
 | 
			
		||||
  /*                             the structure element                     */
 | 
			
		||||
  /*                             `maxCompositePoints'.                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxContours           :: The maximum number of contours in a       */
 | 
			
		||||
  /*                             non-composite TrueType glyph.  See also   */
 | 
			
		||||
  /*                             the structure element                     */
 | 
			
		||||
  /*                             `maxCompositeContours'.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxCompositePoints    :: The maximum number of points in a         */
 | 
			
		||||
  /*                             composite TrueType glyph.  See also the   */
 | 
			
		||||
  /*                             structure element `maxPoints'.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxCompositeContours  :: The maximum number of contours in a       */
 | 
			
		||||
  /*                             composite TrueType glyph.  See also the   */
 | 
			
		||||
  /*                             structure element `maxContours'.          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxZones              :: The maximum number of zones used for      */
 | 
			
		||||
  /*                             glyph hinting.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxTwilightPoints     :: The maximum number of points in the       */
 | 
			
		||||
  /*                             twilight zone used for glyph hinting.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxStorage            :: The maximum number of elements in the     */
 | 
			
		||||
  /*                             storage area used for glyph hinting.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxFunctionDefs       :: The maximum number of function            */
 | 
			
		||||
  /*                             definitions in the TrueType bytecode for  */
 | 
			
		||||
  /*                             this font.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxInstructionDefs    :: The maximum number of instruction         */
 | 
			
		||||
  /*                             definitions in the TrueType bytecode for  */
 | 
			
		||||
  /*                             this font.                                */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxStackElements      :: The maximum number of stack elements used */
 | 
			
		||||
  /*                             during bytecode interpretation.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxSizeOfInstructions :: The maximum number of TrueType opcodes    */
 | 
			
		||||
  /*                             used for glyph hinting.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxComponentElements  :: The maximum number of simple (i.e., non-  */
 | 
			
		||||
  /*                             composite) glyphs in a composite glyph.   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    maxComponentDepth     :: The maximum nesting depth of composite    */
 | 
			
		||||
  /*                             glyphs.                                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    This structure is only used during font loading.                   */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef struct  TT_MaxProfile_
 | 
			
		||||
  {
 | 
			
		||||
    FT_Fixed   version;
 | 
			
		||||
    FT_UShort  numGlyphs;
 | 
			
		||||
    FT_UShort  maxPoints;
 | 
			
		||||
    FT_UShort  maxContours;
 | 
			
		||||
    FT_UShort  maxCompositePoints;
 | 
			
		||||
    FT_UShort  maxCompositeContours;
 | 
			
		||||
    FT_UShort  maxZones;
 | 
			
		||||
    FT_UShort  maxTwilightPoints;
 | 
			
		||||
    FT_UShort  maxStorage;
 | 
			
		||||
    FT_UShort  maxFunctionDefs;
 | 
			
		||||
    FT_UShort  maxInstructionDefs;
 | 
			
		||||
    FT_UShort  maxStackElements;
 | 
			
		||||
    FT_UShort  maxSizeOfInstructions;
 | 
			
		||||
    FT_UShort  maxComponentElements;
 | 
			
		||||
    FT_UShort  maxComponentDepth;
 | 
			
		||||
 | 
			
		||||
  } TT_MaxProfile;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Enum>                                                                */
 | 
			
		||||
  /*    FT_Sfnt_Tag                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    An enumeration used to specify the index of an SFNT table.         */
 | 
			
		||||
  /*    Used in the @FT_Get_Sfnt_Table API function.                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Values>                                                              */
 | 
			
		||||
  /*    FT_SFNT_HEAD :: To access the font's @TT_Header structure.         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_SFNT_MAXP :: To access the font's @TT_MaxProfile structure.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_SFNT_OS2  :: To access the font's @TT_OS2 structure.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_SFNT_VHEA :: To access the font's @TT_VertHeader struture.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_SFNT_POST :: To access the font's @TT_Postscript structure.     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    FT_SFNT_PCLT :: To access the font's @TT_PCLT structure.           */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  typedef enum  FT_Sfnt_Tag_
 | 
			
		||||
  {
 | 
			
		||||
    FT_SFNT_HEAD,
 | 
			
		||||
    FT_SFNT_MAXP,
 | 
			
		||||
    FT_SFNT_OS2,
 | 
			
		||||
    FT_SFNT_HHEA,
 | 
			
		||||
    FT_SFNT_VHEA,
 | 
			
		||||
    FT_SFNT_POST,
 | 
			
		||||
    FT_SFNT_PCLT,
 | 
			
		||||
 | 
			
		||||
    FT_SFNT_MAX
 | 
			
		||||
 | 
			
		||||
  } FT_Sfnt_Tag;
 | 
			
		||||
 | 
			
		||||
  /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag' */
 | 
			
		||||
  /* values instead                                                      */
 | 
			
		||||
#define ft_sfnt_head  FT_SFNT_HEAD
 | 
			
		||||
#define ft_sfnt_maxp  FT_SFNT_MAXP
 | 
			
		||||
#define ft_sfnt_os2   FT_SFNT_OS2
 | 
			
		||||
#define ft_sfnt_hhea  FT_SFNT_HHEA
 | 
			
		||||
#define ft_sfnt_vhea  FT_SFNT_VHEA
 | 
			
		||||
#define ft_sfnt_post  FT_SFNT_POST
 | 
			
		||||
#define ft_sfnt_pclt  FT_SFNT_PCLT
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_Sfnt_Table                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return a pointer to a given SFNT table within a face.              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    face :: A handle to the source.                                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    tag  :: The index of the SFNT table.                               */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    A type-less pointer to the table.  This will be~0 in case of       */
 | 
			
		||||
  /*    error, or if the corresponding table was not found *OR* loaded     */
 | 
			
		||||
  /*    from the file.                                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Use a typecast according to `tag' to access the structure          */
 | 
			
		||||
  /*    elements.                                                          */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Note>                                                                */
 | 
			
		||||
  /*    The table is owned by the face object and disappears with it.      */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    This function is only useful to access SFNT tables that are loaded */
 | 
			
		||||
  /*    by the sfnt, truetype, and opentype drivers.  See @FT_Sfnt_Tag for */
 | 
			
		||||
  /*    a list.                                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    Here an example how to access the `vhea' table:                    */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    {                                                                  */
 | 
			
		||||
  /*      TT_VertHeader*  vert_header;                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*      vert_header =                                                    */
 | 
			
		||||
  /*        (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA );       */
 | 
			
		||||
  /*    }                                                                  */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( void* )
 | 
			
		||||
  FT_Get_Sfnt_Table( FT_Face      face,
 | 
			
		||||
                     FT_Sfnt_Tag  tag );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *   FT_Load_Sfnt_Table
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   Load any font table into client memory.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *   face ::
 | 
			
		||||
  *     A handle to the source face.
 | 
			
		||||
  *
 | 
			
		||||
  *   tag ::
 | 
			
		||||
  *     The four-byte tag of the table to load.  Use the value~0 if you want
 | 
			
		||||
  *     to access the whole font file.  Otherwise, you can use one of the
 | 
			
		||||
  *     definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new
 | 
			
		||||
  *     one with @FT_MAKE_TAG.
 | 
			
		||||
  *
 | 
			
		||||
  *   offset ::
 | 
			
		||||
  *     The starting offset in the table (or file if tag == 0).
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *   buffer ::
 | 
			
		||||
  *     The target buffer address.  The client must ensure that the memory
 | 
			
		||||
  *     array is big enough to hold the data.
 | 
			
		||||
  *
 | 
			
		||||
  * @inout:
 | 
			
		||||
  *   length ::
 | 
			
		||||
  *     If the `length' parameter is NULL, then try to load the whole table.
 | 
			
		||||
  *     Return an error code if it fails.
 | 
			
		||||
  *
 | 
			
		||||
  *     Else, if `*length' is~0, exit immediately while returning the
 | 
			
		||||
  *     table's (or file) full size in it.
 | 
			
		||||
  *
 | 
			
		||||
  *     Else the number of bytes to read from the table or file, from the
 | 
			
		||||
  *     starting offset.
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   If you need to determine the table's length you should first call this
 | 
			
		||||
  *   function with `*length' set to~0, as in the following example:
 | 
			
		||||
  *
 | 
			
		||||
  *     {
 | 
			
		||||
  *       FT_ULong  length = 0;
 | 
			
		||||
  *
 | 
			
		||||
  *
 | 
			
		||||
  *       error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length );
 | 
			
		||||
  *       if ( error ) { ... table does not exist ... }
 | 
			
		||||
  *
 | 
			
		||||
  *       buffer = malloc( length );
 | 
			
		||||
  *       if ( buffer == NULL ) { ... not enough memory ... }
 | 
			
		||||
  *
 | 
			
		||||
  *       error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length );
 | 
			
		||||
  *       if ( error ) { ... could not load table ... }
 | 
			
		||||
  *     }
 | 
			
		||||
  *
 | 
			
		||||
  *   Note that structures like @TT_Header or @TT_OS2 can't be used with
 | 
			
		||||
  *   this function; they are limited to @FT_Get_Sfnt_Table.  Reason is that
 | 
			
		||||
  *   those structures depend on the processor architecture, with varying
 | 
			
		||||
  *   size (e.g. 32bit vs. 64bit) or order (big endian vs. little endian).
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Load_Sfnt_Table( FT_Face    face,
 | 
			
		||||
                      FT_ULong   tag,
 | 
			
		||||
                      FT_Long    offset,
 | 
			
		||||
                      FT_Byte*   buffer,
 | 
			
		||||
                      FT_ULong*  length );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @function:
 | 
			
		||||
  *   FT_Sfnt_Table_Info
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   Return information on an SFNT table.
 | 
			
		||||
  *
 | 
			
		||||
  * @input:
 | 
			
		||||
  *   face ::
 | 
			
		||||
  *     A handle to the source face.
 | 
			
		||||
  *
 | 
			
		||||
  *   table_index ::
 | 
			
		||||
  *     The index of an SFNT table.  The function returns
 | 
			
		||||
  *     FT_Err_Table_Missing for an invalid value.
 | 
			
		||||
  *
 | 
			
		||||
  * @inout:
 | 
			
		||||
  *   tag ::
 | 
			
		||||
  *     The name tag of the SFNT table.  If the value is NULL, `table_index'
 | 
			
		||||
  *     is ignored, and `length' returns the number of SFNT tables in the
 | 
			
		||||
  *     font.
 | 
			
		||||
  *
 | 
			
		||||
  * @output:
 | 
			
		||||
  *   length ::
 | 
			
		||||
  *     The length of the SFNT table (or the number of SFNT tables, depending
 | 
			
		||||
  *     on `tag').
 | 
			
		||||
  *
 | 
			
		||||
  * @return:
 | 
			
		||||
  *   FreeType error code.  0~means success.
 | 
			
		||||
  *
 | 
			
		||||
  * @note:
 | 
			
		||||
  *   While parsing fonts, FreeType handles SFNT tables with length zero as
 | 
			
		||||
  *   missing.
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
  FT_EXPORT( FT_Error )
 | 
			
		||||
  FT_Sfnt_Table_Info( FT_Face    face,
 | 
			
		||||
                      FT_UInt    table_index,
 | 
			
		||||
                      FT_ULong  *tag,
 | 
			
		||||
                      FT_ULong  *length );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_CMap_Language_ID                                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return TrueType/sfnt specific cmap language ID.  Definitions of    */
 | 
			
		||||
  /*    language ID values are in `ttnameid.h'.                            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    charmap ::                                                         */
 | 
			
		||||
  /*      The target charmap.                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    The language ID of `charmap'.  If `charmap' doesn't belong to a    */
 | 
			
		||||
  /*    TrueType/sfnt face, just return~0 as the default value.            */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /*    For a format~14 cmap (to access Unicode IVS), the return value is  */
 | 
			
		||||
  /*    0xFFFFFFFF.                                                        */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_ULong )
 | 
			
		||||
  FT_Get_CMap_Language_ID( FT_CharMap  charmap );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /*************************************************************************/
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Function>                                                            */
 | 
			
		||||
  /*    FT_Get_CMap_Format                                                 */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Description>                                                         */
 | 
			
		||||
  /*    Return TrueType/sfnt specific cmap format.                         */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Input>                                                               */
 | 
			
		||||
  /*    charmap ::                                                         */
 | 
			
		||||
  /*      The target charmap.                                              */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  /* <Return>                                                              */
 | 
			
		||||
  /*    The format of `charmap'.  If `charmap' doesn't belong to a         */
 | 
			
		||||
  /*    TrueType/sfnt face, return -1.                                     */
 | 
			
		||||
  /*                                                                       */
 | 
			
		||||
  FT_EXPORT( FT_Long )
 | 
			
		||||
  FT_Get_CMap_Format( FT_CharMap  charmap );
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __TTTABLES_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,111 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  tttags.h                                                               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Tags for TrueType and OpenType tables (specification only).          */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 1996-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __TTAGS_H__
 | 
			
		||||
#define __TTAGS_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define TTAG_avar  FT_MAKE_TAG( 'a', 'v', 'a', 'r' )
 | 
			
		||||
#define TTAG_BASE  FT_MAKE_TAG( 'B', 'A', 'S', 'E' )
 | 
			
		||||
#define TTAG_bdat  FT_MAKE_TAG( 'b', 'd', 'a', 't' )
 | 
			
		||||
#define TTAG_BDF   FT_MAKE_TAG( 'B', 'D', 'F', ' ' )
 | 
			
		||||
#define TTAG_bhed  FT_MAKE_TAG( 'b', 'h', 'e', 'd' )
 | 
			
		||||
#define TTAG_bloc  FT_MAKE_TAG( 'b', 'l', 'o', 'c' )
 | 
			
		||||
#define TTAG_bsln  FT_MAKE_TAG( 'b', 's', 'l', 'n' )
 | 
			
		||||
#define TTAG_CBDT  FT_MAKE_TAG( 'C', 'B', 'D', 'T' )
 | 
			
		||||
#define TTAG_CBLC  FT_MAKE_TAG( 'C', 'B', 'L', 'C' )
 | 
			
		||||
#define TTAG_CFF   FT_MAKE_TAG( 'C', 'F', 'F', ' ' )
 | 
			
		||||
#define TTAG_CID   FT_MAKE_TAG( 'C', 'I', 'D', ' ' )
 | 
			
		||||
#define TTAG_cmap  FT_MAKE_TAG( 'c', 'm', 'a', 'p' )
 | 
			
		||||
#define TTAG_cvar  FT_MAKE_TAG( 'c', 'v', 'a', 'r' )
 | 
			
		||||
#define TTAG_cvt   FT_MAKE_TAG( 'c', 'v', 't', ' ' )
 | 
			
		||||
#define TTAG_DSIG  FT_MAKE_TAG( 'D', 'S', 'I', 'G' )
 | 
			
		||||
#define TTAG_EBDT  FT_MAKE_TAG( 'E', 'B', 'D', 'T' )
 | 
			
		||||
#define TTAG_EBLC  FT_MAKE_TAG( 'E', 'B', 'L', 'C' )
 | 
			
		||||
#define TTAG_EBSC  FT_MAKE_TAG( 'E', 'B', 'S', 'C' )
 | 
			
		||||
#define TTAG_feat  FT_MAKE_TAG( 'f', 'e', 'a', 't' )
 | 
			
		||||
#define TTAG_FOND  FT_MAKE_TAG( 'F', 'O', 'N', 'D' )
 | 
			
		||||
#define TTAG_fpgm  FT_MAKE_TAG( 'f', 'p', 'g', 'm' )
 | 
			
		||||
#define TTAG_fvar  FT_MAKE_TAG( 'f', 'v', 'a', 'r' )
 | 
			
		||||
#define TTAG_gasp  FT_MAKE_TAG( 'g', 'a', 's', 'p' )
 | 
			
		||||
#define TTAG_GDEF  FT_MAKE_TAG( 'G', 'D', 'E', 'F' )
 | 
			
		||||
#define TTAG_glyf  FT_MAKE_TAG( 'g', 'l', 'y', 'f' )
 | 
			
		||||
#define TTAG_GPOS  FT_MAKE_TAG( 'G', 'P', 'O', 'S' )
 | 
			
		||||
#define TTAG_GSUB  FT_MAKE_TAG( 'G', 'S', 'U', 'B' )
 | 
			
		||||
#define TTAG_gvar  FT_MAKE_TAG( 'g', 'v', 'a', 'r' )
 | 
			
		||||
#define TTAG_hdmx  FT_MAKE_TAG( 'h', 'd', 'm', 'x' )
 | 
			
		||||
#define TTAG_head  FT_MAKE_TAG( 'h', 'e', 'a', 'd' )
 | 
			
		||||
#define TTAG_hhea  FT_MAKE_TAG( 'h', 'h', 'e', 'a' )
 | 
			
		||||
#define TTAG_hmtx  FT_MAKE_TAG( 'h', 'm', 't', 'x' )
 | 
			
		||||
#define TTAG_JSTF  FT_MAKE_TAG( 'J', 'S', 'T', 'F' )
 | 
			
		||||
#define TTAG_just  FT_MAKE_TAG( 'j', 'u', 's', 't' )
 | 
			
		||||
#define TTAG_kern  FT_MAKE_TAG( 'k', 'e', 'r', 'n' )
 | 
			
		||||
#define TTAG_lcar  FT_MAKE_TAG( 'l', 'c', 'a', 'r' )
 | 
			
		||||
#define TTAG_loca  FT_MAKE_TAG( 'l', 'o', 'c', 'a' )
 | 
			
		||||
#define TTAG_LTSH  FT_MAKE_TAG( 'L', 'T', 'S', 'H' )
 | 
			
		||||
#define TTAG_LWFN  FT_MAKE_TAG( 'L', 'W', 'F', 'N' )
 | 
			
		||||
#define TTAG_MATH  FT_MAKE_TAG( 'M', 'A', 'T', 'H' )
 | 
			
		||||
#define TTAG_maxp  FT_MAKE_TAG( 'm', 'a', 'x', 'p' )
 | 
			
		||||
#define TTAG_META  FT_MAKE_TAG( 'M', 'E', 'T', 'A' )
 | 
			
		||||
#define TTAG_MMFX  FT_MAKE_TAG( 'M', 'M', 'F', 'X' )
 | 
			
		||||
#define TTAG_MMSD  FT_MAKE_TAG( 'M', 'M', 'S', 'D' )
 | 
			
		||||
#define TTAG_mort  FT_MAKE_TAG( 'm', 'o', 'r', 't' )
 | 
			
		||||
#define TTAG_morx  FT_MAKE_TAG( 'm', 'o', 'r', 'x' )
 | 
			
		||||
#define TTAG_name  FT_MAKE_TAG( 'n', 'a', 'm', 'e' )
 | 
			
		||||
#define TTAG_opbd  FT_MAKE_TAG( 'o', 'p', 'b', 'd' )
 | 
			
		||||
#define TTAG_OS2   FT_MAKE_TAG( 'O', 'S', '/', '2' )
 | 
			
		||||
#define TTAG_OTTO  FT_MAKE_TAG( 'O', 'T', 'T', 'O' )
 | 
			
		||||
#define TTAG_PCLT  FT_MAKE_TAG( 'P', 'C', 'L', 'T' )
 | 
			
		||||
#define TTAG_POST  FT_MAKE_TAG( 'P', 'O', 'S', 'T' )
 | 
			
		||||
#define TTAG_post  FT_MAKE_TAG( 'p', 'o', 's', 't' )
 | 
			
		||||
#define TTAG_prep  FT_MAKE_TAG( 'p', 'r', 'e', 'p' )
 | 
			
		||||
#define TTAG_prop  FT_MAKE_TAG( 'p', 'r', 'o', 'p' )
 | 
			
		||||
#define TTAG_sbix  FT_MAKE_TAG( 's', 'b', 'i', 'x' )
 | 
			
		||||
#define TTAG_sfnt  FT_MAKE_TAG( 's', 'f', 'n', 't' )
 | 
			
		||||
#define TTAG_SING  FT_MAKE_TAG( 'S', 'I', 'N', 'G' )
 | 
			
		||||
#define TTAG_trak  FT_MAKE_TAG( 't', 'r', 'a', 'k' )
 | 
			
		||||
#define TTAG_true  FT_MAKE_TAG( 't', 'r', 'u', 'e' )
 | 
			
		||||
#define TTAG_ttc   FT_MAKE_TAG( 't', 't', 'c', ' ' )
 | 
			
		||||
#define TTAG_ttcf  FT_MAKE_TAG( 't', 't', 'c', 'f' )
 | 
			
		||||
#define TTAG_TYP1  FT_MAKE_TAG( 'T', 'Y', 'P', '1' )
 | 
			
		||||
#define TTAG_typ1  FT_MAKE_TAG( 't', 'y', 'p', '1' )
 | 
			
		||||
#define TTAG_VDMX  FT_MAKE_TAG( 'V', 'D', 'M', 'X' )
 | 
			
		||||
#define TTAG_vhea  FT_MAKE_TAG( 'v', 'h', 'e', 'a' )
 | 
			
		||||
#define TTAG_vmtx  FT_MAKE_TAG( 'v', 'm', 't', 'x' )
 | 
			
		||||
#define TTAG_wOFF  FT_MAKE_TAG( 'w', 'O', 'F', 'F' )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
#endif /* __TTAGS_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,60 +0,0 @@
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  ttunpat.h                                                              */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*    Definitions for the unpatented TrueType hinting system               */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Copyright 2003-2015 by                                                 */
 | 
			
		||||
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  Written by Graham Asher <graham.asher@btinternet.com>                  */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/*  This file is part of the FreeType project, and may only be used,       */
 | 
			
		||||
/*  modified, and distributed under the terms of the FreeType project      */
 | 
			
		||||
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 | 
			
		||||
/*  this file you indicate that you have read the license and              */
 | 
			
		||||
/*  understand and accept it fully.                                        */
 | 
			
		||||
/*                                                                         */
 | 
			
		||||
/***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __TTUNPAT_H__
 | 
			
		||||
#define __TTUNPAT_H__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <ft2build.h>
 | 
			
		||||
#include FT_FREETYPE_H
 | 
			
		||||
 | 
			
		||||
#ifdef FREETYPE_H
 | 
			
		||||
#error "freetype.h of FreeType 1 has been loaded!"
 | 
			
		||||
#error "Please fix the directory search order for header files"
 | 
			
		||||
#error "so that freetype.h of FreeType 2 is found first."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_BEGIN_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /***************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * @constant:
 | 
			
		||||
  *   FT_PARAM_TAG_UNPATENTED_HINTING
 | 
			
		||||
  *
 | 
			
		||||
  * @description:
 | 
			
		||||
  *   A constant used as the tag of an @FT_Parameter structure to indicate
 | 
			
		||||
  *   that unpatented methods only should be used by the TrueType bytecode
 | 
			
		||||
  *   interpreter for a typeface opened by @FT_Open_Face.
 | 
			
		||||
  *
 | 
			
		||||
  */
 | 
			
		||||
#define FT_PARAM_TAG_UNPATENTED_HINTING  FT_MAKE_TAG( 'u', 'n', 'p', 'a' )
 | 
			
		||||
 | 
			
		||||
  /* */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FT_END_HEADER
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* __TTUNPAT_H__ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* END */
 | 
			
		||||
@@ -1,167 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
** $Id: lauxlib.h,v 1.88.1.1 2007/12/27 13:02:25 roberto Exp $
 | 
			
		||||
** Auxiliary functions for building Lua libraries
 | 
			
		||||
** See Copyright Notice in lua.h
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef lauxlib_h
 | 
			
		||||
#define lauxlib_h
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
#include "lua.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define luaL_getn(L,i)          ((int)lua_objlen(L, i))
 | 
			
		||||
#define luaL_setn(L,i,j)        ((void)0)  /* no op! */
 | 
			
		||||
 | 
			
		||||
/* extra error code for `luaL_load' */
 | 
			
		||||
#define LUA_ERRFILE     (LUA_ERRERR+1)
 | 
			
		||||
 | 
			
		||||
typedef struct luaL_Reg {
 | 
			
		||||
  const char *name;
 | 
			
		||||
  lua_CFunction func;
 | 
			
		||||
} luaL_Reg;
 | 
			
		||||
 | 
			
		||||
LUALIB_API void (luaL_openlib) (lua_State *L, const char *libname,
 | 
			
		||||
                                const luaL_Reg *l, int nup);
 | 
			
		||||
LUALIB_API void (luaL_register) (lua_State *L, const char *libname,
 | 
			
		||||
                                const luaL_Reg *l);
 | 
			
		||||
LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e);
 | 
			
		||||
LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e);
 | 
			
		||||
LUALIB_API int (luaL_typerror) (lua_State *L, int narg, const char *tname);
 | 
			
		||||
LUALIB_API int (luaL_argerror) (lua_State *L, int numarg, const char *extramsg);
 | 
			
		||||
LUALIB_API const char *(luaL_checklstring) (lua_State *L, int numArg,
 | 
			
		||||
                                                          size_t *l);
 | 
			
		||||
LUALIB_API const char *(luaL_optlstring) (lua_State *L, int numArg,
 | 
			
		||||
                                          const char *def, size_t *l);
 | 
			
		||||
LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int numArg);
 | 
			
		||||
LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int nArg, lua_Number def);
 | 
			
		||||
 | 
			
		||||
LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int numArg);
 | 
			
		||||
LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int nArg,
 | 
			
		||||
                                          lua_Integer def);
 | 
			
		||||
 | 
			
		||||
LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg);
 | 
			
		||||
LUALIB_API void (luaL_checktype) (lua_State *L, int narg, int t);
 | 
			
		||||
LUALIB_API void (luaL_checkany) (lua_State *L, int narg);
 | 
			
		||||
 | 
			
		||||
LUALIB_API int   (luaL_newmetatable) (lua_State *L, const char *tname);
 | 
			
		||||
LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname);
 | 
			
		||||
 | 
			
		||||
LUALIB_API void (luaL_where) (lua_State *L, int lvl);
 | 
			
		||||
LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...);
 | 
			
		||||
 | 
			
		||||
LUALIB_API int (luaL_checkoption) (lua_State *L, int narg, const char *def,
 | 
			
		||||
                                   const char *const lst[]);
 | 
			
		||||
 | 
			
		||||
LUALIB_API int (luaL_ref) (lua_State *L, int t);
 | 
			
		||||
LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref);
 | 
			
		||||
 | 
			
		||||
LUALIB_API int (luaL_loadfile) (lua_State *L, const char *filename);
 | 
			
		||||
LUALIB_API int (luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz,
 | 
			
		||||
                                  const char *name);
 | 
			
		||||
LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s);
 | 
			
		||||
 | 
			
		||||
LUALIB_API lua_State *(luaL_newstate) (void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, const char *p,
 | 
			
		||||
                                                  const char *r);
 | 
			
		||||
 | 
			
		||||
LUALIB_API const char *(luaL_findtable) (lua_State *L, int idx,
 | 
			
		||||
                                         const char *fname, int szhint);
 | 
			
		||||
 | 
			
		||||
/* From Lua 5.2. */
 | 
			
		||||
LUALIB_API int luaL_fileresult(lua_State *L, int stat, const char *fname);
 | 
			
		||||
LUALIB_API int luaL_execresult(lua_State *L, int stat);
 | 
			
		||||
LUALIB_API int (luaL_loadfilex) (lua_State *L, const char *filename,
 | 
			
		||||
				 const char *mode);
 | 
			
		||||
LUALIB_API int (luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz,
 | 
			
		||||
				   const char *name, const char *mode);
 | 
			
		||||
LUALIB_API void luaL_traceback (lua_State *L, lua_State *L1, const char *msg,
 | 
			
		||||
				int level);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** ===============================================================
 | 
			
		||||
** some useful macros
 | 
			
		||||
** ===============================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#define luaL_argcheck(L, cond,numarg,extramsg)	\
 | 
			
		||||
		((void)((cond) || luaL_argerror(L, (numarg), (extramsg))))
 | 
			
		||||
#define luaL_checkstring(L,n)	(luaL_checklstring(L, (n), NULL))
 | 
			
		||||
#define luaL_optstring(L,n,d)	(luaL_optlstring(L, (n), (d), NULL))
 | 
			
		||||
#define luaL_checkint(L,n)	((int)luaL_checkinteger(L, (n)))
 | 
			
		||||
#define luaL_optint(L,n,d)	((int)luaL_optinteger(L, (n), (d)))
 | 
			
		||||
#define luaL_checklong(L,n)	((long)luaL_checkinteger(L, (n)))
 | 
			
		||||
#define luaL_optlong(L,n,d)	((long)luaL_optinteger(L, (n), (d)))
 | 
			
		||||
 | 
			
		||||
#define luaL_typename(L,i)	lua_typename(L, lua_type(L,(i)))
 | 
			
		||||
 | 
			
		||||
#define luaL_dofile(L, fn) \
 | 
			
		||||
	(luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0))
 | 
			
		||||
 | 
			
		||||
#define luaL_dostring(L, s) \
 | 
			
		||||
	(luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))
 | 
			
		||||
 | 
			
		||||
#define luaL_getmetatable(L,n)	(lua_getfield(L, LUA_REGISTRYINDEX, (n)))
 | 
			
		||||
 | 
			
		||||
#define luaL_opt(L,f,n,d)	(lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** {======================================================
 | 
			
		||||
** Generic Buffer manipulation
 | 
			
		||||
** =======================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef struct luaL_Buffer {
 | 
			
		||||
  char *p;			/* current position in buffer */
 | 
			
		||||
  int lvl;  /* number of strings in the stack (level) */
 | 
			
		||||
  lua_State *L;
 | 
			
		||||
  char buffer[LUAL_BUFFERSIZE];
 | 
			
		||||
} luaL_Buffer;
 | 
			
		||||
 | 
			
		||||
#define luaL_addchar(B,c) \
 | 
			
		||||
  ((void)((B)->p < ((B)->buffer+LUAL_BUFFERSIZE) || luaL_prepbuffer(B)), \
 | 
			
		||||
   (*(B)->p++ = (char)(c)))
 | 
			
		||||
 | 
			
		||||
/* compatibility only */
 | 
			
		||||
#define luaL_putchar(B,c)	luaL_addchar(B,c)
 | 
			
		||||
 | 
			
		||||
#define luaL_addsize(B,n)	((B)->p += (n))
 | 
			
		||||
 | 
			
		||||
LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B);
 | 
			
		||||
LUALIB_API char *(luaL_prepbuffer) (luaL_Buffer *B);
 | 
			
		||||
LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l);
 | 
			
		||||
LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s);
 | 
			
		||||
LUALIB_API void (luaL_addvalue) (luaL_Buffer *B);
 | 
			
		||||
LUALIB_API void (luaL_pushresult) (luaL_Buffer *B);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* }====================================================== */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* compatibility with ref system */
 | 
			
		||||
 | 
			
		||||
/* pre-defined references */
 | 
			
		||||
#define LUA_NOREF       (-2)
 | 
			
		||||
#define LUA_REFNIL      (-1)
 | 
			
		||||
 | 
			
		||||
#define lua_ref(L,lock) ((lock) ? luaL_ref(L, LUA_REGISTRYINDEX) : \
 | 
			
		||||
      (lua_pushstring(L, "unlocked references are obsolete"), lua_error(L), 0))
 | 
			
		||||
 | 
			
		||||
#define lua_unref(L,ref)        luaL_unref(L, LUA_REGISTRYINDEX, (ref))
 | 
			
		||||
 | 
			
		||||
#define lua_getref(L,ref)       lua_rawgeti(L, LUA_REGISTRYINDEX, (ref))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define luaL_reg	luaL_Reg
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,393 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
** $Id: lua.h,v 1.218.1.5 2008/08/06 13:30:12 roberto Exp $
 | 
			
		||||
** Lua - An Extensible Extension Language
 | 
			
		||||
** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
 | 
			
		||||
** See Copyright Notice at the end of this file
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef lua_h
 | 
			
		||||
#define lua_h
 | 
			
		||||
 | 
			
		||||
#include <stdarg.h>
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "luaconf.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define LUA_VERSION	"Lua 5.1"
 | 
			
		||||
#define LUA_RELEASE	"Lua 5.1.4"
 | 
			
		||||
#define LUA_VERSION_NUM	501
 | 
			
		||||
#define LUA_COPYRIGHT	"Copyright (C) 1994-2008 Lua.org, PUC-Rio"
 | 
			
		||||
#define LUA_AUTHORS	"R. Ierusalimschy, L. H. de Figueiredo & W. Celes"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* mark for precompiled code (`<esc>Lua') */
 | 
			
		||||
#define	LUA_SIGNATURE	"\033Lua"
 | 
			
		||||
 | 
			
		||||
/* option for multiple returns in `lua_pcall' and `lua_call' */
 | 
			
		||||
#define LUA_MULTRET	(-1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** pseudo-indices
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_REGISTRYINDEX	(-10000)
 | 
			
		||||
#define LUA_ENVIRONINDEX	(-10001)
 | 
			
		||||
#define LUA_GLOBALSINDEX	(-10002)
 | 
			
		||||
#define lua_upvalueindex(i)	(LUA_GLOBALSINDEX-(i))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* thread status; 0 is OK */
 | 
			
		||||
#define LUA_YIELD	1
 | 
			
		||||
#define LUA_ERRRUN	2
 | 
			
		||||
#define LUA_ERRSYNTAX	3
 | 
			
		||||
#define LUA_ERRMEM	4
 | 
			
		||||
#define LUA_ERRERR	5
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef struct lua_State lua_State;
 | 
			
		||||
 | 
			
		||||
typedef int (*lua_CFunction) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** functions that read/write blocks when loading/dumping Lua chunks
 | 
			
		||||
*/
 | 
			
		||||
typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz);
 | 
			
		||||
 | 
			
		||||
typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** prototype for memory-allocation functions
 | 
			
		||||
*/
 | 
			
		||||
typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** basic types
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_TNONE		(-1)
 | 
			
		||||
 | 
			
		||||
#define LUA_TNIL		0
 | 
			
		||||
#define LUA_TBOOLEAN		1
 | 
			
		||||
#define LUA_TLIGHTUSERDATA	2
 | 
			
		||||
#define LUA_TNUMBER		3
 | 
			
		||||
#define LUA_TSTRING		4
 | 
			
		||||
#define LUA_TTABLE		5
 | 
			
		||||
#define LUA_TFUNCTION		6
 | 
			
		||||
#define LUA_TUSERDATA		7
 | 
			
		||||
#define LUA_TTHREAD		8
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* minimum Lua stack available to a C function */
 | 
			
		||||
#define LUA_MINSTACK	20
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** generic extra include file
 | 
			
		||||
*/
 | 
			
		||||
#if defined(LUA_USER_H)
 | 
			
		||||
#include LUA_USER_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* type of numbers in Lua */
 | 
			
		||||
typedef LUA_NUMBER lua_Number;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* type for integer functions */
 | 
			
		||||
typedef LUA_INTEGER lua_Integer;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** state manipulation
 | 
			
		||||
*/
 | 
			
		||||
LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);
 | 
			
		||||
LUA_API void       (lua_close) (lua_State *L);
 | 
			
		||||
LUA_API lua_State *(lua_newthread) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** basic stack manipulation
 | 
			
		||||
*/
 | 
			
		||||
LUA_API int   (lua_gettop) (lua_State *L);
 | 
			
		||||
LUA_API void  (lua_settop) (lua_State *L, int idx);
 | 
			
		||||
LUA_API void  (lua_pushvalue) (lua_State *L, int idx);
 | 
			
		||||
LUA_API void  (lua_remove) (lua_State *L, int idx);
 | 
			
		||||
LUA_API void  (lua_insert) (lua_State *L, int idx);
 | 
			
		||||
LUA_API void  (lua_replace) (lua_State *L, int idx);
 | 
			
		||||
LUA_API int   (lua_checkstack) (lua_State *L, int sz);
 | 
			
		||||
 | 
			
		||||
LUA_API void  (lua_xmove) (lua_State *from, lua_State *to, int n);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** access functions (stack -> C)
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
LUA_API int             (lua_isnumber) (lua_State *L, int idx);
 | 
			
		||||
LUA_API int             (lua_isstring) (lua_State *L, int idx);
 | 
			
		||||
LUA_API int             (lua_iscfunction) (lua_State *L, int idx);
 | 
			
		||||
LUA_API int             (lua_isuserdata) (lua_State *L, int idx);
 | 
			
		||||
LUA_API int             (lua_type) (lua_State *L, int idx);
 | 
			
		||||
LUA_API const char     *(lua_typename) (lua_State *L, int tp);
 | 
			
		||||
 | 
			
		||||
LUA_API int            (lua_equal) (lua_State *L, int idx1, int idx2);
 | 
			
		||||
LUA_API int            (lua_rawequal) (lua_State *L, int idx1, int idx2);
 | 
			
		||||
LUA_API int            (lua_lessthan) (lua_State *L, int idx1, int idx2);
 | 
			
		||||
 | 
			
		||||
LUA_API lua_Number      (lua_tonumber) (lua_State *L, int idx);
 | 
			
		||||
LUA_API lua_Integer     (lua_tointeger) (lua_State *L, int idx);
 | 
			
		||||
LUA_API int             (lua_toboolean) (lua_State *L, int idx);
 | 
			
		||||
LUA_API const char     *(lua_tolstring) (lua_State *L, int idx, size_t *len);
 | 
			
		||||
LUA_API size_t          (lua_objlen) (lua_State *L, int idx);
 | 
			
		||||
LUA_API lua_CFunction   (lua_tocfunction) (lua_State *L, int idx);
 | 
			
		||||
LUA_API void	       *(lua_touserdata) (lua_State *L, int idx);
 | 
			
		||||
LUA_API lua_State      *(lua_tothread) (lua_State *L, int idx);
 | 
			
		||||
LUA_API const void     *(lua_topointer) (lua_State *L, int idx);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** push functions (C -> stack)
 | 
			
		||||
*/
 | 
			
		||||
LUA_API void  (lua_pushnil) (lua_State *L);
 | 
			
		||||
LUA_API void  (lua_pushnumber) (lua_State *L, lua_Number n);
 | 
			
		||||
LUA_API void  (lua_pushinteger) (lua_State *L, lua_Integer n);
 | 
			
		||||
LUA_API void  (lua_pushlstring) (lua_State *L, const char *s, size_t l);
 | 
			
		||||
LUA_API void  (lua_pushstring) (lua_State *L, const char *s);
 | 
			
		||||
LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt,
 | 
			
		||||
                                                      va_list argp);
 | 
			
		||||
LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);
 | 
			
		||||
LUA_API void  (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n);
 | 
			
		||||
LUA_API void  (lua_pushboolean) (lua_State *L, int b);
 | 
			
		||||
LUA_API void  (lua_pushlightuserdata) (lua_State *L, void *p);
 | 
			
		||||
LUA_API int   (lua_pushthread) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** get functions (Lua -> stack)
 | 
			
		||||
*/
 | 
			
		||||
LUA_API void  (lua_gettable) (lua_State *L, int idx);
 | 
			
		||||
LUA_API void  (lua_getfield) (lua_State *L, int idx, const char *k);
 | 
			
		||||
LUA_API void  (lua_rawget) (lua_State *L, int idx);
 | 
			
		||||
LUA_API void  (lua_rawgeti) (lua_State *L, int idx, int n);
 | 
			
		||||
LUA_API void  (lua_createtable) (lua_State *L, int narr, int nrec);
 | 
			
		||||
LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz);
 | 
			
		||||
LUA_API int   (lua_getmetatable) (lua_State *L, int objindex);
 | 
			
		||||
LUA_API void  (lua_getfenv) (lua_State *L, int idx);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** set functions (stack -> Lua)
 | 
			
		||||
*/
 | 
			
		||||
LUA_API void  (lua_settable) (lua_State *L, int idx);
 | 
			
		||||
LUA_API void  (lua_setfield) (lua_State *L, int idx, const char *k);
 | 
			
		||||
LUA_API void  (lua_rawset) (lua_State *L, int idx);
 | 
			
		||||
LUA_API void  (lua_rawseti) (lua_State *L, int idx, int n);
 | 
			
		||||
LUA_API int   (lua_setmetatable) (lua_State *L, int objindex);
 | 
			
		||||
LUA_API int   (lua_setfenv) (lua_State *L, int idx);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** `load' and `call' functions (load and run Lua code)
 | 
			
		||||
*/
 | 
			
		||||
LUA_API void  (lua_call) (lua_State *L, int nargs, int nresults);
 | 
			
		||||
LUA_API int   (lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
 | 
			
		||||
LUA_API int   (lua_cpcall) (lua_State *L, lua_CFunction func, void *ud);
 | 
			
		||||
LUA_API int   (lua_load) (lua_State *L, lua_Reader reader, void *dt,
 | 
			
		||||
                                        const char *chunkname);
 | 
			
		||||
 | 
			
		||||
LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** coroutine functions
 | 
			
		||||
*/
 | 
			
		||||
LUA_API int  (lua_yield) (lua_State *L, int nresults);
 | 
			
		||||
LUA_API int  (lua_resume) (lua_State *L, int narg);
 | 
			
		||||
LUA_API int  (lua_status) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** garbage-collection function and options
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#define LUA_GCSTOP		0
 | 
			
		||||
#define LUA_GCRESTART		1
 | 
			
		||||
#define LUA_GCCOLLECT		2
 | 
			
		||||
#define LUA_GCCOUNT		3
 | 
			
		||||
#define LUA_GCCOUNTB		4
 | 
			
		||||
#define LUA_GCSTEP		5
 | 
			
		||||
#define LUA_GCSETPAUSE		6
 | 
			
		||||
#define LUA_GCSETSTEPMUL	7
 | 
			
		||||
 | 
			
		||||
LUA_API int (lua_gc) (lua_State *L, int what, int data);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** miscellaneous functions
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
LUA_API int   (lua_error) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
LUA_API int   (lua_next) (lua_State *L, int idx);
 | 
			
		||||
 | 
			
		||||
LUA_API void  (lua_concat) (lua_State *L, int n);
 | 
			
		||||
 | 
			
		||||
LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud);
 | 
			
		||||
LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** ===============================================================
 | 
			
		||||
** some useful macros
 | 
			
		||||
** ===============================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#define lua_pop(L,n)		lua_settop(L, -(n)-1)
 | 
			
		||||
 | 
			
		||||
#define lua_newtable(L)		lua_createtable(L, 0, 0)
 | 
			
		||||
 | 
			
		||||
#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))
 | 
			
		||||
 | 
			
		||||
#define lua_pushcfunction(L,f)	lua_pushcclosure(L, (f), 0)
 | 
			
		||||
 | 
			
		||||
#define lua_strlen(L,i)		lua_objlen(L, (i))
 | 
			
		||||
 | 
			
		||||
#define lua_isfunction(L,n)	(lua_type(L, (n)) == LUA_TFUNCTION)
 | 
			
		||||
#define lua_istable(L,n)	(lua_type(L, (n)) == LUA_TTABLE)
 | 
			
		||||
#define lua_islightuserdata(L,n)	(lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
 | 
			
		||||
#define lua_isnil(L,n)		(lua_type(L, (n)) == LUA_TNIL)
 | 
			
		||||
#define lua_isboolean(L,n)	(lua_type(L, (n)) == LUA_TBOOLEAN)
 | 
			
		||||
#define lua_isthread(L,n)	(lua_type(L, (n)) == LUA_TTHREAD)
 | 
			
		||||
#define lua_isnone(L,n)		(lua_type(L, (n)) == LUA_TNONE)
 | 
			
		||||
#define lua_isnoneornil(L, n)	(lua_type(L, (n)) <= 0)
 | 
			
		||||
 | 
			
		||||
#define lua_pushliteral(L, s)	\
 | 
			
		||||
	lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1)
 | 
			
		||||
 | 
			
		||||
#define lua_setglobal(L,s)	lua_setfield(L, LUA_GLOBALSINDEX, (s))
 | 
			
		||||
#define lua_getglobal(L,s)	lua_getfield(L, LUA_GLOBALSINDEX, (s))
 | 
			
		||||
 | 
			
		||||
#define lua_tostring(L,i)	lua_tolstring(L, (i), NULL)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** compatibility macros and functions
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#define lua_open()	luaL_newstate()
 | 
			
		||||
 | 
			
		||||
#define lua_getregistry(L)	lua_pushvalue(L, LUA_REGISTRYINDEX)
 | 
			
		||||
 | 
			
		||||
#define lua_getgccount(L)	lua_gc(L, LUA_GCCOUNT, 0)
 | 
			
		||||
 | 
			
		||||
#define lua_Chunkreader		lua_Reader
 | 
			
		||||
#define lua_Chunkwriter		lua_Writer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* hack */
 | 
			
		||||
LUA_API void lua_setlevel	(lua_State *from, lua_State *to);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** {======================================================================
 | 
			
		||||
** Debug API
 | 
			
		||||
** =======================================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** Event codes
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_HOOKCALL	0
 | 
			
		||||
#define LUA_HOOKRET	1
 | 
			
		||||
#define LUA_HOOKLINE	2
 | 
			
		||||
#define LUA_HOOKCOUNT	3
 | 
			
		||||
#define LUA_HOOKTAILRET 4
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** Event masks
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_MASKCALL	(1 << LUA_HOOKCALL)
 | 
			
		||||
#define LUA_MASKRET	(1 << LUA_HOOKRET)
 | 
			
		||||
#define LUA_MASKLINE	(1 << LUA_HOOKLINE)
 | 
			
		||||
#define LUA_MASKCOUNT	(1 << LUA_HOOKCOUNT)
 | 
			
		||||
 | 
			
		||||
typedef struct lua_Debug lua_Debug;  /* activation record */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Functions to be called by the debuger in specific events */
 | 
			
		||||
typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar);
 | 
			
		||||
LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);
 | 
			
		||||
LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n);
 | 
			
		||||
LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n);
 | 
			
		||||
LUA_API const char *lua_getupvalue (lua_State *L, int funcindex, int n);
 | 
			
		||||
LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n);
 | 
			
		||||
LUA_API int lua_sethook (lua_State *L, lua_Hook func, int mask, int count);
 | 
			
		||||
LUA_API lua_Hook lua_gethook (lua_State *L);
 | 
			
		||||
LUA_API int lua_gethookmask (lua_State *L);
 | 
			
		||||
LUA_API int lua_gethookcount (lua_State *L);
 | 
			
		||||
 | 
			
		||||
/* From Lua 5.2. */
 | 
			
		||||
LUA_API void *lua_upvalueid (lua_State *L, int idx, int n);
 | 
			
		||||
LUA_API void lua_upvaluejoin (lua_State *L, int idx1, int n1, int idx2, int n2);
 | 
			
		||||
LUA_API int lua_loadx (lua_State *L, lua_Reader reader, void *dt,
 | 
			
		||||
		       const char *chunkname, const char *mode);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct lua_Debug {
 | 
			
		||||
  int event;
 | 
			
		||||
  const char *name;	/* (n) */
 | 
			
		||||
  const char *namewhat;	/* (n) `global', `local', `field', `method' */
 | 
			
		||||
  const char *what;	/* (S) `Lua', `C', `main', `tail' */
 | 
			
		||||
  const char *source;	/* (S) */
 | 
			
		||||
  int currentline;	/* (l) */
 | 
			
		||||
  int nups;		/* (u) number of upvalues */
 | 
			
		||||
  int linedefined;	/* (S) */
 | 
			
		||||
  int lastlinedefined;	/* (S) */
 | 
			
		||||
  char short_src[LUA_IDSIZE]; /* (S) */
 | 
			
		||||
  /* private part */
 | 
			
		||||
  int i_ci;  /* active function */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* }====================================================================== */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (C) 1994-2008 Lua.org, PUC-Rio.  All rights reserved.
 | 
			
		||||
*
 | 
			
		||||
* 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.
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
// C++ wrapper for LuaJIT header files.
 | 
			
		||||
 | 
			
		||||
extern "C" {
 | 
			
		||||
#include "lua.h"
 | 
			
		||||
#include "lauxlib.h"
 | 
			
		||||
#include "lualib.h"
 | 
			
		||||
#include "luajit.h"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,156 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
** Configuration header.
 | 
			
		||||
** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef luaconf_h
 | 
			
		||||
#define luaconf_h
 | 
			
		||||
 | 
			
		||||
#ifndef WINVER
 | 
			
		||||
#define WINVER 0x0501
 | 
			
		||||
#endif
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
/* Default path for loading Lua and C modules with require(). */
 | 
			
		||||
#if defined(_WIN32)
 | 
			
		||||
/*
 | 
			
		||||
** In Windows, any exclamation mark ('!') in the path is replaced by the
 | 
			
		||||
** path of the directory of the executable file of the current process.
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_LDIR	"!\\lua\\"
 | 
			
		||||
#define LUA_CDIR	"!\\"
 | 
			
		||||
#define LUA_PATH_DEFAULT \
 | 
			
		||||
  ".\\?.lua;" LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;"
 | 
			
		||||
#define LUA_CPATH_DEFAULT \
 | 
			
		||||
  ".\\?.dll;" LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll"
 | 
			
		||||
#else
 | 
			
		||||
/*
 | 
			
		||||
** Note to distribution maintainers: do NOT patch the following lines!
 | 
			
		||||
** Please read ../doc/install.html#distro and pass PREFIX=/usr instead.
 | 
			
		||||
*/
 | 
			
		||||
#ifndef LUA_MULTILIB
 | 
			
		||||
#define LUA_MULTILIB	"lib"
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef LUA_LMULTILIB
 | 
			
		||||
#define LUA_LMULTILIB	"lib"
 | 
			
		||||
#endif
 | 
			
		||||
#define LUA_LROOT	"/usr/local"
 | 
			
		||||
#define LUA_LUADIR	"/lua/5.1/"
 | 
			
		||||
#define LUA_LJDIR	"/luajit-2.0.4/"
 | 
			
		||||
 | 
			
		||||
#ifdef LUA_ROOT
 | 
			
		||||
#define LUA_JROOT	LUA_ROOT
 | 
			
		||||
#define LUA_RLDIR	LUA_ROOT "/share" LUA_LUADIR
 | 
			
		||||
#define LUA_RCDIR	LUA_ROOT "/" LUA_MULTILIB LUA_LUADIR
 | 
			
		||||
#define LUA_RLPATH	";" LUA_RLDIR "?.lua;" LUA_RLDIR "?/init.lua"
 | 
			
		||||
#define LUA_RCPATH	";" LUA_RCDIR "?.so"
 | 
			
		||||
#else
 | 
			
		||||
#define LUA_JROOT	LUA_LROOT
 | 
			
		||||
#define LUA_RLPATH
 | 
			
		||||
#define LUA_RCPATH
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define LUA_JPATH	";" LUA_JROOT "/share" LUA_LJDIR "?.lua"
 | 
			
		||||
#define LUA_LLDIR	LUA_LROOT "/share" LUA_LUADIR
 | 
			
		||||
#define LUA_LCDIR	LUA_LROOT "/" LUA_LMULTILIB LUA_LUADIR
 | 
			
		||||
#define LUA_LLPATH	";" LUA_LLDIR "?.lua;" LUA_LLDIR "?/init.lua"
 | 
			
		||||
#define LUA_LCPATH1	";" LUA_LCDIR "?.so"
 | 
			
		||||
#define LUA_LCPATH2	";" LUA_LCDIR "loadall.so"
 | 
			
		||||
 | 
			
		||||
#define LUA_PATH_DEFAULT	"./?.lua" LUA_JPATH LUA_LLPATH LUA_RLPATH
 | 
			
		||||
#define LUA_CPATH_DEFAULT	"./?.so" LUA_LCPATH1 LUA_RCPATH LUA_LCPATH2
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Environment variable names for path overrides and initialization code. */
 | 
			
		||||
#define LUA_PATH	"LUA_PATH"
 | 
			
		||||
#define LUA_CPATH	"LUA_CPATH"
 | 
			
		||||
#define LUA_INIT	"LUA_INIT"
 | 
			
		||||
 | 
			
		||||
/* Special file system characters. */
 | 
			
		||||
#if defined(_WIN32)
 | 
			
		||||
#define LUA_DIRSEP	"\\"
 | 
			
		||||
#else
 | 
			
		||||
#define LUA_DIRSEP	"/"
 | 
			
		||||
#endif
 | 
			
		||||
#define LUA_PATHSEP	";"
 | 
			
		||||
#define LUA_PATH_MARK	"?"
 | 
			
		||||
#define LUA_EXECDIR	"!"
 | 
			
		||||
#define LUA_IGMARK	"-"
 | 
			
		||||
#define LUA_PATH_CONFIG \
 | 
			
		||||
  LUA_DIRSEP "\n" LUA_PATHSEP "\n" LUA_PATH_MARK "\n" \
 | 
			
		||||
  LUA_EXECDIR "\n" LUA_IGMARK
 | 
			
		||||
 | 
			
		||||
/* Quoting in error messages. */
 | 
			
		||||
#define LUA_QL(x)	"'" x "'"
 | 
			
		||||
#define LUA_QS		LUA_QL("%s")
 | 
			
		||||
 | 
			
		||||
/* Various tunables. */
 | 
			
		||||
#define LUAI_MAXSTACK	65500	/* Max. # of stack slots for a thread (<64K). */
 | 
			
		||||
#define LUAI_MAXCSTACK	8000	/* Max. # of stack slots for a C func (<10K). */
 | 
			
		||||
#define LUAI_GCPAUSE	200	/* Pause GC until memory is at 200%. */
 | 
			
		||||
#define LUAI_GCMUL	200	/* Run GC at 200% of allocation speed. */
 | 
			
		||||
#define LUA_MAXCAPTURES	32	/* Max. pattern captures. */
 | 
			
		||||
 | 
			
		||||
/* Compatibility with older library function names. */
 | 
			
		||||
#define LUA_COMPAT_MOD		/* OLD: math.mod, NEW: math.fmod */
 | 
			
		||||
#define LUA_COMPAT_GFIND	/* OLD: string.gfind, NEW: string.gmatch */
 | 
			
		||||
 | 
			
		||||
/* Configuration for the frontend (the luajit executable). */
 | 
			
		||||
#if defined(luajit_c)
 | 
			
		||||
#define LUA_PROGNAME	"luajit"  /* Fallback frontend name. */
 | 
			
		||||
#define LUA_PROMPT	"> "	/* Interactive prompt. */
 | 
			
		||||
#define LUA_PROMPT2	">> "	/* Continuation prompt. */
 | 
			
		||||
#define LUA_MAXINPUT	512	/* Max. input line length. */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Note: changing the following defines breaks the Lua 5.1 ABI. */
 | 
			
		||||
#define LUA_INTEGER	ptrdiff_t
 | 
			
		||||
#define LUA_IDSIZE	60	/* Size of lua_Debug.short_src. */
 | 
			
		||||
/*
 | 
			
		||||
** Size of lauxlib and io.* on-stack buffers. Weird workaround to avoid using
 | 
			
		||||
** unreasonable amounts of stack space, but still retain ABI compatibility.
 | 
			
		||||
** Blame Lua for depending on BUFSIZ in the ABI, blame **** for wrecking it.
 | 
			
		||||
*/
 | 
			
		||||
#define LUAL_BUFFERSIZE	(BUFSIZ > 16384 ? 8192 : BUFSIZ)
 | 
			
		||||
 | 
			
		||||
/* The following defines are here only for compatibility with luaconf.h
 | 
			
		||||
** from the standard Lua distribution. They must not be changed for LuaJIT.
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_NUMBER_DOUBLE
 | 
			
		||||
#define LUA_NUMBER		double
 | 
			
		||||
#define LUAI_UACNUMBER		double
 | 
			
		||||
#define LUA_NUMBER_SCAN		"%lf"
 | 
			
		||||
#define LUA_NUMBER_FMT		"%.14g"
 | 
			
		||||
#define lua_number2str(s, n)	sprintf((s), LUA_NUMBER_FMT, (n))
 | 
			
		||||
#define LUAI_MAXNUMBER2STR	32
 | 
			
		||||
#define LUA_INTFRMLEN		"l"
 | 
			
		||||
#define LUA_INTFRM_T		long
 | 
			
		||||
 | 
			
		||||
/* Linkage of public API functions. */
 | 
			
		||||
#if defined(LUA_BUILD_AS_DLL)
 | 
			
		||||
#if defined(LUA_CORE) || defined(LUA_LIB)
 | 
			
		||||
#define LUA_API		__declspec(dllexport)
 | 
			
		||||
#else
 | 
			
		||||
#define LUA_API		__declspec(dllimport)
 | 
			
		||||
#endif
 | 
			
		||||
#else
 | 
			
		||||
#define LUA_API		extern
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define LUALIB_API	LUA_API
 | 
			
		||||
 | 
			
		||||
/* Support for internal assertions. */
 | 
			
		||||
#if defined(LUA_USE_ASSERT) || defined(LUA_USE_APICHECK)
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef LUA_USE_ASSERT
 | 
			
		||||
#define lua_assert(x)		assert(x)
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef LUA_USE_APICHECK
 | 
			
		||||
#define luai_apicheck(L, o)	{ (void)L; assert(o); }
 | 
			
		||||
#else
 | 
			
		||||
#define luai_apicheck(L, o)	{ (void)L; }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,70 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
** LuaJIT -- a Just-In-Time Compiler for Lua. http://luajit.org/
 | 
			
		||||
**
 | 
			
		||||
** Copyright (C) 2005-2015 Mike Pall. All rights reserved.
 | 
			
		||||
**
 | 
			
		||||
** 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.
 | 
			
		||||
**
 | 
			
		||||
** [ MIT license: http://www.opensource.org/licenses/mit-license.php ]
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _LUAJIT_H
 | 
			
		||||
#define _LUAJIT_H
 | 
			
		||||
 | 
			
		||||
#include "lua.h"
 | 
			
		||||
 | 
			
		||||
#define LUAJIT_VERSION		"LuaJIT 2.0.4"
 | 
			
		||||
#define LUAJIT_VERSION_NUM	20004  /* Version 2.0.4 = 02.00.04. */
 | 
			
		||||
#define LUAJIT_VERSION_SYM	luaJIT_version_2_0_4
 | 
			
		||||
#define LUAJIT_COPYRIGHT	"Copyright (C) 2005-2015 Mike Pall"
 | 
			
		||||
#define LUAJIT_URL		"http://luajit.org/"
 | 
			
		||||
 | 
			
		||||
/* Modes for luaJIT_setmode. */
 | 
			
		||||
#define LUAJIT_MODE_MASK	0x00ff
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
  LUAJIT_MODE_ENGINE,		/* Set mode for whole JIT engine. */
 | 
			
		||||
  LUAJIT_MODE_DEBUG,		/* Set debug mode (idx = level). */
 | 
			
		||||
 | 
			
		||||
  LUAJIT_MODE_FUNC,		/* Change mode for a function. */
 | 
			
		||||
  LUAJIT_MODE_ALLFUNC,		/* Recurse into subroutine protos. */
 | 
			
		||||
  LUAJIT_MODE_ALLSUBFUNC,	/* Change only the subroutines. */
 | 
			
		||||
 | 
			
		||||
  LUAJIT_MODE_TRACE,		/* Flush a compiled trace. */
 | 
			
		||||
 | 
			
		||||
  LUAJIT_MODE_WRAPCFUNC = 0x10,	/* Set wrapper mode for C function calls. */
 | 
			
		||||
 | 
			
		||||
  LUAJIT_MODE_MAX
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Flags or'ed in to the mode. */
 | 
			
		||||
#define LUAJIT_MODE_OFF		0x0000	/* Turn feature off. */
 | 
			
		||||
#define LUAJIT_MODE_ON		0x0100	/* Turn feature on. */
 | 
			
		||||
#define LUAJIT_MODE_FLUSH	0x0200	/* Flush JIT-compiled code. */
 | 
			
		||||
 | 
			
		||||
/* LuaJIT public C API. */
 | 
			
		||||
 | 
			
		||||
/* Control the JIT engine. */
 | 
			
		||||
LUA_API int luaJIT_setmode(lua_State *L, int idx, int mode);
 | 
			
		||||
 | 
			
		||||
/* Enforce (dynamic) linker error for version mismatches. Call from main. */
 | 
			
		||||
LUA_API void LUAJIT_VERSION_SYM(void);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,43 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
** Standard library header.
 | 
			
		||||
** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _LUALIB_H
 | 
			
		||||
#define _LUALIB_H
 | 
			
		||||
 | 
			
		||||
#include "lua.h"
 | 
			
		||||
 | 
			
		||||
#define LUA_FILEHANDLE	"FILE*"
 | 
			
		||||
 | 
			
		||||
#define LUA_COLIBNAME	"coroutine"
 | 
			
		||||
#define LUA_MATHLIBNAME	"math"
 | 
			
		||||
#define LUA_STRLIBNAME	"string"
 | 
			
		||||
#define LUA_TABLIBNAME	"table"
 | 
			
		||||
#define LUA_IOLIBNAME	"io"
 | 
			
		||||
#define LUA_OSLIBNAME	"os"
 | 
			
		||||
#define LUA_LOADLIBNAME	"package"
 | 
			
		||||
#define LUA_DBLIBNAME	"debug"
 | 
			
		||||
#define LUA_BITLIBNAME	"bit"
 | 
			
		||||
#define LUA_JITLIBNAME	"jit"
 | 
			
		||||
#define LUA_FFILIBNAME	"ffi"
 | 
			
		||||
 | 
			
		||||
LUALIB_API int luaopen_base(lua_State *L);
 | 
			
		||||
LUALIB_API int luaopen_math(lua_State *L);
 | 
			
		||||
LUALIB_API int luaopen_string(lua_State *L);
 | 
			
		||||
LUALIB_API int luaopen_table(lua_State *L);
 | 
			
		||||
LUALIB_API int luaopen_io(lua_State *L);
 | 
			
		||||
LUALIB_API int luaopen_os(lua_State *L);
 | 
			
		||||
LUALIB_API int luaopen_package(lua_State *L);
 | 
			
		||||
LUALIB_API int luaopen_debug(lua_State *L);
 | 
			
		||||
LUALIB_API int luaopen_bit(lua_State *L);
 | 
			
		||||
LUALIB_API int luaopen_jit(lua_State *L);
 | 
			
		||||
LUALIB_API int luaopen_ffi(lua_State *L);
 | 
			
		||||
 | 
			
		||||
LUALIB_API void luaL_openlibs(lua_State *L);
 | 
			
		||||
 | 
			
		||||
#ifndef lua_assert
 | 
			
		||||
#define lua_assert(x)	((void)0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,210 +0,0 @@
 | 
			
		||||
/********************************************************************
 | 
			
		||||
 *                                                                  *
 | 
			
		||||
 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
 | 
			
		||||
 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
 | 
			
		||||
 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
 | 
			
		||||
 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
 | 
			
		||||
 *                                                                  *
 | 
			
		||||
 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
 | 
			
		||||
 * by the Xiph.Org Foundation http://www.xiph.org/                  *
 | 
			
		||||
 *                                                                  *
 | 
			
		||||
 ********************************************************************
 | 
			
		||||
 | 
			
		||||
 function: toplevel libogg include
 | 
			
		||||
 last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $
 | 
			
		||||
 | 
			
		||||
 ********************************************************************/
 | 
			
		||||
#ifndef _OGG_H
 | 
			
		||||
#define _OGG_H
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
#include <ogg/os_types.h>
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
  void *iov_base;
 | 
			
		||||
  size_t iov_len;
 | 
			
		||||
} ogg_iovec_t;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
  long endbyte;
 | 
			
		||||
  int  endbit;
 | 
			
		||||
 | 
			
		||||
  unsigned char *buffer;
 | 
			
		||||
  unsigned char *ptr;
 | 
			
		||||
  long storage;
 | 
			
		||||
} oggpack_buffer;
 | 
			
		||||
 | 
			
		||||
/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
  unsigned char *header;
 | 
			
		||||
  long header_len;
 | 
			
		||||
  unsigned char *body;
 | 
			
		||||
  long body_len;
 | 
			
		||||
} ogg_page;
 | 
			
		||||
 | 
			
		||||
/* ogg_stream_state contains the current encode/decode state of a logical
 | 
			
		||||
   Ogg bitstream **********************************************************/
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
  unsigned char   *body_data;    /* bytes from packet bodies */
 | 
			
		||||
  long    body_storage;          /* storage elements allocated */
 | 
			
		||||
  long    body_fill;             /* elements stored; fill mark */
 | 
			
		||||
  long    body_returned;         /* elements of fill returned */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  int     *lacing_vals;      /* The values that will go to the segment table */
 | 
			
		||||
  ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact
 | 
			
		||||
                                this way, but it is simple coupled to the
 | 
			
		||||
                                lacing fifo */
 | 
			
		||||
  long    lacing_storage;
 | 
			
		||||
  long    lacing_fill;
 | 
			
		||||
  long    lacing_packet;
 | 
			
		||||
  long    lacing_returned;
 | 
			
		||||
 | 
			
		||||
  unsigned char    header[282];      /* working space for header encode */
 | 
			
		||||
  int              header_fill;
 | 
			
		||||
 | 
			
		||||
  int     e_o_s;          /* set when we have buffered the last packet in the
 | 
			
		||||
                             logical bitstream */
 | 
			
		||||
  int     b_o_s;          /* set after we've written the initial page
 | 
			
		||||
                             of a logical bitstream */
 | 
			
		||||
  long    serialno;
 | 
			
		||||
  long    pageno;
 | 
			
		||||
  ogg_int64_t  packetno;  /* sequence number for decode; the framing
 | 
			
		||||
                             knows where there's a hole in the data,
 | 
			
		||||
                             but we need coupling so that the codec
 | 
			
		||||
                             (which is in a separate abstraction
 | 
			
		||||
                             layer) also knows about the gap */
 | 
			
		||||
  ogg_int64_t   granulepos;
 | 
			
		||||
 | 
			
		||||
} ogg_stream_state;
 | 
			
		||||
 | 
			
		||||
/* ogg_packet is used to encapsulate the data and metadata belonging
 | 
			
		||||
   to a single raw Ogg/Vorbis packet *************************************/
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
  unsigned char *packet;
 | 
			
		||||
  long  bytes;
 | 
			
		||||
  long  b_o_s;
 | 
			
		||||
  long  e_o_s;
 | 
			
		||||
 | 
			
		||||
  ogg_int64_t  granulepos;
 | 
			
		||||
 | 
			
		||||
  ogg_int64_t  packetno;     /* sequence number for decode; the framing
 | 
			
		||||
                                knows where there's a hole in the data,
 | 
			
		||||
                                but we need coupling so that the codec
 | 
			
		||||
                                (which is in a separate abstraction
 | 
			
		||||
                                layer) also knows about the gap */
 | 
			
		||||
} ogg_packet;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
  unsigned char *data;
 | 
			
		||||
  int storage;
 | 
			
		||||
  int fill;
 | 
			
		||||
  int returned;
 | 
			
		||||
 | 
			
		||||
  int unsynced;
 | 
			
		||||
  int headerbytes;
 | 
			
		||||
  int bodybytes;
 | 
			
		||||
} ogg_sync_state;
 | 
			
		||||
 | 
			
		||||
/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/
 | 
			
		||||
 | 
			
		||||
extern void  oggpack_writeinit(oggpack_buffer *b);
 | 
			
		||||
extern int   oggpack_writecheck(oggpack_buffer *b);
 | 
			
		||||
extern void  oggpack_writetrunc(oggpack_buffer *b,long bits);
 | 
			
		||||
extern void  oggpack_writealign(oggpack_buffer *b);
 | 
			
		||||
extern void  oggpack_writecopy(oggpack_buffer *b,void *source,long bits);
 | 
			
		||||
extern void  oggpack_reset(oggpack_buffer *b);
 | 
			
		||||
extern void  oggpack_writeclear(oggpack_buffer *b);
 | 
			
		||||
extern void  oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
 | 
			
		||||
extern void  oggpack_write(oggpack_buffer *b,unsigned long value,int bits);
 | 
			
		||||
extern long  oggpack_look(oggpack_buffer *b,int bits);
 | 
			
		||||
extern long  oggpack_look1(oggpack_buffer *b);
 | 
			
		||||
extern void  oggpack_adv(oggpack_buffer *b,int bits);
 | 
			
		||||
extern void  oggpack_adv1(oggpack_buffer *b);
 | 
			
		||||
extern long  oggpack_read(oggpack_buffer *b,int bits);
 | 
			
		||||
extern long  oggpack_read1(oggpack_buffer *b);
 | 
			
		||||
extern long  oggpack_bytes(oggpack_buffer *b);
 | 
			
		||||
extern long  oggpack_bits(oggpack_buffer *b);
 | 
			
		||||
extern unsigned char *oggpack_get_buffer(oggpack_buffer *b);
 | 
			
		||||
 | 
			
		||||
extern void  oggpackB_writeinit(oggpack_buffer *b);
 | 
			
		||||
extern int   oggpackB_writecheck(oggpack_buffer *b);
 | 
			
		||||
extern void  oggpackB_writetrunc(oggpack_buffer *b,long bits);
 | 
			
		||||
extern void  oggpackB_writealign(oggpack_buffer *b);
 | 
			
		||||
extern void  oggpackB_writecopy(oggpack_buffer *b,void *source,long bits);
 | 
			
		||||
extern void  oggpackB_reset(oggpack_buffer *b);
 | 
			
		||||
extern void  oggpackB_writeclear(oggpack_buffer *b);
 | 
			
		||||
extern void  oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
 | 
			
		||||
extern void  oggpackB_write(oggpack_buffer *b,unsigned long value,int bits);
 | 
			
		||||
extern long  oggpackB_look(oggpack_buffer *b,int bits);
 | 
			
		||||
extern long  oggpackB_look1(oggpack_buffer *b);
 | 
			
		||||
extern void  oggpackB_adv(oggpack_buffer *b,int bits);
 | 
			
		||||
extern void  oggpackB_adv1(oggpack_buffer *b);
 | 
			
		||||
extern long  oggpackB_read(oggpack_buffer *b,int bits);
 | 
			
		||||
extern long  oggpackB_read1(oggpack_buffer *b);
 | 
			
		||||
extern long  oggpackB_bytes(oggpack_buffer *b);
 | 
			
		||||
extern long  oggpackB_bits(oggpack_buffer *b);
 | 
			
		||||
extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b);
 | 
			
		||||
 | 
			
		||||
/* Ogg BITSTREAM PRIMITIVES: encoding **************************/
 | 
			
		||||
 | 
			
		||||
extern int      ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op);
 | 
			
		||||
extern int      ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov,
 | 
			
		||||
                                   int count, long e_o_s, ogg_int64_t granulepos);
 | 
			
		||||
extern int      ogg_stream_pageout(ogg_stream_state *os, ogg_page *og);
 | 
			
		||||
extern int      ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill);
 | 
			
		||||
extern int      ogg_stream_flush(ogg_stream_state *os, ogg_page *og);
 | 
			
		||||
extern int      ogg_stream_flush_fill(ogg_stream_state *os, ogg_page *og, int nfill);
 | 
			
		||||
 | 
			
		||||
/* Ogg BITSTREAM PRIMITIVES: decoding **************************/
 | 
			
		||||
 | 
			
		||||
extern int      ogg_sync_init(ogg_sync_state *oy);
 | 
			
		||||
extern int      ogg_sync_clear(ogg_sync_state *oy);
 | 
			
		||||
extern int      ogg_sync_reset(ogg_sync_state *oy);
 | 
			
		||||
extern int      ogg_sync_destroy(ogg_sync_state *oy);
 | 
			
		||||
extern int      ogg_sync_check(ogg_sync_state *oy);
 | 
			
		||||
 | 
			
		||||
extern char    *ogg_sync_buffer(ogg_sync_state *oy, long size);
 | 
			
		||||
extern int      ogg_sync_wrote(ogg_sync_state *oy, long bytes);
 | 
			
		||||
extern long     ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og);
 | 
			
		||||
extern int      ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og);
 | 
			
		||||
extern int      ogg_stream_pagein(ogg_stream_state *os, ogg_page *og);
 | 
			
		||||
extern int      ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
 | 
			
		||||
extern int      ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op);
 | 
			
		||||
 | 
			
		||||
/* Ogg BITSTREAM PRIMITIVES: general ***************************/
 | 
			
		||||
 | 
			
		||||
extern int      ogg_stream_init(ogg_stream_state *os,int serialno);
 | 
			
		||||
extern int      ogg_stream_clear(ogg_stream_state *os);
 | 
			
		||||
extern int      ogg_stream_reset(ogg_stream_state *os);
 | 
			
		||||
extern int      ogg_stream_reset_serialno(ogg_stream_state *os,int serialno);
 | 
			
		||||
extern int      ogg_stream_destroy(ogg_stream_state *os);
 | 
			
		||||
extern int      ogg_stream_check(ogg_stream_state *os);
 | 
			
		||||
extern int      ogg_stream_eos(ogg_stream_state *os);
 | 
			
		||||
 | 
			
		||||
extern void     ogg_page_checksum_set(ogg_page *og);
 | 
			
		||||
 | 
			
		||||
extern int      ogg_page_version(const ogg_page *og);
 | 
			
		||||
extern int      ogg_page_continued(const ogg_page *og);
 | 
			
		||||
extern int      ogg_page_bos(const ogg_page *og);
 | 
			
		||||
extern int      ogg_page_eos(const ogg_page *og);
 | 
			
		||||
extern ogg_int64_t  ogg_page_granulepos(const ogg_page *og);
 | 
			
		||||
extern int      ogg_page_serialno(const ogg_page *og);
 | 
			
		||||
extern long     ogg_page_pageno(const ogg_page *og);
 | 
			
		||||
extern int      ogg_page_packets(const ogg_page *og);
 | 
			
		||||
 | 
			
		||||
extern void     ogg_packet_clear(ogg_packet *op);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif  /* _OGG_H */
 | 
			
		||||
@@ -1,147 +0,0 @@
 | 
			
		||||
/********************************************************************
 | 
			
		||||
 *                                                                  *
 | 
			
		||||
 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
 | 
			
		||||
 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
 | 
			
		||||
 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
 | 
			
		||||
 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
 | 
			
		||||
 *                                                                  *
 | 
			
		||||
 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
 | 
			
		||||
 * by the Xiph.Org Foundation http://www.xiph.org/                  *
 | 
			
		||||
 *                                                                  *
 | 
			
		||||
 ********************************************************************
 | 
			
		||||
 | 
			
		||||
 function: #ifdef jail to whip a few platforms into the UNIX ideal.
 | 
			
		||||
 last mod: $Id: os_types.h 19098 2014-02-26 19:06:45Z giles $
 | 
			
		||||
 | 
			
		||||
 ********************************************************************/
 | 
			
		||||
#ifndef _OS_TYPES_H
 | 
			
		||||
#define _OS_TYPES_H
 | 
			
		||||
 | 
			
		||||
/* make it easy on the folks that want to compile the libs with a
 | 
			
		||||
   different malloc than stdlib */
 | 
			
		||||
#define _ogg_malloc  malloc
 | 
			
		||||
#define _ogg_calloc  calloc
 | 
			
		||||
#define _ogg_realloc realloc
 | 
			
		||||
#define _ogg_free    free
 | 
			
		||||
 | 
			
		||||
#if defined(_WIN32)
 | 
			
		||||
 | 
			
		||||
#  if defined(__CYGWIN__)
 | 
			
		||||
#    include <stdint.h>
 | 
			
		||||
     typedef int16_t ogg_int16_t;
 | 
			
		||||
     typedef uint16_t ogg_uint16_t;
 | 
			
		||||
     typedef int32_t ogg_int32_t;
 | 
			
		||||
     typedef uint32_t ogg_uint32_t;
 | 
			
		||||
     typedef int64_t ogg_int64_t;
 | 
			
		||||
     typedef uint64_t ogg_uint64_t;
 | 
			
		||||
#  elif defined(__MINGW32__)
 | 
			
		||||
#    include <sys/types.h>
 | 
			
		||||
     typedef short ogg_int16_t;
 | 
			
		||||
     typedef unsigned short ogg_uint16_t;
 | 
			
		||||
     typedef int ogg_int32_t;
 | 
			
		||||
     typedef unsigned int ogg_uint32_t;
 | 
			
		||||
     typedef long long ogg_int64_t;
 | 
			
		||||
     typedef unsigned long long ogg_uint64_t;
 | 
			
		||||
#  elif defined(__MWERKS__)
 | 
			
		||||
     typedef long long ogg_int64_t;
 | 
			
		||||
     typedef int ogg_int32_t;
 | 
			
		||||
     typedef unsigned int ogg_uint32_t;
 | 
			
		||||
     typedef short ogg_int16_t;
 | 
			
		||||
     typedef unsigned short ogg_uint16_t;
 | 
			
		||||
#  else
 | 
			
		||||
     /* MSVC/Borland */
 | 
			
		||||
     typedef __int64 ogg_int64_t;
 | 
			
		||||
     typedef __int32 ogg_int32_t;
 | 
			
		||||
     typedef unsigned __int32 ogg_uint32_t;
 | 
			
		||||
     typedef __int16 ogg_int16_t;
 | 
			
		||||
     typedef unsigned __int16 ogg_uint16_t;
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#elif defined(__MACOS__)
 | 
			
		||||
 | 
			
		||||
#  include <sys/types.h>
 | 
			
		||||
   typedef SInt16 ogg_int16_t;
 | 
			
		||||
   typedef UInt16 ogg_uint16_t;
 | 
			
		||||
   typedef SInt32 ogg_int32_t;
 | 
			
		||||
   typedef UInt32 ogg_uint32_t;
 | 
			
		||||
   typedef SInt64 ogg_int64_t;
 | 
			
		||||
 | 
			
		||||
#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */
 | 
			
		||||
 | 
			
		||||
#  include <inttypes.h>
 | 
			
		||||
   typedef int16_t ogg_int16_t;
 | 
			
		||||
   typedef uint16_t ogg_uint16_t;
 | 
			
		||||
   typedef int32_t ogg_int32_t;
 | 
			
		||||
   typedef uint32_t ogg_uint32_t;
 | 
			
		||||
   typedef int64_t ogg_int64_t;
 | 
			
		||||
 | 
			
		||||
#elif defined(__HAIKU__)
 | 
			
		||||
 | 
			
		||||
  /* Haiku */
 | 
			
		||||
#  include <sys/types.h>
 | 
			
		||||
   typedef short ogg_int16_t;
 | 
			
		||||
   typedef unsigned short ogg_uint16_t;
 | 
			
		||||
   typedef int ogg_int32_t;
 | 
			
		||||
   typedef unsigned int ogg_uint32_t;
 | 
			
		||||
   typedef long long ogg_int64_t;
 | 
			
		||||
 | 
			
		||||
#elif defined(__BEOS__)
 | 
			
		||||
 | 
			
		||||
   /* Be */
 | 
			
		||||
#  include <inttypes.h>
 | 
			
		||||
   typedef int16_t ogg_int16_t;
 | 
			
		||||
   typedef uint16_t ogg_uint16_t;
 | 
			
		||||
   typedef int32_t ogg_int32_t;
 | 
			
		||||
   typedef uint32_t ogg_uint32_t;
 | 
			
		||||
   typedef int64_t ogg_int64_t;
 | 
			
		||||
 | 
			
		||||
#elif defined (__EMX__)
 | 
			
		||||
 | 
			
		||||
   /* OS/2 GCC */
 | 
			
		||||
   typedef short ogg_int16_t;
 | 
			
		||||
   typedef unsigned short ogg_uint16_t;
 | 
			
		||||
   typedef int ogg_int32_t;
 | 
			
		||||
   typedef unsigned int ogg_uint32_t;
 | 
			
		||||
   typedef long long ogg_int64_t;
 | 
			
		||||
 | 
			
		||||
#elif defined (DJGPP)
 | 
			
		||||
 | 
			
		||||
   /* DJGPP */
 | 
			
		||||
   typedef short ogg_int16_t;
 | 
			
		||||
   typedef int ogg_int32_t;
 | 
			
		||||
   typedef unsigned int ogg_uint32_t;
 | 
			
		||||
   typedef long long ogg_int64_t;
 | 
			
		||||
 | 
			
		||||
#elif defined(R5900)
 | 
			
		||||
 | 
			
		||||
   /* PS2 EE */
 | 
			
		||||
   typedef long ogg_int64_t;
 | 
			
		||||
   typedef int ogg_int32_t;
 | 
			
		||||
   typedef unsigned ogg_uint32_t;
 | 
			
		||||
   typedef short ogg_int16_t;
 | 
			
		||||
 | 
			
		||||
#elif defined(__SYMBIAN32__)
 | 
			
		||||
 | 
			
		||||
   /* Symbian GCC */
 | 
			
		||||
   typedef signed short ogg_int16_t;
 | 
			
		||||
   typedef unsigned short ogg_uint16_t;
 | 
			
		||||
   typedef signed int ogg_int32_t;
 | 
			
		||||
   typedef unsigned int ogg_uint32_t;
 | 
			
		||||
   typedef long long int ogg_int64_t;
 | 
			
		||||
 | 
			
		||||
#elif defined(__TMS320C6X__)
 | 
			
		||||
 | 
			
		||||
   /* TI C64x compiler */
 | 
			
		||||
   typedef signed short ogg_int16_t;
 | 
			
		||||
   typedef unsigned short ogg_uint16_t;
 | 
			
		||||
   typedef signed int ogg_int32_t;
 | 
			
		||||
   typedef unsigned int ogg_uint32_t;
 | 
			
		||||
   typedef long long int ogg_int64_t;
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#  include <ogg/config_types.h>
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif  /* _OS_TYPES_H */
 | 
			
		||||
@@ -1,656 +0,0 @@
 | 
			
		||||
#ifndef AL_AL_H
 | 
			
		||||
#define AL_AL_H
 | 
			
		||||
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_API
 | 
			
		||||
 #if defined(AL_LIBTYPE_STATIC)
 | 
			
		||||
  #define AL_API
 | 
			
		||||
 #elif defined(_WIN32)
 | 
			
		||||
  #define AL_API __declspec(dllimport)
 | 
			
		||||
 #else
 | 
			
		||||
  #define AL_API extern
 | 
			
		||||
 #endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(_WIN32)
 | 
			
		||||
 #define AL_APIENTRY __cdecl
 | 
			
		||||
#else
 | 
			
		||||
 #define AL_APIENTRY
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Deprecated macro. */
 | 
			
		||||
#define OPENAL
 | 
			
		||||
#define ALAPI                                    AL_API
 | 
			
		||||
#define ALAPIENTRY                               AL_APIENTRY
 | 
			
		||||
#define AL_INVALID                               (-1)
 | 
			
		||||
#define AL_ILLEGAL_ENUM                          AL_INVALID_ENUM
 | 
			
		||||
#define AL_ILLEGAL_COMMAND                       AL_INVALID_OPERATION
 | 
			
		||||
 | 
			
		||||
/** Supported AL version. */
 | 
			
		||||
#define AL_VERSION_1_0
 | 
			
		||||
#define AL_VERSION_1_1
 | 
			
		||||
 | 
			
		||||
/** 8-bit boolean */
 | 
			
		||||
typedef char ALboolean;
 | 
			
		||||
 | 
			
		||||
/** character */
 | 
			
		||||
typedef char ALchar;
 | 
			
		||||
 | 
			
		||||
/** signed 8-bit 2's complement integer */
 | 
			
		||||
typedef signed char ALbyte;
 | 
			
		||||
 | 
			
		||||
/** unsigned 8-bit integer */
 | 
			
		||||
typedef unsigned char ALubyte;
 | 
			
		||||
 | 
			
		||||
/** signed 16-bit 2's complement integer */
 | 
			
		||||
typedef short ALshort;
 | 
			
		||||
 | 
			
		||||
/** unsigned 16-bit integer */
 | 
			
		||||
typedef unsigned short ALushort;
 | 
			
		||||
 | 
			
		||||
/** signed 32-bit 2's complement integer */
 | 
			
		||||
typedef int ALint;
 | 
			
		||||
 | 
			
		||||
/** unsigned 32-bit integer */
 | 
			
		||||
typedef unsigned int ALuint;
 | 
			
		||||
 | 
			
		||||
/** non-negative 32-bit binary integer size */
 | 
			
		||||
typedef int ALsizei;
 | 
			
		||||
 | 
			
		||||
/** enumerated 32-bit value */
 | 
			
		||||
typedef int ALenum;
 | 
			
		||||
 | 
			
		||||
/** 32-bit IEEE754 floating-point */
 | 
			
		||||
typedef float ALfloat;
 | 
			
		||||
 | 
			
		||||
/** 64-bit IEEE754 floating-point */
 | 
			
		||||
typedef double ALdouble;
 | 
			
		||||
 | 
			
		||||
/** void type (for opaque pointers only) */
 | 
			
		||||
typedef void ALvoid;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Enumerant values begin at column 50. No tabs. */
 | 
			
		||||
 | 
			
		||||
/** "no distance model" or "no buffer" */
 | 
			
		||||
#define AL_NONE                                  0
 | 
			
		||||
 | 
			
		||||
/** Boolean False. */
 | 
			
		||||
#define AL_FALSE                                 0
 | 
			
		||||
 | 
			
		||||
/** Boolean True. */
 | 
			
		||||
#define AL_TRUE                                  1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Relative source.
 | 
			
		||||
 * Type:    ALboolean
 | 
			
		||||
 * Range:   [AL_TRUE, AL_FALSE]
 | 
			
		||||
 * Default: AL_FALSE
 | 
			
		||||
 *
 | 
			
		||||
 * Specifies if the Source has relative coordinates.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_SOURCE_RELATIVE                       0x202
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Inner cone angle, in degrees.
 | 
			
		||||
 * Type:    ALint, ALfloat
 | 
			
		||||
 * Range:   [0 - 360]
 | 
			
		||||
 * Default: 360
 | 
			
		||||
 *
 | 
			
		||||
 * The angle covered by the inner cone, where the source will not attenuate.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_CONE_INNER_ANGLE                      0x1001
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Outer cone angle, in degrees.
 | 
			
		||||
 * Range:   [0 - 360]
 | 
			
		||||
 * Default: 360
 | 
			
		||||
 *
 | 
			
		||||
 * The angle covered by the outer cone, where the source will be fully
 | 
			
		||||
 * attenuated.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_CONE_OUTER_ANGLE                      0x1002
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source pitch.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.5 - 2.0]
 | 
			
		||||
 * Default: 1.0
 | 
			
		||||
 *
 | 
			
		||||
 * A multiplier for the frequency (sample rate) of the source's buffer.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_PITCH                                 0x1003
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source or listener position.
 | 
			
		||||
 * Type:    ALfloat[3], ALint[3]
 | 
			
		||||
 * Default: {0, 0, 0}
 | 
			
		||||
 *
 | 
			
		||||
 * The source or listener location in three dimensional space.
 | 
			
		||||
 *
 | 
			
		||||
 * OpenAL, like OpenGL, uses a right handed coordinate system, where in a
 | 
			
		||||
 * frontal default view X (thumb) points right, Y points up (index finger), and
 | 
			
		||||
 * Z points towards the viewer/camera (middle finger).
 | 
			
		||||
 *
 | 
			
		||||
 * To switch from a left handed coordinate system, flip the sign on the Z
 | 
			
		||||
 * coordinate.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_POSITION                              0x1004
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source direction.
 | 
			
		||||
 * Type:    ALfloat[3], ALint[3]
 | 
			
		||||
 * Default: {0, 0, 0}
 | 
			
		||||
 *
 | 
			
		||||
 * Specifies the current direction in local space.
 | 
			
		||||
 * A zero-length vector specifies an omni-directional source (cone is ignored).
 | 
			
		||||
 */
 | 
			
		||||
#define AL_DIRECTION                             0x1005
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source or listener velocity.
 | 
			
		||||
 * Type:    ALfloat[3], ALint[3]
 | 
			
		||||
 * Default: {0, 0, 0}
 | 
			
		||||
 *
 | 
			
		||||
 * Specifies the current velocity in local space.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_VELOCITY                              0x1006
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source looping.
 | 
			
		||||
 * Type:    ALboolean
 | 
			
		||||
 * Range:   [AL_TRUE, AL_FALSE]
 | 
			
		||||
 * Default: AL_FALSE
 | 
			
		||||
 *
 | 
			
		||||
 * Specifies whether source is looping.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_LOOPING                               0x1007
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source buffer.
 | 
			
		||||
 * Type:  ALuint
 | 
			
		||||
 * Range: any valid Buffer.
 | 
			
		||||
 *
 | 
			
		||||
 * Specifies the buffer to provide sound samples.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_BUFFER                                0x1009
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source or listener gain.
 | 
			
		||||
 * Type:  ALfloat
 | 
			
		||||
 * Range: [0.0 - ]
 | 
			
		||||
 *
 | 
			
		||||
 * A value of 1.0 means unattenuated. Each division by 2 equals an attenuation
 | 
			
		||||
 * of about -6dB. Each multiplicaton by 2 equals an amplification of about
 | 
			
		||||
 * +6dB.
 | 
			
		||||
 *
 | 
			
		||||
 * A value of 0.0 is meaningless with respect to a logarithmic scale; it is
 | 
			
		||||
 * silent.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_GAIN                                  0x100A
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Minimum source gain.
 | 
			
		||||
 * Type:  ALfloat
 | 
			
		||||
 * Range: [0.0 - 1.0]
 | 
			
		||||
 *
 | 
			
		||||
 * The minimum gain allowed for a source, after distance and cone attenation is
 | 
			
		||||
 * applied (if applicable).
 | 
			
		||||
 */
 | 
			
		||||
#define AL_MIN_GAIN                              0x100D
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Maximum source gain.
 | 
			
		||||
 * Type:  ALfloat
 | 
			
		||||
 * Range: [0.0 - 1.0]
 | 
			
		||||
 *
 | 
			
		||||
 * The maximum gain allowed for a source, after distance and cone attenation is
 | 
			
		||||
 * applied (if applicable).
 | 
			
		||||
 */
 | 
			
		||||
#define AL_MAX_GAIN                              0x100E
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Listener orientation.
 | 
			
		||||
 * Type: ALfloat[6]
 | 
			
		||||
 * Default: {0.0, 0.0, -1.0, 0.0, 1.0, 0.0}
 | 
			
		||||
 *
 | 
			
		||||
 * Effectively two three dimensional vectors. The first vector is the front (or
 | 
			
		||||
 * "at") and the second is the top (or "up").
 | 
			
		||||
 *
 | 
			
		||||
 * Both vectors are in local space.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_ORIENTATION                           0x100F
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source state (query only).
 | 
			
		||||
 * Type:  ALint
 | 
			
		||||
 * Range: [AL_INITIAL, AL_PLAYING, AL_PAUSED, AL_STOPPED]
 | 
			
		||||
 */
 | 
			
		||||
#define AL_SOURCE_STATE                          0x1010
 | 
			
		||||
 | 
			
		||||
/** Source state value. */
 | 
			
		||||
#define AL_INITIAL                               0x1011
 | 
			
		||||
#define AL_PLAYING                               0x1012
 | 
			
		||||
#define AL_PAUSED                                0x1013
 | 
			
		||||
#define AL_STOPPED                               0x1014
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source Buffer Queue size (query only).
 | 
			
		||||
 * Type: ALint
 | 
			
		||||
 *
 | 
			
		||||
 * The number of buffers queued using alSourceQueueBuffers, minus the buffers
 | 
			
		||||
 * removed with alSourceUnqueueBuffers.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_BUFFERS_QUEUED                        0x1015
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source Buffer Queue processed count (query only).
 | 
			
		||||
 * Type: ALint
 | 
			
		||||
 *
 | 
			
		||||
 * The number of queued buffers that have been fully processed, and can be
 | 
			
		||||
 * removed with alSourceUnqueueBuffers.
 | 
			
		||||
 *
 | 
			
		||||
 * Looping sources will never fully process buffers because they will be set to
 | 
			
		||||
 * play again for when the source loops.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_BUFFERS_PROCESSED                     0x1016
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source reference distance.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.0 - ]
 | 
			
		||||
 * Default: 1.0
 | 
			
		||||
 *
 | 
			
		||||
 * The distance in units that no attenuation occurs.
 | 
			
		||||
 *
 | 
			
		||||
 * At 0.0, no distance attenuation ever occurs on non-linear attenuation models.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_REFERENCE_DISTANCE                    0x1020
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source rolloff factor.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.0 - ]
 | 
			
		||||
 * Default: 1.0
 | 
			
		||||
 *
 | 
			
		||||
 * Multiplier to exaggerate or diminish distance attenuation.
 | 
			
		||||
 *
 | 
			
		||||
 * At 0.0, no distance attenuation ever occurs.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_ROLLOFF_FACTOR                        0x1021
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Outer cone gain.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.0 - 1.0]
 | 
			
		||||
 * Default: 0.0
 | 
			
		||||
 *
 | 
			
		||||
 * The gain attenuation applied when the listener is outside of the source's
 | 
			
		||||
 * outer cone.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_CONE_OUTER_GAIN                       0x1022
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source maximum distance.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.0 - ]
 | 
			
		||||
 * Default: +inf
 | 
			
		||||
 *
 | 
			
		||||
 * The distance above which the source is not attenuated any further with a
 | 
			
		||||
 * clamped distance model, or where attenuation reaches 0.0 gain for linear
 | 
			
		||||
 * distance models with a default rolloff factor.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_MAX_DISTANCE                          0x1023
 | 
			
		||||
 | 
			
		||||
/** Source buffer position, in seconds */
 | 
			
		||||
#define AL_SEC_OFFSET                            0x1024
 | 
			
		||||
/** Source buffer position, in sample frames */
 | 
			
		||||
#define AL_SAMPLE_OFFSET                         0x1025
 | 
			
		||||
/** Source buffer position, in bytes */
 | 
			
		||||
#define AL_BYTE_OFFSET                           0x1026
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source type (query only).
 | 
			
		||||
 * Type:  ALint
 | 
			
		||||
 * Range: [AL_STATIC, AL_STREAMING, AL_UNDETERMINED]
 | 
			
		||||
 *
 | 
			
		||||
 * A Source is Static if a Buffer has been attached using AL_BUFFER.
 | 
			
		||||
 *
 | 
			
		||||
 * A Source is Streaming if one or more Buffers have been attached using
 | 
			
		||||
 * alSourceQueueBuffers.
 | 
			
		||||
 *
 | 
			
		||||
 * A Source is Undetermined when it has the NULL buffer attached using
 | 
			
		||||
 * AL_BUFFER.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_SOURCE_TYPE                           0x1027
 | 
			
		||||
 | 
			
		||||
/** Source type value. */
 | 
			
		||||
#define AL_STATIC                                0x1028
 | 
			
		||||
#define AL_STREAMING                             0x1029
 | 
			
		||||
#define AL_UNDETERMINED                          0x1030
 | 
			
		||||
 | 
			
		||||
/** Buffer format specifier. */
 | 
			
		||||
#define AL_FORMAT_MONO8                          0x1100
 | 
			
		||||
#define AL_FORMAT_MONO16                         0x1101
 | 
			
		||||
#define AL_FORMAT_STEREO8                        0x1102
 | 
			
		||||
#define AL_FORMAT_STEREO16                       0x1103
 | 
			
		||||
 | 
			
		||||
/** Buffer frequency (query only). */
 | 
			
		||||
#define AL_FREQUENCY                             0x2001
 | 
			
		||||
/** Buffer bits per sample (query only). */
 | 
			
		||||
#define AL_BITS                                  0x2002
 | 
			
		||||
/** Buffer channel count (query only). */
 | 
			
		||||
#define AL_CHANNELS                              0x2003
 | 
			
		||||
/** Buffer data size (query only). */
 | 
			
		||||
#define AL_SIZE                                  0x2004
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Buffer state.
 | 
			
		||||
 *
 | 
			
		||||
 * Not for public use.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_UNUSED                                0x2010
 | 
			
		||||
#define AL_PENDING                               0x2011
 | 
			
		||||
#define AL_PROCESSED                             0x2012
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** No error. */
 | 
			
		||||
#define AL_NO_ERROR                              0
 | 
			
		||||
 | 
			
		||||
/** Invalid name paramater passed to AL call. */
 | 
			
		||||
#define AL_INVALID_NAME                          0xA001
 | 
			
		||||
 | 
			
		||||
/** Invalid enum parameter passed to AL call. */
 | 
			
		||||
#define AL_INVALID_ENUM                          0xA002
 | 
			
		||||
 | 
			
		||||
/** Invalid value parameter passed to AL call. */
 | 
			
		||||
#define AL_INVALID_VALUE                         0xA003
 | 
			
		||||
 | 
			
		||||
/** Illegal AL call. */
 | 
			
		||||
#define AL_INVALID_OPERATION                     0xA004
 | 
			
		||||
 | 
			
		||||
/** Not enough memory. */
 | 
			
		||||
#define AL_OUT_OF_MEMORY                         0xA005
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Context string: Vendor ID. */
 | 
			
		||||
#define AL_VENDOR                                0xB001
 | 
			
		||||
/** Context string: Version. */
 | 
			
		||||
#define AL_VERSION                               0xB002
 | 
			
		||||
/** Context string: Renderer ID. */
 | 
			
		||||
#define AL_RENDERER                              0xB003
 | 
			
		||||
/** Context string: Space-separated extension list. */
 | 
			
		||||
#define AL_EXTENSIONS                            0xB004
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Doppler scale.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.0 - ]
 | 
			
		||||
 * Default: 1.0
 | 
			
		||||
 *
 | 
			
		||||
 * Scale for source and listener velocities.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_DOPPLER_FACTOR                        0xC000
 | 
			
		||||
AL_API void AL_APIENTRY alDopplerFactor(ALfloat value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Doppler velocity (deprecated).
 | 
			
		||||
 *
 | 
			
		||||
 * A multiplier applied to the Speed of Sound.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_DOPPLER_VELOCITY                      0xC001
 | 
			
		||||
AL_API void AL_APIENTRY alDopplerVelocity(ALfloat value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Speed of Sound, in units per second.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.0001 - ]
 | 
			
		||||
 * Default: 343.3
 | 
			
		||||
 *
 | 
			
		||||
 * The speed at which sound waves are assumed to travel, when calculating the
 | 
			
		||||
 * doppler effect.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_SPEED_OF_SOUND                        0xC003
 | 
			
		||||
AL_API void AL_APIENTRY alSpeedOfSound(ALfloat value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Distance attenuation model.
 | 
			
		||||
 * Type:    ALint
 | 
			
		||||
 * Range:   [AL_NONE, AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED,
 | 
			
		||||
 *           AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED,
 | 
			
		||||
 *           AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED]
 | 
			
		||||
 * Default: AL_INVERSE_DISTANCE_CLAMPED
 | 
			
		||||
 *
 | 
			
		||||
 * The model by which sources attenuate with distance.
 | 
			
		||||
 *
 | 
			
		||||
 * None     - No distance attenuation.
 | 
			
		||||
 * Inverse  - Doubling the distance halves the source gain.
 | 
			
		||||
 * Linear   - Linear gain scaling between the reference and max distances.
 | 
			
		||||
 * Exponent - Exponential gain dropoff.
 | 
			
		||||
 *
 | 
			
		||||
 * Clamped variations work like the non-clamped counterparts, except the
 | 
			
		||||
 * distance calculated is clamped between the reference and max distances.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_DISTANCE_MODEL                        0xD000
 | 
			
		||||
AL_API void AL_APIENTRY alDistanceModel(ALenum distanceModel);
 | 
			
		||||
 | 
			
		||||
/** Distance model value. */
 | 
			
		||||
#define AL_INVERSE_DISTANCE                      0xD001
 | 
			
		||||
#define AL_INVERSE_DISTANCE_CLAMPED              0xD002
 | 
			
		||||
#define AL_LINEAR_DISTANCE                       0xD003
 | 
			
		||||
#define AL_LINEAR_DISTANCE_CLAMPED               0xD004
 | 
			
		||||
#define AL_EXPONENT_DISTANCE                     0xD005
 | 
			
		||||
#define AL_EXPONENT_DISTANCE_CLAMPED             0xD006
 | 
			
		||||
 | 
			
		||||
/** Renderer State management. */
 | 
			
		||||
AL_API void AL_APIENTRY alEnable(ALenum capability);
 | 
			
		||||
AL_API void AL_APIENTRY alDisable(ALenum capability);
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsEnabled(ALenum capability);
 | 
			
		||||
 | 
			
		||||
/** State retrieval. */
 | 
			
		||||
AL_API const ALchar* AL_APIENTRY alGetString(ALenum param);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBooleanv(ALenum param, ALboolean *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetIntegerv(ALenum param, ALint *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetFloatv(ALenum param, ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetDoublev(ALenum param, ALdouble *values);
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alGetBoolean(ALenum param);
 | 
			
		||||
AL_API ALint AL_APIENTRY alGetInteger(ALenum param);
 | 
			
		||||
AL_API ALfloat AL_APIENTRY alGetFloat(ALenum param);
 | 
			
		||||
AL_API ALdouble AL_APIENTRY alGetDouble(ALenum param);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error retrieval.
 | 
			
		||||
 *
 | 
			
		||||
 * Obtain the first error generated in the AL context since the last check.
 | 
			
		||||
 */
 | 
			
		||||
AL_API ALenum AL_APIENTRY alGetError(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Extension support.
 | 
			
		||||
 *
 | 
			
		||||
 * Query for the presence of an extension, and obtain any appropriate function
 | 
			
		||||
 * pointers and enum values.
 | 
			
		||||
 */
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extname);
 | 
			
		||||
AL_API void* AL_APIENTRY alGetProcAddress(const ALchar *fname);
 | 
			
		||||
AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *ename);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Set Listener parameters */
 | 
			
		||||
AL_API void AL_APIENTRY alListenerf(ALenum param, ALfloat value);
 | 
			
		||||
AL_API void AL_APIENTRY alListener3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
 | 
			
		||||
AL_API void AL_APIENTRY alListenerfv(ALenum param, const ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alListeneri(ALenum param, ALint value);
 | 
			
		||||
AL_API void AL_APIENTRY alListener3i(ALenum param, ALint value1, ALint value2, ALint value3);
 | 
			
		||||
AL_API void AL_APIENTRY alListeneriv(ALenum param, const ALint *values);
 | 
			
		||||
 | 
			
		||||
/** Get Listener parameters */
 | 
			
		||||
AL_API void AL_APIENTRY alGetListenerf(ALenum param, ALfloat *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetListener3f(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetListenerfv(ALenum param, ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetListeneri(ALenum param, ALint *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetListener3i(ALenum param, ALint *value1, ALint *value2, ALint *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetListeneriv(ALenum param, ALint *values);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Create Source objects. */
 | 
			
		||||
AL_API void AL_APIENTRY alGenSources(ALsizei n, ALuint *sources);
 | 
			
		||||
/** Delete Source objects. */
 | 
			
		||||
AL_API void AL_APIENTRY alDeleteSources(ALsizei n, const ALuint *sources);
 | 
			
		||||
/** Verify a handle is a valid Source. */
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsSource(ALuint source);
 | 
			
		||||
 | 
			
		||||
/** Set Source parameters. */
 | 
			
		||||
AL_API void AL_APIENTRY alSourcef(ALuint source, ALenum param, ALfloat value);
 | 
			
		||||
AL_API void AL_APIENTRY alSource3f(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
 | 
			
		||||
AL_API void AL_APIENTRY alSourcefv(ALuint source, ALenum param, const ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alSourcei(ALuint source, ALenum param, ALint value);
 | 
			
		||||
AL_API void AL_APIENTRY alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);
 | 
			
		||||
AL_API void AL_APIENTRY alSourceiv(ALuint source, ALenum param, const ALint *values);
 | 
			
		||||
 | 
			
		||||
/** Get Source parameters. */
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcef(ALuint source, ALenum param, ALfloat *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSource3f(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcefv(ALuint source, ALenum param, ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcei(ALuint source,  ALenum param, ALint *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSource3i(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourceiv(ALuint source,  ALenum param, ALint *values);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Play, replay, or resume (if paused) a list of Sources */
 | 
			
		||||
AL_API void AL_APIENTRY alSourcePlayv(ALsizei n, const ALuint *sources);
 | 
			
		||||
/** Stop a list of Sources */
 | 
			
		||||
AL_API void AL_APIENTRY alSourceStopv(ALsizei n, const ALuint *sources);
 | 
			
		||||
/** Rewind a list of Sources */
 | 
			
		||||
AL_API void AL_APIENTRY alSourceRewindv(ALsizei n, const ALuint *sources);
 | 
			
		||||
/** Pause a list of Sources */
 | 
			
		||||
AL_API void AL_APIENTRY alSourcePausev(ALsizei n, const ALuint *sources);
 | 
			
		||||
 | 
			
		||||
/** Play, replay, or resume a Source */
 | 
			
		||||
AL_API void AL_APIENTRY alSourcePlay(ALuint source);
 | 
			
		||||
/** Stop a Source */
 | 
			
		||||
AL_API void AL_APIENTRY alSourceStop(ALuint source);
 | 
			
		||||
/** Rewind a Source (set playback postiton to beginning) */
 | 
			
		||||
AL_API void AL_APIENTRY alSourceRewind(ALuint source);
 | 
			
		||||
/** Pause a Source */
 | 
			
		||||
AL_API void AL_APIENTRY alSourcePause(ALuint source);
 | 
			
		||||
 | 
			
		||||
/** Queue buffers onto a source */
 | 
			
		||||
AL_API void AL_APIENTRY alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers);
 | 
			
		||||
/** Unqueue processed buffers from a source */
 | 
			
		||||
AL_API void AL_APIENTRY alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Create Buffer objects */
 | 
			
		||||
AL_API void AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers);
 | 
			
		||||
/** Delete Buffer objects */
 | 
			
		||||
AL_API void AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *buffers);
 | 
			
		||||
/** Verify a handle is a valid Buffer */
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsBuffer(ALuint buffer);
 | 
			
		||||
 | 
			
		||||
/** Specifies the data to be copied into a buffer */
 | 
			
		||||
AL_API void AL_APIENTRY alBufferData(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
 | 
			
		||||
 | 
			
		||||
/** Set Buffer parameters, */
 | 
			
		||||
AL_API void AL_APIENTRY alBufferf(ALuint buffer, ALenum param, ALfloat value);
 | 
			
		||||
AL_API void AL_APIENTRY alBuffer3f(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
 | 
			
		||||
AL_API void AL_APIENTRY alBufferfv(ALuint buffer, ALenum param, const ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alBufferi(ALuint buffer, ALenum param, ALint value);
 | 
			
		||||
AL_API void AL_APIENTRY alBuffer3i(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);
 | 
			
		||||
AL_API void AL_APIENTRY alBufferiv(ALuint buffer, ALenum param, const ALint *values);
 | 
			
		||||
 | 
			
		||||
/** Get Buffer parameters. */
 | 
			
		||||
AL_API void AL_APIENTRY alGetBufferf(ALuint buffer, ALenum param, ALfloat *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBufferi(ALuint buffer, ALenum param, ALint *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBuffer3i(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBufferiv(ALuint buffer, ALenum param, ALint *values);
 | 
			
		||||
 | 
			
		||||
/** Pointer-to-function type, useful for dynamically getting AL entry points. */
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALENABLE)(ALenum capability);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALDISABLE)(ALenum capability);
 | 
			
		||||
typedef ALboolean     (AL_APIENTRY *LPALISENABLED)(ALenum capability);
 | 
			
		||||
typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)(ALenum param);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBOOLEANV)(ALenum param, ALboolean *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETINTEGERV)(ALenum param, ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETFLOATV)(ALenum param, ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETDOUBLEV)(ALenum param, ALdouble *values);
 | 
			
		||||
typedef ALboolean     (AL_APIENTRY *LPALGETBOOLEAN)(ALenum param);
 | 
			
		||||
typedef ALint         (AL_APIENTRY *LPALGETINTEGER)(ALenum param);
 | 
			
		||||
typedef ALfloat       (AL_APIENTRY *LPALGETFLOAT)(ALenum param);
 | 
			
		||||
typedef ALdouble      (AL_APIENTRY *LPALGETDOUBLE)(ALenum param);
 | 
			
		||||
typedef ALenum        (AL_APIENTRY *LPALGETERROR)(void);
 | 
			
		||||
typedef ALboolean     (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar *extname);
 | 
			
		||||
typedef void*         (AL_APIENTRY *LPALGETPROCADDRESS)(const ALchar *fname);
 | 
			
		||||
typedef ALenum        (AL_APIENTRY *LPALGETENUMVALUE)(const ALchar *ename);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALLISTENERF)(ALenum param, ALfloat value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALLISTENER3F)(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALLISTENERFV)(ALenum param, const ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALLISTENERI)(ALenum param, ALint value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALLISTENER3I)(ALenum param, ALint value1, ALint value2, ALint value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALLISTENERIV)(ALenum param, const ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETLISTENERF)(ALenum param, ALfloat *value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETLISTENER3F)(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETLISTENERFV)(ALenum param, ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETLISTENERI)(ALenum param, ALint *value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETLISTENER3I)(ALenum param, ALint *value1, ALint *value2, ALint *value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETLISTENERIV)(ALenum param, ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGENSOURCES)(ALsizei n, ALuint *sources);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALDELETESOURCES)(ALsizei n, const ALuint *sources);
 | 
			
		||||
typedef ALboolean     (AL_APIENTRY *LPALISSOURCE)(ALuint source);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEF)(ALuint source, ALenum param, ALfloat value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCE3F)(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEFV)(ALuint source, ALenum param, const ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEI)(ALuint source, ALenum param, ALint value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCE3I)(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEIV)(ALuint source, ALenum param, const ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETSOURCEF)(ALuint source, ALenum param, ALfloat *value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETSOURCE3F)(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETSOURCEFV)(ALuint source, ALenum param, ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETSOURCEI)(ALuint source, ALenum param, ALint *value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETSOURCE3I)(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETSOURCEIV)(ALuint source, ALenum param, ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEPLAYV)(ALsizei n, const ALuint *sources);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCESTOPV)(ALsizei n, const ALuint *sources);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEREWINDV)(ALsizei n, const ALuint *sources);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEPAUSEV)(ALsizei n, const ALuint *sources);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEPLAY)(ALuint source);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCESTOP)(ALuint source);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEREWIND)(ALuint source);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEPAUSE)(ALuint source);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint source, ALsizei nb, const ALuint *buffers);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint source, ALsizei nb, ALuint *buffers);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGENBUFFERS)(ALsizei n, ALuint *buffers);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALDELETEBUFFERS)(ALsizei n, const ALuint *buffers);
 | 
			
		||||
typedef ALboolean     (AL_APIENTRY *LPALISBUFFER)(ALuint buffer);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFERDATA)(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFERF)(ALuint buffer, ALenum param, ALfloat value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFER3F)(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFERFV)(ALuint buffer, ALenum param, const ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFERI)(ALuint buffer, ALenum param, ALint value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFER3I)(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFERIV)(ALuint buffer, ALenum param, const ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBUFFERF)(ALuint buffer, ALenum param, ALfloat *value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBUFFER3F)(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBUFFERFV)(ALuint buffer, ALenum param, ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBUFFERI)(ALuint buffer, ALenum param, ALint *value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBUFFER3I)(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBUFFERIV)(ALuint buffer, ALenum param, ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALDOPPLERFACTOR)(ALfloat value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALDOPPLERVELOCITY)(ALfloat value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSPEEDOFSOUND)(ALfloat value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALDISTANCEMODEL)(ALenum distanceModel);
 | 
			
		||||
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
}  /* extern "C" */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* AL_AL_H */
 | 
			
		||||
@@ -1,237 +0,0 @@
 | 
			
		||||
#ifndef AL_ALC_H
 | 
			
		||||
#define AL_ALC_H
 | 
			
		||||
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_API
 | 
			
		||||
 #if defined(AL_LIBTYPE_STATIC)
 | 
			
		||||
  #define ALC_API
 | 
			
		||||
 #elif defined(_WIN32)
 | 
			
		||||
  #define ALC_API __declspec(dllimport)
 | 
			
		||||
 #else
 | 
			
		||||
  #define ALC_API extern
 | 
			
		||||
 #endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(_WIN32)
 | 
			
		||||
 #define ALC_APIENTRY __cdecl
 | 
			
		||||
#else
 | 
			
		||||
 #define ALC_APIENTRY
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Deprecated macro. */
 | 
			
		||||
#define ALCAPI                                   ALC_API
 | 
			
		||||
#define ALCAPIENTRY                              ALC_APIENTRY
 | 
			
		||||
#define ALC_INVALID                              0
 | 
			
		||||
 | 
			
		||||
/** Supported ALC version? */
 | 
			
		||||
#define ALC_VERSION_0_1                          1
 | 
			
		||||
 | 
			
		||||
/** Opaque device handle */
 | 
			
		||||
typedef struct ALCdevice_struct ALCdevice;
 | 
			
		||||
/** Opaque context handle */
 | 
			
		||||
typedef struct ALCcontext_struct ALCcontext;
 | 
			
		||||
 | 
			
		||||
/** 8-bit boolean */
 | 
			
		||||
typedef char ALCboolean;
 | 
			
		||||
 | 
			
		||||
/** character */
 | 
			
		||||
typedef char ALCchar;
 | 
			
		||||
 | 
			
		||||
/** signed 8-bit 2's complement integer */
 | 
			
		||||
typedef signed char ALCbyte;
 | 
			
		||||
 | 
			
		||||
/** unsigned 8-bit integer */
 | 
			
		||||
typedef unsigned char ALCubyte;
 | 
			
		||||
 | 
			
		||||
/** signed 16-bit 2's complement integer */
 | 
			
		||||
typedef short ALCshort;
 | 
			
		||||
 | 
			
		||||
/** unsigned 16-bit integer */
 | 
			
		||||
typedef unsigned short ALCushort;
 | 
			
		||||
 | 
			
		||||
/** signed 32-bit 2's complement integer */
 | 
			
		||||
typedef int ALCint;
 | 
			
		||||
 | 
			
		||||
/** unsigned 32-bit integer */
 | 
			
		||||
typedef unsigned int ALCuint;
 | 
			
		||||
 | 
			
		||||
/** non-negative 32-bit binary integer size */
 | 
			
		||||
typedef int ALCsizei;
 | 
			
		||||
 | 
			
		||||
/** enumerated 32-bit value */
 | 
			
		||||
typedef int ALCenum;
 | 
			
		||||
 | 
			
		||||
/** 32-bit IEEE754 floating-point */
 | 
			
		||||
typedef float ALCfloat;
 | 
			
		||||
 | 
			
		||||
/** 64-bit IEEE754 floating-point */
 | 
			
		||||
typedef double ALCdouble;
 | 
			
		||||
 | 
			
		||||
/** void type (for opaque pointers only) */
 | 
			
		||||
typedef void ALCvoid;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Enumerant values begin at column 50. No tabs. */
 | 
			
		||||
 | 
			
		||||
/** Boolean False. */
 | 
			
		||||
#define ALC_FALSE                                0
 | 
			
		||||
 | 
			
		||||
/** Boolean True. */
 | 
			
		||||
#define ALC_TRUE                                 1
 | 
			
		||||
 | 
			
		||||
/** Context attribute: <int> Hz. */
 | 
			
		||||
#define ALC_FREQUENCY                            0x1007
 | 
			
		||||
 | 
			
		||||
/** Context attribute: <int> Hz. */
 | 
			
		||||
#define ALC_REFRESH                              0x1008
 | 
			
		||||
 | 
			
		||||
/** Context attribute: AL_TRUE or AL_FALSE. */
 | 
			
		||||
#define ALC_SYNC                                 0x1009
 | 
			
		||||
 | 
			
		||||
/** Context attribute: <int> requested Mono (3D) Sources. */
 | 
			
		||||
#define ALC_MONO_SOURCES                         0x1010
 | 
			
		||||
 | 
			
		||||
/** Context attribute: <int> requested Stereo Sources. */
 | 
			
		||||
#define ALC_STEREO_SOURCES                       0x1011
 | 
			
		||||
 | 
			
		||||
/** No error. */
 | 
			
		||||
#define ALC_NO_ERROR                             0
 | 
			
		||||
 | 
			
		||||
/** Invalid device handle. */
 | 
			
		||||
#define ALC_INVALID_DEVICE                       0xA001
 | 
			
		||||
 | 
			
		||||
/** Invalid context handle. */
 | 
			
		||||
#define ALC_INVALID_CONTEXT                      0xA002
 | 
			
		||||
 | 
			
		||||
/** Invalid enum parameter passed to an ALC call. */
 | 
			
		||||
#define ALC_INVALID_ENUM                         0xA003
 | 
			
		||||
 | 
			
		||||
/** Invalid value parameter passed to an ALC call. */
 | 
			
		||||
#define ALC_INVALID_VALUE                        0xA004
 | 
			
		||||
 | 
			
		||||
/** Out of memory. */
 | 
			
		||||
#define ALC_OUT_OF_MEMORY                        0xA005
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Runtime ALC version. */
 | 
			
		||||
#define ALC_MAJOR_VERSION                        0x1000
 | 
			
		||||
#define ALC_MINOR_VERSION                        0x1001
 | 
			
		||||
 | 
			
		||||
/** Context attribute list properties. */
 | 
			
		||||
#define ALC_ATTRIBUTES_SIZE                      0x1002
 | 
			
		||||
#define ALC_ALL_ATTRIBUTES                       0x1003
 | 
			
		||||
 | 
			
		||||
/** String for the default device specifier. */
 | 
			
		||||
#define ALC_DEFAULT_DEVICE_SPECIFIER             0x1004
 | 
			
		||||
/**
 | 
			
		||||
 * String for the given device's specifier.
 | 
			
		||||
 *
 | 
			
		||||
 * If device handle is NULL, it is instead a null-char separated list of
 | 
			
		||||
 * strings of known device specifiers (list ends with an empty string).
 | 
			
		||||
 */
 | 
			
		||||
#define ALC_DEVICE_SPECIFIER                     0x1005
 | 
			
		||||
/** String for space-separated list of ALC extensions. */
 | 
			
		||||
#define ALC_EXTENSIONS                           0x1006
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Capture extension */
 | 
			
		||||
#define ALC_EXT_CAPTURE 1
 | 
			
		||||
/**
 | 
			
		||||
 * String for the given capture device's specifier.
 | 
			
		||||
 *
 | 
			
		||||
 * If device handle is NULL, it is instead a null-char separated list of
 | 
			
		||||
 * strings of known capture device specifiers (list ends with an empty string).
 | 
			
		||||
 */
 | 
			
		||||
#define ALC_CAPTURE_DEVICE_SPECIFIER             0x310
 | 
			
		||||
/** String for the default capture device specifier. */
 | 
			
		||||
#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER     0x311
 | 
			
		||||
/** Number of sample frames available for capture. */
 | 
			
		||||
#define ALC_CAPTURE_SAMPLES                      0x312
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Enumerate All extension */
 | 
			
		||||
#define ALC_ENUMERATE_ALL_EXT 1
 | 
			
		||||
/** String for the default extended device specifier. */
 | 
			
		||||
#define ALC_DEFAULT_ALL_DEVICES_SPECIFIER        0x1012
 | 
			
		||||
/**
 | 
			
		||||
 * String for the given extended device's specifier.
 | 
			
		||||
 *
 | 
			
		||||
 * If device handle is NULL, it is instead a null-char separated list of
 | 
			
		||||
 * strings of known extended device specifiers (list ends with an empty string).
 | 
			
		||||
 */
 | 
			
		||||
#define ALC_ALL_DEVICES_SPECIFIER                0x1013
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Context management. */
 | 
			
		||||
ALC_API ALCcontext* ALC_APIENTRY alcCreateContext(ALCdevice *device, const ALCint* attrlist);
 | 
			
		||||
ALC_API ALCboolean  ALC_APIENTRY alcMakeContextCurrent(ALCcontext *context);
 | 
			
		||||
ALC_API void        ALC_APIENTRY alcProcessContext(ALCcontext *context);
 | 
			
		||||
ALC_API void        ALC_APIENTRY alcSuspendContext(ALCcontext *context);
 | 
			
		||||
ALC_API void        ALC_APIENTRY alcDestroyContext(ALCcontext *context);
 | 
			
		||||
ALC_API ALCcontext* ALC_APIENTRY alcGetCurrentContext(void);
 | 
			
		||||
ALC_API ALCdevice*  ALC_APIENTRY alcGetContextsDevice(ALCcontext *context);
 | 
			
		||||
 | 
			
		||||
/** Device management. */
 | 
			
		||||
ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *devicename);
 | 
			
		||||
ALC_API ALCboolean ALC_APIENTRY alcCloseDevice(ALCdevice *device);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error support.
 | 
			
		||||
 *
 | 
			
		||||
 * Obtain the most recent Device error.
 | 
			
		||||
 */
 | 
			
		||||
ALC_API ALCenum ALC_APIENTRY alcGetError(ALCdevice *device);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Extension support.
 | 
			
		||||
 *
 | 
			
		||||
 * Query for the presence of an extension, and obtain any appropriate
 | 
			
		||||
 * function pointers and enum values.
 | 
			
		||||
 */
 | 
			
		||||
ALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent(ALCdevice *device, const ALCchar *extname);
 | 
			
		||||
ALC_API void*      ALC_APIENTRY alcGetProcAddress(ALCdevice *device, const ALCchar *funcname);
 | 
			
		||||
ALC_API ALCenum    ALC_APIENTRY alcGetEnumValue(ALCdevice *device, const ALCchar *enumname);
 | 
			
		||||
 | 
			
		||||
/** Query function. */
 | 
			
		||||
ALC_API const ALCchar* ALC_APIENTRY alcGetString(ALCdevice *device, ALCenum param);
 | 
			
		||||
ALC_API void           ALC_APIENTRY alcGetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values);
 | 
			
		||||
 | 
			
		||||
/** Capture function. */
 | 
			
		||||
ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize);
 | 
			
		||||
ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice(ALCdevice *device);
 | 
			
		||||
ALC_API void       ALC_APIENTRY alcCaptureStart(ALCdevice *device);
 | 
			
		||||
ALC_API void       ALC_APIENTRY alcCaptureStop(ALCdevice *device);
 | 
			
		||||
ALC_API void       ALC_APIENTRY alcCaptureSamples(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
 | 
			
		||||
 | 
			
		||||
/** Pointer-to-function type, useful for dynamically getting ALC entry points. */
 | 
			
		||||
typedef ALCcontext*    (ALC_APIENTRY *LPALCCREATECONTEXT)(ALCdevice *device, const ALCint *attrlist);
 | 
			
		||||
typedef ALCboolean     (ALC_APIENTRY *LPALCMAKECONTEXTCURRENT)(ALCcontext *context);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCPROCESSCONTEXT)(ALCcontext *context);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCSUSPENDCONTEXT)(ALCcontext *context);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCDESTROYCONTEXT)(ALCcontext *context);
 | 
			
		||||
typedef ALCcontext*    (ALC_APIENTRY *LPALCGETCURRENTCONTEXT)(void);
 | 
			
		||||
typedef ALCdevice*     (ALC_APIENTRY *LPALCGETCONTEXTSDEVICE)(ALCcontext *context);
 | 
			
		||||
typedef ALCdevice*     (ALC_APIENTRY *LPALCOPENDEVICE)(const ALCchar *devicename);
 | 
			
		||||
typedef ALCboolean     (ALC_APIENTRY *LPALCCLOSEDEVICE)(ALCdevice *device);
 | 
			
		||||
typedef ALCenum        (ALC_APIENTRY *LPALCGETERROR)(ALCdevice *device);
 | 
			
		||||
typedef ALCboolean     (ALC_APIENTRY *LPALCISEXTENSIONPRESENT)(ALCdevice *device, const ALCchar *extname);
 | 
			
		||||
typedef void*          (ALC_APIENTRY *LPALCGETPROCADDRESS)(ALCdevice *device, const ALCchar *funcname);
 | 
			
		||||
typedef ALCenum        (ALC_APIENTRY *LPALCGETENUMVALUE)(ALCdevice *device, const ALCchar *enumname);
 | 
			
		||||
typedef const ALCchar* (ALC_APIENTRY *LPALCGETSTRING)(ALCdevice *device, ALCenum param);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCGETINTEGERV)(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values);
 | 
			
		||||
typedef ALCdevice*     (ALC_APIENTRY *LPALCCAPTUREOPENDEVICE)(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize);
 | 
			
		||||
typedef ALCboolean     (ALC_APIENTRY *LPALCCAPTURECLOSEDEVICE)(ALCdevice *device);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCCAPTURESTART)(ALCdevice *device);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCCAPTURESTOP)(ALCdevice *device);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCCAPTURESAMPLES)(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
 | 
			
		||||
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* AL_ALC_H */
 | 
			
		||||
@@ -1,438 +0,0 @@
 | 
			
		||||
/**
 | 
			
		||||
 * OpenAL cross platform audio library
 | 
			
		||||
 * Copyright (C) 2008 by authors.
 | 
			
		||||
 * 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
 | 
			
		||||
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 *  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 Software Foundation, Inc.,
 | 
			
		||||
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | 
			
		||||
 * Or go to http://www.gnu.org/copyleft/lgpl.html
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef AL_ALEXT_H
 | 
			
		||||
#define AL_ALEXT_H
 | 
			
		||||
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
/* Define int64_t and uint64_t types */
 | 
			
		||||
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
 | 
			
		||||
#include <inttypes.h>
 | 
			
		||||
#elif defined(_WIN32) && defined(__GNUC__)
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#elif defined(_WIN32)
 | 
			
		||||
typedef __int64 int64_t;
 | 
			
		||||
typedef unsigned __int64 uint64_t;
 | 
			
		||||
#else
 | 
			
		||||
/* Fallback if nothing above works */
 | 
			
		||||
#include <inttypes.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "alc.h"
 | 
			
		||||
#include "al.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_LOKI_IMA_ADPCM_format
 | 
			
		||||
#define AL_LOKI_IMA_ADPCM_format 1
 | 
			
		||||
#define AL_FORMAT_IMA_ADPCM_MONO16_EXT           0x10000
 | 
			
		||||
#define AL_FORMAT_IMA_ADPCM_STEREO16_EXT         0x10001
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_LOKI_WAVE_format
 | 
			
		||||
#define AL_LOKI_WAVE_format 1
 | 
			
		||||
#define AL_FORMAT_WAVE_EXT                       0x10002
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_vorbis
 | 
			
		||||
#define AL_EXT_vorbis 1
 | 
			
		||||
#define AL_FORMAT_VORBIS_EXT                     0x10003
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_LOKI_quadriphonic
 | 
			
		||||
#define AL_LOKI_quadriphonic 1
 | 
			
		||||
#define AL_FORMAT_QUAD8_LOKI                     0x10004
 | 
			
		||||
#define AL_FORMAT_QUAD16_LOKI                    0x10005
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_float32
 | 
			
		||||
#define AL_EXT_float32 1
 | 
			
		||||
#define AL_FORMAT_MONO_FLOAT32                   0x10010
 | 
			
		||||
#define AL_FORMAT_STEREO_FLOAT32                 0x10011
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_double
 | 
			
		||||
#define AL_EXT_double 1
 | 
			
		||||
#define AL_FORMAT_MONO_DOUBLE_EXT                0x10012
 | 
			
		||||
#define AL_FORMAT_STEREO_DOUBLE_EXT              0x10013
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_MULAW
 | 
			
		||||
#define AL_EXT_MULAW 1
 | 
			
		||||
#define AL_FORMAT_MONO_MULAW_EXT                 0x10014
 | 
			
		||||
#define AL_FORMAT_STEREO_MULAW_EXT               0x10015
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_ALAW
 | 
			
		||||
#define AL_EXT_ALAW 1
 | 
			
		||||
#define AL_FORMAT_MONO_ALAW_EXT                  0x10016
 | 
			
		||||
#define AL_FORMAT_STEREO_ALAW_EXT                0x10017
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_LOKI_audio_channel
 | 
			
		||||
#define ALC_LOKI_audio_channel 1
 | 
			
		||||
#define ALC_CHAN_MAIN_LOKI                       0x500001
 | 
			
		||||
#define ALC_CHAN_PCM_LOKI                        0x500002
 | 
			
		||||
#define ALC_CHAN_CD_LOKI                         0x500003
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_MCFORMATS
 | 
			
		||||
#define AL_EXT_MCFORMATS 1
 | 
			
		||||
#define AL_FORMAT_QUAD8                          0x1204
 | 
			
		||||
#define AL_FORMAT_QUAD16                         0x1205
 | 
			
		||||
#define AL_FORMAT_QUAD32                         0x1206
 | 
			
		||||
#define AL_FORMAT_REAR8                          0x1207
 | 
			
		||||
#define AL_FORMAT_REAR16                         0x1208
 | 
			
		||||
#define AL_FORMAT_REAR32                         0x1209
 | 
			
		||||
#define AL_FORMAT_51CHN8                         0x120A
 | 
			
		||||
#define AL_FORMAT_51CHN16                        0x120B
 | 
			
		||||
#define AL_FORMAT_51CHN32                        0x120C
 | 
			
		||||
#define AL_FORMAT_61CHN8                         0x120D
 | 
			
		||||
#define AL_FORMAT_61CHN16                        0x120E
 | 
			
		||||
#define AL_FORMAT_61CHN32                        0x120F
 | 
			
		||||
#define AL_FORMAT_71CHN8                         0x1210
 | 
			
		||||
#define AL_FORMAT_71CHN16                        0x1211
 | 
			
		||||
#define AL_FORMAT_71CHN32                        0x1212
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_MULAW_MCFORMATS
 | 
			
		||||
#define AL_EXT_MULAW_MCFORMATS 1
 | 
			
		||||
#define AL_FORMAT_MONO_MULAW                     0x10014
 | 
			
		||||
#define AL_FORMAT_STEREO_MULAW                   0x10015
 | 
			
		||||
#define AL_FORMAT_QUAD_MULAW                     0x10021
 | 
			
		||||
#define AL_FORMAT_REAR_MULAW                     0x10022
 | 
			
		||||
#define AL_FORMAT_51CHN_MULAW                    0x10023
 | 
			
		||||
#define AL_FORMAT_61CHN_MULAW                    0x10024
 | 
			
		||||
#define AL_FORMAT_71CHN_MULAW                    0x10025
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_IMA4
 | 
			
		||||
#define AL_EXT_IMA4 1
 | 
			
		||||
#define AL_FORMAT_MONO_IMA4                      0x1300
 | 
			
		||||
#define AL_FORMAT_STEREO_IMA4                    0x1301
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_STATIC_BUFFER
 | 
			
		||||
#define AL_EXT_STATIC_BUFFER 1
 | 
			
		||||
typedef ALvoid (AL_APIENTRY*PFNALBUFFERDATASTATICPROC)(const ALint,ALenum,ALvoid*,ALsizei,ALsizei);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alBufferDataStatic(const ALint buffer, ALenum format, ALvoid *data, ALsizei len, ALsizei freq);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_EXT_EFX
 | 
			
		||||
#define ALC_EXT_EFX 1
 | 
			
		||||
#include "efx.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_EXT_disconnect
 | 
			
		||||
#define ALC_EXT_disconnect 1
 | 
			
		||||
#define ALC_CONNECTED                            0x313
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_EXT_thread_local_context
 | 
			
		||||
#define ALC_EXT_thread_local_context 1
 | 
			
		||||
typedef ALCboolean  (ALC_APIENTRY*PFNALCSETTHREADCONTEXTPROC)(ALCcontext *context);
 | 
			
		||||
typedef ALCcontext* (ALC_APIENTRY*PFNALCGETTHREADCONTEXTPROC)(void);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
ALC_API ALCboolean  ALC_APIENTRY alcSetThreadContext(ALCcontext *context);
 | 
			
		||||
ALC_API ALCcontext* ALC_APIENTRY alcGetThreadContext(void);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_source_distance_model
 | 
			
		||||
#define AL_EXT_source_distance_model 1
 | 
			
		||||
#define AL_SOURCE_DISTANCE_MODEL                 0x200
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_buffer_sub_data
 | 
			
		||||
#define AL_SOFT_buffer_sub_data 1
 | 
			
		||||
#define AL_BYTE_RW_OFFSETS_SOFT                  0x1031
 | 
			
		||||
#define AL_SAMPLE_RW_OFFSETS_SOFT                0x1032
 | 
			
		||||
typedef ALvoid (AL_APIENTRY*PFNALBUFFERSUBDATASOFTPROC)(ALuint,ALenum,const ALvoid*,ALsizei,ALsizei);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alBufferSubDataSOFT(ALuint buffer,ALenum format,const ALvoid *data,ALsizei offset,ALsizei length);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_loop_points
 | 
			
		||||
#define AL_SOFT_loop_points 1
 | 
			
		||||
#define AL_LOOP_POINTS_SOFT                      0x2015
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_FOLDBACK
 | 
			
		||||
#define AL_EXT_FOLDBACK 1
 | 
			
		||||
#define AL_EXT_FOLDBACK_NAME                     "AL_EXT_FOLDBACK"
 | 
			
		||||
#define AL_FOLDBACK_EVENT_BLOCK                  0x4112
 | 
			
		||||
#define AL_FOLDBACK_EVENT_START                  0x4111
 | 
			
		||||
#define AL_FOLDBACK_EVENT_STOP                   0x4113
 | 
			
		||||
#define AL_FOLDBACK_MODE_MONO                    0x4101
 | 
			
		||||
#define AL_FOLDBACK_MODE_STEREO                  0x4102
 | 
			
		||||
typedef void (AL_APIENTRY*LPALFOLDBACKCALLBACK)(ALenum,ALsizei);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTART)(ALenum,ALsizei,ALsizei,ALfloat*,LPALFOLDBACKCALLBACK);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTOP)(void);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API void AL_APIENTRY alRequestFoldbackStart(ALenum mode,ALsizei count,ALsizei length,ALfloat *mem,LPALFOLDBACKCALLBACK callback);
 | 
			
		||||
AL_API void AL_APIENTRY alRequestFoldbackStop(void);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_EXT_DEDICATED
 | 
			
		||||
#define ALC_EXT_DEDICATED 1
 | 
			
		||||
#define AL_DEDICATED_GAIN                        0x0001
 | 
			
		||||
#define AL_EFFECT_DEDICATED_DIALOGUE             0x9001
 | 
			
		||||
#define AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT 0x9000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_buffer_samples
 | 
			
		||||
#define AL_SOFT_buffer_samples 1
 | 
			
		||||
/* Channel configurations */
 | 
			
		||||
#define AL_MONO_SOFT                             0x1500
 | 
			
		||||
#define AL_STEREO_SOFT                           0x1501
 | 
			
		||||
#define AL_REAR_SOFT                             0x1502
 | 
			
		||||
#define AL_QUAD_SOFT                             0x1503
 | 
			
		||||
#define AL_5POINT1_SOFT                          0x1504
 | 
			
		||||
#define AL_6POINT1_SOFT                          0x1505
 | 
			
		||||
#define AL_7POINT1_SOFT                          0x1506
 | 
			
		||||
 | 
			
		||||
/* Sample types */
 | 
			
		||||
#define AL_BYTE_SOFT                             0x1400
 | 
			
		||||
#define AL_UNSIGNED_BYTE_SOFT                    0x1401
 | 
			
		||||
#define AL_SHORT_SOFT                            0x1402
 | 
			
		||||
#define AL_UNSIGNED_SHORT_SOFT                   0x1403
 | 
			
		||||
#define AL_INT_SOFT                              0x1404
 | 
			
		||||
#define AL_UNSIGNED_INT_SOFT                     0x1405
 | 
			
		||||
#define AL_FLOAT_SOFT                            0x1406
 | 
			
		||||
#define AL_DOUBLE_SOFT                           0x1407
 | 
			
		||||
#define AL_BYTE3_SOFT                            0x1408
 | 
			
		||||
#define AL_UNSIGNED_BYTE3_SOFT                   0x1409
 | 
			
		||||
 | 
			
		||||
/* Storage formats */
 | 
			
		||||
#define AL_MONO8_SOFT                            0x1100
 | 
			
		||||
#define AL_MONO16_SOFT                           0x1101
 | 
			
		||||
#define AL_MONO32F_SOFT                          0x10010
 | 
			
		||||
#define AL_STEREO8_SOFT                          0x1102
 | 
			
		||||
#define AL_STEREO16_SOFT                         0x1103
 | 
			
		||||
#define AL_STEREO32F_SOFT                        0x10011
 | 
			
		||||
#define AL_QUAD8_SOFT                            0x1204
 | 
			
		||||
#define AL_QUAD16_SOFT                           0x1205
 | 
			
		||||
#define AL_QUAD32F_SOFT                          0x1206
 | 
			
		||||
#define AL_REAR8_SOFT                            0x1207
 | 
			
		||||
#define AL_REAR16_SOFT                           0x1208
 | 
			
		||||
#define AL_REAR32F_SOFT                          0x1209
 | 
			
		||||
#define AL_5POINT1_8_SOFT                        0x120A
 | 
			
		||||
#define AL_5POINT1_16_SOFT                       0x120B
 | 
			
		||||
#define AL_5POINT1_32F_SOFT                      0x120C
 | 
			
		||||
#define AL_6POINT1_8_SOFT                        0x120D
 | 
			
		||||
#define AL_6POINT1_16_SOFT                       0x120E
 | 
			
		||||
#define AL_6POINT1_32F_SOFT                      0x120F
 | 
			
		||||
#define AL_7POINT1_8_SOFT                        0x1210
 | 
			
		||||
#define AL_7POINT1_16_SOFT                       0x1211
 | 
			
		||||
#define AL_7POINT1_32F_SOFT                      0x1212
 | 
			
		||||
 | 
			
		||||
/* Buffer attributes */
 | 
			
		||||
#define AL_INTERNAL_FORMAT_SOFT                  0x2008
 | 
			
		||||
#define AL_BYTE_LENGTH_SOFT                      0x2009
 | 
			
		||||
#define AL_SAMPLE_LENGTH_SOFT                    0x200A
 | 
			
		||||
#define AL_SEC_LENGTH_SOFT                       0x200B
 | 
			
		||||
 | 
			
		||||
typedef void (AL_APIENTRY*LPALBUFFERSAMPLESSOFT)(ALuint,ALuint,ALenum,ALsizei,ALenum,ALenum,const ALvoid*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALBUFFERSUBSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,const ALvoid*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETBUFFERSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,ALvoid*);
 | 
			
		||||
typedef ALboolean (AL_APIENTRY*LPALISBUFFERFORMATSUPPORTEDSOFT)(ALenum);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API void AL_APIENTRY alBufferSamplesSOFT(ALuint buffer, ALuint samplerate, ALenum internalformat, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
 | 
			
		||||
AL_API void AL_APIENTRY alBufferSubSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBufferSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, ALvoid *data);
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsBufferFormatSupportedSOFT(ALenum format);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_direct_channels
 | 
			
		||||
#define AL_SOFT_direct_channels 1
 | 
			
		||||
#define AL_DIRECT_CHANNELS_SOFT                  0x1033
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_SOFT_loopback
 | 
			
		||||
#define ALC_SOFT_loopback 1
 | 
			
		||||
#define ALC_FORMAT_CHANNELS_SOFT                 0x1990
 | 
			
		||||
#define ALC_FORMAT_TYPE_SOFT                     0x1991
 | 
			
		||||
 | 
			
		||||
/* Sample types */
 | 
			
		||||
#define ALC_BYTE_SOFT                            0x1400
 | 
			
		||||
#define ALC_UNSIGNED_BYTE_SOFT                   0x1401
 | 
			
		||||
#define ALC_SHORT_SOFT                           0x1402
 | 
			
		||||
#define ALC_UNSIGNED_SHORT_SOFT                  0x1403
 | 
			
		||||
#define ALC_INT_SOFT                             0x1404
 | 
			
		||||
#define ALC_UNSIGNED_INT_SOFT                    0x1405
 | 
			
		||||
#define ALC_FLOAT_SOFT                           0x1406
 | 
			
		||||
 | 
			
		||||
/* Channel configurations */
 | 
			
		||||
#define ALC_MONO_SOFT                            0x1500
 | 
			
		||||
#define ALC_STEREO_SOFT                          0x1501
 | 
			
		||||
#define ALC_QUAD_SOFT                            0x1503
 | 
			
		||||
#define ALC_5POINT1_SOFT                         0x1504
 | 
			
		||||
#define ALC_6POINT1_SOFT                         0x1505
 | 
			
		||||
#define ALC_7POINT1_SOFT                         0x1506
 | 
			
		||||
 | 
			
		||||
typedef ALCdevice* (ALC_APIENTRY*LPALCLOOPBACKOPENDEVICESOFT)(const ALCchar*);
 | 
			
		||||
typedef ALCboolean (ALC_APIENTRY*LPALCISRENDERFORMATSUPPORTEDSOFT)(ALCdevice*,ALCsizei,ALCenum,ALCenum);
 | 
			
		||||
typedef void (ALC_APIENTRY*LPALCRENDERSAMPLESSOFT)(ALCdevice*,ALCvoid*,ALCsizei);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(const ALCchar *deviceName);
 | 
			
		||||
ALC_API ALCboolean ALC_APIENTRY alcIsRenderFormatSupportedSOFT(ALCdevice *device, ALCsizei freq, ALCenum channels, ALCenum type);
 | 
			
		||||
ALC_API void ALC_APIENTRY alcRenderSamplesSOFT(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_STEREO_ANGLES
 | 
			
		||||
#define AL_EXT_STEREO_ANGLES 1
 | 
			
		||||
#define AL_STEREO_ANGLES                         0x1030
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_SOURCE_RADIUS
 | 
			
		||||
#define AL_EXT_SOURCE_RADIUS 1
 | 
			
		||||
#define AL_SOURCE_RADIUS                         0x1031
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_source_latency
 | 
			
		||||
#define AL_SOFT_source_latency 1
 | 
			
		||||
#define AL_SAMPLE_OFFSET_LATENCY_SOFT            0x1200
 | 
			
		||||
#define AL_SEC_OFFSET_LATENCY_SOFT               0x1201
 | 
			
		||||
typedef int64_t ALint64SOFT;
 | 
			
		||||
typedef uint64_t ALuint64SOFT;
 | 
			
		||||
typedef void (AL_APIENTRY*LPALSOURCEDSOFT)(ALuint,ALenum,ALdouble);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALSOURCE3DSOFT)(ALuint,ALenum,ALdouble,ALdouble,ALdouble);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALSOURCEDVSOFT)(ALuint,ALenum,const ALdouble*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETSOURCEDSOFT)(ALuint,ALenum,ALdouble*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETSOURCE3DSOFT)(ALuint,ALenum,ALdouble*,ALdouble*,ALdouble*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETSOURCEDVSOFT)(ALuint,ALenum,ALdouble*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALSOURCEI64SOFT)(ALuint,ALenum,ALint64SOFT);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALSOURCE3I64SOFT)(ALuint,ALenum,ALint64SOFT,ALint64SOFT,ALint64SOFT);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALSOURCEI64VSOFT)(ALuint,ALenum,const ALint64SOFT*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETSOURCEI64SOFT)(ALuint,ALenum,ALint64SOFT*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETSOURCE3I64SOFT)(ALuint,ALenum,ALint64SOFT*,ALint64SOFT*,ALint64SOFT*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETSOURCEI64VSOFT)(ALuint,ALenum,ALint64SOFT*);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API void AL_APIENTRY alSourcedSOFT(ALuint source, ALenum param, ALdouble value);
 | 
			
		||||
AL_API void AL_APIENTRY alSource3dSOFT(ALuint source, ALenum param, ALdouble value1, ALdouble value2, ALdouble value3);
 | 
			
		||||
AL_API void AL_APIENTRY alSourcedvSOFT(ALuint source, ALenum param, const ALdouble *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcedSOFT(ALuint source, ALenum param, ALdouble *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSource3dSOFT(ALuint source, ALenum param, ALdouble *value1, ALdouble *value2, ALdouble *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcedvSOFT(ALuint source, ALenum param, ALdouble *values);
 | 
			
		||||
AL_API void AL_APIENTRY alSourcei64SOFT(ALuint source, ALenum param, ALint64SOFT value);
 | 
			
		||||
AL_API void AL_APIENTRY alSource3i64SOFT(ALuint source, ALenum param, ALint64SOFT value1, ALint64SOFT value2, ALint64SOFT value3);
 | 
			
		||||
AL_API void AL_APIENTRY alSourcei64vSOFT(ALuint source, ALenum param, const ALint64SOFT *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcei64SOFT(ALuint source, ALenum param, ALint64SOFT *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSource3i64SOFT(ALuint source, ALenum param, ALint64SOFT *value1, ALint64SOFT *value2, ALint64SOFT *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcei64vSOFT(ALuint source, ALenum param, ALint64SOFT *values);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_EXT_DEFAULT_FILTER_ORDER
 | 
			
		||||
#define ALC_EXT_DEFAULT_FILTER_ORDER 1
 | 
			
		||||
#define ALC_DEFAULT_FILTER_ORDER                 0x1100
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_deferred_updates
 | 
			
		||||
#define AL_SOFT_deferred_updates 1
 | 
			
		||||
#define AL_DEFERRED_UPDATES_SOFT                 0xC002
 | 
			
		||||
typedef ALvoid (AL_APIENTRY*LPALDEFERUPDATESSOFT)(void);
 | 
			
		||||
typedef ALvoid (AL_APIENTRY*LPALPROCESSUPDATESSOFT)(void);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alDeferUpdatesSOFT(void);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alProcessUpdatesSOFT(void);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_block_alignment
 | 
			
		||||
#define AL_SOFT_block_alignment 1
 | 
			
		||||
#define AL_UNPACK_BLOCK_ALIGNMENT_SOFT           0x200C
 | 
			
		||||
#define AL_PACK_BLOCK_ALIGNMENT_SOFT             0x200D
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_MSADPCM
 | 
			
		||||
#define AL_SOFT_MSADPCM 1
 | 
			
		||||
#define AL_FORMAT_MONO_MSADPCM_SOFT              0x1302
 | 
			
		||||
#define AL_FORMAT_STEREO_MSADPCM_SOFT            0x1303
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_source_length
 | 
			
		||||
#define AL_SOFT_source_length 1
 | 
			
		||||
/*#define AL_BYTE_LENGTH_SOFT                      0x2009*/
 | 
			
		||||
/*#define AL_SAMPLE_LENGTH_SOFT                    0x200A*/
 | 
			
		||||
/*#define AL_SEC_LENGTH_SOFT                       0x200B*/
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_SOFT_pause_device
 | 
			
		||||
#define ALC_SOFT_pause_device 1
 | 
			
		||||
typedef void (ALC_APIENTRY*LPALCDEVICEPAUSESOFT)(ALCdevice *device);
 | 
			
		||||
typedef void (ALC_APIENTRY*LPALCDEVICERESUMESOFT)(ALCdevice *device);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
ALC_API void ALC_APIENTRY alcDevicePauseSOFT(ALCdevice *device);
 | 
			
		||||
ALC_API void ALC_APIENTRY alcDeviceResumeSOFT(ALCdevice *device);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_BFORMAT
 | 
			
		||||
#define AL_EXT_BFORMAT 1
 | 
			
		||||
#define AL_FORMAT_BFORMAT2D_8                    0x20021
 | 
			
		||||
#define AL_FORMAT_BFORMAT2D_16                   0x20022
 | 
			
		||||
#define AL_FORMAT_BFORMAT2D_FLOAT32              0x20023
 | 
			
		||||
#define AL_FORMAT_BFORMAT3D_8                    0x20031
 | 
			
		||||
#define AL_FORMAT_BFORMAT3D_16                   0x20032
 | 
			
		||||
#define AL_FORMAT_BFORMAT3D_FLOAT32              0x20033
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_MULAW_BFORMAT
 | 
			
		||||
#define AL_EXT_MULAW_BFORMAT 1
 | 
			
		||||
#define AL_FORMAT_BFORMAT2D_MULAW                0x10031
 | 
			
		||||
#define AL_FORMAT_BFORMAT3D_MULAW                0x10032
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_SOFT_HRTF
 | 
			
		||||
#define ALC_SOFT_HRTF 1
 | 
			
		||||
#define ALC_HRTF_SOFT                            0x1992
 | 
			
		||||
#define ALC_DONT_CARE_SOFT                       0x0002
 | 
			
		||||
#define ALC_HRTF_STATUS_SOFT                     0x1993
 | 
			
		||||
#define ALC_HRTF_DISABLED_SOFT                   0x0000
 | 
			
		||||
#define ALC_HRTF_ENABLED_SOFT                    0x0001
 | 
			
		||||
#define ALC_HRTF_DENIED_SOFT                     0x0002
 | 
			
		||||
#define ALC_HRTF_REQUIRED_SOFT                   0x0003
 | 
			
		||||
#define ALC_HRTF_HEADPHONES_DETECTED_SOFT        0x0004
 | 
			
		||||
#define ALC_HRTF_UNSUPPORTED_FORMAT_SOFT         0x0005
 | 
			
		||||
#define ALC_NUM_HRTF_SPECIFIERS_SOFT             0x1994
 | 
			
		||||
#define ALC_HRTF_SPECIFIER_SOFT                  0x1995
 | 
			
		||||
#define ALC_HRTF_ID_SOFT                         0x1996
 | 
			
		||||
typedef const ALCchar* (ALC_APIENTRY*LPALCGETSTRINGISOFT)(ALCdevice *device, ALCenum paramName, ALCsizei index);
 | 
			
		||||
typedef ALCboolean (ALC_APIENTRY*LPALCRESETDEVICESOFT)(ALCdevice *device, const ALCint *attribs);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
ALC_API const ALCchar* ALC_APIENTRY alcGetStringiSOFT(ALCdevice *device, ALCenum paramName, ALCsizei index);
 | 
			
		||||
ALC_API ALCboolean ALC_APIENTRY alcResetDeviceSOFT(ALCdevice *device, const ALCint *attribs);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
/* The tokens that would be defined here are already defined in efx.h. This
 | 
			
		||||
 * empty file is here to provide compatibility with Windows-based projects
 | 
			
		||||
 * that would include it. */
 | 
			
		||||
@@ -1,402 +0,0 @@
 | 
			
		||||
/* Reverb presets for EFX */
 | 
			
		||||
 | 
			
		||||
#ifndef EFX_PRESETS_H
 | 
			
		||||
#define EFX_PRESETS_H
 | 
			
		||||
 | 
			
		||||
#ifndef EFXEAXREVERBPROPERTIES_DEFINED
 | 
			
		||||
#define EFXEAXREVERBPROPERTIES_DEFINED
 | 
			
		||||
typedef struct {
 | 
			
		||||
    float flDensity;
 | 
			
		||||
    float flDiffusion;
 | 
			
		||||
    float flGain;
 | 
			
		||||
    float flGainHF;
 | 
			
		||||
    float flGainLF;
 | 
			
		||||
    float flDecayTime;
 | 
			
		||||
    float flDecayHFRatio;
 | 
			
		||||
    float flDecayLFRatio;
 | 
			
		||||
    float flReflectionsGain;
 | 
			
		||||
    float flReflectionsDelay;
 | 
			
		||||
    float flReflectionsPan[3];
 | 
			
		||||
    float flLateReverbGain;
 | 
			
		||||
    float flLateReverbDelay;
 | 
			
		||||
    float flLateReverbPan[3];
 | 
			
		||||
    float flEchoTime;
 | 
			
		||||
    float flEchoDepth;
 | 
			
		||||
    float flModulationTime;
 | 
			
		||||
    float flModulationDepth;
 | 
			
		||||
    float flAirAbsorptionGainHF;
 | 
			
		||||
    float flHFReference;
 | 
			
		||||
    float flLFReference;
 | 
			
		||||
    float flRoomRolloffFactor;
 | 
			
		||||
    int   iDecayHFLimit;
 | 
			
		||||
} EFXEAXREVERBPROPERTIES, *LPEFXEAXREVERBPROPERTIES;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Default Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_GENERIC \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.8913f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PADDEDCELL \
 | 
			
		||||
    { 0.1715f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.1700f, 0.1000f, 1.0000f, 0.2500f, 0.0010f, { 0.0000f, 0.0000f, 0.0000f }, 1.2691f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ROOM \
 | 
			
		||||
    { 0.4287f, 1.0000f, 0.3162f, 0.5929f, 1.0000f, 0.4000f, 0.8300f, 1.0000f, 0.1503f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.0629f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_BATHROOM \
 | 
			
		||||
    { 0.1715f, 1.0000f, 0.3162f, 0.2512f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.6531f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 3.2734f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_LIVINGROOM \
 | 
			
		||||
    { 0.9766f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.5000f, 0.1000f, 1.0000f, 0.2051f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2805f, 0.0040f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_STONEROOM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 2.3100f, 0.6400f, 1.0000f, 0.4411f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1003f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_AUDITORIUM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.5781f, 1.0000f, 4.3200f, 0.5900f, 1.0000f, 0.4032f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7170f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CONCERTHALL \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.5623f, 1.0000f, 3.9200f, 0.7000f, 1.0000f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.9977f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CAVE \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 2.9100f, 1.3000f, 1.0000f, 0.5000f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.7063f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ARENA \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.4477f, 1.0000f, 7.2400f, 0.3300f, 1.0000f, 0.2612f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.0186f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_HANGAR \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 10.0500f, 0.2300f, 1.0000f, 0.5000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2560f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CARPETEDHALLWAY \
 | 
			
		||||
    { 0.4287f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 0.3000f, 0.1000f, 1.0000f, 0.1215f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.1531f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_HALLWAY \
 | 
			
		||||
    { 0.3645f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 1.4900f, 0.5900f, 1.0000f, 0.2458f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.6615f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_STONECORRIDOR \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.7612f, 1.0000f, 2.7000f, 0.7900f, 1.0000f, 0.2472f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 1.5758f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ALLEY \
 | 
			
		||||
    { 1.0000f, 0.3000f, 0.3162f, 0.7328f, 1.0000f, 1.4900f, 0.8600f, 1.0000f, 0.2500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.9954f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.9500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FOREST \
 | 
			
		||||
    { 1.0000f, 0.3000f, 0.3162f, 0.0224f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.0525f, 0.1620f, { 0.0000f, 0.0000f, 0.0000f }, 0.7682f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY \
 | 
			
		||||
    { 1.0000f, 0.5000f, 0.3162f, 0.3981f, 1.0000f, 1.4900f, 0.6700f, 1.0000f, 0.0730f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1427f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_MOUNTAINS \
 | 
			
		||||
    { 1.0000f, 0.2700f, 0.3162f, 0.0562f, 1.0000f, 1.4900f, 0.2100f, 1.0000f, 0.0407f, 0.3000f, { 0.0000f, 0.0000f, 0.0000f }, 0.1919f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_QUARRY \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0000f, 0.0610f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.7000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PLAIN \
 | 
			
		||||
    { 1.0000f, 0.2100f, 0.3162f, 0.1000f, 1.0000f, 1.4900f, 0.5000f, 1.0000f, 0.0585f, 0.1790f, { 0.0000f, 0.0000f, 0.0000f }, 0.1089f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PARKINGLOT \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 1.6500f, 1.5000f, 1.0000f, 0.2082f, 0.0080f, { 0.0000f, 0.0000f, 0.0000f }, 0.2652f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SEWERPIPE \
 | 
			
		||||
    { 0.3071f, 0.8000f, 0.3162f, 0.3162f, 1.0000f, 2.8100f, 0.1400f, 1.0000f, 1.6387f, 0.0140f, { 0.0000f, 0.0000f, 0.0000f }, 3.2471f, 0.0210f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_UNDERWATER \
 | 
			
		||||
    { 0.3645f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 1.4900f, 0.1000f, 1.0000f, 0.5963f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 7.0795f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 1.1800f, 0.3480f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRUGGED \
 | 
			
		||||
    { 0.4287f, 0.5000f, 0.3162f, 1.0000f, 1.0000f, 8.3900f, 1.3900f, 1.0000f, 0.8760f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 3.1081f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DIZZY \
 | 
			
		||||
    { 0.3645f, 0.6000f, 0.3162f, 0.6310f, 1.0000f, 17.2300f, 0.5600f, 1.0000f, 0.1392f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4937f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.8100f, 0.3100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PSYCHOTIC \
 | 
			
		||||
    { 0.0625f, 0.5000f, 0.3162f, 0.8404f, 1.0000f, 7.5600f, 0.9100f, 1.0000f, 0.4864f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 2.4378f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 4.0000f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
/* Castle Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_SMALLROOM \
 | 
			
		||||
    { 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 1.2200f, 0.8300f, 0.3100f, 0.8913f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_SHORTPASSAGE \
 | 
			
		||||
    { 1.0000f, 0.8900f, 0.3162f, 0.3162f, 0.1000f, 2.3200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_MEDIUMROOM \
 | 
			
		||||
    { 1.0000f, 0.9300f, 0.3162f, 0.2818f, 0.1000f, 2.0400f, 0.8300f, 0.4600f, 0.6310f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1550f, 0.0300f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_LARGEROOM \
 | 
			
		||||
    { 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.1259f, 2.5300f, 0.8300f, 0.5000f, 0.4467f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1850f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_LONGPASSAGE \
 | 
			
		||||
    { 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 3.4200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_HALL \
 | 
			
		||||
    { 1.0000f, 0.8100f, 0.3162f, 0.2818f, 0.1778f, 3.1400f, 0.7900f, 0.6200f, 0.1778f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_CUPBOARD \
 | 
			
		||||
    { 1.0000f, 0.8900f, 0.3162f, 0.2818f, 0.1000f, 0.6700f, 0.8700f, 0.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 3.5481f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_COURTYARD \
 | 
			
		||||
    { 1.0000f, 0.4200f, 0.3162f, 0.4467f, 0.1995f, 2.1300f, 0.6100f, 0.2300f, 0.2239f, 0.1600f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3700f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_ALCOVE \
 | 
			
		||||
    { 1.0000f, 0.8900f, 0.3162f, 0.5012f, 0.1000f, 1.6400f, 0.8700f, 0.3100f, 1.0000f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Factory Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_SMALLROOM \
 | 
			
		||||
    { 0.3645f, 0.8200f, 0.3162f, 0.7943f, 0.5012f, 1.7200f, 0.6500f, 1.3100f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.1190f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_SHORTPASSAGE \
 | 
			
		||||
    { 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 2.5300f, 0.6500f, 1.3100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_MEDIUMROOM \
 | 
			
		||||
    { 0.4287f, 0.8200f, 0.2512f, 0.7943f, 0.5012f, 2.7600f, 0.6500f, 1.3100f, 0.2818f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1740f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_LARGEROOM \
 | 
			
		||||
    { 0.4287f, 0.7500f, 0.2512f, 0.7079f, 0.6310f, 4.2400f, 0.5100f, 1.3100f, 0.1778f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2310f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_LONGPASSAGE \
 | 
			
		||||
    { 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 4.0600f, 0.6500f, 1.3100f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_HALL \
 | 
			
		||||
    { 0.4287f, 0.7500f, 0.3162f, 0.7079f, 0.6310f, 7.4300f, 0.5100f, 1.3100f, 0.0631f, 0.0730f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_CUPBOARD \
 | 
			
		||||
    { 0.3071f, 0.6300f, 0.2512f, 0.7943f, 0.5012f, 0.4900f, 0.6500f, 1.3100f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.1070f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_COURTYARD \
 | 
			
		||||
    { 0.3071f, 0.5700f, 0.3162f, 0.3162f, 0.6310f, 2.3200f, 0.2900f, 0.5600f, 0.2239f, 0.1400f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2900f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_ALCOVE \
 | 
			
		||||
    { 0.3645f, 0.5900f, 0.2512f, 0.7943f, 0.5012f, 3.1400f, 0.6500f, 1.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1140f, 0.1000f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Ice Palace Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_SMALLROOM \
 | 
			
		||||
    { 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 1.5100f, 1.5300f, 0.2700f, 0.8913f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1640f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_SHORTPASSAGE \
 | 
			
		||||
    { 1.0000f, 0.7500f, 0.3162f, 0.5623f, 0.2818f, 1.7900f, 1.4600f, 0.2800f, 0.5012f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_MEDIUMROOM \
 | 
			
		||||
    { 1.0000f, 0.8700f, 0.3162f, 0.5623f, 0.4467f, 2.2200f, 1.5300f, 0.3200f, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_LARGEROOM \
 | 
			
		||||
    { 1.0000f, 0.8100f, 0.3162f, 0.5623f, 0.4467f, 3.1400f, 1.5300f, 0.3200f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_LONGPASSAGE \
 | 
			
		||||
    { 1.0000f, 0.7700f, 0.3162f, 0.5623f, 0.3981f, 3.0100f, 1.4600f, 0.2800f, 0.7943f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.0400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_HALL \
 | 
			
		||||
    { 1.0000f, 0.7600f, 0.3162f, 0.4467f, 0.5623f, 5.4900f, 1.5300f, 0.3800f, 0.1122f, 0.0540f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0520f, { 0.0000f, 0.0000f, 0.0000f }, 0.2260f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_CUPBOARD \
 | 
			
		||||
    { 1.0000f, 0.8300f, 0.3162f, 0.5012f, 0.2239f, 0.7600f, 1.5300f, 0.2600f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1430f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_COURTYARD \
 | 
			
		||||
    { 1.0000f, 0.5900f, 0.3162f, 0.2818f, 0.3162f, 2.0400f, 1.2000f, 0.3800f, 0.3162f, 0.1730f, { 0.0000f, 0.0000f, 0.0000f }, 0.3162f, 0.0430f, { 0.0000f, 0.0000f, 0.0000f }, 0.2350f, 0.4800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_ALCOVE \
 | 
			
		||||
    { 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 2.7600f, 1.4600f, 0.2800f, 1.1220f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1610f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Space Station Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_SMALLROOM \
 | 
			
		||||
    { 0.2109f, 0.7000f, 0.3162f, 0.7079f, 0.8913f, 1.7200f, 0.8200f, 0.5500f, 0.7943f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 0.1880f, 0.2600f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_SHORTPASSAGE \
 | 
			
		||||
    { 0.2109f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 3.5700f, 0.5000f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1720f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_MEDIUMROOM \
 | 
			
		||||
    { 0.2109f, 0.7500f, 0.3162f, 0.6310f, 0.8913f, 3.0100f, 0.5000f, 0.5500f, 0.3981f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2090f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_LARGEROOM \
 | 
			
		||||
    { 0.3645f, 0.8100f, 0.3162f, 0.6310f, 0.8913f, 3.8900f, 0.3800f, 0.6100f, 0.3162f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2330f, 0.2800f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_LONGPASSAGE \
 | 
			
		||||
    { 0.4287f, 0.8200f, 0.3162f, 0.6310f, 0.8913f, 4.6200f, 0.6200f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_HALL \
 | 
			
		||||
    { 0.4287f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 7.1100f, 0.3800f, 0.6100f, 0.1778f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2500f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_CUPBOARD \
 | 
			
		||||
    { 0.1715f, 0.5600f, 0.3162f, 0.7079f, 0.8913f, 0.7900f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1810f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_ALCOVE \
 | 
			
		||||
    { 0.2109f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.1600f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1920f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Wooden Galleon Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_SMALLROOM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.1122f, 0.3162f, 0.7900f, 0.3200f, 0.8700f, 1.0000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_SHORTPASSAGE \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.7500f, 0.5000f, 0.8700f, 0.8913f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_MEDIUMROOM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.2818f, 1.4700f, 0.4200f, 0.8200f, 0.8913f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_LARGEROOM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.2818f, 2.6500f, 0.3300f, 0.8200f, 0.8913f, 0.0660f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_LONGPASSAGE \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.3162f, 1.9900f, 0.4000f, 0.7900f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4467f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_HALL \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.0794f, 0.2818f, 3.4500f, 0.3000f, 0.8200f, 0.8913f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_CUPBOARD \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.1413f, 0.3162f, 0.5600f, 0.4600f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_COURTYARD \
 | 
			
		||||
    { 1.0000f, 0.6500f, 0.3162f, 0.0794f, 0.3162f, 1.7900f, 0.3500f, 0.7900f, 0.5623f, 0.1230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_ALCOVE \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.2200f, 0.6200f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Sports Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_EMPTYSTADIUM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.4467f, 0.7943f, 6.2600f, 0.5100f, 1.1000f, 0.0631f, 0.1830f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_SQUASHCOURT \
 | 
			
		||||
    { 1.0000f, 0.7500f, 0.3162f, 0.3162f, 0.7943f, 2.2200f, 0.9100f, 1.1600f, 0.4467f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1260f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_SMALLSWIMMINGPOOL \
 | 
			
		||||
    { 1.0000f, 0.7000f, 0.3162f, 0.7943f, 0.8913f, 2.7600f, 1.2500f, 1.1400f, 0.6310f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_LARGESWIMMINGPOOL \
 | 
			
		||||
    { 1.0000f, 0.8200f, 0.3162f, 0.7943f, 1.0000f, 5.4900f, 1.3100f, 1.1400f, 0.4467f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2220f, 0.5500f, 1.1590f, 0.2100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_GYMNASIUM \
 | 
			
		||||
    { 1.0000f, 0.8100f, 0.3162f, 0.4467f, 0.8913f, 3.1400f, 1.0600f, 1.3500f, 0.3981f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0450f, { 0.0000f, 0.0000f, 0.0000f }, 0.1460f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_FULLSTADIUM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.0708f, 0.7943f, 5.2500f, 0.1700f, 0.8000f, 0.1000f, 0.1880f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_STADIUMTANNOY \
 | 
			
		||||
    { 1.0000f, 0.7800f, 0.3162f, 0.5623f, 0.5012f, 2.5300f, 0.8800f, 0.6800f, 0.2818f, 0.2300f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Prefab Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PREFAB_WORKSHOP \
 | 
			
		||||
    { 0.4287f, 1.0000f, 0.3162f, 0.1413f, 0.3981f, 0.7600f, 1.0000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PREFAB_SCHOOLROOM \
 | 
			
		||||
    { 0.4022f, 0.6900f, 0.3162f, 0.6310f, 0.5012f, 0.9800f, 0.4500f, 0.1800f, 1.4125f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PREFAB_PRACTISEROOM \
 | 
			
		||||
    { 0.4022f, 0.8700f, 0.3162f, 0.3981f, 0.5012f, 1.1200f, 0.5600f, 0.1800f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PREFAB_OUTHOUSE \
 | 
			
		||||
    { 1.0000f, 0.8200f, 0.3162f, 0.1122f, 0.1585f, 1.3800f, 0.3800f, 0.3500f, 0.8913f, 0.0240f, { 0.0000f, 0.0000f, -0.0000f }, 0.6310f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.1210f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PREFAB_CARAVAN \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.1259f, 0.4300f, 1.5000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
/* Dome and Pipe Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DOME_TOMB \
 | 
			
		||||
    { 1.0000f, 0.7900f, 0.3162f, 0.3548f, 0.2239f, 4.1800f, 0.2100f, 0.1000f, 0.3868f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 1.6788f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PIPE_SMALL \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 5.0400f, 0.1000f, 0.1000f, 0.5012f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 2.5119f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DOME_SAINTPAULS \
 | 
			
		||||
    { 1.0000f, 0.8700f, 0.3162f, 0.3548f, 0.2239f, 10.4800f, 0.1900f, 0.1000f, 0.1778f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0420f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PIPE_LONGTHIN \
 | 
			
		||||
    { 0.2560f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 9.2100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PIPE_LARGE \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 8.4500f, 0.1000f, 0.1000f, 0.3981f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PIPE_RESONANT \
 | 
			
		||||
    { 0.1373f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 6.8100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
/* Outdoors Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_OUTDOORS_BACKYARD \
 | 
			
		||||
    { 1.0000f, 0.4500f, 0.3162f, 0.2512f, 0.5012f, 1.1200f, 0.3400f, 0.4600f, 0.4467f, 0.0690f, { 0.0000f, 0.0000f, -0.0000f }, 0.7079f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_OUTDOORS_ROLLINGPLAINS \
 | 
			
		||||
    { 1.0000f, 0.0000f, 0.3162f, 0.0112f, 0.6310f, 2.1300f, 0.2100f, 0.4600f, 0.1778f, 0.3000f, { 0.0000f, 0.0000f, -0.0000f }, 0.4467f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_OUTDOORS_DEEPCANYON \
 | 
			
		||||
    { 1.0000f, 0.7400f, 0.3162f, 0.1778f, 0.6310f, 3.8900f, 0.2100f, 0.4600f, 0.3162f, 0.2230f, { 0.0000f, 0.0000f, -0.0000f }, 0.3548f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_OUTDOORS_CREEK \
 | 
			
		||||
    { 1.0000f, 0.3500f, 0.3162f, 0.1778f, 0.5012f, 2.1300f, 0.2100f, 0.4600f, 0.3981f, 0.1150f, { 0.0000f, 0.0000f, -0.0000f }, 0.1995f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_OUTDOORS_VALLEY \
 | 
			
		||||
    { 1.0000f, 0.2800f, 0.3162f, 0.0282f, 0.1585f, 2.8800f, 0.2600f, 0.3500f, 0.1413f, 0.2630f, { 0.0000f, 0.0000f, -0.0000f }, 0.3981f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
/* Mood Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_MOOD_HEAVEN \
 | 
			
		||||
    { 1.0000f, 0.9400f, 0.3162f, 0.7943f, 0.4467f, 5.0400f, 1.1200f, 0.5600f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0800f, 2.7420f, 0.0500f, 0.9977f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_MOOD_HELL \
 | 
			
		||||
    { 1.0000f, 0.5700f, 0.3162f, 0.3548f, 0.4467f, 3.5700f, 0.4900f, 2.0000f, 0.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1100f, 0.0400f, 2.1090f, 0.5200f, 0.9943f, 5000.0000f, 139.5000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_MOOD_MEMORY \
 | 
			
		||||
    { 1.0000f, 0.8500f, 0.3162f, 0.6310f, 0.3548f, 4.0600f, 0.8200f, 0.5600f, 0.0398f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.4740f, 0.4500f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
/* Driving Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_COMMENTATOR \
 | 
			
		||||
    { 1.0000f, 0.0000f, 0.3162f, 0.5623f, 0.5012f, 2.4200f, 0.8800f, 0.6800f, 0.1995f, 0.0930f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_PITGARAGE \
 | 
			
		||||
    { 0.4287f, 0.5900f, 0.3162f, 0.7079f, 0.5623f, 1.7200f, 0.9300f, 0.8700f, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_INCAR_RACER \
 | 
			
		||||
    { 0.0832f, 0.8000f, 0.3162f, 1.0000f, 0.7943f, 0.1700f, 2.0000f, 0.4100f, 1.7783f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_INCAR_SPORTS \
 | 
			
		||||
    { 0.0832f, 0.8000f, 0.3162f, 0.6310f, 1.0000f, 0.1700f, 0.7500f, 0.4100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_INCAR_LUXURY \
 | 
			
		||||
    { 0.2560f, 1.0000f, 0.3162f, 0.1000f, 0.5012f, 0.1300f, 0.4100f, 0.4600f, 0.7943f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_FULLGRANDSTAND \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.2818f, 0.6310f, 3.0100f, 1.3700f, 1.2800f, 0.3548f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.1778f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_EMPTYGRANDSTAND \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 1.0000f, 0.7943f, 4.6200f, 1.7500f, 1.4000f, 0.2082f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_TUNNEL \
 | 
			
		||||
    { 1.0000f, 0.8100f, 0.3162f, 0.3981f, 0.8913f, 3.4200f, 0.9400f, 1.3100f, 0.7079f, 0.0510f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.0500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 155.3000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* City Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY_STREETS \
 | 
			
		||||
    { 1.0000f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.7900f, 1.1200f, 0.9100f, 0.2818f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 0.1995f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY_SUBWAY \
 | 
			
		||||
    { 1.0000f, 0.7400f, 0.3162f, 0.7079f, 0.8913f, 3.0100f, 1.2300f, 0.9100f, 0.7079f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY_MUSEUM \
 | 
			
		||||
    { 1.0000f, 0.8200f, 0.3162f, 0.1778f, 0.1778f, 3.2800f, 1.4000f, 0.5700f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY_LIBRARY \
 | 
			
		||||
    { 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.0891f, 2.7600f, 0.8900f, 0.4100f, 0.3548f, 0.0290f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY_UNDERPASS \
 | 
			
		||||
    { 1.0000f, 0.8200f, 0.3162f, 0.4467f, 0.8913f, 3.5700f, 1.1200f, 0.9100f, 0.3981f, 0.0590f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1400f, 0.2500f, 0.0000f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY_ABANDONED \
 | 
			
		||||
    { 1.0000f, 0.6900f, 0.3162f, 0.7943f, 0.8913f, 3.2800f, 1.1700f, 0.9100f, 0.4467f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9966f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Misc. Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DUSTYROOM \
 | 
			
		||||
    { 0.3645f, 0.5600f, 0.3162f, 0.7943f, 0.7079f, 1.7900f, 0.3800f, 0.2100f, 0.5012f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0060f, { 0.0000f, 0.0000f, 0.0000f }, 0.2020f, 0.0500f, 0.2500f, 0.0000f, 0.9886f, 13046.0000f, 163.3000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CHAPEL \
 | 
			
		||||
    { 1.0000f, 0.8400f, 0.3162f, 0.5623f, 1.0000f, 4.6200f, 0.6400f, 1.2300f, 0.4467f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.1100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SMALLWATERROOM \
 | 
			
		||||
    { 1.0000f, 0.7000f, 0.3162f, 0.4477f, 1.0000f, 1.5100f, 1.2500f, 1.1400f, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#endif /* EFX_PRESETS_H */
 | 
			
		||||
@@ -1,761 +0,0 @@
 | 
			
		||||
#ifndef AL_EFX_H
 | 
			
		||||
#define AL_EFX_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "alc.h"
 | 
			
		||||
#include "al.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define ALC_EXT_EFX_NAME                         "ALC_EXT_EFX"
 | 
			
		||||
 | 
			
		||||
#define ALC_EFX_MAJOR_VERSION                    0x20001
 | 
			
		||||
#define ALC_EFX_MINOR_VERSION                    0x20002
 | 
			
		||||
#define ALC_MAX_AUXILIARY_SENDS                  0x20003
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Listener properties. */
 | 
			
		||||
#define AL_METERS_PER_UNIT                       0x20004
 | 
			
		||||
 | 
			
		||||
/* Source properties. */
 | 
			
		||||
#define AL_DIRECT_FILTER                         0x20005
 | 
			
		||||
#define AL_AUXILIARY_SEND_FILTER                 0x20006
 | 
			
		||||
#define AL_AIR_ABSORPTION_FACTOR                 0x20007
 | 
			
		||||
#define AL_ROOM_ROLLOFF_FACTOR                   0x20008
 | 
			
		||||
#define AL_CONE_OUTER_GAINHF                     0x20009
 | 
			
		||||
#define AL_DIRECT_FILTER_GAINHF_AUTO             0x2000A
 | 
			
		||||
#define AL_AUXILIARY_SEND_FILTER_GAIN_AUTO       0x2000B
 | 
			
		||||
#define AL_AUXILIARY_SEND_FILTER_GAINHF_AUTO     0x2000C
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Effect properties. */
 | 
			
		||||
 | 
			
		||||
/* Reverb effect parameters */
 | 
			
		||||
#define AL_REVERB_DENSITY                        0x0001
 | 
			
		||||
#define AL_REVERB_DIFFUSION                      0x0002
 | 
			
		||||
#define AL_REVERB_GAIN                           0x0003
 | 
			
		||||
#define AL_REVERB_GAINHF                         0x0004
 | 
			
		||||
#define AL_REVERB_DECAY_TIME                     0x0005
 | 
			
		||||
#define AL_REVERB_DECAY_HFRATIO                  0x0006
 | 
			
		||||
#define AL_REVERB_REFLECTIONS_GAIN               0x0007
 | 
			
		||||
#define AL_REVERB_REFLECTIONS_DELAY              0x0008
 | 
			
		||||
#define AL_REVERB_LATE_REVERB_GAIN               0x0009
 | 
			
		||||
#define AL_REVERB_LATE_REVERB_DELAY              0x000A
 | 
			
		||||
#define AL_REVERB_AIR_ABSORPTION_GAINHF          0x000B
 | 
			
		||||
#define AL_REVERB_ROOM_ROLLOFF_FACTOR            0x000C
 | 
			
		||||
#define AL_REVERB_DECAY_HFLIMIT                  0x000D
 | 
			
		||||
 | 
			
		||||
/* EAX Reverb effect parameters */
 | 
			
		||||
#define AL_EAXREVERB_DENSITY                     0x0001
 | 
			
		||||
#define AL_EAXREVERB_DIFFUSION                   0x0002
 | 
			
		||||
#define AL_EAXREVERB_GAIN                        0x0003
 | 
			
		||||
#define AL_EAXREVERB_GAINHF                      0x0004
 | 
			
		||||
#define AL_EAXREVERB_GAINLF                      0x0005
 | 
			
		||||
#define AL_EAXREVERB_DECAY_TIME                  0x0006
 | 
			
		||||
#define AL_EAXREVERB_DECAY_HFRATIO               0x0007
 | 
			
		||||
#define AL_EAXREVERB_DECAY_LFRATIO               0x0008
 | 
			
		||||
#define AL_EAXREVERB_REFLECTIONS_GAIN            0x0009
 | 
			
		||||
#define AL_EAXREVERB_REFLECTIONS_DELAY           0x000A
 | 
			
		||||
#define AL_EAXREVERB_REFLECTIONS_PAN             0x000B
 | 
			
		||||
#define AL_EAXREVERB_LATE_REVERB_GAIN            0x000C
 | 
			
		||||
#define AL_EAXREVERB_LATE_REVERB_DELAY           0x000D
 | 
			
		||||
#define AL_EAXREVERB_LATE_REVERB_PAN             0x000E
 | 
			
		||||
#define AL_EAXREVERB_ECHO_TIME                   0x000F
 | 
			
		||||
#define AL_EAXREVERB_ECHO_DEPTH                  0x0010
 | 
			
		||||
#define AL_EAXREVERB_MODULATION_TIME             0x0011
 | 
			
		||||
#define AL_EAXREVERB_MODULATION_DEPTH            0x0012
 | 
			
		||||
#define AL_EAXREVERB_AIR_ABSORPTION_GAINHF       0x0013
 | 
			
		||||
#define AL_EAXREVERB_HFREFERENCE                 0x0014
 | 
			
		||||
#define AL_EAXREVERB_LFREFERENCE                 0x0015
 | 
			
		||||
#define AL_EAXREVERB_ROOM_ROLLOFF_FACTOR         0x0016
 | 
			
		||||
#define AL_EAXREVERB_DECAY_HFLIMIT               0x0017
 | 
			
		||||
 | 
			
		||||
/* Chorus effect parameters */
 | 
			
		||||
#define AL_CHORUS_WAVEFORM                       0x0001
 | 
			
		||||
#define AL_CHORUS_PHASE                          0x0002
 | 
			
		||||
#define AL_CHORUS_RATE                           0x0003
 | 
			
		||||
#define AL_CHORUS_DEPTH                          0x0004
 | 
			
		||||
#define AL_CHORUS_FEEDBACK                       0x0005
 | 
			
		||||
#define AL_CHORUS_DELAY                          0x0006
 | 
			
		||||
 | 
			
		||||
/* Distortion effect parameters */
 | 
			
		||||
#define AL_DISTORTION_EDGE                       0x0001
 | 
			
		||||
#define AL_DISTORTION_GAIN                       0x0002
 | 
			
		||||
#define AL_DISTORTION_LOWPASS_CUTOFF             0x0003
 | 
			
		||||
#define AL_DISTORTION_EQCENTER                   0x0004
 | 
			
		||||
#define AL_DISTORTION_EQBANDWIDTH                0x0005
 | 
			
		||||
 | 
			
		||||
/* Echo effect parameters */
 | 
			
		||||
#define AL_ECHO_DELAY                            0x0001
 | 
			
		||||
#define AL_ECHO_LRDELAY                          0x0002
 | 
			
		||||
#define AL_ECHO_DAMPING                          0x0003
 | 
			
		||||
#define AL_ECHO_FEEDBACK                         0x0004
 | 
			
		||||
#define AL_ECHO_SPREAD                           0x0005
 | 
			
		||||
 | 
			
		||||
/* Flanger effect parameters */
 | 
			
		||||
#define AL_FLANGER_WAVEFORM                      0x0001
 | 
			
		||||
#define AL_FLANGER_PHASE                         0x0002
 | 
			
		||||
#define AL_FLANGER_RATE                          0x0003
 | 
			
		||||
#define AL_FLANGER_DEPTH                         0x0004
 | 
			
		||||
#define AL_FLANGER_FEEDBACK                      0x0005
 | 
			
		||||
#define AL_FLANGER_DELAY                         0x0006
 | 
			
		||||
 | 
			
		||||
/* Frequency shifter effect parameters */
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_FREQUENCY           0x0001
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_LEFT_DIRECTION      0x0002
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_RIGHT_DIRECTION     0x0003
 | 
			
		||||
 | 
			
		||||
/* Vocal morpher effect parameters */
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEMEA                0x0001
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEMEA_COARSE_TUNING  0x0002
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEMEB                0x0003
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEMEB_COARSE_TUNING  0x0004
 | 
			
		||||
#define AL_VOCAL_MORPHER_WAVEFORM                0x0005
 | 
			
		||||
#define AL_VOCAL_MORPHER_RATE                    0x0006
 | 
			
		||||
 | 
			
		||||
/* Pitchshifter effect parameters */
 | 
			
		||||
#define AL_PITCH_SHIFTER_COARSE_TUNE             0x0001
 | 
			
		||||
#define AL_PITCH_SHIFTER_FINE_TUNE               0x0002
 | 
			
		||||
 | 
			
		||||
/* Ringmodulator effect parameters */
 | 
			
		||||
#define AL_RING_MODULATOR_FREQUENCY              0x0001
 | 
			
		||||
#define AL_RING_MODULATOR_HIGHPASS_CUTOFF        0x0002
 | 
			
		||||
#define AL_RING_MODULATOR_WAVEFORM               0x0003
 | 
			
		||||
 | 
			
		||||
/* Autowah effect parameters */
 | 
			
		||||
#define AL_AUTOWAH_ATTACK_TIME                   0x0001
 | 
			
		||||
#define AL_AUTOWAH_RELEASE_TIME                  0x0002
 | 
			
		||||
#define AL_AUTOWAH_RESONANCE                     0x0003
 | 
			
		||||
#define AL_AUTOWAH_PEAK_GAIN                     0x0004
 | 
			
		||||
 | 
			
		||||
/* Compressor effect parameters */
 | 
			
		||||
#define AL_COMPRESSOR_ONOFF                      0x0001
 | 
			
		||||
 | 
			
		||||
/* Equalizer effect parameters */
 | 
			
		||||
#define AL_EQUALIZER_LOW_GAIN                    0x0001
 | 
			
		||||
#define AL_EQUALIZER_LOW_CUTOFF                  0x0002
 | 
			
		||||
#define AL_EQUALIZER_MID1_GAIN                   0x0003
 | 
			
		||||
#define AL_EQUALIZER_MID1_CENTER                 0x0004
 | 
			
		||||
#define AL_EQUALIZER_MID1_WIDTH                  0x0005
 | 
			
		||||
#define AL_EQUALIZER_MID2_GAIN                   0x0006
 | 
			
		||||
#define AL_EQUALIZER_MID2_CENTER                 0x0007
 | 
			
		||||
#define AL_EQUALIZER_MID2_WIDTH                  0x0008
 | 
			
		||||
#define AL_EQUALIZER_HIGH_GAIN                   0x0009
 | 
			
		||||
#define AL_EQUALIZER_HIGH_CUTOFF                 0x000A
 | 
			
		||||
 | 
			
		||||
/* Effect type */
 | 
			
		||||
#define AL_EFFECT_FIRST_PARAMETER                0x0000
 | 
			
		||||
#define AL_EFFECT_LAST_PARAMETER                 0x8000
 | 
			
		||||
#define AL_EFFECT_TYPE                           0x8001
 | 
			
		||||
 | 
			
		||||
/* Effect types, used with the AL_EFFECT_TYPE property */
 | 
			
		||||
#define AL_EFFECT_NULL                           0x0000
 | 
			
		||||
#define AL_EFFECT_REVERB                         0x0001
 | 
			
		||||
#define AL_EFFECT_CHORUS                         0x0002
 | 
			
		||||
#define AL_EFFECT_DISTORTION                     0x0003
 | 
			
		||||
#define AL_EFFECT_ECHO                           0x0004
 | 
			
		||||
#define AL_EFFECT_FLANGER                        0x0005
 | 
			
		||||
#define AL_EFFECT_FREQUENCY_SHIFTER              0x0006
 | 
			
		||||
#define AL_EFFECT_VOCAL_MORPHER                  0x0007
 | 
			
		||||
#define AL_EFFECT_PITCH_SHIFTER                  0x0008
 | 
			
		||||
#define AL_EFFECT_RING_MODULATOR                 0x0009
 | 
			
		||||
#define AL_EFFECT_AUTOWAH                        0x000A
 | 
			
		||||
#define AL_EFFECT_COMPRESSOR                     0x000B
 | 
			
		||||
#define AL_EFFECT_EQUALIZER                      0x000C
 | 
			
		||||
#define AL_EFFECT_EAXREVERB                      0x8000
 | 
			
		||||
 | 
			
		||||
/* Auxiliary Effect Slot properties. */
 | 
			
		||||
#define AL_EFFECTSLOT_EFFECT                     0x0001
 | 
			
		||||
#define AL_EFFECTSLOT_GAIN                       0x0002
 | 
			
		||||
#define AL_EFFECTSLOT_AUXILIARY_SEND_AUTO        0x0003
 | 
			
		||||
 | 
			
		||||
/* NULL Auxiliary Slot ID to disable a source send. */
 | 
			
		||||
#define AL_EFFECTSLOT_NULL                       0x0000
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Filter properties. */
 | 
			
		||||
 | 
			
		||||
/* Lowpass filter parameters */
 | 
			
		||||
#define AL_LOWPASS_GAIN                          0x0001
 | 
			
		||||
#define AL_LOWPASS_GAINHF                        0x0002
 | 
			
		||||
 | 
			
		||||
/* Highpass filter parameters */
 | 
			
		||||
#define AL_HIGHPASS_GAIN                         0x0001
 | 
			
		||||
#define AL_HIGHPASS_GAINLF                       0x0002
 | 
			
		||||
 | 
			
		||||
/* Bandpass filter parameters */
 | 
			
		||||
#define AL_BANDPASS_GAIN                         0x0001
 | 
			
		||||
#define AL_BANDPASS_GAINLF                       0x0002
 | 
			
		||||
#define AL_BANDPASS_GAINHF                       0x0003
 | 
			
		||||
 | 
			
		||||
/* Filter type */
 | 
			
		||||
#define AL_FILTER_FIRST_PARAMETER                0x0000
 | 
			
		||||
#define AL_FILTER_LAST_PARAMETER                 0x8000
 | 
			
		||||
#define AL_FILTER_TYPE                           0x8001
 | 
			
		||||
 | 
			
		||||
/* Filter types, used with the AL_FILTER_TYPE property */
 | 
			
		||||
#define AL_FILTER_NULL                           0x0000
 | 
			
		||||
#define AL_FILTER_LOWPASS                        0x0001
 | 
			
		||||
#define AL_FILTER_HIGHPASS                       0x0002
 | 
			
		||||
#define AL_FILTER_BANDPASS                       0x0003
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Effect object function types. */
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGENEFFECTS)(ALsizei, ALuint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALDELETEEFFECTS)(ALsizei, const ALuint*);
 | 
			
		||||
typedef ALboolean (AL_APIENTRY *LPALISEFFECT)(ALuint);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALEFFECTI)(ALuint, ALenum, ALint);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALEFFECTIV)(ALuint, ALenum, const ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALEFFECTF)(ALuint, ALenum, ALfloat);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALEFFECTFV)(ALuint, ALenum, const ALfloat*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETEFFECTI)(ALuint, ALenum, ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETEFFECTIV)(ALuint, ALenum, ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETEFFECTF)(ALuint, ALenum, ALfloat*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETEFFECTFV)(ALuint, ALenum, ALfloat*);
 | 
			
		||||
 | 
			
		||||
/* Filter object function types. */
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGENFILTERS)(ALsizei, ALuint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALDELETEFILTERS)(ALsizei, const ALuint*);
 | 
			
		||||
typedef ALboolean (AL_APIENTRY *LPALISFILTER)(ALuint);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALFILTERI)(ALuint, ALenum, ALint);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALFILTERIV)(ALuint, ALenum, const ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALFILTERF)(ALuint, ALenum, ALfloat);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALFILTERFV)(ALuint, ALenum, const ALfloat*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETFILTERI)(ALuint, ALenum, ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETFILTERIV)(ALuint, ALenum, ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETFILTERF)(ALuint, ALenum, ALfloat*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETFILTERFV)(ALuint, ALenum, ALfloat*);
 | 
			
		||||
 | 
			
		||||
/* Auxiliary Effect Slot object function types. */
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGENAUXILIARYEFFECTSLOTS)(ALsizei, ALuint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALDELETEAUXILIARYEFFECTSLOTS)(ALsizei, const ALuint*);
 | 
			
		||||
typedef ALboolean (AL_APIENTRY *LPALISAUXILIARYEFFECTSLOT)(ALuint);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, const ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, const ALfloat*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, ALfloat*);
 | 
			
		||||
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alDeleteEffects(ALsizei n, const ALuint *effects);
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsEffect(ALuint effect);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alEffecti(ALuint effect, ALenum param, ALint iValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alEffectiv(ALuint effect, ALenum param, const ALint *piValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alEffectf(ALuint effect, ALenum param, ALfloat flValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alEffectfv(ALuint effect, ALenum param, const ALfloat *pflValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *piValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *piValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *pflValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);
 | 
			
		||||
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGenFilters(ALsizei n, ALuint *filters);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alDeleteFilters(ALsizei n, const ALuint *filters);
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsFilter(ALuint filter);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alFilteri(ALuint filter, ALenum param, ALint iValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alFilteriv(ALuint filter, ALenum param, const ALint *piValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alFilterf(ALuint filter, ALenum param, ALfloat flValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alFilterfv(ALuint filter, ALenum param, const ALfloat *pflValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetFilteri(ALuint filter, ALenum param, ALint *piValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetFilteriv(ALuint filter, ALenum param, ALint *piValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetFilterf(ALuint filter, ALenum param, ALfloat *pflValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetFilterfv(ALuint filter, ALenum param, ALfloat *pflValues);
 | 
			
		||||
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslots);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alDeleteAuxiliaryEffectSlots(ALsizei n, const ALuint *effectslots);
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsAuxiliaryEffectSlot(ALuint effectslot);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint iValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, const ALint *piValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat flValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, const ALfloat *pflValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint *piValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, ALint *piValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat *pflValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, ALfloat *pflValues);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Filter ranges and defaults. */
 | 
			
		||||
 | 
			
		||||
/* Lowpass filter */
 | 
			
		||||
#define AL_LOWPASS_MIN_GAIN                      (0.0f)
 | 
			
		||||
#define AL_LOWPASS_MAX_GAIN                      (1.0f)
 | 
			
		||||
#define AL_LOWPASS_DEFAULT_GAIN                  (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_LOWPASS_MIN_GAINHF                    (0.0f)
 | 
			
		||||
#define AL_LOWPASS_MAX_GAINHF                    (1.0f)
 | 
			
		||||
#define AL_LOWPASS_DEFAULT_GAINHF                (1.0f)
 | 
			
		||||
 | 
			
		||||
/* Highpass filter */
 | 
			
		||||
#define AL_HIGHPASS_MIN_GAIN                     (0.0f)
 | 
			
		||||
#define AL_HIGHPASS_MAX_GAIN                     (1.0f)
 | 
			
		||||
#define AL_HIGHPASS_DEFAULT_GAIN                 (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_HIGHPASS_MIN_GAINLF                   (0.0f)
 | 
			
		||||
#define AL_HIGHPASS_MAX_GAINLF                   (1.0f)
 | 
			
		||||
#define AL_HIGHPASS_DEFAULT_GAINLF               (1.0f)
 | 
			
		||||
 | 
			
		||||
/* Bandpass filter */
 | 
			
		||||
#define AL_BANDPASS_MIN_GAIN                     (0.0f)
 | 
			
		||||
#define AL_BANDPASS_MAX_GAIN                     (1.0f)
 | 
			
		||||
#define AL_BANDPASS_DEFAULT_GAIN                 (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_BANDPASS_MIN_GAINHF                   (0.0f)
 | 
			
		||||
#define AL_BANDPASS_MAX_GAINHF                   (1.0f)
 | 
			
		||||
#define AL_BANDPASS_DEFAULT_GAINHF               (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_BANDPASS_MIN_GAINLF                   (0.0f)
 | 
			
		||||
#define AL_BANDPASS_MAX_GAINLF                   (1.0f)
 | 
			
		||||
#define AL_BANDPASS_DEFAULT_GAINLF               (1.0f)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Effect parameter ranges and defaults. */
 | 
			
		||||
 | 
			
		||||
/* Standard reverb effect */
 | 
			
		||||
#define AL_REVERB_MIN_DENSITY                    (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_DENSITY                    (1.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_DENSITY                (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_DIFFUSION                  (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_DIFFUSION                  (1.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_DIFFUSION              (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_GAIN                       (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_GAIN                       (1.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_GAIN                   (0.32f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_GAINHF                     (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_GAINHF                     (1.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_GAINHF                 (0.89f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_DECAY_TIME                 (0.1f)
 | 
			
		||||
#define AL_REVERB_MAX_DECAY_TIME                 (20.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_DECAY_TIME             (1.49f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_DECAY_HFRATIO              (0.1f)
 | 
			
		||||
#define AL_REVERB_MAX_DECAY_HFRATIO              (2.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_DECAY_HFRATIO          (0.83f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_REFLECTIONS_GAIN           (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_REFLECTIONS_GAIN           (3.16f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_REFLECTIONS_GAIN       (0.05f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_REFLECTIONS_DELAY          (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_REFLECTIONS_DELAY          (0.3f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_REFLECTIONS_DELAY      (0.007f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_LATE_REVERB_GAIN           (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_LATE_REVERB_GAIN           (10.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_LATE_REVERB_GAIN       (1.26f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_LATE_REVERB_DELAY          (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_LATE_REVERB_DELAY          (0.1f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_LATE_REVERB_DELAY      (0.011f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_AIR_ABSORPTION_GAINHF      (0.892f)
 | 
			
		||||
#define AL_REVERB_MAX_AIR_ABSORPTION_GAINHF      (1.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_AIR_ABSORPTION_GAINHF  (0.994f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_ROOM_ROLLOFF_FACTOR        (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_ROOM_ROLLOFF_FACTOR        (10.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_ROOM_ROLLOFF_FACTOR    (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_DECAY_HFLIMIT              AL_FALSE
 | 
			
		||||
#define AL_REVERB_MAX_DECAY_HFLIMIT              AL_TRUE
 | 
			
		||||
#define AL_REVERB_DEFAULT_DECAY_HFLIMIT          AL_TRUE
 | 
			
		||||
 | 
			
		||||
/* EAX reverb effect */
 | 
			
		||||
#define AL_EAXREVERB_MIN_DENSITY                 (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_DENSITY                 (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_DENSITY             (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_DIFFUSION               (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_DIFFUSION               (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_DIFFUSION           (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_GAIN                    (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_GAIN                    (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_GAIN                (0.32f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_GAINHF                  (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_GAINHF                  (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_GAINHF              (0.89f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_GAINLF                  (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_GAINLF                  (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_GAINLF              (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_DECAY_TIME              (0.1f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_DECAY_TIME              (20.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_DECAY_TIME          (1.49f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_DECAY_HFRATIO           (0.1f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_DECAY_HFRATIO           (2.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_DECAY_HFRATIO       (0.83f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_DECAY_LFRATIO           (0.1f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_DECAY_LFRATIO           (2.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_DECAY_LFRATIO       (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_REFLECTIONS_GAIN        (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_REFLECTIONS_GAIN        (3.16f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_GAIN    (0.05f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_REFLECTIONS_DELAY       (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_REFLECTIONS_DELAY       (0.3f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_DELAY   (0.007f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_PAN_XYZ (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_LATE_REVERB_GAIN        (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_LATE_REVERB_GAIN        (10.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_LATE_REVERB_GAIN    (1.26f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_LATE_REVERB_DELAY       (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_LATE_REVERB_DELAY       (0.1f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_LATE_REVERB_DELAY   (0.011f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_LATE_REVERB_PAN_XYZ (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_ECHO_TIME               (0.075f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_ECHO_TIME               (0.25f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_ECHO_TIME           (0.25f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_ECHO_DEPTH              (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_ECHO_DEPTH              (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_ECHO_DEPTH          (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_MODULATION_TIME         (0.04f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_MODULATION_TIME         (4.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_MODULATION_TIME     (0.25f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_MODULATION_DEPTH        (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_MODULATION_DEPTH        (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_MODULATION_DEPTH    (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_AIR_ABSORPTION_GAINHF   (0.892f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_AIR_ABSORPTION_GAINHF   (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_HFREFERENCE             (1000.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_HFREFERENCE             (20000.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_HFREFERENCE         (5000.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_LFREFERENCE             (20.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_LFREFERENCE             (1000.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_LFREFERENCE         (250.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_ROOM_ROLLOFF_FACTOR     (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_ROOM_ROLLOFF_FACTOR     (10.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_DECAY_HFLIMIT           AL_FALSE
 | 
			
		||||
#define AL_EAXREVERB_MAX_DECAY_HFLIMIT           AL_TRUE
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_DECAY_HFLIMIT       AL_TRUE
 | 
			
		||||
 | 
			
		||||
/* Chorus effect */
 | 
			
		||||
#define AL_CHORUS_WAVEFORM_SINUSOID              (0)
 | 
			
		||||
#define AL_CHORUS_WAVEFORM_TRIANGLE              (1)
 | 
			
		||||
 | 
			
		||||
#define AL_CHORUS_MIN_WAVEFORM                   (0)
 | 
			
		||||
#define AL_CHORUS_MAX_WAVEFORM                   (1)
 | 
			
		||||
#define AL_CHORUS_DEFAULT_WAVEFORM               (1)
 | 
			
		||||
 | 
			
		||||
#define AL_CHORUS_MIN_PHASE                      (-180)
 | 
			
		||||
#define AL_CHORUS_MAX_PHASE                      (180)
 | 
			
		||||
#define AL_CHORUS_DEFAULT_PHASE                  (90)
 | 
			
		||||
 | 
			
		||||
#define AL_CHORUS_MIN_RATE                       (0.0f)
 | 
			
		||||
#define AL_CHORUS_MAX_RATE                       (10.0f)
 | 
			
		||||
#define AL_CHORUS_DEFAULT_RATE                   (1.1f)
 | 
			
		||||
 | 
			
		||||
#define AL_CHORUS_MIN_DEPTH                      (0.0f)
 | 
			
		||||
#define AL_CHORUS_MAX_DEPTH                      (1.0f)
 | 
			
		||||
#define AL_CHORUS_DEFAULT_DEPTH                  (0.1f)
 | 
			
		||||
 | 
			
		||||
#define AL_CHORUS_MIN_FEEDBACK                   (-1.0f)
 | 
			
		||||
#define AL_CHORUS_MAX_FEEDBACK                   (1.0f)
 | 
			
		||||
#define AL_CHORUS_DEFAULT_FEEDBACK               (0.25f)
 | 
			
		||||
 | 
			
		||||
#define AL_CHORUS_MIN_DELAY                      (0.0f)
 | 
			
		||||
#define AL_CHORUS_MAX_DELAY                      (0.016f)
 | 
			
		||||
#define AL_CHORUS_DEFAULT_DELAY                  (0.016f)
 | 
			
		||||
 | 
			
		||||
/* Distortion effect */
 | 
			
		||||
#define AL_DISTORTION_MIN_EDGE                   (0.0f)
 | 
			
		||||
#define AL_DISTORTION_MAX_EDGE                   (1.0f)
 | 
			
		||||
#define AL_DISTORTION_DEFAULT_EDGE               (0.2f)
 | 
			
		||||
 | 
			
		||||
#define AL_DISTORTION_MIN_GAIN                   (0.01f)
 | 
			
		||||
#define AL_DISTORTION_MAX_GAIN                   (1.0f)
 | 
			
		||||
#define AL_DISTORTION_DEFAULT_GAIN               (0.05f)
 | 
			
		||||
 | 
			
		||||
#define AL_DISTORTION_MIN_LOWPASS_CUTOFF         (80.0f)
 | 
			
		||||
#define AL_DISTORTION_MAX_LOWPASS_CUTOFF         (24000.0f)
 | 
			
		||||
#define AL_DISTORTION_DEFAULT_LOWPASS_CUTOFF     (8000.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_DISTORTION_MIN_EQCENTER               (80.0f)
 | 
			
		||||
#define AL_DISTORTION_MAX_EQCENTER               (24000.0f)
 | 
			
		||||
#define AL_DISTORTION_DEFAULT_EQCENTER           (3600.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_DISTORTION_MIN_EQBANDWIDTH            (80.0f)
 | 
			
		||||
#define AL_DISTORTION_MAX_EQBANDWIDTH            (24000.0f)
 | 
			
		||||
#define AL_DISTORTION_DEFAULT_EQBANDWIDTH        (3600.0f)
 | 
			
		||||
 | 
			
		||||
/* Echo effect */
 | 
			
		||||
#define AL_ECHO_MIN_DELAY                        (0.0f)
 | 
			
		||||
#define AL_ECHO_MAX_DELAY                        (0.207f)
 | 
			
		||||
#define AL_ECHO_DEFAULT_DELAY                    (0.1f)
 | 
			
		||||
 | 
			
		||||
#define AL_ECHO_MIN_LRDELAY                      (0.0f)
 | 
			
		||||
#define AL_ECHO_MAX_LRDELAY                      (0.404f)
 | 
			
		||||
#define AL_ECHO_DEFAULT_LRDELAY                  (0.1f)
 | 
			
		||||
 | 
			
		||||
#define AL_ECHO_MIN_DAMPING                      (0.0f)
 | 
			
		||||
#define AL_ECHO_MAX_DAMPING                      (0.99f)
 | 
			
		||||
#define AL_ECHO_DEFAULT_DAMPING                  (0.5f)
 | 
			
		||||
 | 
			
		||||
#define AL_ECHO_MIN_FEEDBACK                     (0.0f)
 | 
			
		||||
#define AL_ECHO_MAX_FEEDBACK                     (1.0f)
 | 
			
		||||
#define AL_ECHO_DEFAULT_FEEDBACK                 (0.5f)
 | 
			
		||||
 | 
			
		||||
#define AL_ECHO_MIN_SPREAD                       (-1.0f)
 | 
			
		||||
#define AL_ECHO_MAX_SPREAD                       (1.0f)
 | 
			
		||||
#define AL_ECHO_DEFAULT_SPREAD                   (-1.0f)
 | 
			
		||||
 | 
			
		||||
/* Flanger effect */
 | 
			
		||||
#define AL_FLANGER_WAVEFORM_SINUSOID             (0)
 | 
			
		||||
#define AL_FLANGER_WAVEFORM_TRIANGLE             (1)
 | 
			
		||||
 | 
			
		||||
#define AL_FLANGER_MIN_WAVEFORM                  (0)
 | 
			
		||||
#define AL_FLANGER_MAX_WAVEFORM                  (1)
 | 
			
		||||
#define AL_FLANGER_DEFAULT_WAVEFORM              (1)
 | 
			
		||||
 | 
			
		||||
#define AL_FLANGER_MIN_PHASE                     (-180)
 | 
			
		||||
#define AL_FLANGER_MAX_PHASE                     (180)
 | 
			
		||||
#define AL_FLANGER_DEFAULT_PHASE                 (0)
 | 
			
		||||
 | 
			
		||||
#define AL_FLANGER_MIN_RATE                      (0.0f)
 | 
			
		||||
#define AL_FLANGER_MAX_RATE                      (10.0f)
 | 
			
		||||
#define AL_FLANGER_DEFAULT_RATE                  (0.27f)
 | 
			
		||||
 | 
			
		||||
#define AL_FLANGER_MIN_DEPTH                     (0.0f)
 | 
			
		||||
#define AL_FLANGER_MAX_DEPTH                     (1.0f)
 | 
			
		||||
#define AL_FLANGER_DEFAULT_DEPTH                 (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_FLANGER_MIN_FEEDBACK                  (-1.0f)
 | 
			
		||||
#define AL_FLANGER_MAX_FEEDBACK                  (1.0f)
 | 
			
		||||
#define AL_FLANGER_DEFAULT_FEEDBACK              (-0.5f)
 | 
			
		||||
 | 
			
		||||
#define AL_FLANGER_MIN_DELAY                     (0.0f)
 | 
			
		||||
#define AL_FLANGER_MAX_DELAY                     (0.004f)
 | 
			
		||||
#define AL_FLANGER_DEFAULT_DELAY                 (0.002f)
 | 
			
		||||
 | 
			
		||||
/* Frequency shifter effect */
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_MIN_FREQUENCY       (0.0f)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_MAX_FREQUENCY       (24000.0f)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_DEFAULT_FREQUENCY   (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_MIN_LEFT_DIRECTION  (0)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_MAX_LEFT_DIRECTION  (2)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_DEFAULT_LEFT_DIRECTION (0)
 | 
			
		||||
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_DIRECTION_DOWN      (0)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_DIRECTION_UP        (1)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_DIRECTION_OFF       (2)
 | 
			
		||||
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_MIN_RIGHT_DIRECTION (0)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_MAX_RIGHT_DIRECTION (2)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_DEFAULT_RIGHT_DIRECTION (0)
 | 
			
		||||
 | 
			
		||||
/* Vocal morpher effect */
 | 
			
		||||
#define AL_VOCAL_MORPHER_MIN_PHONEMEA            (0)
 | 
			
		||||
#define AL_VOCAL_MORPHER_MAX_PHONEMEA            (29)
 | 
			
		||||
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA        (0)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_MIN_PHONEMEA_COARSE_TUNING (-24)
 | 
			
		||||
#define AL_VOCAL_MORPHER_MAX_PHONEMEA_COARSE_TUNING (24)
 | 
			
		||||
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA_COARSE_TUNING (0)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_MIN_PHONEMEB            (0)
 | 
			
		||||
#define AL_VOCAL_MORPHER_MAX_PHONEMEB            (29)
 | 
			
		||||
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB        (10)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_MIN_PHONEMEB_COARSE_TUNING (-24)
 | 
			
		||||
#define AL_VOCAL_MORPHER_MAX_PHONEMEB_COARSE_TUNING (24)
 | 
			
		||||
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB_COARSE_TUNING (0)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_A               (0)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_E               (1)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_I               (2)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_O               (3)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_U               (4)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_AA              (5)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_AE              (6)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_AH              (7)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_AO              (8)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_EH              (9)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_ER              (10)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_IH              (11)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_IY              (12)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_UH              (13)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_UW              (14)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_B               (15)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_D               (16)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_F               (17)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_G               (18)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_J               (19)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_K               (20)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_L               (21)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_M               (22)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_N               (23)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_P               (24)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_R               (25)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_S               (26)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_T               (27)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_V               (28)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_Z               (29)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_WAVEFORM_SINUSOID       (0)
 | 
			
		||||
#define AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE       (1)
 | 
			
		||||
#define AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH       (2)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_MIN_WAVEFORM            (0)
 | 
			
		||||
#define AL_VOCAL_MORPHER_MAX_WAVEFORM            (2)
 | 
			
		||||
#define AL_VOCAL_MORPHER_DEFAULT_WAVEFORM        (0)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_MIN_RATE                (0.0f)
 | 
			
		||||
#define AL_VOCAL_MORPHER_MAX_RATE                (10.0f)
 | 
			
		||||
#define AL_VOCAL_MORPHER_DEFAULT_RATE            (1.41f)
 | 
			
		||||
 | 
			
		||||
/* Pitch shifter effect */
 | 
			
		||||
#define AL_PITCH_SHIFTER_MIN_COARSE_TUNE         (-12)
 | 
			
		||||
#define AL_PITCH_SHIFTER_MAX_COARSE_TUNE         (12)
 | 
			
		||||
#define AL_PITCH_SHIFTER_DEFAULT_COARSE_TUNE     (12)
 | 
			
		||||
 | 
			
		||||
#define AL_PITCH_SHIFTER_MIN_FINE_TUNE           (-50)
 | 
			
		||||
#define AL_PITCH_SHIFTER_MAX_FINE_TUNE           (50)
 | 
			
		||||
#define AL_PITCH_SHIFTER_DEFAULT_FINE_TUNE       (0)
 | 
			
		||||
 | 
			
		||||
/* Ring modulator effect */
 | 
			
		||||
#define AL_RING_MODULATOR_MIN_FREQUENCY          (0.0f)
 | 
			
		||||
#define AL_RING_MODULATOR_MAX_FREQUENCY          (8000.0f)
 | 
			
		||||
#define AL_RING_MODULATOR_DEFAULT_FREQUENCY      (440.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_RING_MODULATOR_MIN_HIGHPASS_CUTOFF    (0.0f)
 | 
			
		||||
#define AL_RING_MODULATOR_MAX_HIGHPASS_CUTOFF    (24000.0f)
 | 
			
		||||
#define AL_RING_MODULATOR_DEFAULT_HIGHPASS_CUTOFF (800.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_RING_MODULATOR_SINUSOID               (0)
 | 
			
		||||
#define AL_RING_MODULATOR_SAWTOOTH               (1)
 | 
			
		||||
#define AL_RING_MODULATOR_SQUARE                 (2)
 | 
			
		||||
 | 
			
		||||
#define AL_RING_MODULATOR_MIN_WAVEFORM           (0)
 | 
			
		||||
#define AL_RING_MODULATOR_MAX_WAVEFORM           (2)
 | 
			
		||||
#define AL_RING_MODULATOR_DEFAULT_WAVEFORM       (0)
 | 
			
		||||
 | 
			
		||||
/* Autowah effect */
 | 
			
		||||
#define AL_AUTOWAH_MIN_ATTACK_TIME               (0.0001f)
 | 
			
		||||
#define AL_AUTOWAH_MAX_ATTACK_TIME               (1.0f)
 | 
			
		||||
#define AL_AUTOWAH_DEFAULT_ATTACK_TIME           (0.06f)
 | 
			
		||||
 | 
			
		||||
#define AL_AUTOWAH_MIN_RELEASE_TIME              (0.0001f)
 | 
			
		||||
#define AL_AUTOWAH_MAX_RELEASE_TIME              (1.0f)
 | 
			
		||||
#define AL_AUTOWAH_DEFAULT_RELEASE_TIME          (0.06f)
 | 
			
		||||
 | 
			
		||||
#define AL_AUTOWAH_MIN_RESONANCE                 (2.0f)
 | 
			
		||||
#define AL_AUTOWAH_MAX_RESONANCE                 (1000.0f)
 | 
			
		||||
#define AL_AUTOWAH_DEFAULT_RESONANCE             (1000.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_AUTOWAH_MIN_PEAK_GAIN                 (0.00003f)
 | 
			
		||||
#define AL_AUTOWAH_MAX_PEAK_GAIN                 (31621.0f)
 | 
			
		||||
#define AL_AUTOWAH_DEFAULT_PEAK_GAIN             (11.22f)
 | 
			
		||||
 | 
			
		||||
/* Compressor effect */
 | 
			
		||||
#define AL_COMPRESSOR_MIN_ONOFF                  (0)
 | 
			
		||||
#define AL_COMPRESSOR_MAX_ONOFF                  (1)
 | 
			
		||||
#define AL_COMPRESSOR_DEFAULT_ONOFF              (1)
 | 
			
		||||
 | 
			
		||||
/* Equalizer effect */
 | 
			
		||||
#define AL_EQUALIZER_MIN_LOW_GAIN                (0.126f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_LOW_GAIN                (7.943f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_LOW_GAIN            (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_LOW_CUTOFF              (50.0f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_LOW_CUTOFF              (800.0f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_LOW_CUTOFF          (200.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_MID1_GAIN               (0.126f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_MID1_GAIN               (7.943f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_MID1_GAIN           (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_MID1_CENTER             (200.0f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_MID1_CENTER             (3000.0f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_MID1_CENTER         (500.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_MID1_WIDTH              (0.01f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_MID1_WIDTH              (1.0f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_MID1_WIDTH          (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_MID2_GAIN               (0.126f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_MID2_GAIN               (7.943f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_MID2_GAIN           (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_MID2_CENTER             (1000.0f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_MID2_CENTER             (8000.0f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_MID2_CENTER         (3000.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_MID2_WIDTH              (0.01f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_MID2_WIDTH              (1.0f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_MID2_WIDTH          (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_HIGH_GAIN               (0.126f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_HIGH_GAIN               (7.943f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_HIGH_GAIN           (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_HIGH_CUTOFF             (4000.0f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_HIGH_CUTOFF             (16000.0f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_HIGH_CUTOFF         (6000.0f)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Source parameter value ranges and defaults. */
 | 
			
		||||
#define AL_MIN_AIR_ABSORPTION_FACTOR             (0.0f)
 | 
			
		||||
#define AL_MAX_AIR_ABSORPTION_FACTOR             (10.0f)
 | 
			
		||||
#define AL_DEFAULT_AIR_ABSORPTION_FACTOR         (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_MIN_ROOM_ROLLOFF_FACTOR               (0.0f)
 | 
			
		||||
#define AL_MAX_ROOM_ROLLOFF_FACTOR               (10.0f)
 | 
			
		||||
#define AL_DEFAULT_ROOM_ROLLOFF_FACTOR           (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_MIN_CONE_OUTER_GAINHF                 (0.0f)
 | 
			
		||||
#define AL_MAX_CONE_OUTER_GAINHF                 (1.0f)
 | 
			
		||||
#define AL_DEFAULT_CONE_OUTER_GAINHF             (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_MIN_DIRECT_FILTER_GAINHF_AUTO         AL_FALSE
 | 
			
		||||
#define AL_MAX_DIRECT_FILTER_GAINHF_AUTO         AL_TRUE
 | 
			
		||||
#define AL_DEFAULT_DIRECT_FILTER_GAINHF_AUTO     AL_TRUE
 | 
			
		||||
 | 
			
		||||
#define AL_MIN_AUXILIARY_SEND_FILTER_GAIN_AUTO   AL_FALSE
 | 
			
		||||
#define AL_MAX_AUXILIARY_SEND_FILTER_GAIN_AUTO   AL_TRUE
 | 
			
		||||
#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE
 | 
			
		||||
 | 
			
		||||
#define AL_MIN_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_FALSE
 | 
			
		||||
#define AL_MAX_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
 | 
			
		||||
#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Listener parameter value ranges and defaults. */
 | 
			
		||||
#define AL_MIN_METERS_PER_UNIT                   FLT_MIN
 | 
			
		||||
#define AL_MAX_METERS_PER_UNIT                   FLT_MAX
 | 
			
		||||
#define AL_DEFAULT_METERS_PER_UNIT               (1.0f)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}  /* extern "C" */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* AL_EFX_H */
 | 
			
		||||
@@ -1,132 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Main include header for the SDL library
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_H
 | 
			
		||||
#define _SDL_H
 | 
			
		||||
 | 
			
		||||
#include "SDL_main.h"
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_assert.h"
 | 
			
		||||
#include "SDL_atomic.h"
 | 
			
		||||
#include "SDL_audio.h"
 | 
			
		||||
#include "SDL_clipboard.h"
 | 
			
		||||
#include "SDL_cpuinfo.h"
 | 
			
		||||
#include "SDL_endian.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
#include "SDL_events.h"
 | 
			
		||||
#include "SDL_filesystem.h"
 | 
			
		||||
#include "SDL_joystick.h"
 | 
			
		||||
#include "SDL_gamecontroller.h"
 | 
			
		||||
#include "SDL_haptic.h"
 | 
			
		||||
#include "SDL_hints.h"
 | 
			
		||||
#include "SDL_loadso.h"
 | 
			
		||||
#include "SDL_log.h"
 | 
			
		||||
#include "SDL_messagebox.h"
 | 
			
		||||
#include "SDL_mutex.h"
 | 
			
		||||
#include "SDL_power.h"
 | 
			
		||||
#include "SDL_render.h"
 | 
			
		||||
#include "SDL_rwops.h"
 | 
			
		||||
#include "SDL_system.h"
 | 
			
		||||
#include "SDL_thread.h"
 | 
			
		||||
#include "SDL_timer.h"
 | 
			
		||||
#include "SDL_version.h"
 | 
			
		||||
#include "SDL_video.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* As of version 0.5, SDL is loaded dynamically into the application */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name SDL_INIT_*
 | 
			
		||||
 *
 | 
			
		||||
 *  These are the flags which may be passed to SDL_Init().  You should
 | 
			
		||||
 *  specify the subsystems which you will be using in your application.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define SDL_INIT_TIMER          0x00000001
 | 
			
		||||
#define SDL_INIT_AUDIO          0x00000010
 | 
			
		||||
#define SDL_INIT_VIDEO          0x00000020  /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */
 | 
			
		||||
#define SDL_INIT_JOYSTICK       0x00000200  /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */
 | 
			
		||||
#define SDL_INIT_HAPTIC         0x00001000
 | 
			
		||||
#define SDL_INIT_GAMECONTROLLER 0x00002000  /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */
 | 
			
		||||
#define SDL_INIT_EVENTS         0x00004000
 | 
			
		||||
#define SDL_INIT_NOPARACHUTE    0x00100000  /**< compatibility; this flag is ignored. */
 | 
			
		||||
#define SDL_INIT_EVERYTHING ( \
 | 
			
		||||
                SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \
 | 
			
		||||
                SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER \
 | 
			
		||||
            )
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function initializes  the subsystems specified by \c flags
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function initializes specific SDL subsystems
 | 
			
		||||
 *
 | 
			
		||||
 *  Subsystem initialization is ref-counted, you must call
 | 
			
		||||
 *  SDL_QuitSubSystem for each SDL_InitSubSystem to correctly
 | 
			
		||||
 *  shutdown a subsystem manually (or call SDL_Quit to force shutdown).
 | 
			
		||||
 *  If a subsystem is already loaded then this call will
 | 
			
		||||
 *  increase the ref-count and return.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function cleans up specific SDL subsystems
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns a mask of the specified subsystems which have
 | 
			
		||||
 *  previously been initialized.
 | 
			
		||||
 *
 | 
			
		||||
 *  If \c flags is 0, it returns a mask of all initialized subsystems.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function cleans up all initialized subsystems. You should
 | 
			
		||||
 *  call it upon all exit conditions.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_Quit(void);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_H */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,289 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_assert_h
 | 
			
		||||
#define _SDL_assert_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_config.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SDL_ASSERT_LEVEL
 | 
			
		||||
#ifdef SDL_DEFAULT_ASSERT_LEVEL
 | 
			
		||||
#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL
 | 
			
		||||
#elif defined(_DEBUG) || defined(DEBUG) || \
 | 
			
		||||
      (defined(__GNUC__) && !defined(__OPTIMIZE__))
 | 
			
		||||
#define SDL_ASSERT_LEVEL 2
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_ASSERT_LEVEL 1
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* SDL_ASSERT_LEVEL */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
These are macros and not first class functions so that the debugger breaks
 | 
			
		||||
on the assertion line and not in some random guts of SDL, and so each
 | 
			
		||||
assert can have unique static variables associated with it.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER)
 | 
			
		||||
/* Don't include intrin.h here because it contains C++ code */
 | 
			
		||||
    extern void __cdecl __debugbreak(void);
 | 
			
		||||
    #define SDL_TriggerBreakpoint() __debugbreak()
 | 
			
		||||
#elif (!defined(__NACL__) && defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)))
 | 
			
		||||
    #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" )
 | 
			
		||||
#elif defined(HAVE_SIGNAL_H)
 | 
			
		||||
    #include <signal.h>
 | 
			
		||||
    #define SDL_TriggerBreakpoint() raise(SIGTRAP)
 | 
			
		||||
#else
 | 
			
		||||
    /* How do we trigger breakpoints on this platform? */
 | 
			
		||||
    #define SDL_TriggerBreakpoint()
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
 | 
			
		||||
#   define SDL_FUNCTION __func__
 | 
			
		||||
#elif ((__GNUC__ >= 2) || defined(_MSC_VER))
 | 
			
		||||
#   define SDL_FUNCTION __FUNCTION__
 | 
			
		||||
#else
 | 
			
		||||
#   define SDL_FUNCTION "???"
 | 
			
		||||
#endif
 | 
			
		||||
#define SDL_FILE    __FILE__
 | 
			
		||||
#define SDL_LINE    __LINE__
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
sizeof (x) makes the compiler still parse the expression even without
 | 
			
		||||
assertions enabled, so the code is always checked at compile time, but
 | 
			
		||||
doesn't actually generate code for it, so there are no side effects or
 | 
			
		||||
expensive checks at run time, just the constant size of what x WOULD be,
 | 
			
		||||
which presumably gets optimized out as unused.
 | 
			
		||||
This also solves the problem of...
 | 
			
		||||
 | 
			
		||||
    int somevalue = blah();
 | 
			
		||||
    SDL_assert(somevalue == 1);
 | 
			
		||||
 | 
			
		||||
...which would cause compiles to complain that somevalue is unused if we
 | 
			
		||||
disable assertions.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking
 | 
			
		||||
    this condition isn't constant. And looks like an owl's face! */
 | 
			
		||||
#ifdef _MSC_VER  /* stupid /W4 warnings. */
 | 
			
		||||
#define SDL_NULL_WHILE_LOOP_CONDITION (0,0)
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_NULL_WHILE_LOOP_CONDITION (0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define SDL_disabled_assert(condition) \
 | 
			
		||||
    do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION)
 | 
			
		||||
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_ASSERTION_RETRY,  /**< Retry the assert immediately. */
 | 
			
		||||
    SDL_ASSERTION_BREAK,  /**< Make the debugger trigger a breakpoint. */
 | 
			
		||||
    SDL_ASSERTION_ABORT,  /**< Terminate the program. */
 | 
			
		||||
    SDL_ASSERTION_IGNORE,  /**< Ignore the assert. */
 | 
			
		||||
    SDL_ASSERTION_ALWAYS_IGNORE  /**< Ignore the assert from now on. */
 | 
			
		||||
} SDL_AssertState;
 | 
			
		||||
 | 
			
		||||
typedef struct SDL_AssertData
 | 
			
		||||
{
 | 
			
		||||
    int always_ignore;
 | 
			
		||||
    unsigned int trigger_count;
 | 
			
		||||
    const char *condition;
 | 
			
		||||
    const char *filename;
 | 
			
		||||
    int linenum;
 | 
			
		||||
    const char *function;
 | 
			
		||||
    const struct SDL_AssertData *next;
 | 
			
		||||
} SDL_AssertData;
 | 
			
		||||
 | 
			
		||||
#if (SDL_ASSERT_LEVEL > 0)
 | 
			
		||||
 | 
			
		||||
/* Never call this directly. Use the SDL_assert* macros. */
 | 
			
		||||
extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *,
 | 
			
		||||
                                                             const char *,
 | 
			
		||||
                                                             const char *, int)
 | 
			
		||||
#if defined(__clang__)
 | 
			
		||||
#if __has_feature(attribute_analyzer_noreturn)
 | 
			
		||||
/* this tells Clang's static analysis that we're a custom assert function,
 | 
			
		||||
   and that the analyzer should assume the condition was always true past this
 | 
			
		||||
   SDL_assert test. */
 | 
			
		||||
   __attribute__((analyzer_noreturn))
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
;
 | 
			
		||||
 | 
			
		||||
/* the do {} while(0) avoids dangling else problems:
 | 
			
		||||
    if (x) SDL_assert(y); else blah();
 | 
			
		||||
       ... without the do/while, the "else" could attach to this macro's "if".
 | 
			
		||||
   We try to handle just the minimum we need here in a macro...the loop,
 | 
			
		||||
   the static vars, and break points. The heavy lifting is handled in
 | 
			
		||||
   SDL_ReportAssertion(), in SDL_assert.c.
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_enabled_assert(condition) \
 | 
			
		||||
    do { \
 | 
			
		||||
        while ( !(condition) ) { \
 | 
			
		||||
            static struct SDL_AssertData sdl_assert_data = { \
 | 
			
		||||
                0, 0, #condition, 0, 0, 0, 0 \
 | 
			
		||||
            }; \
 | 
			
		||||
            const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \
 | 
			
		||||
            if (sdl_assert_state == SDL_ASSERTION_RETRY) { \
 | 
			
		||||
                continue; /* go again. */ \
 | 
			
		||||
            } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \
 | 
			
		||||
                SDL_TriggerBreakpoint(); \
 | 
			
		||||
            } \
 | 
			
		||||
            break; /* not retrying. */ \
 | 
			
		||||
        } \
 | 
			
		||||
    } while (SDL_NULL_WHILE_LOOP_CONDITION)
 | 
			
		||||
 | 
			
		||||
#endif  /* enabled assertions support code */
 | 
			
		||||
 | 
			
		||||
/* Enable various levels of assertions. */
 | 
			
		||||
#if SDL_ASSERT_LEVEL == 0   /* assertions disabled */
 | 
			
		||||
#   define SDL_assert(condition) SDL_disabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_release(condition) SDL_disabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
 | 
			
		||||
#elif SDL_ASSERT_LEVEL == 1  /* release settings. */
 | 
			
		||||
#   define SDL_assert(condition) SDL_disabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
 | 
			
		||||
#elif SDL_ASSERT_LEVEL == 2  /* normal settings. */
 | 
			
		||||
#   define SDL_assert(condition) SDL_enabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
 | 
			
		||||
#elif SDL_ASSERT_LEVEL == 3  /* paranoid settings. */
 | 
			
		||||
#   define SDL_assert(condition) SDL_enabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
 | 
			
		||||
#   define SDL_assert_paranoid(condition) SDL_enabled_assert(condition)
 | 
			
		||||
#else
 | 
			
		||||
#   error Unknown assertion level.
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* this assertion is never disabled at any level. */
 | 
			
		||||
#define SDL_assert_always(condition) SDL_enabled_assert(condition)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)(
 | 
			
		||||
                                 const SDL_AssertData* data, void* userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set an application-defined assertion handler.
 | 
			
		||||
 *
 | 
			
		||||
 *  This allows an app to show its own assertion UI and/or force the
 | 
			
		||||
 *  response to an assertion failure. If the app doesn't provide this, SDL
 | 
			
		||||
 *  will try to do the right thing, popping up a system-specific GUI dialog,
 | 
			
		||||
 *  and probably minimizing any fullscreen windows.
 | 
			
		||||
 *
 | 
			
		||||
 *  This callback may fire from any thread, but it runs wrapped in a mutex, so
 | 
			
		||||
 *  it will only fire from one thread at a time.
 | 
			
		||||
 *
 | 
			
		||||
 *  Setting the callback to NULL restores SDL's original internal handler.
 | 
			
		||||
 *
 | 
			
		||||
 *  This callback is NOT reset to SDL's internal handler upon SDL_Quit()!
 | 
			
		||||
 *
 | 
			
		||||
 *  \return SDL_AssertState value of how to handle the assertion failure.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param handler Callback function, called when an assertion fails.
 | 
			
		||||
 *  \param userdata A pointer passed to the callback as-is.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_SetAssertionHandler(
 | 
			
		||||
                                            SDL_AssertionHandler handler,
 | 
			
		||||
                                            void *userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the default assertion handler.
 | 
			
		||||
 *
 | 
			
		||||
 *  This returns the function pointer that is called by default when an
 | 
			
		||||
 *   assertion is triggered. This is an internal function provided by SDL,
 | 
			
		||||
 *   that is used for assertions when SDL_SetAssertionHandler() hasn't been
 | 
			
		||||
 *   used to provide a different function.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return The default SDL_AssertionHandler that is called when an assert triggers.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get the current assertion handler.
 | 
			
		||||
 *
 | 
			
		||||
 *  This returns the function pointer that is called when an assertion is
 | 
			
		||||
 *   triggered. This is either the value last passed to
 | 
			
		||||
 *   SDL_SetAssertionHandler(), or if no application-specified function is
 | 
			
		||||
 *   set, is equivalent to calling SDL_GetDefaultAssertionHandler().
 | 
			
		||||
 *
 | 
			
		||||
 *   \param puserdata Pointer to a void*, which will store the "userdata"
 | 
			
		||||
 *                    pointer that was passed to SDL_SetAssertionHandler().
 | 
			
		||||
 *                    This value will always be NULL for the default handler.
 | 
			
		||||
 *                    If you don't care about this data, it is safe to pass
 | 
			
		||||
 *                    a NULL pointer to this function to ignore it.
 | 
			
		||||
 *  \return The SDL_AssertionHandler that is called when an assert triggers.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get a list of all assertion failures.
 | 
			
		||||
 *
 | 
			
		||||
 *  Get all assertions triggered since last call to SDL_ResetAssertionReport(),
 | 
			
		||||
 *  or the start of the program.
 | 
			
		||||
 *
 | 
			
		||||
 *  The proper way to examine this data looks something like this:
 | 
			
		||||
 *
 | 
			
		||||
 *  <code>
 | 
			
		||||
 *  const SDL_AssertData *item = SDL_GetAssertionReport();
 | 
			
		||||
 *  while (item) {
 | 
			
		||||
 *      printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\n",
 | 
			
		||||
 *             item->condition, item->function, item->filename,
 | 
			
		||||
 *             item->linenum, item->trigger_count,
 | 
			
		||||
 *             item->always_ignore ? "yes" : "no");
 | 
			
		||||
 *      item = item->next;
 | 
			
		||||
 *  }
 | 
			
		||||
 *  </code>
 | 
			
		||||
 *
 | 
			
		||||
 *  \return List of all assertions.
 | 
			
		||||
 *  \sa SDL_ResetAssertionReport
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Reset the list of all assertion failures.
 | 
			
		||||
 *
 | 
			
		||||
 *  Reset list of all assertions triggered.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_GetAssertionReport
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* these had wrong naming conventions until 2.0.4. Please update your app! */
 | 
			
		||||
#define SDL_assert_state SDL_AssertState
 | 
			
		||||
#define SDL_assert_data SDL_AssertData
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_assert_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,268 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \file SDL_atomic.h
 | 
			
		||||
 *
 | 
			
		||||
 * Atomic operations.
 | 
			
		||||
 *
 | 
			
		||||
 * IMPORTANT:
 | 
			
		||||
 * If you are not an expert in concurrent lockless programming, you should
 | 
			
		||||
 * only be using the atomic lock and reference counting functions in this
 | 
			
		||||
 * file.  In all other cases you should be protecting your data structures
 | 
			
		||||
 * with full mutexes.
 | 
			
		||||
 *
 | 
			
		||||
 * The list of "safe" functions to use are:
 | 
			
		||||
 *  SDL_AtomicLock()
 | 
			
		||||
 *  SDL_AtomicUnlock()
 | 
			
		||||
 *  SDL_AtomicIncRef()
 | 
			
		||||
 *  SDL_AtomicDecRef()
 | 
			
		||||
 *
 | 
			
		||||
 * Seriously, here be dragons!
 | 
			
		||||
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
			
		||||
 *
 | 
			
		||||
 * You can find out a little more about lockless programming and the
 | 
			
		||||
 * subtle issues that can arise here:
 | 
			
		||||
 * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx
 | 
			
		||||
 *
 | 
			
		||||
 * There's also lots of good information here:
 | 
			
		||||
 * http://www.1024cores.net/home/lock-free-algorithms
 | 
			
		||||
 * http://preshing.com/
 | 
			
		||||
 *
 | 
			
		||||
 * These operations may or may not actually be implemented using
 | 
			
		||||
 * processor specific atomic operations. When possible they are
 | 
			
		||||
 * implemented as true processor specific atomic operations. When that
 | 
			
		||||
 * is not possible the are implemented using locks that *do* use the
 | 
			
		||||
 * available atomic operations.
 | 
			
		||||
 *
 | 
			
		||||
 * All of the atomic operations that modify memory are full memory barriers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_atomic_h_
 | 
			
		||||
#define _SDL_atomic_h_
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \name SDL AtomicLock
 | 
			
		||||
 *
 | 
			
		||||
 * The atomic locks are efficient spinlocks using CPU instructions,
 | 
			
		||||
 * but are vulnerable to starvation and can spin forever if a thread
 | 
			
		||||
 * holding a lock has been terminated.  For this reason you should
 | 
			
		||||
 * minimize the code executed inside an atomic lock and never do
 | 
			
		||||
 * expensive things like API or system calls while holding them.
 | 
			
		||||
 *
 | 
			
		||||
 * The atomic locks are not safe to lock recursively.
 | 
			
		||||
 *
 | 
			
		||||
 * Porting Note:
 | 
			
		||||
 * The spin lock functions and type are required and can not be
 | 
			
		||||
 * emulated because they are used in the atomic emulation code.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
 | 
			
		||||
typedef int SDL_SpinLock;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Try to lock a spin lock by setting it to a non-zero value.
 | 
			
		||||
 *
 | 
			
		||||
 * \param lock Points to the lock.
 | 
			
		||||
 *
 | 
			
		||||
 * \return SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already held.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Lock a spin lock by setting it to a non-zero value.
 | 
			
		||||
 *
 | 
			
		||||
 * \param lock Points to the lock.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Unlock a spin lock by setting it to 0. Always returns immediately
 | 
			
		||||
 *
 | 
			
		||||
 * \param lock Points to the lock.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock);
 | 
			
		||||
 | 
			
		||||
/* @} *//* SDL AtomicLock */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The compiler barrier prevents the compiler from reordering
 | 
			
		||||
 * reads and writes to globally visible variables across the call.
 | 
			
		||||
 */
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER > 1200)
 | 
			
		||||
void _ReadWriteBarrier(void);
 | 
			
		||||
#pragma intrinsic(_ReadWriteBarrier)
 | 
			
		||||
#define SDL_CompilerBarrier()   _ReadWriteBarrier()
 | 
			
		||||
#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
 | 
			
		||||
/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */
 | 
			
		||||
#define SDL_CompilerBarrier()   __asm__ __volatile__ ("" : : : "memory")
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_CompilerBarrier()   \
 | 
			
		||||
{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Memory barriers are designed to prevent reads and writes from being
 | 
			
		||||
 * reordered by the compiler and being seen out of order on multi-core CPUs.
 | 
			
		||||
 *
 | 
			
		||||
 * A typical pattern would be for thread A to write some data and a flag,
 | 
			
		||||
 * and for thread B to read the flag and get the data. In this case you
 | 
			
		||||
 * would insert a release barrier between writing the data and the flag,
 | 
			
		||||
 * guaranteeing that the data write completes no later than the flag is
 | 
			
		||||
 * written, and you would insert an acquire barrier between reading the
 | 
			
		||||
 * flag and reading the data, to ensure that all the reads associated
 | 
			
		||||
 * with the flag have completed.
 | 
			
		||||
 *
 | 
			
		||||
 * In this pattern you should always see a release barrier paired with
 | 
			
		||||
 * an acquire barrier and you should gate the data reads/writes with a
 | 
			
		||||
 * single flag variable.
 | 
			
		||||
 *
 | 
			
		||||
 * For more information on these semantics, take a look at the blog post:
 | 
			
		||||
 * http://preshing.com/20120913/acquire-and-release-semantics
 | 
			
		||||
 */
 | 
			
		||||
#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
 | 
			
		||||
#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("lwsync" : : : "memory")
 | 
			
		||||
#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("lwsync" : : : "memory")
 | 
			
		||||
#elif defined(__GNUC__) && defined(__arm__)
 | 
			
		||||
#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__)
 | 
			
		||||
#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("dmb ish" : : : "memory")
 | 
			
		||||
#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("dmb ish" : : : "memory")
 | 
			
		||||
#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)
 | 
			
		||||
#ifdef __thumb__
 | 
			
		||||
/* The mcr instruction isn't available in thumb mode, use real functions */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_MemoryBarrierRelease();
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquire();
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
 | 
			
		||||
#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
 | 
			
		||||
#endif /* __thumb__ */
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("" : : : "memory")
 | 
			
		||||
#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("" : : : "memory")
 | 
			
		||||
#endif /* __GNUC__ && __arm__ */
 | 
			
		||||
#else
 | 
			
		||||
#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
 | 
			
		||||
/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */
 | 
			
		||||
#include <mbarrier.h>
 | 
			
		||||
#define SDL_MemoryBarrierRelease()  __machine_rel_barrier()
 | 
			
		||||
#define SDL_MemoryBarrierAcquire()  __machine_acq_barrier()
 | 
			
		||||
#else
 | 
			
		||||
/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */
 | 
			
		||||
#define SDL_MemoryBarrierRelease()  SDL_CompilerBarrier()
 | 
			
		||||
#define SDL_MemoryBarrierAcquire()  SDL_CompilerBarrier()
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief A type representing an atomic integer value.  It is a struct
 | 
			
		||||
 *        so people don't accidentally use numeric operations on it.
 | 
			
		||||
 */
 | 
			
		||||
typedef struct { int value; } SDL_atomic_t;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Set an atomic variable to a new value if it is currently an old value.
 | 
			
		||||
 *
 | 
			
		||||
 * \return SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise.
 | 
			
		||||
 *
 | 
			
		||||
 * \note If you don't know what this function is for, you shouldn't use it!
 | 
			
		||||
*/
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Set an atomic variable to a value.
 | 
			
		||||
 *
 | 
			
		||||
 * \return The previous value of the atomic variable.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Get the value of an atomic variable
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Add to an atomic variable.
 | 
			
		||||
 *
 | 
			
		||||
 * \return The previous value of the atomic variable.
 | 
			
		||||
 *
 | 
			
		||||
 * \note This same style can be used for any number operation
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Increment an atomic variable used as a reference count.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef SDL_AtomicIncRef
 | 
			
		||||
#define SDL_AtomicIncRef(a)    SDL_AtomicAdd(a, 1)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Decrement an atomic variable used as a reference count.
 | 
			
		||||
 *
 | 
			
		||||
 * \return SDL_TRUE if the variable reached zero after decrementing,
 | 
			
		||||
 *         SDL_FALSE otherwise
 | 
			
		||||
 */
 | 
			
		||||
#ifndef SDL_AtomicDecRef
 | 
			
		||||
#define SDL_AtomicDecRef(a)    (SDL_AtomicAdd(a, -1) == 1)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Set a pointer to a new value if it is currently an old value.
 | 
			
		||||
 *
 | 
			
		||||
 * \return SDL_TRUE if the pointer was set, SDL_FALSE otherwise.
 | 
			
		||||
 *
 | 
			
		||||
 * \note If you don't know what this function is for, you shouldn't use it!
 | 
			
		||||
*/
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Set a pointer to a value atomically.
 | 
			
		||||
 *
 | 
			
		||||
 * \return The previous value of the pointer.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Get the value of a pointer atomically.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_atomic_h_ */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,605 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_audio.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Access to the raw audio mixing buffer for the SDL library.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_audio_h
 | 
			
		||||
#define _SDL_audio_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
#include "SDL_endian.h"
 | 
			
		||||
#include "SDL_mutex.h"
 | 
			
		||||
#include "SDL_thread.h"
 | 
			
		||||
#include "SDL_rwops.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Audio format flags.
 | 
			
		||||
 *
 | 
			
		||||
 *  These are what the 16 bits in SDL_AudioFormat currently mean...
 | 
			
		||||
 *  (Unspecified bits are always zero).
 | 
			
		||||
 *
 | 
			
		||||
 *  \verbatim
 | 
			
		||||
    ++-----------------------sample is signed if set
 | 
			
		||||
    ||
 | 
			
		||||
    ||       ++-----------sample is bigendian if set
 | 
			
		||||
    ||       ||
 | 
			
		||||
    ||       ||          ++---sample is float if set
 | 
			
		||||
    ||       ||          ||
 | 
			
		||||
    ||       ||          || +---sample bit size---+
 | 
			
		||||
    ||       ||          || |                     |
 | 
			
		||||
    15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
 | 
			
		||||
    \endverbatim
 | 
			
		||||
 *
 | 
			
		||||
 *  There are macros in SDL 2.0 and later to query these bits.
 | 
			
		||||
 */
 | 
			
		||||
typedef Uint16 SDL_AudioFormat;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Audio flags
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
 | 
			
		||||
#define SDL_AUDIO_MASK_BITSIZE       (0xFF)
 | 
			
		||||
#define SDL_AUDIO_MASK_DATATYPE      (1<<8)
 | 
			
		||||
#define SDL_AUDIO_MASK_ENDIAN        (1<<12)
 | 
			
		||||
#define SDL_AUDIO_MASK_SIGNED        (1<<15)
 | 
			
		||||
#define SDL_AUDIO_BITSIZE(x)         (x & SDL_AUDIO_MASK_BITSIZE)
 | 
			
		||||
#define SDL_AUDIO_ISFLOAT(x)         (x & SDL_AUDIO_MASK_DATATYPE)
 | 
			
		||||
#define SDL_AUDIO_ISBIGENDIAN(x)     (x & SDL_AUDIO_MASK_ENDIAN)
 | 
			
		||||
#define SDL_AUDIO_ISSIGNED(x)        (x & SDL_AUDIO_MASK_SIGNED)
 | 
			
		||||
#define SDL_AUDIO_ISINT(x)           (!SDL_AUDIO_ISFLOAT(x))
 | 
			
		||||
#define SDL_AUDIO_ISLITTLEENDIAN(x)  (!SDL_AUDIO_ISBIGENDIAN(x))
 | 
			
		||||
#define SDL_AUDIO_ISUNSIGNED(x)      (!SDL_AUDIO_ISSIGNED(x))
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Audio format flags
 | 
			
		||||
 *
 | 
			
		||||
 *  Defaults to LSB byte order.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define AUDIO_U8        0x0008  /**< Unsigned 8-bit samples */
 | 
			
		||||
#define AUDIO_S8        0x8008  /**< Signed 8-bit samples */
 | 
			
		||||
#define AUDIO_U16LSB    0x0010  /**< Unsigned 16-bit samples */
 | 
			
		||||
#define AUDIO_S16LSB    0x8010  /**< Signed 16-bit samples */
 | 
			
		||||
#define AUDIO_U16MSB    0x1010  /**< As above, but big-endian byte order */
 | 
			
		||||
#define AUDIO_S16MSB    0x9010  /**< As above, but big-endian byte order */
 | 
			
		||||
#define AUDIO_U16       AUDIO_U16LSB
 | 
			
		||||
#define AUDIO_S16       AUDIO_S16LSB
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name int32 support
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define AUDIO_S32LSB    0x8020  /**< 32-bit integer samples */
 | 
			
		||||
#define AUDIO_S32MSB    0x9020  /**< As above, but big-endian byte order */
 | 
			
		||||
#define AUDIO_S32       AUDIO_S32LSB
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name float32 support
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define AUDIO_F32LSB    0x8120  /**< 32-bit floating point samples */
 | 
			
		||||
#define AUDIO_F32MSB    0x9120  /**< As above, but big-endian byte order */
 | 
			
		||||
#define AUDIO_F32       AUDIO_F32LSB
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Native audio byte ordering
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
 | 
			
		||||
#define AUDIO_U16SYS    AUDIO_U16LSB
 | 
			
		||||
#define AUDIO_S16SYS    AUDIO_S16LSB
 | 
			
		||||
#define AUDIO_S32SYS    AUDIO_S32LSB
 | 
			
		||||
#define AUDIO_F32SYS    AUDIO_F32LSB
 | 
			
		||||
#else
 | 
			
		||||
#define AUDIO_U16SYS    AUDIO_U16MSB
 | 
			
		||||
#define AUDIO_S16SYS    AUDIO_S16MSB
 | 
			
		||||
#define AUDIO_S32SYS    AUDIO_S32MSB
 | 
			
		||||
#define AUDIO_F32SYS    AUDIO_F32MSB
 | 
			
		||||
#endif
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Allow change flags
 | 
			
		||||
 *
 | 
			
		||||
 *  Which audio format changes are allowed when opening a device.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE    0x00000001
 | 
			
		||||
#define SDL_AUDIO_ALLOW_FORMAT_CHANGE       0x00000002
 | 
			
		||||
#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE     0x00000004
 | 
			
		||||
#define SDL_AUDIO_ALLOW_ANY_CHANGE          (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE)
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/* @} *//* Audio flags */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function is called when the audio device needs more data.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param userdata An application-specific parameter saved in
 | 
			
		||||
 *                  the SDL_AudioSpec structure
 | 
			
		||||
 *  \param stream A pointer to the audio data buffer.
 | 
			
		||||
 *  \param len    The length of that buffer in bytes.
 | 
			
		||||
 *
 | 
			
		||||
 *  Once the callback returns, the buffer will no longer be valid.
 | 
			
		||||
 *  Stereo samples are stored in a LRLRLR ordering.
 | 
			
		||||
 *
 | 
			
		||||
 *  You can choose to avoid callbacks and use SDL_QueueAudio() instead, if
 | 
			
		||||
 *  you like. Just open your audio device with a NULL callback.
 | 
			
		||||
 */
 | 
			
		||||
typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream,
 | 
			
		||||
                                            int len);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  The calculated values in this structure are calculated by SDL_OpenAudio().
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_AudioSpec
 | 
			
		||||
{
 | 
			
		||||
    int freq;                   /**< DSP frequency -- samples per second */
 | 
			
		||||
    SDL_AudioFormat format;     /**< Audio data format */
 | 
			
		||||
    Uint8 channels;             /**< Number of channels: 1 mono, 2 stereo */
 | 
			
		||||
    Uint8 silence;              /**< Audio buffer silence value (calculated) */
 | 
			
		||||
    Uint16 samples;             /**< Audio buffer size in samples (power of 2) */
 | 
			
		||||
    Uint16 padding;             /**< Necessary for some compile environments */
 | 
			
		||||
    Uint32 size;                /**< Audio buffer size in bytes (calculated) */
 | 
			
		||||
    SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */
 | 
			
		||||
    void *userdata;             /**< Userdata passed to callback (ignored for NULL callbacks). */
 | 
			
		||||
} SDL_AudioSpec;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct SDL_AudioCVT;
 | 
			
		||||
typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt,
 | 
			
		||||
                                          SDL_AudioFormat format);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  A structure to hold a set of audio conversion filters and buffers.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef __GNUC__
 | 
			
		||||
/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't
 | 
			
		||||
   pad it out to 88 bytes to guarantee ABI compatibility between compilers.
 | 
			
		||||
   vvv
 | 
			
		||||
   The next time we rev the ABI, make sure to size the ints and add padding.
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_AUDIOCVT_PACKED __attribute__((packed))
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_AUDIOCVT_PACKED
 | 
			
		||||
#endif
 | 
			
		||||
/* */
 | 
			
		||||
typedef struct SDL_AudioCVT
 | 
			
		||||
{
 | 
			
		||||
    int needed;                 /**< Set to 1 if conversion possible */
 | 
			
		||||
    SDL_AudioFormat src_format; /**< Source audio format */
 | 
			
		||||
    SDL_AudioFormat dst_format; /**< Target audio format */
 | 
			
		||||
    double rate_incr;           /**< Rate conversion increment */
 | 
			
		||||
    Uint8 *buf;                 /**< Buffer to hold entire audio data */
 | 
			
		||||
    int len;                    /**< Length of original audio buffer */
 | 
			
		||||
    int len_cvt;                /**< Length of converted audio buffer */
 | 
			
		||||
    int len_mult;               /**< buffer must be len*len_mult big */
 | 
			
		||||
    double len_ratio;           /**< Given len, final size is len*len_ratio */
 | 
			
		||||
    SDL_AudioFilter filters[10];        /**< Filter list */
 | 
			
		||||
    int filter_index;           /**< Current audio conversion function */
 | 
			
		||||
} SDL_AUDIOCVT_PACKED SDL_AudioCVT;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Function prototypes */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Driver discovery functions
 | 
			
		||||
 *
 | 
			
		||||
 *  These functions return the list of built in audio drivers, in the
 | 
			
		||||
 *  order that they are normally initialized by default.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void);
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index);
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Initialization and cleanup
 | 
			
		||||
 *
 | 
			
		||||
 *  \internal These functions are used internally, and should not be used unless
 | 
			
		||||
 *            you have a specific need to specify the audio driver you want to
 | 
			
		||||
 *            use.  You should normally use SDL_Init() or SDL_InitSubSystem().
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_AudioQuit(void);
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns the name of the current audio driver, or NULL
 | 
			
		||||
 *  if no driver has been initialized.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function opens the audio device with the desired parameters, and
 | 
			
		||||
 *  returns 0 if successful, placing the actual hardware parameters in the
 | 
			
		||||
 *  structure pointed to by \c obtained.  If \c obtained is NULL, the audio
 | 
			
		||||
 *  data passed to the callback function will be guaranteed to be in the
 | 
			
		||||
 *  requested format, and will be automatically converted to the hardware
 | 
			
		||||
 *  audio format if necessary.  This function returns -1 if it failed
 | 
			
		||||
 *  to open the audio device, or couldn't set up the audio thread.
 | 
			
		||||
 *
 | 
			
		||||
 *  When filling in the desired audio spec structure,
 | 
			
		||||
 *    - \c desired->freq should be the desired audio frequency in samples-per-
 | 
			
		||||
 *      second.
 | 
			
		||||
 *    - \c desired->format should be the desired audio format.
 | 
			
		||||
 *    - \c desired->samples is the desired size of the audio buffer, in
 | 
			
		||||
 *      samples.  This number should be a power of two, and may be adjusted by
 | 
			
		||||
 *      the audio driver to a value more suitable for the hardware.  Good values
 | 
			
		||||
 *      seem to range between 512 and 8096 inclusive, depending on the
 | 
			
		||||
 *      application and CPU speed.  Smaller values yield faster response time,
 | 
			
		||||
 *      but can lead to underflow if the application is doing heavy processing
 | 
			
		||||
 *      and cannot fill the audio buffer in time.  A stereo sample consists of
 | 
			
		||||
 *      both right and left channels in LR ordering.
 | 
			
		||||
 *      Note that the number of samples is directly related to time by the
 | 
			
		||||
 *      following formula:  \code ms = (samples*1000)/freq \endcode
 | 
			
		||||
 *    - \c desired->size is the size in bytes of the audio buffer, and is
 | 
			
		||||
 *      calculated by SDL_OpenAudio().
 | 
			
		||||
 *    - \c desired->silence is the value used to set the buffer to silence,
 | 
			
		||||
 *      and is calculated by SDL_OpenAudio().
 | 
			
		||||
 *    - \c desired->callback should be set to a function that will be called
 | 
			
		||||
 *      when the audio device is ready for more data.  It is passed a pointer
 | 
			
		||||
 *      to the audio buffer, and the length in bytes of the audio buffer.
 | 
			
		||||
 *      This function usually runs in a separate thread, and so you should
 | 
			
		||||
 *      protect data structures that it accesses by calling SDL_LockAudio()
 | 
			
		||||
 *      and SDL_UnlockAudio() in your code. Alternately, you may pass a NULL
 | 
			
		||||
 *      pointer here, and call SDL_QueueAudio() with some frequency, to queue
 | 
			
		||||
 *      more audio samples to be played.
 | 
			
		||||
 *    - \c desired->userdata is passed as the first parameter to your callback
 | 
			
		||||
 *      function. If you passed a NULL callback, this value is ignored.
 | 
			
		||||
 *
 | 
			
		||||
 *  The audio device starts out playing silence when it's opened, and should
 | 
			
		||||
 *  be enabled for playing by calling \c SDL_PauseAudio(0) when you are ready
 | 
			
		||||
 *  for your audio callback function to be called.  Since the audio driver
 | 
			
		||||
 *  may modify the requested size of the audio buffer, you should allocate
 | 
			
		||||
 *  any local mixing buffers after you open the audio device.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired,
 | 
			
		||||
                                          SDL_AudioSpec * obtained);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  SDL Audio Device IDs.
 | 
			
		||||
 *
 | 
			
		||||
 *  A successful call to SDL_OpenAudio() is always device id 1, and legacy
 | 
			
		||||
 *  SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls
 | 
			
		||||
 *  always returns devices >= 2 on success. The legacy calls are good both
 | 
			
		||||
 *  for backwards compatibility and when you don't care about multiple,
 | 
			
		||||
 *  specific, or capture devices.
 | 
			
		||||
 */
 | 
			
		||||
typedef Uint32 SDL_AudioDeviceID;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the number of available devices exposed by the current driver.
 | 
			
		||||
 *  Only valid after a successfully initializing the audio subsystem.
 | 
			
		||||
 *  Returns -1 if an explicit list of devices can't be determined; this is
 | 
			
		||||
 *  not an error. For example, if SDL is set up to talk to a remote audio
 | 
			
		||||
 *  server, it can't list every one available on the Internet, but it will
 | 
			
		||||
 *  still allow a specific host to be specified to SDL_OpenAudioDevice().
 | 
			
		||||
 *
 | 
			
		||||
 *  In many common cases, when this function returns a value <= 0, it can still
 | 
			
		||||
 *  successfully open the default device (NULL for first argument of
 | 
			
		||||
 *  SDL_OpenAudioDevice()).
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the human-readable name of a specific audio device.
 | 
			
		||||
 *  Must be a value between 0 and (number of audio devices-1).
 | 
			
		||||
 *  Only valid after a successfully initializing the audio subsystem.
 | 
			
		||||
 *  The values returned by this function reflect the latest call to
 | 
			
		||||
 *  SDL_GetNumAudioDevices(); recall that function to redetect available
 | 
			
		||||
 *  hardware.
 | 
			
		||||
 *
 | 
			
		||||
 *  The string returned by this function is UTF-8 encoded, read-only, and
 | 
			
		||||
 *  managed internally. You are not to free it. If you need to keep the
 | 
			
		||||
 *  string for any length of time, you should make your own copy of it, as it
 | 
			
		||||
 *  will be invalid next time any of several other SDL functions is called.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index,
 | 
			
		||||
                                                           int iscapture);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Open a specific audio device. Passing in a device name of NULL requests
 | 
			
		||||
 *  the most reasonable default (and is equivalent to calling SDL_OpenAudio()).
 | 
			
		||||
 *
 | 
			
		||||
 *  The device name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but
 | 
			
		||||
 *  some drivers allow arbitrary and driver-specific strings, such as a
 | 
			
		||||
 *  hostname/IP address for a remote audio server, or a filename in the
 | 
			
		||||
 *  diskaudio driver.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0 on error, a valid device ID that is >= 2 on success.
 | 
			
		||||
 *
 | 
			
		||||
 *  SDL_OpenAudio(), unlike this function, always acts on device ID 1.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice(const char
 | 
			
		||||
                                                              *device,
 | 
			
		||||
                                                              int iscapture,
 | 
			
		||||
                                                              const
 | 
			
		||||
                                                              SDL_AudioSpec *
 | 
			
		||||
                                                              desired,
 | 
			
		||||
                                                              SDL_AudioSpec *
 | 
			
		||||
                                                              obtained,
 | 
			
		||||
                                                              int
 | 
			
		||||
                                                              allowed_changes);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Audio state
 | 
			
		||||
 *
 | 
			
		||||
 *  Get the current audio state.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_AUDIO_STOPPED = 0,
 | 
			
		||||
    SDL_AUDIO_PLAYING,
 | 
			
		||||
    SDL_AUDIO_PAUSED
 | 
			
		||||
} SDL_AudioStatus;
 | 
			
		||||
extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void);
 | 
			
		||||
 | 
			
		||||
extern DECLSPEC SDL_AudioStatus SDLCALL
 | 
			
		||||
SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev);
 | 
			
		||||
/* @} *//* Audio State */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Pause audio functions
 | 
			
		||||
 *
 | 
			
		||||
 *  These functions pause and unpause the audio callback processing.
 | 
			
		||||
 *  They should be called with a parameter of 0 after opening the audio
 | 
			
		||||
 *  device to start playing sound.  This is so you can safely initialize
 | 
			
		||||
 *  data for your callback function after opening the audio device.
 | 
			
		||||
 *  Silence will be written to the audio device during the pause.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
 | 
			
		||||
                                                  int pause_on);
 | 
			
		||||
/* @} *//* Pause audio functions */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function loads a WAVE from the data source, automatically freeing
 | 
			
		||||
 *  that source if \c freesrc is non-zero.  For example, to load a WAVE file,
 | 
			
		||||
 *  you could do:
 | 
			
		||||
 *  \code
 | 
			
		||||
 *      SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...);
 | 
			
		||||
 *  \endcode
 | 
			
		||||
 *
 | 
			
		||||
 *  If this function succeeds, it returns the given SDL_AudioSpec,
 | 
			
		||||
 *  filled with the audio data format of the wave data, and sets
 | 
			
		||||
 *  \c *audio_buf to a malloc()'d buffer containing the audio data,
 | 
			
		||||
 *  and sets \c *audio_len to the length of that audio buffer, in bytes.
 | 
			
		||||
 *  You need to free the audio buffer with SDL_FreeWAV() when you are
 | 
			
		||||
 *  done with it.
 | 
			
		||||
 *
 | 
			
		||||
 *  This function returns NULL and sets the SDL error message if the
 | 
			
		||||
 *  wave file cannot be opened, uses an unknown data format, or is
 | 
			
		||||
 *  corrupt.  Currently raw and MS-ADPCM WAVE files are supported.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src,
 | 
			
		||||
                                                      int freesrc,
 | 
			
		||||
                                                      SDL_AudioSpec * spec,
 | 
			
		||||
                                                      Uint8 ** audio_buf,
 | 
			
		||||
                                                      Uint32 * audio_len);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Loads a WAV from a file.
 | 
			
		||||
 *  Compatibility convenience function.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \
 | 
			
		||||
    SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function frees data previously allocated with SDL_LoadWAV_RW()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function takes a source format and rate and a destination format
 | 
			
		||||
 *  and rate, and initializes the \c cvt structure with information needed
 | 
			
		||||
 *  by SDL_ConvertAudio() to convert a buffer of audio data from one format
 | 
			
		||||
 *  to the other.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return -1 if the format conversion is not supported, 0 if there's
 | 
			
		||||
 *  no conversion needed, or 1 if the audio filter is set up.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt,
 | 
			
		||||
                                              SDL_AudioFormat src_format,
 | 
			
		||||
                                              Uint8 src_channels,
 | 
			
		||||
                                              int src_rate,
 | 
			
		||||
                                              SDL_AudioFormat dst_format,
 | 
			
		||||
                                              Uint8 dst_channels,
 | 
			
		||||
                                              int dst_rate);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Once you have initialized the \c cvt structure using SDL_BuildAudioCVT(),
 | 
			
		||||
 *  created an audio buffer \c cvt->buf, and filled it with \c cvt->len bytes of
 | 
			
		||||
 *  audio data in the source format, this function will convert it in-place
 | 
			
		||||
 *  to the desired format.
 | 
			
		||||
 *
 | 
			
		||||
 *  The data conversion may expand the size of the audio data, so the buffer
 | 
			
		||||
 *  \c cvt->buf should be allocated after the \c cvt structure is initialized by
 | 
			
		||||
 *  SDL_BuildAudioCVT(), and should be \c cvt->len*cvt->len_mult bytes long.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt);
 | 
			
		||||
 | 
			
		||||
#define SDL_MIX_MAXVOLUME 128
 | 
			
		||||
/**
 | 
			
		||||
 *  This takes two audio buffers of the playing audio format and mixes
 | 
			
		||||
 *  them, performing addition, volume adjustment, and overflow clipping.
 | 
			
		||||
 *  The volume ranges from 0 - 128, and should be set to ::SDL_MIX_MAXVOLUME
 | 
			
		||||
 *  for full audio volume.  Note this does not change hardware volume.
 | 
			
		||||
 *  This is provided for convenience -- you can mix your own audio data.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,
 | 
			
		||||
                                          Uint32 len, int volume);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This works like SDL_MixAudio(), but you specify the audio format instead of
 | 
			
		||||
 *  using the format of audio device 1. Thus it can be used when no audio
 | 
			
		||||
 *  device is open at all.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst,
 | 
			
		||||
                                                const Uint8 * src,
 | 
			
		||||
                                                SDL_AudioFormat format,
 | 
			
		||||
                                                Uint32 len, int volume);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Queue more audio on non-callback devices.
 | 
			
		||||
 *
 | 
			
		||||
 *  SDL offers two ways to feed audio to the device: you can either supply a
 | 
			
		||||
 *  callback that SDL triggers with some frequency to obtain more audio
 | 
			
		||||
 *  (pull method), or you can supply no callback, and then SDL will expect
 | 
			
		||||
 *  you to supply data at regular intervals (push method) with this function.
 | 
			
		||||
 *
 | 
			
		||||
 *  There are no limits on the amount of data you can queue, short of
 | 
			
		||||
 *  exhaustion of address space. Queued data will drain to the device as
 | 
			
		||||
 *  necessary without further intervention from you. If the device needs
 | 
			
		||||
 *  audio but there is not enough queued, it will play silence to make up
 | 
			
		||||
 *  the difference. This means you will have skips in your audio playback
 | 
			
		||||
 *  if you aren't routinely queueing sufficient data.
 | 
			
		||||
 *
 | 
			
		||||
 *  This function copies the supplied data, so you are safe to free it when
 | 
			
		||||
 *  the function returns. This function is thread-safe, but queueing to the
 | 
			
		||||
 *  same device from two threads at once does not promise which buffer will
 | 
			
		||||
 *  be queued first.
 | 
			
		||||
 *
 | 
			
		||||
 *  You may not queue audio on a device that is using an application-supplied
 | 
			
		||||
 *  callback; doing so returns an error. You have to use the audio callback
 | 
			
		||||
 *  or queue audio with this function, but not both.
 | 
			
		||||
 *
 | 
			
		||||
 *  You should not call SDL_LockAudio() on the device before queueing; SDL
 | 
			
		||||
 *  handles locking internally for this function.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param dev The device ID to which we will queue audio.
 | 
			
		||||
 *  \param data The data to queue to the device for later playback.
 | 
			
		||||
 *  \param len The number of bytes (not samples!) to which (data) points.
 | 
			
		||||
 *  \return zero on success, -1 on error.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_GetQueuedAudioSize
 | 
			
		||||
 *  \sa SDL_ClearQueuedAudio
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the number of bytes of still-queued audio.
 | 
			
		||||
 *
 | 
			
		||||
 *  This is the number of bytes that have been queued for playback with
 | 
			
		||||
 *  SDL_QueueAudio(), but have not yet been sent to the hardware.
 | 
			
		||||
 *
 | 
			
		||||
 *  Once we've sent it to the hardware, this function can not decide the exact
 | 
			
		||||
 *  byte boundary of what has been played. It's possible that we just gave the
 | 
			
		||||
 *  hardware several kilobytes right before you called this function, but it
 | 
			
		||||
 *  hasn't played any of it yet, or maybe half of it, etc.
 | 
			
		||||
 *
 | 
			
		||||
 *  You may not queue audio on a device that is using an application-supplied
 | 
			
		||||
 *  callback; calling this function on such a device always returns 0.
 | 
			
		||||
 *  You have to use the audio callback or queue audio with SDL_QueueAudio(),
 | 
			
		||||
 *  but not both.
 | 
			
		||||
 *
 | 
			
		||||
 *  You should not call SDL_LockAudio() on the device before querying; SDL
 | 
			
		||||
 *  handles locking internally for this function.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param dev The device ID of which we will query queued audio size.
 | 
			
		||||
 *  \return Number of bytes (not samples!) of queued audio.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_QueueAudio
 | 
			
		||||
 *  \sa SDL_ClearQueuedAudio
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Drop any queued audio data waiting to be sent to the hardware.
 | 
			
		||||
 *
 | 
			
		||||
 *  Immediately after this call, SDL_GetQueuedAudioSize() will return 0 and
 | 
			
		||||
 *  the hardware will start playing silence if more audio isn't queued.
 | 
			
		||||
 *
 | 
			
		||||
 *  This will not prevent playback of queued audio that's already been sent
 | 
			
		||||
 *  to the hardware, as we can not undo that, so expect there to be some
 | 
			
		||||
 *  fraction of a second of audio that might still be heard. This can be
 | 
			
		||||
 *  useful if you want to, say, drop any pending music during a level change
 | 
			
		||||
 *  in your game.
 | 
			
		||||
 *
 | 
			
		||||
 *  You may not queue audio on a device that is using an application-supplied
 | 
			
		||||
 *  callback; calling this function on such a device is always a no-op.
 | 
			
		||||
 *  You have to use the audio callback or queue audio with SDL_QueueAudio(),
 | 
			
		||||
 *  but not both.
 | 
			
		||||
 *
 | 
			
		||||
 *  You should not call SDL_LockAudio() on the device before clearing the
 | 
			
		||||
 *  queue; SDL handles locking internally for this function.
 | 
			
		||||
 *
 | 
			
		||||
 *  This function always succeeds and thus returns void.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param dev The device ID of which to clear the audio queue.
 | 
			
		||||
 *
 | 
			
		||||
 *  \sa SDL_QueueAudio
 | 
			
		||||
 *  \sa SDL_GetQueuedAudioSize
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Audio lock functions
 | 
			
		||||
 *
 | 
			
		||||
 *  The lock manipulated by these functions protects the callback function.
 | 
			
		||||
 *  During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that
 | 
			
		||||
 *  the callback function is not running.  Do not call these from the callback
 | 
			
		||||
 *  function or you will cause deadlock.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LockAudio(void);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_UnlockAudio(void);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev);
 | 
			
		||||
/* @} *//* Audio lock functions */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function shuts down audio processing and closes the audio device.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_CloseAudio(void);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_audio_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,97 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_bits.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Functions for fiddling with bits and bitmasks.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_bits_h
 | 
			
		||||
#define _SDL_bits_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_bits.h
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the index of the most significant bit. Result is undefined when called
 | 
			
		||||
 *  with 0. This operation can also be stated as "count leading zeroes" and
 | 
			
		||||
 *  "log base 2".
 | 
			
		||||
 *
 | 
			
		||||
 *  \return Index of the most significant bit, or -1 if the value is 0.
 | 
			
		||||
 */
 | 
			
		||||
SDL_FORCE_INLINE int
 | 
			
		||||
SDL_MostSignificantBitIndex32(Uint32 x)
 | 
			
		||||
{
 | 
			
		||||
#if defined(__GNUC__) && __GNUC__ >= 4
 | 
			
		||||
    /* Count Leading Zeroes builtin in GCC.
 | 
			
		||||
     * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html
 | 
			
		||||
     */
 | 
			
		||||
    if (x == 0) {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
    return 31 - __builtin_clz(x);
 | 
			
		||||
#else
 | 
			
		||||
    /* Based off of Bit Twiddling Hacks by Sean Eron Anderson
 | 
			
		||||
     * <seander@cs.stanford.edu>, released in the public domain.
 | 
			
		||||
     * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog
 | 
			
		||||
     */
 | 
			
		||||
    const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000};
 | 
			
		||||
    const int    S[] = {1, 2, 4, 8, 16};
 | 
			
		||||
 | 
			
		||||
    int msbIndex = 0;
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    if (x == 0) {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for (i = 4; i >= 0; i--)
 | 
			
		||||
    {
 | 
			
		||||
        if (x & b[i])
 | 
			
		||||
        {
 | 
			
		||||
            x >>= S[i];
 | 
			
		||||
            msbIndex |= S[i];
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return msbIndex;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_bits_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,63 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_blendmode.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Header file declaring the SDL_BlendMode enumeration
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_blendmode_h
 | 
			
		||||
#define _SDL_blendmode_h
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief The blend mode used in SDL_RenderCopy() and drawing operations.
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_BLENDMODE_NONE = 0x00000000,     /**< no blending
 | 
			
		||||
                                              dstRGBA = srcRGBA */
 | 
			
		||||
    SDL_BLENDMODE_BLEND = 0x00000001,    /**< alpha blending
 | 
			
		||||
                                              dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA))
 | 
			
		||||
                                              dstA = srcA + (dstA * (1-srcA)) */
 | 
			
		||||
    SDL_BLENDMODE_ADD = 0x00000002,      /**< additive blending
 | 
			
		||||
                                              dstRGB = (srcRGB * srcA) + dstRGB
 | 
			
		||||
                                              dstA = dstA */
 | 
			
		||||
    SDL_BLENDMODE_MOD = 0x00000004       /**< color modulate
 | 
			
		||||
                                              dstRGB = srcRGB * dstRGB
 | 
			
		||||
                                              dstA = dstA */
 | 
			
		||||
} SDL_BlendMode;
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_blendmode_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,71 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \file SDL_clipboard.h
 | 
			
		||||
 *
 | 
			
		||||
 * Include file for SDL clipboard handling
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_clipboard_h
 | 
			
		||||
#define _SDL_clipboard_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Function prototypes */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Put UTF-8 text into the clipboard
 | 
			
		||||
 *
 | 
			
		||||
 * \sa SDL_GetClipboardText()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Get UTF-8 text from the clipboard, which must be freed with SDL_free()
 | 
			
		||||
 *
 | 
			
		||||
 * \sa SDL_SetClipboardText()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Returns a flag indicating whether the clipboard exists and contains a text string that is non-empty
 | 
			
		||||
 *
 | 
			
		||||
 * \sa SDL_GetClipboardText()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_clipboard_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,55 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_h
 | 
			
		||||
#define _SDL_config_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_config.h
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* Add any platform that doesn't build using the configure system. */
 | 
			
		||||
#ifdef USING_PREMAKE_CONFIG_H
 | 
			
		||||
#include "SDL_config_premake.h"
 | 
			
		||||
#elif defined(__WIN32__)
 | 
			
		||||
#include "SDL_config_windows.h"
 | 
			
		||||
#elif defined(__WINRT__)
 | 
			
		||||
#include "SDL_config_winrt.h"
 | 
			
		||||
#elif defined(__MACOSX__)
 | 
			
		||||
#include "SDL_config_macosx.h"
 | 
			
		||||
#elif defined(__IPHONEOS__)
 | 
			
		||||
#include "SDL_config_iphoneos.h"
 | 
			
		||||
#elif defined(__ANDROID__)
 | 
			
		||||
#include "SDL_config_android.h"
 | 
			
		||||
#elif defined(__PSP__)
 | 
			
		||||
#include "SDL_config_psp.h"
 | 
			
		||||
#else
 | 
			
		||||
/* This is a minimal configuration just to get SDL running on new platforms */
 | 
			
		||||
#include "SDL_config_minimal.h"
 | 
			
		||||
#endif /* platform config */
 | 
			
		||||
 | 
			
		||||
#ifdef USING_GENERATED_CONFIG_H
 | 
			
		||||
#error Wrong SDL_config.h, check your include path?
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_h */
 | 
			
		||||
@@ -1,188 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_config_macosx_h
 | 
			
		||||
#define _SDL_config_macosx_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_platform.h"
 | 
			
		||||
 | 
			
		||||
/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */
 | 
			
		||||
#include <AvailabilityMacros.h>
 | 
			
		||||
 | 
			
		||||
/* This is a set of defines to configure the SDL features */
 | 
			
		||||
 | 
			
		||||
#ifdef __LP64__
 | 
			
		||||
    #define SIZEOF_VOIDP 8
 | 
			
		||||
#else
 | 
			
		||||
    #define SIZEOF_VOIDP 4
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Useful headers */
 | 
			
		||||
#define HAVE_ALLOCA_H       1
 | 
			
		||||
#define HAVE_SYS_TYPES_H    1
 | 
			
		||||
#define HAVE_STDIO_H    1
 | 
			
		||||
#define STDC_HEADERS    1
 | 
			
		||||
#define HAVE_STRING_H   1
 | 
			
		||||
#define HAVE_INTTYPES_H 1
 | 
			
		||||
#define HAVE_STDINT_H   1
 | 
			
		||||
#define HAVE_CTYPE_H    1
 | 
			
		||||
#define HAVE_MATH_H 1
 | 
			
		||||
#define HAVE_SIGNAL_H   1
 | 
			
		||||
 | 
			
		||||
/* C library functions */
 | 
			
		||||
#define HAVE_MALLOC 1
 | 
			
		||||
#define HAVE_CALLOC 1
 | 
			
		||||
#define HAVE_REALLOC    1
 | 
			
		||||
#define HAVE_FREE   1
 | 
			
		||||
#define HAVE_ALLOCA 1
 | 
			
		||||
#define HAVE_GETENV 1
 | 
			
		||||
#define HAVE_SETENV 1
 | 
			
		||||
#define HAVE_PUTENV 1
 | 
			
		||||
#define HAVE_UNSETENV   1
 | 
			
		||||
#define HAVE_QSORT  1
 | 
			
		||||
#define HAVE_ABS    1
 | 
			
		||||
#define HAVE_BCOPY  1
 | 
			
		||||
#define HAVE_MEMSET 1
 | 
			
		||||
#define HAVE_MEMCPY 1
 | 
			
		||||
#define HAVE_MEMMOVE    1
 | 
			
		||||
#define HAVE_MEMCMP 1
 | 
			
		||||
#define HAVE_STRLEN 1
 | 
			
		||||
#define HAVE_STRLCPY    1
 | 
			
		||||
#define HAVE_STRLCAT    1
 | 
			
		||||
#define HAVE_STRDUP 1
 | 
			
		||||
#define HAVE_STRCHR 1
 | 
			
		||||
#define HAVE_STRRCHR    1
 | 
			
		||||
#define HAVE_STRSTR 1
 | 
			
		||||
#define HAVE_STRTOL 1
 | 
			
		||||
#define HAVE_STRTOUL    1
 | 
			
		||||
#define HAVE_STRTOLL    1
 | 
			
		||||
#define HAVE_STRTOULL   1
 | 
			
		||||
#define HAVE_STRTOD 1
 | 
			
		||||
#define HAVE_ATOI   1
 | 
			
		||||
#define HAVE_ATOF   1
 | 
			
		||||
#define HAVE_STRCMP 1
 | 
			
		||||
#define HAVE_STRNCMP    1
 | 
			
		||||
#define HAVE_STRCASECMP 1
 | 
			
		||||
#define HAVE_STRNCASECMP 1
 | 
			
		||||
#define HAVE_VSSCANF 1
 | 
			
		||||
#define HAVE_VSNPRINTF  1
 | 
			
		||||
#define HAVE_CEIL   1
 | 
			
		||||
#define HAVE_COPYSIGN   1
 | 
			
		||||
#define HAVE_COS    1
 | 
			
		||||
#define HAVE_COSF   1
 | 
			
		||||
#define HAVE_FABS   1
 | 
			
		||||
#define HAVE_FLOOR  1
 | 
			
		||||
#define HAVE_LOG    1
 | 
			
		||||
#define HAVE_POW    1
 | 
			
		||||
#define HAVE_SCALBN 1
 | 
			
		||||
#define HAVE_SIN    1
 | 
			
		||||
#define HAVE_SINF   1
 | 
			
		||||
#define HAVE_SQRT   1
 | 
			
		||||
#define HAVE_SQRTF  1
 | 
			
		||||
#define HAVE_TAN    1
 | 
			
		||||
#define HAVE_TANF   1
 | 
			
		||||
#define HAVE_SIGACTION  1
 | 
			
		||||
#define HAVE_SETJMP 1
 | 
			
		||||
#define HAVE_NANOSLEEP  1
 | 
			
		||||
#define HAVE_SYSCONF    1
 | 
			
		||||
#define HAVE_SYSCTLBYNAME 1
 | 
			
		||||
#define HAVE_ATAN 1
 | 
			
		||||
#define HAVE_ATAN2 1
 | 
			
		||||
#define HAVE_ACOS 1
 | 
			
		||||
#define HAVE_ASIN 1
 | 
			
		||||
 | 
			
		||||
/* Enable various audio drivers */
 | 
			
		||||
#define SDL_AUDIO_DRIVER_COREAUDIO  1
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DISK   1
 | 
			
		||||
#define SDL_AUDIO_DRIVER_DUMMY  1
 | 
			
		||||
 | 
			
		||||
/* Enable various input drivers */
 | 
			
		||||
#define SDL_JOYSTICK_IOKIT  1
 | 
			
		||||
#define SDL_HAPTIC_IOKIT    1
 | 
			
		||||
 | 
			
		||||
/* Enable various shared object loading systems */
 | 
			
		||||
#define SDL_LOADSO_DLOPEN   1
 | 
			
		||||
 | 
			
		||||
/* Enable various threading systems */
 | 
			
		||||
#define SDL_THREAD_PTHREAD  1
 | 
			
		||||
#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX  1
 | 
			
		||||
 | 
			
		||||
/* Enable various timer systems */
 | 
			
		||||
#define SDL_TIMER_UNIX  1
 | 
			
		||||
 | 
			
		||||
/* Enable various video drivers */
 | 
			
		||||
#define SDL_VIDEO_DRIVER_COCOA  1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_DUMMY  1
 | 
			
		||||
#undef SDL_VIDEO_DRIVER_X11
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/usr/X11R6/lib/libX11.6.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/usr/X11R6/lib/libXext.6.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "/usr/X11R6/lib/libXinerama.1.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/usr/X11R6/lib/libXi.6.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/usr/X11R6/lib/libXrandr.2.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/usr/X11R6/lib/libXss.1.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "/usr/X11R6/lib/libXxf86vm.1.dylib"
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XDBE 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XINERAMA 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XRANDR 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XSHAPE 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1
 | 
			
		||||
 | 
			
		||||
#ifdef MAC_OS_X_VERSION_10_8
 | 
			
		||||
/*
 | 
			
		||||
 * No matter the versions targeted, this is the 10.8 or later SDK, so you have
 | 
			
		||||
 *  to use the external Xquartz, which is a more modern Xlib. Previous SDKs
 | 
			
		||||
 *  used an older Xlib.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_XINPUT2 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1
 | 
			
		||||
#define SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY 1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SDL_VIDEO_RENDER_OGL
 | 
			
		||||
#define SDL_VIDEO_RENDER_OGL    1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Enable OpenGL support */
 | 
			
		||||
#ifndef SDL_VIDEO_OPENGL
 | 
			
		||||
#define SDL_VIDEO_OPENGL    1
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef SDL_VIDEO_OPENGL_CGL
 | 
			
		||||
#define SDL_VIDEO_OPENGL_CGL    1
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef SDL_VIDEO_OPENGL_GLX
 | 
			
		||||
#define SDL_VIDEO_OPENGL_GLX    1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Enable system power support */
 | 
			
		||||
#define SDL_POWER_MACOSX 1
 | 
			
		||||
 | 
			
		||||
/* enable filesystem support */
 | 
			
		||||
#define SDL_FILESYSTEM_COCOA   1
 | 
			
		||||
 | 
			
		||||
/* Enable assembly routines */
 | 
			
		||||
#define SDL_ASSEMBLY_ROUTINES   1
 | 
			
		||||
#ifdef __ppc__
 | 
			
		||||
#define SDL_ALTIVEC_BLITTERS    1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_config_macosx_h */
 | 
			
		||||
@@ -1,20 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
@@ -1,161 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_cpuinfo.h
 | 
			
		||||
 *
 | 
			
		||||
 *  CPU feature detection for SDL.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_cpuinfo_h
 | 
			
		||||
#define _SDL_cpuinfo_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
/* Need to do this here because intrin.h has C++ code in it */
 | 
			
		||||
/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64))
 | 
			
		||||
#include <intrin.h>
 | 
			
		||||
#ifndef _WIN64
 | 
			
		||||
#define __MMX__
 | 
			
		||||
#define __3dNOW__
 | 
			
		||||
#endif
 | 
			
		||||
#define __SSE__
 | 
			
		||||
#define __SSE2__
 | 
			
		||||
#elif defined(__MINGW64_VERSION_MAJOR)
 | 
			
		||||
#include <intrin.h>
 | 
			
		||||
#else
 | 
			
		||||
#ifdef __ALTIVEC__
 | 
			
		||||
#if HAVE_ALTIVEC_H && !defined(__APPLE_ALTIVEC__)
 | 
			
		||||
#include <altivec.h>
 | 
			
		||||
#undef pixel
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef __MMX__
 | 
			
		||||
#include <mmintrin.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef __3dNOW__
 | 
			
		||||
#include <mm3dnow.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef __SSE__
 | 
			
		||||
#include <xmmintrin.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef __SSE2__
 | 
			
		||||
#include <emmintrin.h>
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* This is a guess for the cacheline size used for padding.
 | 
			
		||||
 * Most x86 processors have a 64 byte cache line.
 | 
			
		||||
 * The 64-bit PowerPC processors have a 128 byte cache line.
 | 
			
		||||
 * We'll use the larger value to be generally safe.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_CACHELINE_SIZE  128
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns the number of CPU cores available.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GetCPUCount(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns the L1 cache line size of the CPU
 | 
			
		||||
 *
 | 
			
		||||
 *  This is useful for determining multi-threaded structure padding
 | 
			
		||||
 *  or SIMD prefetch sizes.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has the RDTSC instruction.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has AltiVec features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has MMX features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has 3DNow! features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has SSE features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has SSE2 features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has SSE3 features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has SSE4.1 features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has SSE4.2 features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has AVX features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns true if the CPU has AVX2 features.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function returns the amount of RAM configured in the system, in MB.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_cpuinfo_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,239 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_endian.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Functions for reading and writing endian-specific values
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_endian_h
 | 
			
		||||
#define _SDL_endian_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name The two types of endianness
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define SDL_LIL_ENDIAN  1234
 | 
			
		||||
#define SDL_BIG_ENDIAN  4321
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
#ifndef SDL_BYTEORDER           /* Not defined in SDL_config.h? */
 | 
			
		||||
#ifdef __linux__
 | 
			
		||||
#include <endian.h>
 | 
			
		||||
#define SDL_BYTEORDER  __BYTE_ORDER
 | 
			
		||||
#else /* __linux__ */
 | 
			
		||||
#if defined(__hppa__) || \
 | 
			
		||||
    defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \
 | 
			
		||||
    (defined(__MIPS__) && defined(__MISPEB__)) || \
 | 
			
		||||
    defined(__ppc__) || defined(__POWERPC__) || defined(_M_PPC) || \
 | 
			
		||||
    defined(__sparc__)
 | 
			
		||||
#define SDL_BYTEORDER   SDL_BIG_ENDIAN
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_BYTEORDER   SDL_LIL_ENDIAN
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* __linux__ */
 | 
			
		||||
#endif /* !SDL_BYTEORDER */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_endian.h
 | 
			
		||||
 */
 | 
			
		||||
#if defined(__GNUC__) && defined(__i386__) && \
 | 
			
		||||
   !(__GNUC__ == 2 && __GNUC_MINOR__ == 95 /* broken gcc version */)
 | 
			
		||||
SDL_FORCE_INLINE Uint16
 | 
			
		||||
SDL_Swap16(Uint16 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("xchgb %b0,%h0": "=q"(x):"0"(x));
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && defined(__x86_64__)
 | 
			
		||||
SDL_FORCE_INLINE Uint16
 | 
			
		||||
SDL_Swap16(Uint16 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x));
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
 | 
			
		||||
SDL_FORCE_INLINE Uint16
 | 
			
		||||
SDL_Swap16(Uint16 x)
 | 
			
		||||
{
 | 
			
		||||
    int result;
 | 
			
		||||
 | 
			
		||||
  __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x));
 | 
			
		||||
    return (Uint16)result;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) && !defined(__mcoldfire__)
 | 
			
		||||
SDL_FORCE_INLINE Uint16
 | 
			
		||||
SDL_Swap16(Uint16 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc");
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
SDL_FORCE_INLINE Uint16
 | 
			
		||||
SDL_Swap16(Uint16 x)
 | 
			
		||||
{
 | 
			
		||||
    return SDL_static_cast(Uint16, ((x << 8) | (x >> 8)));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__GNUC__) && defined(__i386__)
 | 
			
		||||
SDL_FORCE_INLINE Uint32
 | 
			
		||||
SDL_Swap32(Uint32 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("bswap %0": "=r"(x):"0"(x));
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && defined(__x86_64__)
 | 
			
		||||
SDL_FORCE_INLINE Uint32
 | 
			
		||||
SDL_Swap32(Uint32 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("bswapl %0": "=r"(x):"0"(x));
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
 | 
			
		||||
SDL_FORCE_INLINE Uint32
 | 
			
		||||
SDL_Swap32(Uint32 x)
 | 
			
		||||
{
 | 
			
		||||
    Uint32 result;
 | 
			
		||||
 | 
			
		||||
  __asm__("rlwimi %0,%2,24,16,23": "=&r"(result):"0"(x >> 24), "r"(x));
 | 
			
		||||
  __asm__("rlwimi %0,%2,8,8,15": "=&r"(result):"0"(result), "r"(x));
 | 
			
		||||
  __asm__("rlwimi %0,%2,24,0,7": "=&r"(result):"0"(result), "r"(x));
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) && !defined(__mcoldfire__)
 | 
			
		||||
SDL_FORCE_INLINE Uint32
 | 
			
		||||
SDL_Swap32(Uint32 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc");
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
SDL_FORCE_INLINE Uint32
 | 
			
		||||
SDL_Swap32(Uint32 x)
 | 
			
		||||
{
 | 
			
		||||
    return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) |
 | 
			
		||||
                                    ((x >> 8) & 0x0000FF00) | (x >> 24)));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__GNUC__) && defined(__i386__)
 | 
			
		||||
SDL_FORCE_INLINE Uint64
 | 
			
		||||
SDL_Swap64(Uint64 x)
 | 
			
		||||
{
 | 
			
		||||
    union
 | 
			
		||||
    {
 | 
			
		||||
        struct
 | 
			
		||||
        {
 | 
			
		||||
            Uint32 a, b;
 | 
			
		||||
        } s;
 | 
			
		||||
        Uint64 u;
 | 
			
		||||
    } v;
 | 
			
		||||
    v.u = x;
 | 
			
		||||
  __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1": "=r"(v.s.a), "=r"(v.s.b):"0"(v.s.a),
 | 
			
		||||
            "1"(v.s.
 | 
			
		||||
                b));
 | 
			
		||||
    return v.u;
 | 
			
		||||
}
 | 
			
		||||
#elif defined(__GNUC__) && defined(__x86_64__)
 | 
			
		||||
SDL_FORCE_INLINE Uint64
 | 
			
		||||
SDL_Swap64(Uint64 x)
 | 
			
		||||
{
 | 
			
		||||
  __asm__("bswapq %0": "=r"(x):"0"(x));
 | 
			
		||||
    return x;
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
SDL_FORCE_INLINE Uint64
 | 
			
		||||
SDL_Swap64(Uint64 x)
 | 
			
		||||
{
 | 
			
		||||
    Uint32 hi, lo;
 | 
			
		||||
 | 
			
		||||
    /* Separate into high and low 32-bit values and swap them */
 | 
			
		||||
    lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
 | 
			
		||||
    x >>= 32;
 | 
			
		||||
    hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
 | 
			
		||||
    x = SDL_Swap32(lo);
 | 
			
		||||
    x <<= 32;
 | 
			
		||||
    x |= SDL_Swap32(hi);
 | 
			
		||||
    return (x);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SDL_FORCE_INLINE float
 | 
			
		||||
SDL_SwapFloat(float x)
 | 
			
		||||
{
 | 
			
		||||
    union
 | 
			
		||||
    {
 | 
			
		||||
        float f;
 | 
			
		||||
        Uint32 ui32;
 | 
			
		||||
    } swapper;
 | 
			
		||||
    swapper.f = x;
 | 
			
		||||
    swapper.ui32 = SDL_Swap32(swapper.ui32);
 | 
			
		||||
    return swapper.f;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Swap to native
 | 
			
		||||
 *  Byteswap item from the specified endianness to the native endianness.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
 | 
			
		||||
#define SDL_SwapLE16(X) (X)
 | 
			
		||||
#define SDL_SwapLE32(X) (X)
 | 
			
		||||
#define SDL_SwapLE64(X) (X)
 | 
			
		||||
#define SDL_SwapFloatLE(X)  (X)
 | 
			
		||||
#define SDL_SwapBE16(X) SDL_Swap16(X)
 | 
			
		||||
#define SDL_SwapBE32(X) SDL_Swap32(X)
 | 
			
		||||
#define SDL_SwapBE64(X) SDL_Swap64(X)
 | 
			
		||||
#define SDL_SwapFloatBE(X)  SDL_SwapFloat(X)
 | 
			
		||||
#else
 | 
			
		||||
#define SDL_SwapLE16(X) SDL_Swap16(X)
 | 
			
		||||
#define SDL_SwapLE32(X) SDL_Swap32(X)
 | 
			
		||||
#define SDL_SwapLE64(X) SDL_Swap64(X)
 | 
			
		||||
#define SDL_SwapFloatLE(X)  SDL_SwapFloat(X)
 | 
			
		||||
#define SDL_SwapBE16(X) (X)
 | 
			
		||||
#define SDL_SwapBE32(X) (X)
 | 
			
		||||
#define SDL_SwapBE64(X) (X)
 | 
			
		||||
#define SDL_SwapFloatBE(X)  (X)
 | 
			
		||||
#endif
 | 
			
		||||
/* @} *//* Swap to native */
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_endian_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,76 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_error.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Simple error message routines for SDL.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_error_h
 | 
			
		||||
#define _SDL_error_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Public functions */
 | 
			
		||||
/* SDL_SetError() unconditionally returns -1. */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GetError(void);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_ClearError(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Internal error functions
 | 
			
		||||
 *
 | 
			
		||||
 *  \internal
 | 
			
		||||
 *  Private error reporting function - used internally.
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define SDL_OutOfMemory()   SDL_Error(SDL_ENOMEM)
 | 
			
		||||
#define SDL_Unsupported()   SDL_Error(SDL_UNSUPPORTED)
 | 
			
		||||
#define SDL_InvalidParamError(param)    SDL_SetError("Parameter '%s' is invalid", (param))
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_ENOMEM,
 | 
			
		||||
    SDL_EFREAD,
 | 
			
		||||
    SDL_EFWRITE,
 | 
			
		||||
    SDL_EFSEEK,
 | 
			
		||||
    SDL_UNSUPPORTED,
 | 
			
		||||
    SDL_LASTERROR
 | 
			
		||||
} SDL_errorcode;
 | 
			
		||||
/* SDL_Error() unconditionally returns -1. */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code);
 | 
			
		||||
/* @} *//* Internal error functions */
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_error_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,754 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_events.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Include file for SDL event handling.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_events_h
 | 
			
		||||
#define _SDL_events_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
#include "SDL_video.h"
 | 
			
		||||
#include "SDL_keyboard.h"
 | 
			
		||||
#include "SDL_mouse.h"
 | 
			
		||||
#include "SDL_joystick.h"
 | 
			
		||||
#include "SDL_gamecontroller.h"
 | 
			
		||||
#include "SDL_quit.h"
 | 
			
		||||
#include "SDL_gesture.h"
 | 
			
		||||
#include "SDL_touch.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* General keyboard/mouse state definitions */
 | 
			
		||||
#define SDL_RELEASED    0
 | 
			
		||||
#define SDL_PRESSED 1
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief The types of events that can be delivered.
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_FIRSTEVENT     = 0,     /**< Unused (do not remove) */
 | 
			
		||||
 | 
			
		||||
    /* Application events */
 | 
			
		||||
    SDL_QUIT           = 0x100, /**< User-requested quit */
 | 
			
		||||
 | 
			
		||||
    /* These application events have special meaning on iOS, see README-ios.md for details */
 | 
			
		||||
    SDL_APP_TERMINATING,        /**< The application is being terminated by the OS
 | 
			
		||||
                                     Called on iOS in applicationWillTerminate()
 | 
			
		||||
                                     Called on Android in onDestroy()
 | 
			
		||||
                                */
 | 
			
		||||
    SDL_APP_LOWMEMORY,          /**< The application is low on memory, free memory if possible.
 | 
			
		||||
                                     Called on iOS in applicationDidReceiveMemoryWarning()
 | 
			
		||||
                                     Called on Android in onLowMemory()
 | 
			
		||||
                                */
 | 
			
		||||
    SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background
 | 
			
		||||
                                     Called on iOS in applicationWillResignActive()
 | 
			
		||||
                                     Called on Android in onPause()
 | 
			
		||||
                                */
 | 
			
		||||
    SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time
 | 
			
		||||
                                     Called on iOS in applicationDidEnterBackground()
 | 
			
		||||
                                     Called on Android in onPause()
 | 
			
		||||
                                */
 | 
			
		||||
    SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground
 | 
			
		||||
                                     Called on iOS in applicationWillEnterForeground()
 | 
			
		||||
                                     Called on Android in onResume()
 | 
			
		||||
                                */
 | 
			
		||||
    SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive
 | 
			
		||||
                                     Called on iOS in applicationDidBecomeActive()
 | 
			
		||||
                                     Called on Android in onResume()
 | 
			
		||||
                                */
 | 
			
		||||
 | 
			
		||||
    /* Window events */
 | 
			
		||||
    SDL_WINDOWEVENT    = 0x200, /**< Window state change */
 | 
			
		||||
    SDL_SYSWMEVENT,             /**< System specific event */
 | 
			
		||||
 | 
			
		||||
    /* Keyboard events */
 | 
			
		||||
    SDL_KEYDOWN        = 0x300, /**< Key pressed */
 | 
			
		||||
    SDL_KEYUP,                  /**< Key released */
 | 
			
		||||
    SDL_TEXTEDITING,            /**< Keyboard text editing (composition) */
 | 
			
		||||
    SDL_TEXTINPUT,              /**< Keyboard text input */
 | 
			
		||||
    SDL_KEYMAPCHANGED,          /**< Keymap changed due to a system event such as an
 | 
			
		||||
                                     input language or keyboard layout change.
 | 
			
		||||
                                */
 | 
			
		||||
 | 
			
		||||
    /* Mouse events */
 | 
			
		||||
    SDL_MOUSEMOTION    = 0x400, /**< Mouse moved */
 | 
			
		||||
    SDL_MOUSEBUTTONDOWN,        /**< Mouse button pressed */
 | 
			
		||||
    SDL_MOUSEBUTTONUP,          /**< Mouse button released */
 | 
			
		||||
    SDL_MOUSEWHEEL,             /**< Mouse wheel motion */
 | 
			
		||||
 | 
			
		||||
    /* Joystick events */
 | 
			
		||||
    SDL_JOYAXISMOTION  = 0x600, /**< Joystick axis motion */
 | 
			
		||||
    SDL_JOYBALLMOTION,          /**< Joystick trackball motion */
 | 
			
		||||
    SDL_JOYHATMOTION,           /**< Joystick hat position change */
 | 
			
		||||
    SDL_JOYBUTTONDOWN,          /**< Joystick button pressed */
 | 
			
		||||
    SDL_JOYBUTTONUP,            /**< Joystick button released */
 | 
			
		||||
    SDL_JOYDEVICEADDED,         /**< A new joystick has been inserted into the system */
 | 
			
		||||
    SDL_JOYDEVICEREMOVED,       /**< An opened joystick has been removed */
 | 
			
		||||
 | 
			
		||||
    /* Game controller events */
 | 
			
		||||
    SDL_CONTROLLERAXISMOTION  = 0x650, /**< Game controller axis motion */
 | 
			
		||||
    SDL_CONTROLLERBUTTONDOWN,          /**< Game controller button pressed */
 | 
			
		||||
    SDL_CONTROLLERBUTTONUP,            /**< Game controller button released */
 | 
			
		||||
    SDL_CONTROLLERDEVICEADDED,         /**< A new Game controller has been inserted into the system */
 | 
			
		||||
    SDL_CONTROLLERDEVICEREMOVED,       /**< An opened Game controller has been removed */
 | 
			
		||||
    SDL_CONTROLLERDEVICEREMAPPED,      /**< The controller mapping was updated */
 | 
			
		||||
 | 
			
		||||
    /* Touch events */
 | 
			
		||||
    SDL_FINGERDOWN      = 0x700,
 | 
			
		||||
    SDL_FINGERUP,
 | 
			
		||||
    SDL_FINGERMOTION,
 | 
			
		||||
 | 
			
		||||
    /* Gesture events */
 | 
			
		||||
    SDL_DOLLARGESTURE   = 0x800,
 | 
			
		||||
    SDL_DOLLARRECORD,
 | 
			
		||||
    SDL_MULTIGESTURE,
 | 
			
		||||
 | 
			
		||||
    /* Clipboard events */
 | 
			
		||||
    SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard changed */
 | 
			
		||||
 | 
			
		||||
    /* Drag and drop events */
 | 
			
		||||
    SDL_DROPFILE        = 0x1000, /**< The system requests a file open */
 | 
			
		||||
    SDL_DROPTEXT,                 /**< text/plain drag-and-drop event */
 | 
			
		||||
    SDL_DROPBEGIN,                /**< A new set of drops is beginning (NULL filename) */
 | 
			
		||||
    SDL_DROPCOMPLETE,             /**< Current set of drops is now complete (NULL filename) */
 | 
			
		||||
 | 
			
		||||
    /* Audio hotplug events */
 | 
			
		||||
    SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */
 | 
			
		||||
    SDL_AUDIODEVICEREMOVED,        /**< An audio device has been removed. */
 | 
			
		||||
 | 
			
		||||
    /* Render events */
 | 
			
		||||
    SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */
 | 
			
		||||
    SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */
 | 
			
		||||
 | 
			
		||||
    /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
 | 
			
		||||
     *  and should be allocated with SDL_RegisterEvents()
 | 
			
		||||
     */
 | 
			
		||||
    SDL_USEREVENT    = 0x8000,
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     *  This last event is only for bounding internal arrays
 | 
			
		||||
     */
 | 
			
		||||
    SDL_LASTEVENT    = 0xFFFF
 | 
			
		||||
} SDL_EventType;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Fields shared by every event
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_CommonEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
} SDL_CommonEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Window state change event data (event.window.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_WindowEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_WINDOWEVENT */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;    /**< The associated window */
 | 
			
		||||
    Uint8 event;        /**< ::SDL_WindowEventID */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
    Uint8 padding3;
 | 
			
		||||
    Sint32 data1;       /**< event dependent data */
 | 
			
		||||
    Sint32 data2;       /**< event dependent data */
 | 
			
		||||
} SDL_WindowEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Keyboard button event structure (event.key.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_KeyboardEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_KEYDOWN or ::SDL_KEYUP */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;    /**< The window with keyboard focus, if any */
 | 
			
		||||
    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
 | 
			
		||||
    Uint8 repeat;       /**< Non-zero if this is a key repeat */
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
    Uint8 padding3;
 | 
			
		||||
    SDL_Keysym keysym;  /**< The key that was pressed or released */
 | 
			
		||||
} SDL_KeyboardEvent;
 | 
			
		||||
 | 
			
		||||
#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32)
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Keyboard text editing event structure (event.edit.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_TextEditingEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;                                /**< ::SDL_TEXTEDITING */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;                            /**< The window with keyboard focus, if any */
 | 
			
		||||
    char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE];  /**< The editing text */
 | 
			
		||||
    Sint32 start;                               /**< The start cursor of selected editing text */
 | 
			
		||||
    Sint32 length;                              /**< The length of selected editing text */
 | 
			
		||||
} SDL_TextEditingEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32)
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Keyboard text input event structure (event.text.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_TextInputEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;                              /**< ::SDL_TEXTINPUT */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;                          /**< The window with keyboard focus, if any */
 | 
			
		||||
    char text[SDL_TEXTINPUTEVENT_TEXT_SIZE];  /**< The input text */
 | 
			
		||||
} SDL_TextInputEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Mouse motion event structure (event.motion.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_MouseMotionEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_MOUSEMOTION */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;    /**< The window with mouse focus, if any */
 | 
			
		||||
    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
 | 
			
		||||
    Uint32 state;       /**< The current button state */
 | 
			
		||||
    Sint32 x;           /**< X coordinate, relative to window */
 | 
			
		||||
    Sint32 y;           /**< Y coordinate, relative to window */
 | 
			
		||||
    Sint32 xrel;        /**< The relative motion in the X direction */
 | 
			
		||||
    Sint32 yrel;        /**< The relative motion in the Y direction */
 | 
			
		||||
} SDL_MouseMotionEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Mouse button event structure (event.button.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_MouseButtonEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;    /**< The window with mouse focus, if any */
 | 
			
		||||
    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
 | 
			
		||||
    Uint8 button;       /**< The mouse button index */
 | 
			
		||||
    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
 | 
			
		||||
    Uint8 clicks;       /**< 1 for single-click, 2 for double-click, etc. */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Sint32 x;           /**< X coordinate, relative to window */
 | 
			
		||||
    Sint32 y;           /**< Y coordinate, relative to window */
 | 
			
		||||
} SDL_MouseButtonEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Mouse wheel event structure (event.wheel.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_MouseWheelEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_MOUSEWHEEL */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;    /**< The window with mouse focus, if any */
 | 
			
		||||
    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
 | 
			
		||||
    Sint32 x;           /**< The amount scrolled horizontally, positive to the right and negative to the left */
 | 
			
		||||
    Sint32 y;           /**< The amount scrolled vertically, positive away from the user and negative toward the user */
 | 
			
		||||
    Uint32 direction;   /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */
 | 
			
		||||
} SDL_MouseWheelEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Joystick axis motion event structure (event.jaxis.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_JoyAxisEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_JOYAXISMOTION */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_JoystickID which; /**< The joystick instance id */
 | 
			
		||||
    Uint8 axis;         /**< The joystick axis index */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
    Uint8 padding3;
 | 
			
		||||
    Sint16 value;       /**< The axis value (range: -32768 to 32767) */
 | 
			
		||||
    Uint16 padding4;
 | 
			
		||||
} SDL_JoyAxisEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Joystick trackball motion event structure (event.jball.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_JoyBallEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_JOYBALLMOTION */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_JoystickID which; /**< The joystick instance id */
 | 
			
		||||
    Uint8 ball;         /**< The joystick trackball index */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
    Uint8 padding3;
 | 
			
		||||
    Sint16 xrel;        /**< The relative motion in the X direction */
 | 
			
		||||
    Sint16 yrel;        /**< The relative motion in the Y direction */
 | 
			
		||||
} SDL_JoyBallEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Joystick hat position change event structure (event.jhat.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_JoyHatEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_JOYHATMOTION */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_JoystickID which; /**< The joystick instance id */
 | 
			
		||||
    Uint8 hat;          /**< The joystick hat index */
 | 
			
		||||
    Uint8 value;        /**< The hat position value.
 | 
			
		||||
                         *   \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP
 | 
			
		||||
                         *   \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT
 | 
			
		||||
                         *   \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN
 | 
			
		||||
                         *
 | 
			
		||||
                         *   Note that zero means the POV is centered.
 | 
			
		||||
                         */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
} SDL_JoyHatEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Joystick button event structure (event.jbutton.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_JoyButtonEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_JoystickID which; /**< The joystick instance id */
 | 
			
		||||
    Uint8 button;       /**< The joystick button index */
 | 
			
		||||
    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
} SDL_JoyButtonEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Joystick device event structure (event.jdevice.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_JoyDeviceEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Sint32 which;       /**< The joystick device index for the ADDED event, instance id for the REMOVED event */
 | 
			
		||||
} SDL_JoyDeviceEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Game controller axis motion event structure (event.caxis.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_ControllerAxisEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_CONTROLLERAXISMOTION */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_JoystickID which; /**< The joystick instance id */
 | 
			
		||||
    Uint8 axis;         /**< The controller axis (SDL_GameControllerAxis) */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
    Uint8 padding3;
 | 
			
		||||
    Sint16 value;       /**< The axis value (range: -32768 to 32767) */
 | 
			
		||||
    Uint16 padding4;
 | 
			
		||||
} SDL_ControllerAxisEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Game controller button event structure (event.cbutton.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_ControllerButtonEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_JoystickID which; /**< The joystick instance id */
 | 
			
		||||
    Uint8 button;       /**< The controller button (SDL_GameControllerButton) */
 | 
			
		||||
    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
} SDL_ControllerButtonEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Controller device event structure (event.cdevice.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_ControllerDeviceEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Sint32 which;       /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */
 | 
			
		||||
} SDL_ControllerDeviceEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Audio device event structure (event.adevice.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_AudioDeviceEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 which;       /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */
 | 
			
		||||
    Uint8 iscapture;    /**< zero if an output device, non-zero if a capture device. */
 | 
			
		||||
    Uint8 padding1;
 | 
			
		||||
    Uint8 padding2;
 | 
			
		||||
    Uint8 padding3;
 | 
			
		||||
} SDL_AudioDeviceEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Touch finger event structure (event.tfinger.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_TouchFingerEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_TouchID touchId; /**< The touch device id */
 | 
			
		||||
    SDL_FingerID fingerId;
 | 
			
		||||
    float x;            /**< Normalized in the range 0...1 */
 | 
			
		||||
    float y;            /**< Normalized in the range 0...1 */
 | 
			
		||||
    float dx;           /**< Normalized in the range -1...1 */
 | 
			
		||||
    float dy;           /**< Normalized in the range -1...1 */
 | 
			
		||||
    float pressure;     /**< Normalized in the range 0...1 */
 | 
			
		||||
} SDL_TouchFingerEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Multiple Finger Gesture Event (event.mgesture.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_MultiGestureEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_MULTIGESTURE */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_TouchID touchId; /**< The touch device index */
 | 
			
		||||
    float dTheta;
 | 
			
		||||
    float dDist;
 | 
			
		||||
    float x;
 | 
			
		||||
    float y;
 | 
			
		||||
    Uint16 numFingers;
 | 
			
		||||
    Uint16 padding;
 | 
			
		||||
} SDL_MultiGestureEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Dollar Gesture Event (event.dgesture.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_DollarGestureEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_TouchID touchId; /**< The touch device id */
 | 
			
		||||
    SDL_GestureID gestureId;
 | 
			
		||||
    Uint32 numFingers;
 | 
			
		||||
    float error;
 | 
			
		||||
    float x;            /**< Normalized center of gesture */
 | 
			
		||||
    float y;            /**< Normalized center of gesture */
 | 
			
		||||
} SDL_DollarGestureEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief An event used to request a file open by the system (event.drop.*)
 | 
			
		||||
 *         This event is enabled by default, you can disable it with SDL_EventState().
 | 
			
		||||
 *  \note If this event is enabled, you must free the filename in the event.
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_DropEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    char *file;         /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */
 | 
			
		||||
    Uint32 windowID;    /**< The window that was dropped on, if any */
 | 
			
		||||
} SDL_DropEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief The "quit requested" event
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_QuitEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_QUIT */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
} SDL_QuitEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief OS Specific event
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_OSEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_QUIT */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
} SDL_OSEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief A user-defined event type (event.user.*)
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_UserEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    Uint32 windowID;    /**< The associated window if any */
 | 
			
		||||
    Sint32 code;        /**< User defined event code */
 | 
			
		||||
    void *data1;        /**< User defined data pointer */
 | 
			
		||||
    void *data2;        /**< User defined data pointer */
 | 
			
		||||
} SDL_UserEvent;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct SDL_SysWMmsg;
 | 
			
		||||
typedef struct SDL_SysWMmsg SDL_SysWMmsg;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief A video driver dependent system event (event.syswm.*)
 | 
			
		||||
 *         This event is disabled by default, you can enable it with SDL_EventState()
 | 
			
		||||
 *
 | 
			
		||||
 *  \note If you want to use this event, you should include SDL_syswm.h.
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_SysWMEvent
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;        /**< ::SDL_SYSWMEVENT */
 | 
			
		||||
    Uint32 timestamp;
 | 
			
		||||
    SDL_SysWMmsg *msg;  /**< driver dependent data, defined in SDL_syswm.h */
 | 
			
		||||
} SDL_SysWMEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief General event structure
 | 
			
		||||
 */
 | 
			
		||||
typedef union SDL_Event
 | 
			
		||||
{
 | 
			
		||||
    Uint32 type;                    /**< Event type, shared with all events */
 | 
			
		||||
    SDL_CommonEvent common;         /**< Common event data */
 | 
			
		||||
    SDL_WindowEvent window;         /**< Window event data */
 | 
			
		||||
    SDL_KeyboardEvent key;          /**< Keyboard event data */
 | 
			
		||||
    SDL_TextEditingEvent edit;      /**< Text editing event data */
 | 
			
		||||
    SDL_TextInputEvent text;        /**< Text input event data */
 | 
			
		||||
    SDL_MouseMotionEvent motion;    /**< Mouse motion event data */
 | 
			
		||||
    SDL_MouseButtonEvent button;    /**< Mouse button event data */
 | 
			
		||||
    SDL_MouseWheelEvent wheel;      /**< Mouse wheel event data */
 | 
			
		||||
    SDL_JoyAxisEvent jaxis;         /**< Joystick axis event data */
 | 
			
		||||
    SDL_JoyBallEvent jball;         /**< Joystick ball event data */
 | 
			
		||||
    SDL_JoyHatEvent jhat;           /**< Joystick hat event data */
 | 
			
		||||
    SDL_JoyButtonEvent jbutton;     /**< Joystick button event data */
 | 
			
		||||
    SDL_JoyDeviceEvent jdevice;     /**< Joystick device change event data */
 | 
			
		||||
    SDL_ControllerAxisEvent caxis;      /**< Game Controller axis event data */
 | 
			
		||||
    SDL_ControllerButtonEvent cbutton;  /**< Game Controller button event data */
 | 
			
		||||
    SDL_ControllerDeviceEvent cdevice;  /**< Game Controller device event data */
 | 
			
		||||
    SDL_AudioDeviceEvent adevice;   /**< Audio device event data */
 | 
			
		||||
    SDL_QuitEvent quit;             /**< Quit request event data */
 | 
			
		||||
    SDL_UserEvent user;             /**< Custom event data */
 | 
			
		||||
    SDL_SysWMEvent syswm;           /**< System dependent window event data */
 | 
			
		||||
    SDL_TouchFingerEvent tfinger;   /**< Touch finger event data */
 | 
			
		||||
    SDL_MultiGestureEvent mgesture; /**< Gesture event data */
 | 
			
		||||
    SDL_DollarGestureEvent dgesture; /**< Gesture event data */
 | 
			
		||||
    SDL_DropEvent drop;             /**< Drag and drop event data */
 | 
			
		||||
 | 
			
		||||
    /* This is necessary for ABI compatibility between Visual C++ and GCC
 | 
			
		||||
       Visual C++ will respect the push pack pragma and use 52 bytes for
 | 
			
		||||
       this structure, and GCC will use the alignment of the largest datatype
 | 
			
		||||
       within the union, which is 8 bytes.
 | 
			
		||||
 | 
			
		||||
       So... we'll add padding to force the size to be 56 bytes for both.
 | 
			
		||||
    */
 | 
			
		||||
    Uint8 padding[56];
 | 
			
		||||
} SDL_Event;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Function prototypes */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Pumps the event loop, gathering events from the input devices.
 | 
			
		||||
 *
 | 
			
		||||
 *  This function updates the event queue and internal input device state.
 | 
			
		||||
 *
 | 
			
		||||
 *  This should only be run in the thread that sets the video mode.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_PumpEvents(void);
 | 
			
		||||
 | 
			
		||||
/* @{ */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_ADDEVENT,
 | 
			
		||||
    SDL_PEEKEVENT,
 | 
			
		||||
    SDL_GETEVENT
 | 
			
		||||
} SDL_eventaction;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Checks the event queue for messages and optionally returns them.
 | 
			
		||||
 *
 | 
			
		||||
 *  If \c action is ::SDL_ADDEVENT, up to \c numevents events will be added to
 | 
			
		||||
 *  the back of the event queue.
 | 
			
		||||
 *
 | 
			
		||||
 *  If \c action is ::SDL_PEEKEVENT, up to \c numevents events at the front
 | 
			
		||||
 *  of the event queue, within the specified minimum and maximum type,
 | 
			
		||||
 *  will be returned and will not be removed from the queue.
 | 
			
		||||
 *
 | 
			
		||||
 *  If \c action is ::SDL_GETEVENT, up to \c numevents events at the front
 | 
			
		||||
 *  of the event queue, within the specified minimum and maximum type,
 | 
			
		||||
 *  will be returned and will be removed from the queue.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return The number of events actually stored, or -1 if there was an error.
 | 
			
		||||
 *
 | 
			
		||||
 *  This function is thread-safe.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents,
 | 
			
		||||
                                           SDL_eventaction action,
 | 
			
		||||
                                           Uint32 minType, Uint32 maxType);
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Checks to see if certain event types are in the event queue.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type);
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function clears events from the event queue
 | 
			
		||||
 *  This function only affects currently queued events. If you want to make
 | 
			
		||||
 *  sure that all pending OS events are flushed, you can call SDL_PumpEvents()
 | 
			
		||||
 *  on the main thread immediately before the flush call.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Polls for currently pending events.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 1 if there are any pending events, or 0 if there are none available.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param event If not NULL, the next event is removed from the queue and
 | 
			
		||||
 *               stored in that area.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Waits indefinitely for the next available event.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 1, or 0 if there was an error while waiting for events.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param event If not NULL, the next event is removed from the queue and
 | 
			
		||||
 *               stored in that area.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Waits until the specified timeout (in milliseconds) for the next
 | 
			
		||||
 *         available event.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 1, or 0 if there was an error while waiting for events.
 | 
			
		||||
 *
 | 
			
		||||
 *  \param event If not NULL, the next event is removed from the queue and
 | 
			
		||||
 *               stored in that area.
 | 
			
		||||
 *  \param timeout The timeout (in milliseconds) to wait for next event.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event,
 | 
			
		||||
                                                 int timeout);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Add an event to the event queue.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 1 on success, 0 if the event was filtered, or -1 if the event queue
 | 
			
		||||
 *          was full or there was some other error.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event);
 | 
			
		||||
 | 
			
		||||
typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Sets up a filter to process all events before they change internal state and
 | 
			
		||||
 *  are posted to the internal event queue.
 | 
			
		||||
 *
 | 
			
		||||
 *  The filter is prototyped as:
 | 
			
		||||
 *  \code
 | 
			
		||||
 *      int SDL_EventFilter(void *userdata, SDL_Event * event);
 | 
			
		||||
 *  \endcode
 | 
			
		||||
 *
 | 
			
		||||
 *  If the filter returns 1, then the event will be added to the internal queue.
 | 
			
		||||
 *  If it returns 0, then the event will be dropped from the queue, but the
 | 
			
		||||
 *  internal state will still be updated.  This allows selective filtering of
 | 
			
		||||
 *  dynamically arriving events.
 | 
			
		||||
 *
 | 
			
		||||
 *  \warning  Be very careful of what you do in the event filter function, as
 | 
			
		||||
 *            it may run in a different thread!
 | 
			
		||||
 *
 | 
			
		||||
 *  There is one caveat when dealing with the ::SDL_QuitEvent event type.  The
 | 
			
		||||
 *  event filter is only called when the window manager desires to close the
 | 
			
		||||
 *  application window.  If the event filter returns 1, then the window will
 | 
			
		||||
 *  be closed, otherwise the window will remain open if possible.
 | 
			
		||||
 *
 | 
			
		||||
 *  If the quit event is generated by an interrupt signal, it will bypass the
 | 
			
		||||
 *  internal queue and be delivered to the application at the next event poll.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter,
 | 
			
		||||
                                                void *userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return the current event filter - can be used to "chain" filters.
 | 
			
		||||
 *  If there is no event filter set, this function returns SDL_FALSE.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter,
 | 
			
		||||
                                                    void **userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Add a function which is called when an event is added to the queue.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter,
 | 
			
		||||
                                               void *userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Remove an event watch function added with SDL_AddEventWatch()
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter,
 | 
			
		||||
                                               void *userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Run the filter function on the current event queue, removing any
 | 
			
		||||
 *  events for which the filter returns 0.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter,
 | 
			
		||||
                                              void *userdata);
 | 
			
		||||
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define SDL_QUERY   -1
 | 
			
		||||
#define SDL_IGNORE   0
 | 
			
		||||
#define SDL_DISABLE  0
 | 
			
		||||
#define SDL_ENABLE   1
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function allows you to set the state of processing certain events.
 | 
			
		||||
 *   - If \c state is set to ::SDL_IGNORE, that event will be automatically
 | 
			
		||||
 *     dropped from the event queue and will not event be filtered.
 | 
			
		||||
 *   - If \c state is set to ::SDL_ENABLE, that event will be processed
 | 
			
		||||
 *     normally.
 | 
			
		||||
 *   - If \c state is set to ::SDL_QUERY, SDL_EventState() will return the
 | 
			
		||||
 *     current processing state of the specified event.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state);
 | 
			
		||||
/* @} */
 | 
			
		||||
#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  This function allocates a set of user-defined events, and returns
 | 
			
		||||
 *  the beginning event number for that set of events.
 | 
			
		||||
 *
 | 
			
		||||
 *  If there aren't enough user-defined events left, this function
 | 
			
		||||
 *  returns (Uint32)-1
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_events_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,136 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_filesystem.h
 | 
			
		||||
 *
 | 
			
		||||
 *  \brief Include file for filesystem SDL API functions
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_filesystem_h
 | 
			
		||||
#define _SDL_filesystem_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Get the path where the application resides.
 | 
			
		||||
 *
 | 
			
		||||
 * Get the "base path". This is the directory where the application was run
 | 
			
		||||
 *  from, which is probably the installation directory, and may or may not
 | 
			
		||||
 *  be the process's current working directory.
 | 
			
		||||
 *
 | 
			
		||||
 * This returns an absolute path in UTF-8 encoding, and is guaranteed to
 | 
			
		||||
 *  end with a path separator ('\\' on Windows, '/' most other places).
 | 
			
		||||
 *
 | 
			
		||||
 * The pointer returned by this function is owned by you. Please call
 | 
			
		||||
 *  SDL_free() on the pointer when you are done with it, or it will be a
 | 
			
		||||
 *  memory leak. This is not necessarily a fast call, though, so you should
 | 
			
		||||
 *  call this once near startup and save the string if you need it.
 | 
			
		||||
 *
 | 
			
		||||
 * Some platforms can't determine the application's path, and on other
 | 
			
		||||
 *  platforms, this might be meaningless. In such cases, this function will
 | 
			
		||||
 *  return NULL.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return String of base dir in UTF-8 encoding, or NULL on error.
 | 
			
		||||
 *
 | 
			
		||||
 * \sa SDL_GetPrefPath
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC char *SDLCALL SDL_GetBasePath(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Get the user-and-app-specific path where files can be written.
 | 
			
		||||
 *
 | 
			
		||||
 * Get the "pref dir". This is meant to be where users can write personal
 | 
			
		||||
 *  files (preferences and save games, etc) that are specific to your
 | 
			
		||||
 *  application. This directory is unique per user, per application.
 | 
			
		||||
 *
 | 
			
		||||
 * This function will decide the appropriate location in the native filesystem,
 | 
			
		||||
 *  create the directory if necessary, and return a string of the absolute
 | 
			
		||||
 *  path to the directory in UTF-8 encoding.
 | 
			
		||||
 *
 | 
			
		||||
 * On Windows, the string might look like:
 | 
			
		||||
 *  "C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\"
 | 
			
		||||
 *
 | 
			
		||||
 * On Linux, the string might look like:
 | 
			
		||||
 *  "/home/bob/.local/share/My Program Name/"
 | 
			
		||||
 *
 | 
			
		||||
 * On Mac OS X, the string might look like:
 | 
			
		||||
 *  "/Users/bob/Library/Application Support/My Program Name/"
 | 
			
		||||
 *
 | 
			
		||||
 * (etc.)
 | 
			
		||||
 *
 | 
			
		||||
 * You specify the name of your organization (if it's not a real organization,
 | 
			
		||||
 *  your name or an Internet domain you own might do) and the name of your
 | 
			
		||||
 *  application. These should be untranslated proper names.
 | 
			
		||||
 *
 | 
			
		||||
 * Both the org and app strings may become part of a directory name, so
 | 
			
		||||
 *  please follow these rules:
 | 
			
		||||
 *
 | 
			
		||||
 *    - Try to use the same org string (including case-sensitivity) for
 | 
			
		||||
 *      all your applications that use this function.
 | 
			
		||||
 *    - Always use a unique app string for each one, and make sure it never
 | 
			
		||||
 *      changes for an app once you've decided on it.
 | 
			
		||||
 *    - Unicode characters are legal, as long as it's UTF-8 encoded, but...
 | 
			
		||||
 *    - ...only use letters, numbers, and spaces. Avoid punctuation like
 | 
			
		||||
 *      "Game Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient.
 | 
			
		||||
 *
 | 
			
		||||
 * This returns an absolute path in UTF-8 encoding, and is guaranteed to
 | 
			
		||||
 *  end with a path separator ('\\' on Windows, '/' most other places).
 | 
			
		||||
 *
 | 
			
		||||
 * The pointer returned by this function is owned by you. Please call
 | 
			
		||||
 *  SDL_free() on the pointer when you are done with it, or it will be a
 | 
			
		||||
 *  memory leak. This is not necessarily a fast call, though, so you should
 | 
			
		||||
 *  call this once near startup and save the string if you need it.
 | 
			
		||||
 *
 | 
			
		||||
 * You should assume the path returned by this function is the only safe
 | 
			
		||||
 *  place to write files (and that SDL_GetBasePath(), while it might be
 | 
			
		||||
 *  writable, or even the parent of the returned path, aren't where you
 | 
			
		||||
 *  should be writing things).
 | 
			
		||||
 *
 | 
			
		||||
 * Some platforms can't determine the pref path, and on other
 | 
			
		||||
 *  platforms, this might be meaningless. In such cases, this function will
 | 
			
		||||
 *  return NULL.
 | 
			
		||||
 *
 | 
			
		||||
 *   \param org The name of your organization.
 | 
			
		||||
 *   \param app The name of your application.
 | 
			
		||||
 *  \return UTF-8 string of user dir in platform-dependent notation. NULL
 | 
			
		||||
 *          if there's a problem (creating directory failed, etc).
 | 
			
		||||
 *
 | 
			
		||||
 * \sa SDL_GetBasePath
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_filesystem_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,323 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_gamecontroller.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Include file for SDL game controller event handling
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_gamecontroller_h
 | 
			
		||||
#define _SDL_gamecontroller_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
#include "SDL_rwops.h"
 | 
			
		||||
#include "SDL_joystick.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_gamecontroller.h
 | 
			
		||||
 *
 | 
			
		||||
 *  In order to use these functions, SDL_Init() must have been called
 | 
			
		||||
 *  with the ::SDL_INIT_GAMECONTROLLER flag.  This causes SDL to scan the system
 | 
			
		||||
 *  for game controllers, and load appropriate drivers.
 | 
			
		||||
 *
 | 
			
		||||
 *  If you would like to receive controller updates while the application
 | 
			
		||||
 *  is in the background, you should set the following hint before calling
 | 
			
		||||
 *  SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* The gamecontroller structure used to identify an SDL game controller */
 | 
			
		||||
struct _SDL_GameController;
 | 
			
		||||
typedef struct _SDL_GameController SDL_GameController;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_CONTROLLER_BINDTYPE_NONE = 0,
 | 
			
		||||
    SDL_CONTROLLER_BINDTYPE_BUTTON,
 | 
			
		||||
    SDL_CONTROLLER_BINDTYPE_AXIS,
 | 
			
		||||
    SDL_CONTROLLER_BINDTYPE_HAT
 | 
			
		||||
} SDL_GameControllerBindType;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the SDL joystick layer binding for this controller button/axis mapping
 | 
			
		||||
 */
 | 
			
		||||
typedef struct SDL_GameControllerButtonBind
 | 
			
		||||
{
 | 
			
		||||
    SDL_GameControllerBindType bindType;
 | 
			
		||||
    union
 | 
			
		||||
    {
 | 
			
		||||
        int button;
 | 
			
		||||
        int axis;
 | 
			
		||||
        struct {
 | 
			
		||||
            int hat;
 | 
			
		||||
            int hat_mask;
 | 
			
		||||
        } hat;
 | 
			
		||||
    } value;
 | 
			
		||||
 | 
			
		||||
} SDL_GameControllerButtonBind;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  To count the number of game controllers in the system for the following:
 | 
			
		||||
 *  int nJoysticks = SDL_NumJoysticks();
 | 
			
		||||
 *  int nGameControllers = 0;
 | 
			
		||||
 *  for ( int i = 0; i < nJoysticks; i++ ) {
 | 
			
		||||
 *      if ( SDL_IsGameController(i) ) {
 | 
			
		||||
 *          nGameControllers++;
 | 
			
		||||
 *      }
 | 
			
		||||
 *  }
 | 
			
		||||
 *
 | 
			
		||||
 *  Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is:
 | 
			
		||||
 *  guid,name,mappings
 | 
			
		||||
 *
 | 
			
		||||
 *  Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones.
 | 
			
		||||
 *  Under Windows there is a reserved GUID of "xinput" that covers any XInput devices.
 | 
			
		||||
 *  The mapping format for joystick is:
 | 
			
		||||
 *      bX - a joystick button, index X
 | 
			
		||||
 *      hX.Y - hat X with value Y
 | 
			
		||||
 *      aX - axis X of the joystick
 | 
			
		||||
 *  Buttons can be used as a controller axis and vice versa.
 | 
			
		||||
 *
 | 
			
		||||
 *  This string shows an example of a valid mapping for a controller
 | 
			
		||||
 *  "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7",
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Load a set of mappings from a seekable SDL data stream (memory or file), filtered by the current SDL_GetPlatform()
 | 
			
		||||
 *  A community sourced database of controllers is available at https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt
 | 
			
		||||
 *
 | 
			
		||||
 *  If \c freerw is non-zero, the stream will be closed after being read.
 | 
			
		||||
 * 
 | 
			
		||||
 * \return number of mappings added, -1 on error
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW( SDL_RWops * rw, int freerw );
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Load a set of mappings from a file, filtered by the current SDL_GetPlatform()
 | 
			
		||||
 *
 | 
			
		||||
 *  Convenience macro.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_GameControllerAddMappingsFromFile(file)   SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Add or update an existing mapping configuration
 | 
			
		||||
 *
 | 
			
		||||
 * \return 1 if mapping is added, 0 if updated, -1 on error
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping( const char* mappingString );
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get a mapping string for a GUID
 | 
			
		||||
 *
 | 
			
		||||
 *  \return the mapping string.  Must be freed with SDL_free.  Returns NULL if no mapping is available
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID( SDL_JoystickGUID guid );
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get a mapping string for an open GameController
 | 
			
		||||
 *
 | 
			
		||||
 *  \return the mapping string.  Must be freed with SDL_free.  Returns NULL if no mapping is available
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC char * SDLCALL SDL_GameControllerMapping( SDL_GameController * gamecontroller );
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Is the joystick on this index supported by the game controller interface?
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the implementation dependent name of a game controller.
 | 
			
		||||
 *  This can be called before any controllers are opened.
 | 
			
		||||
 *  If no name can be found, this function returns NULL.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Open a game controller for use.
 | 
			
		||||
 *  The index passed as an argument refers to the N'th game controller on the system.
 | 
			
		||||
 *  This index is not the value which will identify this controller in future
 | 
			
		||||
 *  controller events.  The joystick's instance id (::SDL_JoystickID) will be
 | 
			
		||||
 *  used there instead.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return A controller identifier, or NULL if an error occurred.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Return the SDL_GameController associated with an instance id.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return the name for this currently opened controller
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Returns SDL_TRUE if the controller has been opened and currently connected,
 | 
			
		||||
 *  or SDL_FALSE if it has not.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the underlying joystick object used by a controller
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Enable/disable controller event polling.
 | 
			
		||||
 *
 | 
			
		||||
 *  If controller events are disabled, you must call SDL_GameControllerUpdate()
 | 
			
		||||
 *  yourself and check the state of the controller when you want controller
 | 
			
		||||
 *  information.
 | 
			
		||||
 *
 | 
			
		||||
 *  The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Update the current state of the open game controllers.
 | 
			
		||||
 *
 | 
			
		||||
 *  This is called automatically by the event loop if any game controller
 | 
			
		||||
 *  events are enabled.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  The list of axes available from a controller
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_CONTROLLER_AXIS_INVALID = -1,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_LEFTX,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_LEFTY,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_RIGHTX,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_RIGHTY,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_TRIGGERLEFT,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
 | 
			
		||||
    SDL_CONTROLLER_AXIS_MAX
 | 
			
		||||
} SDL_GameControllerAxis;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  turn this string into a axis mapping
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *pchString);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  turn this axis enum into a string mapping
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the SDL joystick layer binding for this controller button mapping
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
 | 
			
		||||
SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller,
 | 
			
		||||
                                 SDL_GameControllerAxis axis);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the current state of an axis control on a game controller.
 | 
			
		||||
 *
 | 
			
		||||
 *  The state is a value ranging from -32768 to 32767 (except for the triggers,
 | 
			
		||||
 *  which range from 0 to 32767).
 | 
			
		||||
 *
 | 
			
		||||
 *  The axis indices start at index 0.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Sint16 SDLCALL
 | 
			
		||||
SDL_GameControllerGetAxis(SDL_GameController *gamecontroller,
 | 
			
		||||
                          SDL_GameControllerAxis axis);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  The list of buttons available from a controller
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_INVALID = -1,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_A,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_B,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_X,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_Y,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_BACK,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_GUIDE,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_START,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_LEFTSTICK,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_RIGHTSTICK,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_DPAD_UP,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_DPAD_DOWN,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_DPAD_LEFT,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
 | 
			
		||||
    SDL_CONTROLLER_BUTTON_MAX
 | 
			
		||||
} SDL_GameControllerButton;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  turn this string into a button mapping
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *pchString);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  turn this button enum into a string mapping
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the SDL joystick layer binding for this controller button mapping
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
 | 
			
		||||
SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller,
 | 
			
		||||
                                   SDL_GameControllerButton button);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the current state of a button on a game controller.
 | 
			
		||||
 *
 | 
			
		||||
 *  The button indices start at index 0.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller,
 | 
			
		||||
                                                          SDL_GameControllerButton button);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Close a controller previously opened with SDL_GameControllerOpen().
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_gamecontroller_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,87 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_gesture.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Include file for SDL gesture event handling.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_gesture_h
 | 
			
		||||
#define _SDL_gesture_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
#include "SDL_video.h"
 | 
			
		||||
 | 
			
		||||
#include "SDL_touch.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef Sint64 SDL_GestureID;
 | 
			
		||||
 | 
			
		||||
/* Function prototypes */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Begin Recording a gesture on the specified touch, or all touches (-1)
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Save all currently loaded Dollar Gesture templates
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Save a currently loaded Dollar Gesture template
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Load Dollar Gesture templates from a file
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_gesture_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,711 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_hints.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Official documentation for SDL configuration variables
 | 
			
		||||
 *
 | 
			
		||||
 *  This file contains functions to set and get configuration hints,
 | 
			
		||||
 *  as well as listing each of them alphabetically.
 | 
			
		||||
 *
 | 
			
		||||
 *  The convention for naming hints is SDL_HINT_X, where "SDL_X" is
 | 
			
		||||
 *  the environment variable that can be used to override the default.
 | 
			
		||||
 *
 | 
			
		||||
 *  In general these hints are just that - they may or may not be
 | 
			
		||||
 *  supported or applicable on any given platform, but they provide
 | 
			
		||||
 *  a way for an application or user to give the library a hint as
 | 
			
		||||
 *  to how they would like the library to work.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_hints_h
 | 
			
		||||
#define _SDL_hints_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
 | 
			
		||||
 *
 | 
			
		||||
 *  SDL can try to accelerate the SDL screen surface by using streaming
 | 
			
		||||
 *  textures with a 3D rendering engine.  This variable controls whether and
 | 
			
		||||
 *  how this is done.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable 3D acceleration
 | 
			
		||||
 *    "1"       - Enable 3D acceleration, using the default renderer.
 | 
			
		||||
 *    "X"       - Enable 3D acceleration, using X where X is one of the valid rendering drivers.  (e.g. "direct3d", "opengl", etc.)
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL tries to make a best guess for each platform whether
 | 
			
		||||
 *  to use acceleration or not.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_FRAMEBUFFER_ACCELERATION   "SDL_FRAMEBUFFER_ACCELERATION"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable specifying which render driver to use.
 | 
			
		||||
 *
 | 
			
		||||
 *  If the application doesn't pick a specific renderer to use, this variable
 | 
			
		||||
 *  specifies the name of the preferred renderer.  If the preferred renderer
 | 
			
		||||
 *  can't be initialized, the normal default renderer is used.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable is case insensitive and can be set to the following values:
 | 
			
		||||
 *    "direct3d"
 | 
			
		||||
 *    "opengl"
 | 
			
		||||
 *    "opengles2"
 | 
			
		||||
 *    "opengles"
 | 
			
		||||
 *    "software"
 | 
			
		||||
 *
 | 
			
		||||
 *  The default varies by platform, but it's the first one in the list that
 | 
			
		||||
 *  is available on the current platform.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_RENDER_DRIVER              "SDL_RENDER_DRIVER"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the OpenGL render driver uses shaders if they are available.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable shaders
 | 
			
		||||
 *    "1"       - Enable shaders
 | 
			
		||||
 *
 | 
			
		||||
 *  By default shaders are used if OpenGL supports them.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_RENDER_OPENGL_SHADERS      "SDL_RENDER_OPENGL_SHADERS"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the Direct3D device is initialized for thread-safe operations.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Thread-safety is not enabled (faster)
 | 
			
		||||
 *    "1"       - Thread-safety is enabled
 | 
			
		||||
 *
 | 
			
		||||
 *  By default the Direct3D device is created with thread-safety disabled.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether to enable Direct3D 11+'s Debug Layer.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable does not have any effect on the Direct3D 9 based renderer.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable Debug Layer use
 | 
			
		||||
 *    "1"       - Enable Debug Layer use
 | 
			
		||||
 *
 | 
			
		||||
 *  By default, SDL does not use Direct3D Debug Layer.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_RENDER_DIRECT3D11_DEBUG    "SDL_RENDER_DIRECT3D11_DEBUG"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling the scaling quality
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0" or "nearest" - Nearest pixel sampling
 | 
			
		||||
 *    "1" or "linear"  - Linear filtering (supported by OpenGL and Direct3D)
 | 
			
		||||
 *    "2" or "best"    - Currently this is the same as "linear"
 | 
			
		||||
 *
 | 
			
		||||
 *  By default nearest pixel sampling is used
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_RENDER_SCALE_QUALITY       "SDL_RENDER_SCALE_QUALITY"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable vsync
 | 
			
		||||
 *    "1"       - Enable vsync
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL does not sync screen surface updates with vertical refresh.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_RENDER_VSYNC               "SDL_RENDER_VSYNC"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the screensaver is enabled. 
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable screensaver
 | 
			
		||||
 *    "1"       - Enable screensaver
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will disable the screensaver.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER    "SDL_VIDEO_ALLOW_SCREENSAVER"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the X11 VidMode extension should be used.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable XVidMode
 | 
			
		||||
 *    "1"       - Enable XVidMode
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will use XVidMode if it is available.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_X11_XVIDMODE         "SDL_VIDEO_X11_XVIDMODE"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the X11 Xinerama extension should be used.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable Xinerama
 | 
			
		||||
 *    "1"       - Enable Xinerama
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will use Xinerama if it is available.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_X11_XINERAMA         "SDL_VIDEO_X11_XINERAMA"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the X11 XRandR extension should be used.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable XRandR
 | 
			
		||||
 *    "1"       - Enable XRandR
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will not use XRandR because of window manager issues.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_X11_XRANDR           "SDL_VIDEO_X11_XRANDR"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the X11 _NET_WM_PING protocol should be supported.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable _NET_WM_PING
 | 
			
		||||
 *    "1"       - Enable _NET_WM_PING
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will use _NET_WM_PING, but for applications that know they
 | 
			
		||||
 *  will not always be able to respond to ping requests in a timely manner they can
 | 
			
		||||
 *  turn it off to avoid the window manager thinking the app is hung.
 | 
			
		||||
 *  The hint is checked in CreateWindow.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_X11_NET_WM_PING      "SDL_VIDEO_X11_NET_WM_PING"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the window frame and title bar are interactive when the cursor is hidden 
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - The window frame is not interactive when the cursor is hidden (no move, resize, etc)
 | 
			
		||||
 *    "1"       - The window frame is interactive when the cursor is hidden
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will allow interaction with the window frame when the cursor is hidden
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN    "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the windows message loop is processed by SDL 
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - The window message loop is not run
 | 
			
		||||
 *    "1"       - The window message loop is processed in SDL_PumpEvents()
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will process the windows message loop
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether grabbing input grabs the keyboard
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Grab will affect only the mouse
 | 
			
		||||
 *    "1"       - Grab will affect mouse and keyboard
 | 
			
		||||
 *
 | 
			
		||||
 *  By default SDL will not grab the keyboard so system shortcuts still work.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_GRAB_KEYBOARD              "SDL_GRAB_KEYBOARD"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
*  \brief  A variable controlling whether relative mouse mode is implemented using mouse warping
 | 
			
		||||
*
 | 
			
		||||
*  This variable can be set to the following values:
 | 
			
		||||
*    "0"       - Relative mouse mode uses raw input
 | 
			
		||||
*    "1"       - Relative mouse mode uses mouse warping
 | 
			
		||||
*
 | 
			
		||||
*  By default SDL will use raw input for relative mouse mode
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP    "SDL_MOUSE_RELATIVE_MODE_WARP"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to true.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS   "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the idle timer is disabled on iOS.
 | 
			
		||||
 *
 | 
			
		||||
 *  When an iOS app does not receive touches for some time, the screen is
 | 
			
		||||
 *  dimmed automatically. For games where the accelerometer is the only input
 | 
			
		||||
 *  this is problematic. This functionality can be disabled by setting this
 | 
			
		||||
 *  hint.
 | 
			
		||||
 *
 | 
			
		||||
 *  As of SDL 2.0.4, SDL_EnableScreenSaver and SDL_DisableScreenSaver accomplish
 | 
			
		||||
 *  the same thing on iOS. They should be preferred over this hint.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Enable idle timer
 | 
			
		||||
 *    "1"       - Disable idle timer
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling which orientations are allowed on iOS.
 | 
			
		||||
 *
 | 
			
		||||
 *  In some circumstances it is necessary to be able to explicitly control
 | 
			
		||||
 *  which UI orientations are allowed.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable is a space delimited list of the following values:
 | 
			
		||||
 *    "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown"
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"
 | 
			
		||||
    
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable controlling whether the Android / iOS built-in
 | 
			
		||||
 *  accelerometer should be listed as a joystick device, rather than listing
 | 
			
		||||
 *  actual joysticks only.
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - List only real joysticks and accept input from them
 | 
			
		||||
 *    "1"       - List real joysticks along with the accelerometer as if it were a 3 axis joystick (the default).
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable that lets you disable the detection and use of Xinput gamepad devices
 | 
			
		||||
 *
 | 
			
		||||
 *  The variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable XInput detection (only uses direct input)
 | 
			
		||||
 *    "1"       - Enable XInput detection (the default)
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable that causes SDL to use the old axis and button mapping for XInput devices.
 | 
			
		||||
 *
 | 
			
		||||
 *  This hint is for backwards compatibility only and will be removed in SDL 2.1
 | 
			
		||||
 *
 | 
			
		||||
 *  The default value is "0".  This hint must be set before SDL_Init()
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable that lets you manually hint extra gamecontroller db entries
 | 
			
		||||
 *
 | 
			
		||||
 *  The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h
 | 
			
		||||
 *
 | 
			
		||||
 *  This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
 | 
			
		||||
 *  You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background.
 | 
			
		||||
 *
 | 
			
		||||
 *  The variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable joystick & gamecontroller input events when the
 | 
			
		||||
 *                application is in the background.
 | 
			
		||||
 *    "1"       - Enable joystick & gamecontroller input events when the
 | 
			
		||||
 *                application is in the background.
 | 
			
		||||
 *
 | 
			
		||||
 *  The default value is "0".  This hint may be set at any time.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it.
 | 
			
		||||
 *      This is a debugging aid for developers and not expected to be used by end users. The default is "1"
 | 
			
		||||
 *
 | 
			
		||||
 *  This variable can be set to the following values:
 | 
			
		||||
 *    "0"       - don't allow topmost
 | 
			
		||||
 *    "1"       - allow topmost
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief A variable that controls the timer resolution, in milliseconds.
 | 
			
		||||
 *
 | 
			
		||||
 *  The higher resolution the timer, the more frequently the CPU services
 | 
			
		||||
 *  timer interrupts, and the more precise delays are, but this takes up
 | 
			
		||||
 *  power and CPU time.  This hint is only used on Windows 7 and earlier.
 | 
			
		||||
 *
 | 
			
		||||
 *  See this blog post for more information:
 | 
			
		||||
 *  http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/
 | 
			
		||||
 *
 | 
			
		||||
 *  If this variable is set to "0", the system timer resolution is not set.
 | 
			
		||||
 *
 | 
			
		||||
 *  The default value is "1". This hint may be set at any time.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
*  \brief  A string specifying SDL's threads stack size in bytes or "0" for the backend's default size
 | 
			
		||||
*
 | 
			
		||||
*  Use this hint in case you need to set SDL's threads stack size to other than the default.
 | 
			
		||||
*  This is specially useful if you build SDL against a non glibc libc library (such as musl) which
 | 
			
		||||
*  provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses).
 | 
			
		||||
*  Support for this hint is currently available only in the pthread backend.
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_HINT_THREAD_STACK_SIZE              "SDL_THREAD_STACK_SIZE"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS)
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief A variable that determines whether ctrl+click should generate a right-click event on Mac
 | 
			
		||||
 *
 | 
			
		||||
 *  If present, holding ctrl while left clicking will generate a right click
 | 
			
		||||
 *  event when on Mac.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
*  \brief  A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries
 | 
			
		||||
*
 | 
			
		||||
*  SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It
 | 
			
		||||
*  can use two different sets of binaries, those compiled by the user from source
 | 
			
		||||
*  or those provided by the Chrome browser. In the later case, these binaries require
 | 
			
		||||
*  that SDL loads a DLL providing the shader compiler.
 | 
			
		||||
*
 | 
			
		||||
*  This variable can be set to the following values:
 | 
			
		||||
*    "d3dcompiler_46.dll" - default, best for Vista or later.
 | 
			
		||||
*    "d3dcompiler_43.dll" - for XP support.
 | 
			
		||||
*    "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries.
 | 
			
		||||
*
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_HINT_VIDEO_WIN_D3DCOMPILER              "SDL_VIDEO_WIN_D3DCOMPILER"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
*  \brief  A variable that is the address of another SDL_Window* (as a hex string formatted with "%p").
 | 
			
		||||
*  
 | 
			
		||||
*  If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has
 | 
			
		||||
*  SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly 
 | 
			
		||||
*  created SDL_Window:
 | 
			
		||||
*
 | 
			
		||||
*  1. Its pixel format will be set to the same pixel format as this SDL_Window.  This is
 | 
			
		||||
*  needed for example when sharing an OpenGL context across multiple windows.
 | 
			
		||||
*
 | 
			
		||||
*  2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for
 | 
			
		||||
*  OpenGL rendering.
 | 
			
		||||
*
 | 
			
		||||
*  This variable can be set to the following values:
 | 
			
		||||
*    The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should
 | 
			
		||||
*    share a pixel format with.
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT    "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief A URL to a WinRT app's privacy policy
 | 
			
		||||
 *
 | 
			
		||||
 *  All network-enabled WinRT apps must make a privacy policy available to its
 | 
			
		||||
 *  users.  On Windows 8, 8.1, and RT, Microsoft mandates that this policy be
 | 
			
		||||
 *  be available in the Windows Settings charm, as accessed from within the app.
 | 
			
		||||
 *  SDL provides code to add a URL-based link there, which can point to the app's
 | 
			
		||||
 *  privacy policy.
 | 
			
		||||
 *
 | 
			
		||||
 *  To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL
 | 
			
		||||
 *  before calling any SDL_Init functions.  The contents of the hint should
 | 
			
		||||
 *  be a valid URL.  For example, "http://www.example.com".
 | 
			
		||||
 *
 | 
			
		||||
 *  The default value is "", which will prevent SDL from adding a privacy policy
 | 
			
		||||
 *  link to the Settings charm.  This hint should only be set during app init.
 | 
			
		||||
 *
 | 
			
		||||
 *  The label text of an app's "Privacy Policy" link may be customized via another
 | 
			
		||||
 *  hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
 | 
			
		||||
 *
 | 
			
		||||
 *  Please note that on Windows Phone, Microsoft does not provide standard UI
 | 
			
		||||
 *  for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL
 | 
			
		||||
 *  will not get used on that platform.  Network-enabled phone apps should display
 | 
			
		||||
 *  their privacy policy through some other, in-app means.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL"
 | 
			
		||||
 | 
			
		||||
/** \brief Label text for a WinRT app's privacy policy link
 | 
			
		||||
 *
 | 
			
		||||
 *  Network-enabled WinRT apps must include a privacy policy.  On Windows 8, 8.1, and RT,
 | 
			
		||||
 *  Microsoft mandates that this policy be available via the Windows Settings charm.
 | 
			
		||||
 *  SDL provides code to add a link there, with its label text being set via the
 | 
			
		||||
 *  optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
 | 
			
		||||
 *
 | 
			
		||||
 *  Please note that a privacy policy's contents are not set via this hint.  A separate
 | 
			
		||||
 *  hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the
 | 
			
		||||
 *  policy.
 | 
			
		||||
 *
 | 
			
		||||
 *  The contents of this hint should be encoded as a UTF8 string.
 | 
			
		||||
 *
 | 
			
		||||
 *  The default value is "Privacy Policy".  This hint should only be set during app
 | 
			
		||||
 *  initialization, preferably before any calls to SDL_Init.
 | 
			
		||||
 *
 | 
			
		||||
 *  For additional information on linking to a privacy policy, see the documentation for
 | 
			
		||||
 *  SDL_HINT_WINRT_PRIVACY_POLICY_URL.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL"
 | 
			
		||||
 | 
			
		||||
/** \brief Allows back-button-press events on Windows Phone to be marked as handled
 | 
			
		||||
 *
 | 
			
		||||
 *  Windows Phone devices typically feature a Back button.  When pressed,
 | 
			
		||||
 *  the OS will emit back-button-press events, which apps are expected to
 | 
			
		||||
 *  handle in an appropriate manner.  If apps do not explicitly mark these
 | 
			
		||||
 *  events as 'Handled', then the OS will invoke its default behavior for
 | 
			
		||||
 *  unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to
 | 
			
		||||
 *  terminate the app (and attempt to switch to the previous app, or to the
 | 
			
		||||
 *  device's home screen).
 | 
			
		||||
 *
 | 
			
		||||
 *  Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL
 | 
			
		||||
 *  to mark back-button-press events as Handled, if and when one is sent to
 | 
			
		||||
 *  the app.
 | 
			
		||||
 *
 | 
			
		||||
 *  Internally, Windows Phone sends back button events as parameters to
 | 
			
		||||
 *  special back-button-press callback functions.  Apps that need to respond
 | 
			
		||||
 *  to back-button-press events are expected to register one or more
 | 
			
		||||
 *  callback functions for such, shortly after being launched (during the
 | 
			
		||||
 *  app's initialization phase).  After the back button is pressed, the OS
 | 
			
		||||
 *  will invoke these callbacks.  If the app's callback(s) do not explicitly
 | 
			
		||||
 *  mark the event as handled by the time they return, or if the app never
 | 
			
		||||
 *  registers one of these callback, the OS will consider the event
 | 
			
		||||
 *  un-handled, and it will apply its default back button behavior (terminate
 | 
			
		||||
 *  the app).
 | 
			
		||||
 *
 | 
			
		||||
 *  SDL registers its own back-button-press callback with the Windows Phone
 | 
			
		||||
 *  OS.  This callback will emit a pair of SDL key-press events (SDL_KEYDOWN
 | 
			
		||||
 *  and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which
 | 
			
		||||
 *  it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON.
 | 
			
		||||
 *  If the hint's value is set to "1", the back button event's Handled
 | 
			
		||||
 *  property will get set to 'true'.  If the hint's value is set to something
 | 
			
		||||
 *  else, or if it is unset, SDL will leave the event's Handled property
 | 
			
		||||
 *  alone.  (By default, the OS sets this property to 'false', to note.)
 | 
			
		||||
 *
 | 
			
		||||
 *  SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a
 | 
			
		||||
 *  back button is pressed, or can set it in direct-response to a back button
 | 
			
		||||
 *  being pressed.
 | 
			
		||||
 *
 | 
			
		||||
 *  In order to get notified when a back button is pressed, SDL apps should
 | 
			
		||||
 *  register a callback function with SDL_AddEventWatch(), and have it listen
 | 
			
		||||
 *  for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK.
 | 
			
		||||
 *  (Alternatively, SDL_KEYUP events can be listened-for.  Listening for
 | 
			
		||||
 *  either event type is suitable.)  Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON
 | 
			
		||||
 *  set by such a callback, will be applied to the OS' current
 | 
			
		||||
 *  back-button-press event.
 | 
			
		||||
 *
 | 
			
		||||
 *  More details on back button behavior in Windows Phone apps can be found
 | 
			
		||||
 *  at the following page, on Microsoft's developer site:
 | 
			
		||||
 *  http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  A variable that dictates policy for fullscreen Spaces on Mac OS X.
 | 
			
		||||
 *
 | 
			
		||||
 *  This hint only applies to Mac OS X.
 | 
			
		||||
 *
 | 
			
		||||
 *  The variable can be set to the following values:
 | 
			
		||||
 *    "0"       - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
 | 
			
		||||
 *                SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen"
 | 
			
		||||
 *                button on their titlebars).
 | 
			
		||||
 *    "1"       - Enable Spaces support (FULLSCREEN_DESKTOP will use them and
 | 
			
		||||
 *                SDL_WINDOW_RESIZABLE windows will offer the "fullscreen"
 | 
			
		||||
 *                button on their titlebars).
 | 
			
		||||
 *
 | 
			
		||||
 *  The default value is "1". Spaces are disabled regardless of this hint if
 | 
			
		||||
 *   the OS isn't at least Mac OS X Lion (10.7). This hint must be set before
 | 
			
		||||
 *   any windows are created.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES    "SDL_VIDEO_MAC_FULLSCREEN_SPACES"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
*  \brief  When set don't force the SDL app to become a foreground process
 | 
			
		||||
*
 | 
			
		||||
*  This hint only applies to Mac OS X.
 | 
			
		||||
*
 | 
			
		||||
*/
 | 
			
		||||
#define SDL_HINT_MAC_BACKGROUND_APP    "SDL_MAC_BACKGROUND_APP"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc.
 | 
			
		||||
 *
 | 
			
		||||
 * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.
 | 
			
		||||
 *
 | 
			
		||||
 * If both hints were set then SDL_RWFromFile() will look into expansion files
 | 
			
		||||
 * after a given relative path was not found in the internal storage and assets.
 | 
			
		||||
 *
 | 
			
		||||
 * By default this hint is not set and the APK expansion files are not searched.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"
 | 
			
		||||
 
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc.
 | 
			
		||||
 *
 | 
			
		||||
 * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION.
 | 
			
		||||
 *
 | 
			
		||||
 * If both hints were set then SDL_RWFromFile() will look into expansion files
 | 
			
		||||
 * after a given relative path was not found in the internal storage and assets.
 | 
			
		||||
 *
 | 
			
		||||
 * By default this hint is not set and the APK expansion files are not searched.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events.
 | 
			
		||||
 *
 | 
			
		||||
 * The variable can be set to the following values:
 | 
			
		||||
 *   "0"       - SDL_TEXTEDITING events are sent, and it is the application's
 | 
			
		||||
 *               responsibility to render the text from these events and 
 | 
			
		||||
 *               differentiate it somehow from committed text. (default)
 | 
			
		||||
 *   "1"       - If supported by the IME then SDL_TEXTEDITING events are not sent, 
 | 
			
		||||
 *               and text that is being composed will be rendered in its own UI.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING"
 | 
			
		||||
 | 
			
		||||
 /**
 | 
			
		||||
 * \brief A variable to control whether mouse and touch events are to be treated together or separately
 | 
			
		||||
 *
 | 
			
		||||
 * The variable can be set to the following values:
 | 
			
		||||
 *   "0"       - Mouse events will be handled as touch events, and touch will raise fake mouse
 | 
			
		||||
 *               events. This is the behaviour of SDL <= 2.0.3. (default)
 | 
			
		||||
 *   "1"       - Mouse events will be handled separately from pure touch events.
 | 
			
		||||
 *
 | 
			
		||||
 * The value of this hint is used at runtime, so it can be changed at any time.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH "SDL_ANDROID_SEPARATE_MOUSE_AND_TOUCH"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief override the binding element for keyboard inputs for Emscripten builds
 | 
			
		||||
 *
 | 
			
		||||
 * This hint only applies to the emscripten platform
 | 
			
		||||
 *
 | 
			
		||||
 * The variable can be one of
 | 
			
		||||
 *    "#window"      - The javascript window object (this is the default)
 | 
			
		||||
 *    "#document"    - The javascript document object
 | 
			
		||||
 *    "#screen"      - the javascript window.screen object
 | 
			
		||||
 *    "#canvas"      - the WebGL canvas element
 | 
			
		||||
 *    any other string without a leading # sign applies to the element on the page with that ID.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT   "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Tell SDL not to catch the SIGINT or SIGTERM signals.
 | 
			
		||||
 *
 | 
			
		||||
 * This hint only applies to Unix-like platforms.
 | 
			
		||||
 *
 | 
			
		||||
 * The variable can be set to the following values:
 | 
			
		||||
 *   "0"       - SDL will install a SIGINT and SIGTERM handler, and when it
 | 
			
		||||
 *               catches a signal, convert it into an SDL_QUIT event.
 | 
			
		||||
 *   "1"       - SDL will not install a signal handler at all.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_NO_SIGNAL_HANDLERS   "SDL_NO_SIGNAL_HANDLERS"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Tell SDL not to generate window-close events for Alt+F4 on Windows.
 | 
			
		||||
 *
 | 
			
		||||
 * The variable can be set to the following values:
 | 
			
		||||
 *   "0"       - SDL will generate a window-close event when it sees Alt+F4.
 | 
			
		||||
 *   "1"       - SDL will only do normal key handling for Alt+F4.
 | 
			
		||||
 */
 | 
			
		||||
#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4	"SDL_WINDOWS_NO_CLOSE_ON_ALT_F4"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  An enumeration of hint priorities
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_HINT_DEFAULT,
 | 
			
		||||
    SDL_HINT_NORMAL,
 | 
			
		||||
    SDL_HINT_OVERRIDE
 | 
			
		||||
} SDL_HintPriority;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set a hint with a specific priority
 | 
			
		||||
 *
 | 
			
		||||
 *  The priority controls the behavior when setting a hint that already
 | 
			
		||||
 *  has a value.  Hints will replace existing hints of their priority and
 | 
			
		||||
 *  lower.  Environment variables are considered to have override priority.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name,
 | 
			
		||||
                                                         const char *value,
 | 
			
		||||
                                                         SDL_HintPriority priority);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Set a hint with normal priority
 | 
			
		||||
 *
 | 
			
		||||
 *  \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name,
 | 
			
		||||
                                             const char *value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Get a hint
 | 
			
		||||
 *
 | 
			
		||||
 *  \return The string value of a hint variable.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Add a function to watch a particular hint
 | 
			
		||||
 *
 | 
			
		||||
 *  \param name The hint to watch
 | 
			
		||||
 *  \param callback The function to call when the hint value changes
 | 
			
		||||
 *  \param userdata A pointer to pass to the callback function
 | 
			
		||||
 */
 | 
			
		||||
typedef void (*SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue);
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name,
 | 
			
		||||
                                                 SDL_HintCallback callback,
 | 
			
		||||
                                                 void *userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief Remove a function watching a particular hint
 | 
			
		||||
 *
 | 
			
		||||
 *  \param name The hint being watched
 | 
			
		||||
 *  \param callback The function being called when the hint value changes
 | 
			
		||||
 *  \param userdata A pointer being passed to the callback function
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name,
 | 
			
		||||
                                                 SDL_HintCallback callback,
 | 
			
		||||
                                                 void *userdata);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \brief  Clear all hints
 | 
			
		||||
 *
 | 
			
		||||
 *  This function is called during SDL_Quit() to free stored hints.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_ClearHints(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_hints_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||
@@ -1,273 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  Simple DirectMedia Layer
 | 
			
		||||
  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
 | 
			
		||||
 | 
			
		||||
  This software is provided 'as-is', without any express or implied
 | 
			
		||||
  warranty.  In no event will the authors be held liable for any damages
 | 
			
		||||
  arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
  Permission is granted to anyone to use this software for any purpose,
 | 
			
		||||
  including commercial applications, and to alter it and redistribute it
 | 
			
		||||
  freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
  1. The origin of this software must not be misrepresented; you must not
 | 
			
		||||
     claim that you wrote the original software. If you use this software
 | 
			
		||||
     in a product, an acknowledgment in the product documentation would be
 | 
			
		||||
     appreciated but is not required.
 | 
			
		||||
  2. Altered source versions must be plainly marked as such, and must not be
 | 
			
		||||
     misrepresented as being the original software.
 | 
			
		||||
  3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_joystick.h
 | 
			
		||||
 *
 | 
			
		||||
 *  Include file for SDL joystick event handling
 | 
			
		||||
 *
 | 
			
		||||
 * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks, with the exact joystick
 | 
			
		||||
 *   behind a device_index changing as joysticks are plugged and unplugged.
 | 
			
		||||
 *
 | 
			
		||||
 * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted
 | 
			
		||||
 *   then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in.
 | 
			
		||||
 *
 | 
			
		||||
 * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of
 | 
			
		||||
 *   the device (a X360 wired controller for example). This identifier is platform dependent.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SDL_joystick_h
 | 
			
		||||
#define _SDL_joystick_h
 | 
			
		||||
 | 
			
		||||
#include "SDL_stdinc.h"
 | 
			
		||||
#include "SDL_error.h"
 | 
			
		||||
 | 
			
		||||
#include "begin_code.h"
 | 
			
		||||
/* Set up for C function definitions, even when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \file SDL_joystick.h
 | 
			
		||||
 *
 | 
			
		||||
 *  In order to use these functions, SDL_Init() must have been called
 | 
			
		||||
 *  with the ::SDL_INIT_JOYSTICK flag.  This causes SDL to scan the system
 | 
			
		||||
 *  for joysticks, and load appropriate drivers.
 | 
			
		||||
 *
 | 
			
		||||
 *  If you would like to receive joystick updates while the application
 | 
			
		||||
 *  is in the background, you should set the following hint before calling
 | 
			
		||||
 *  SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* The joystick structure used to identify an SDL joystick */
 | 
			
		||||
struct _SDL_Joystick;
 | 
			
		||||
typedef struct _SDL_Joystick SDL_Joystick;
 | 
			
		||||
 | 
			
		||||
/* A structure that encodes the stable unique id for a joystick device */
 | 
			
		||||
typedef struct {
 | 
			
		||||
    Uint8 data[16];
 | 
			
		||||
} SDL_JoystickGUID;
 | 
			
		||||
 | 
			
		||||
typedef Sint32 SDL_JoystickID;
 | 
			
		||||
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
    SDL_JOYSTICK_POWER_UNKNOWN = -1,
 | 
			
		||||
    SDL_JOYSTICK_POWER_EMPTY,
 | 
			
		||||
    SDL_JOYSTICK_POWER_LOW,
 | 
			
		||||
    SDL_JOYSTICK_POWER_MEDIUM,
 | 
			
		||||
    SDL_JOYSTICK_POWER_FULL,
 | 
			
		||||
    SDL_JOYSTICK_POWER_WIRED,
 | 
			
		||||
    SDL_JOYSTICK_POWER_MAX
 | 
			
		||||
} SDL_JoystickPowerLevel;
 | 
			
		||||
 | 
			
		||||
/* Function prototypes */
 | 
			
		||||
/**
 | 
			
		||||
 *  Count the number of joysticks attached to the system right now
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the implementation dependent name of a joystick.
 | 
			
		||||
 *  This can be called before any joysticks are opened.
 | 
			
		||||
 *  If no name can be found, this function returns NULL.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Open a joystick for use.
 | 
			
		||||
 *  The index passed as an argument refers to the N'th joystick on the system.
 | 
			
		||||
 *  This index is not the value which will identify this joystick in future
 | 
			
		||||
 *  joystick events.  The joystick's instance id (::SDL_JoystickID) will be used
 | 
			
		||||
 *  there instead.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return A joystick identifier, or NULL if an error occurred.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Return the SDL_Joystick associated with an instance id.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID joyid);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return the name for this currently opened joystick.
 | 
			
		||||
 *  If no name can be found, this function returns NULL.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return the GUID for the joystick at this index
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return the GUID for this opened joystick
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return a string representation for this guid. pszGUID must point to at least 33 bytes
 | 
			
		||||
 *  (32 for the string plus a NULL terminator).
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  convert a string into a joystick formatted guid
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Returns SDL_TRUE if the joystick has been opened and currently connected, or SDL_FALSE if it has not.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the instance ID of an opened joystick or -1 if the joystick is invalid.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the number of general axis controls on a joystick.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the number of trackballs on a joystick.
 | 
			
		||||
 *
 | 
			
		||||
 *  Joystick trackballs have only relative motion events associated
 | 
			
		||||
 *  with them and their state cannot be polled.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the number of POV hats on a joystick.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the number of buttons on a joystick.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Update the current state of the open joysticks.
 | 
			
		||||
 *
 | 
			
		||||
 *  This is called automatically by the event loop if any joystick
 | 
			
		||||
 *  events are enabled.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Enable/disable joystick event polling.
 | 
			
		||||
 *
 | 
			
		||||
 *  If joystick events are disabled, you must call SDL_JoystickUpdate()
 | 
			
		||||
 *  yourself and check the state of the joystick when you want joystick
 | 
			
		||||
 *  information.
 | 
			
		||||
 *
 | 
			
		||||
 *  The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the current state of an axis control on a joystick.
 | 
			
		||||
 *
 | 
			
		||||
 *  The state is a value ranging from -32768 to 32767.
 | 
			
		||||
 *
 | 
			
		||||
 *  The axis indices start at index 0.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick * joystick,
 | 
			
		||||
                                                   int axis);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  \name Hat positions
 | 
			
		||||
 */
 | 
			
		||||
/* @{ */
 | 
			
		||||
#define SDL_HAT_CENTERED    0x00
 | 
			
		||||
#define SDL_HAT_UP          0x01
 | 
			
		||||
#define SDL_HAT_RIGHT       0x02
 | 
			
		||||
#define SDL_HAT_DOWN        0x04
 | 
			
		||||
#define SDL_HAT_LEFT        0x08
 | 
			
		||||
#define SDL_HAT_RIGHTUP     (SDL_HAT_RIGHT|SDL_HAT_UP)
 | 
			
		||||
#define SDL_HAT_RIGHTDOWN   (SDL_HAT_RIGHT|SDL_HAT_DOWN)
 | 
			
		||||
#define SDL_HAT_LEFTUP      (SDL_HAT_LEFT|SDL_HAT_UP)
 | 
			
		||||
#define SDL_HAT_LEFTDOWN    (SDL_HAT_LEFT|SDL_HAT_DOWN)
 | 
			
		||||
/* @} */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the current state of a POV hat on a joystick.
 | 
			
		||||
 *
 | 
			
		||||
 *  The hat indices start at index 0.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return The return value is one of the following positions:
 | 
			
		||||
 *           - ::SDL_HAT_CENTERED
 | 
			
		||||
 *           - ::SDL_HAT_UP
 | 
			
		||||
 *           - ::SDL_HAT_RIGHT
 | 
			
		||||
 *           - ::SDL_HAT_DOWN
 | 
			
		||||
 *           - ::SDL_HAT_LEFT
 | 
			
		||||
 *           - ::SDL_HAT_RIGHTUP
 | 
			
		||||
 *           - ::SDL_HAT_RIGHTDOWN
 | 
			
		||||
 *           - ::SDL_HAT_LEFTUP
 | 
			
		||||
 *           - ::SDL_HAT_LEFTDOWN
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick * joystick,
 | 
			
		||||
                                                 int hat);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the ball axis change since the last poll.
 | 
			
		||||
 *
 | 
			
		||||
 *  \return 0, or -1 if you passed it invalid parameters.
 | 
			
		||||
 *
 | 
			
		||||
 *  The ball indices start at index 0.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick * joystick,
 | 
			
		||||
                                                int ball, int *dx, int *dy);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Get the current state of a button on a joystick.
 | 
			
		||||
 *
 | 
			
		||||
 *  The button indices start at index 0.
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick * joystick,
 | 
			
		||||
                                                    int button);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Close a joystick previously opened with SDL_JoystickOpen().
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Return the battery level of this joystick
 | 
			
		||||
 */
 | 
			
		||||
extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick * joystick);
 | 
			
		||||
 | 
			
		||||
/* Ends C function definitions when using C++ */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#include "close_code.h"
 | 
			
		||||
 | 
			
		||||
#endif /* _SDL_joystick_h */
 | 
			
		||||
 | 
			
		||||
/* vi: set ts=4 sw=4 expandtab: */
 | 
			
		||||