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: */
|
|