Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/libraries/win32/freetype/include/freetype/internal/ftdrv.h
Property | Old Value | New Value |
---|---|---|
svn:eol-style | null | native \ No newline at end of property |
/**************************************************************************** | |||||
* | |||||
* ftdrv.h | |||||
* | |||||
* FreeType internal font driver interface (specification). | |||||
* | |||||
* Copyright (C) 1996-2020 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 FTDRV_H_ | |||||
#define FTDRV_H_ | |||||
#include <freetype/ftmodapi.h> | |||||
#include "compiler-macros.h" | |||||
FT_BEGIN_HEADER | |||||
typedef FT_Error | |||||
(*FT_Face_InitFunc)( FT_Stream stream, | |||||
FT_Face face, | |||||
FT_Int typeface_index, | |||||
FT_Int num_params, | |||||
FT_Parameter* parameters ); | |||||
typedef void | |||||
(*FT_Face_DoneFunc)( FT_Face face ); | |||||
typedef FT_Error | |||||
(*FT_Size_InitFunc)( FT_Size size ); | |||||
typedef void | |||||
(*FT_Size_DoneFunc)( FT_Size size ); | |||||
typedef FT_Error | |||||
(*FT_Slot_InitFunc)( FT_GlyphSlot slot ); | |||||
typedef void | |||||
(*FT_Slot_DoneFunc)( FT_GlyphSlot slot ); | |||||
typedef FT_Error | |||||
(*FT_Size_RequestFunc)( FT_Size size, | |||||
FT_Size_Request req ); | |||||
typedef FT_Error | |||||
(*FT_Size_SelectFunc)( FT_Size size, | |||||
FT_ULong size_index ); | |||||
typedef FT_Error | |||||
(*FT_Slot_LoadFunc)( FT_GlyphSlot slot, | |||||
FT_Size size, | |||||
FT_UInt glyph_index, | |||||
FT_Int32 load_flags ); | |||||
typedef FT_Error | |||||
(*FT_Face_GetKerningFunc)( FT_Face face, | |||||
FT_UInt left_glyph, | |||||
FT_UInt right_glyph, | |||||
FT_Vector* kerning ); | |||||
typedef FT_Error | |||||
(*FT_Face_AttachFunc)( FT_Face face, | |||||
FT_Stream stream ); | |||||
typedef FT_Error | |||||
(*FT_Face_GetAdvancesFunc)( FT_Face face, | |||||
FT_UInt first, | |||||
FT_UInt count, | |||||
FT_Int32 flags, | |||||
FT_Fixed* advances ); | |||||
/************************************************************************** | |||||
* | |||||
* @struct: | |||||
* FT_Driver_ClassRec | |||||
* | |||||
* @description: | |||||
* The font driver class. This structure mostly contains pointers to | |||||
* driver methods. | |||||
* | |||||
* @fields: | |||||
* root :: | |||||
* The parent module. | |||||
* | |||||
* face_object_size :: | |||||
* The size of a face object in bytes. | |||||
* | |||||
* size_object_size :: | |||||
* The size of a size object in bytes. | |||||
* | |||||
* slot_object_size :: | |||||
* The size of a glyph object in bytes. | |||||
* | |||||
* init_face :: | |||||
* The format-specific face constructor. | |||||
* | |||||
* done_face :: | |||||
* The format-specific face destructor. | |||||
* | |||||
* init_size :: | |||||
* The format-specific size constructor. | |||||
* | |||||
* done_size :: | |||||
* The format-specific size destructor. | |||||
* | |||||
* init_slot :: | |||||
* The format-specific slot constructor. | |||||
* | |||||
* done_slot :: | |||||
* The format-specific slot destructor. | |||||
* | |||||
* | |||||
* load_glyph :: | |||||
* A function handle to load a glyph to a slot. This field is | |||||
* mandatory! | |||||
* | |||||
* get_kerning :: | |||||
* A function handle to return the unscaled kerning for a given pair of | |||||
* glyphs. Can be set to 0 if the format doesn't support kerning. | |||||
* | |||||
* attach_file :: | |||||
* This function handle is used to read additional data for a face from | |||||
* another file/stream. For example, this can be used to add data from | |||||
* AFM or PFM files on a Type 1 face, or a CIDMap on a CID-keyed face. | |||||
* | |||||
* get_advances :: | |||||
* A function handle used to return advance widths of 'count' glyphs | |||||
* (in font units), starting at 'first'. The 'vertical' flag must be | |||||
* set to get vertical advance heights. The 'advances' buffer is | |||||
* caller-allocated. The idea of this function is to be able to | |||||
* perform device-independent text layout without loading a single | |||||
* glyph image. | |||||
* | |||||
* request_size :: | |||||
* A handle to a function used to request the new character size. Can | |||||
* be set to 0 if the scaling done in the base layer suffices. | |||||
* | |||||
* select_size :: | |||||
* A handle to a function used to select a new fixed size. It is used | |||||
* only if @FT_FACE_FLAG_FIXED_SIZES is set. Can be set to 0 if the | |||||
* scaling done in the base layer suffices. | |||||
* @note: | |||||
* Most function pointers, with the exception of `load_glyph`, can be set | |||||
* to 0 to indicate a default behaviour. | |||||
*/ | |||||
typedef struct FT_Driver_ClassRec_ | |||||
{ | |||||
FT_Module_Class root; | |||||
FT_Long face_object_size; | |||||
FT_Long size_object_size; | |||||
FT_Long slot_object_size; | |||||
FT_Face_InitFunc init_face; | |||||
FT_Face_DoneFunc done_face; | |||||
FT_Size_InitFunc init_size; | |||||
FT_Size_DoneFunc done_size; | |||||
FT_Slot_InitFunc init_slot; | |||||
FT_Slot_DoneFunc done_slot; | |||||
FT_Slot_LoadFunc load_glyph; | |||||
FT_Face_GetKerningFunc get_kerning; | |||||
FT_Face_AttachFunc attach_file; | |||||
FT_Face_GetAdvancesFunc get_advances; | |||||
/* since version 2.2 */ | |||||
FT_Size_RequestFunc request_size; | |||||
FT_Size_SelectFunc select_size; | |||||
} FT_Driver_ClassRec, *FT_Driver_Class; | |||||
/************************************************************************** | |||||
* | |||||
* @macro: | |||||
* FT_DECLARE_DRIVER | |||||
* | |||||
* @description: | |||||
* Used to create a forward declaration of an FT_Driver_ClassRec struct | |||||
* instance. | |||||
* | |||||
* @macro: | |||||
* FT_DEFINE_DRIVER | |||||
* | |||||
* @description: | |||||
* Used to initialize an instance of FT_Driver_ClassRec struct. | |||||
* | |||||
* `ftinit.c` (ft_create_default_module_classes) already contains a | |||||
* mechanism to call these functions for the default modules described in | |||||
* `ftmodule.h`. | |||||
* | |||||
* The struct will be allocated in the global scope (or the scope where | |||||
* the macro is used). | |||||
*/ | |||||
#define FT_DECLARE_DRIVER( class_ ) \ | |||||
FT_CALLBACK_TABLE \ | |||||
const FT_Driver_ClassRec class_; | |||||
#define FT_DEFINE_DRIVER( \ | |||||
class_, \ | |||||
flags_, \ | |||||
size_, \ | |||||
name_, \ | |||||
version_, \ | |||||
requires_, \ | |||||
interface_, \ | |||||
init_, \ | |||||
done_, \ | |||||
get_interface_, \ | |||||
face_object_size_, \ | |||||
size_object_size_, \ | |||||
slot_object_size_, \ | |||||
init_face_, \ | |||||
done_face_, \ | |||||
init_size_, \ | |||||
done_size_, \ | |||||
init_slot_, \ | |||||
done_slot_, \ | |||||
load_glyph_, \ | |||||
get_kerning_, \ | |||||
attach_file_, \ | |||||
get_advances_, \ | |||||
request_size_, \ | |||||
select_size_ ) \ | |||||
FT_CALLBACK_TABLE_DEF \ | |||||
const FT_Driver_ClassRec class_ = \ | |||||
{ \ | |||||
FT_DEFINE_ROOT_MODULE( flags_, \ | |||||
size_, \ | |||||
name_, \ | |||||
version_, \ | |||||
requires_, \ | |||||
interface_, \ | |||||
init_, \ | |||||
done_, \ | |||||
get_interface_ ) \ | |||||
\ | |||||
face_object_size_, \ | |||||
size_object_size_, \ | |||||
slot_object_size_, \ | |||||
\ | |||||
init_face_, \ | |||||
done_face_, \ | |||||
\ | |||||
init_size_, \ | |||||
done_size_, \ | |||||
\ | |||||
init_slot_, \ | |||||
done_slot_, \ | |||||
\ | |||||
load_glyph_, \ | |||||
\ | |||||
get_kerning_, \ | |||||
attach_file_, \ | |||||
get_advances_, \ | |||||
\ | |||||
request_size_, \ | |||||
select_size_ \ | |||||
}; | |||||
FT_END_HEADER | |||||
#endif /* FTDRV_H_ */ | |||||
/* END */ |
Wildfire Games · Phabricator