📄 ftobjs.h
字号:
/***************************************************************************//* *//* ftobjs.h *//* *//* The FreeType private base classes (specification). *//* *//* Copyright 1996-2001, 2002, 2003, 2004, 2005 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 all internal FreeType classes. */ /* */ /*************************************************************************/#ifndef __FTOBJS_H__#define __FTOBJS_H__#include <ft2build.h>#include FT_RENDER_H#include FT_SIZES_H#include FT_INTERNAL_MEMORY_H#include FT_INTERNAL_GLYPH_LOADER_H#include FT_INTERNAL_DRIVER_H#include FT_INTERNAL_AUTOHINT_H#include FT_INTERNAL_SERVICE_H#ifdef FT_CONFIG_OPTION_INCREMENTAL#include FT_INCREMENTAL_H#endifFT_BEGIN_HEADER /*************************************************************************/ /* */ /* Some generic definitions. */ /* */#ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE 0#endif#ifndef NULL#define NULL (void*)0#endif /*************************************************************************/ /* */ /* The min and max functions missing in C. As usual, be careful not to */ /* write things like FT_MIN( a++, b++ ) to avoid side effects. */ /* */#define FT_MIN( a, b ) ( (a) < (b) ? (a) : (b) )#define FT_MAX( a, b ) ( (a) > (b) ? (a) : (b) )#define FT_ABS( a ) ( (a) < 0 ? -(a) : (a) )#define FT_PAD_FLOOR( x, n ) ( (x) & ~((n)-1) )#define FT_PAD_ROUND( x, n ) FT_PAD_FLOOR( (x) + ((n)/2), n )#define FT_PAD_CEIL( x, n ) FT_PAD_FLOOR( (x) + ((n)-1), n )#define FT_PIX_FLOOR( x ) ( (x) & ~63 )#define FT_PIX_ROUND( x ) FT_PIX_FLOOR( (x) + 32 )#define FT_PIX_CEIL( x ) FT_PIX_FLOOR( (x) + 63 ) /* * Return the highest power of 2 that is <= value; this correspond to * the highest bit in a given 32-bit value. */ FT_BASE( FT_UInt32 ) ft_highpow2( FT_UInt32 value ); /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ /**** ****/ /**** ****/ /**** C H A R M A P S ****/ /**** ****/ /**** ****/ /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ /* handle to internal charmap object */ typedef struct FT_CMapRec_* FT_CMap; /* handle to charmap class structure */ typedef const struct FT_CMap_ClassRec_* FT_CMap_Class; /* internal charmap object structure */ typedef struct FT_CMapRec_ { FT_CharMapRec charmap; FT_CMap_Class clazz; } FT_CMapRec; /* typecase any pointer to a charmap handle */#define FT_CMAP( x ) ((FT_CMap)( x )) /* obvious macros */#define FT_CMAP_PLATFORM_ID( x ) FT_CMAP( x )->charmap.platform_id#define FT_CMAP_ENCODING_ID( x ) FT_CMAP( x )->charmap.encoding_id#define FT_CMAP_ENCODING( x ) FT_CMAP( x )->charmap.encoding#define FT_CMAP_FACE( x ) FT_CMAP( x )->charmap.face /* class method definitions */ typedef FT_Error (*FT_CMap_InitFunc)( FT_CMap cmap, FT_Pointer init_data ); typedef void (*FT_CMap_DoneFunc)( FT_CMap cmap ); typedef FT_UInt (*FT_CMap_CharIndexFunc)( FT_CMap cmap, FT_UInt32 char_code ); typedef FT_UInt (*FT_CMap_CharNextFunc)( FT_CMap cmap, FT_UInt32 *achar_code ); typedef struct FT_CMap_ClassRec_ { FT_ULong size; FT_CMap_InitFunc init; FT_CMap_DoneFunc done; FT_CMap_CharIndexFunc char_index; FT_CMap_CharNextFunc char_next; } FT_CMap_ClassRec; /* create a new charmap and add it to charmap->face */ FT_BASE( FT_Error ) FT_CMap_New( FT_CMap_Class clazz, FT_Pointer init_data, FT_CharMap charmap, FT_CMap *acmap ); /* destroy a charmap and remove it from face's list */ FT_BASE( void ) FT_CMap_Done( FT_CMap cmap ); /*************************************************************************/ /* */ /* <Struct> */ /* FT_Face_InternalRec */ /* */ /* <Description> */ /* This structure contains the internal fields of each FT_Face */ /* object. These fields may change between different releases of */ /* FreeType. */ /* */ /* <Fields> */ /* max_points :: */ /* The maximal number of points used to store the vectorial outline */ /* of any glyph in this face. If this value cannot be known in */ /* advance, or if the face isn't scalable, this should be set to 0. */ /* Only relevant for scalable formats. */ /* */ /* max_contours :: */ /* The maximal number of contours used to store the vectorial */ /* outline of any glyph in this face. If this value cannot be */ /* known in advance, or if the face isn't scalable, this should be */ /* set to 0. Only relevant for scalable formats. */ /* */ /* transform_matrix :: */ /* A 2x2 matrix of 16.16 coefficients used to transform glyph */ /* outlines after they are loaded from the font. Only used by the */ /* convenience functions. */ /* */ /* transform_delta :: */ /* A translation vector used to transform glyph outlines after they */ /* are loaded from the font. Only used by the convenience */ /* functions. */ /* */ /* transform_flags :: */ /* Some flags used to classify the transform. Only used by the */ /* convenience functions. */ /* */ /* services :: */ /* A cache for frequently used services. It should be only */ /* accessed with the macro `FT_FACE_LOOKUP_SERVICE'. */ /* */ /* incremental_interface :: */ /* If non-null, the interface through which glyph data and metrics */ /* are loaded incrementally for faces that do not provide all of */ /* this data when first opened. This field exists only if */ /* @FT_CONFIG_OPTION_INCREMENTAL is defined. */ /* */ typedef struct FT_Face_InternalRec_ { FT_UShort max_points; FT_Short max_contours; FT_Matrix transform_matrix; FT_Vector transform_delta; FT_Int transform_flags; FT_ServiceCacheRec services;#ifdef FT_CONFIG_OPTION_INCREMENTAL FT_Incremental_InterfaceRec* incremental_interface;#endif } FT_Face_InternalRec; /*************************************************************************/ /* */ /* <Struct> */ /* FT_Slot_InternalRec */ /* */ /* <Description> */ /* This structure contains the internal fields of each FT_GlyphSlot */ /* object. These fields may change between different releases of */ /* FreeType. */ /* */ /* <Fields> */ /* loader :: The glyph loader object used to load outlines */ /* into the glyph slot. */ /* */ /* flags :: Possible values are zero or */ /* FT_GLYPH_OWN_BITMAP. The latter indicates */ /* that the FT_GlyphSlot structure owns the */ /* bitmap buffer. */ /* */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -