| /***************************************************************************/ |
| /* */ |
| /* fterrors.h */ |
| /* */ |
| /* FreeType error codes (specification). */ |
| /* */ |
| /* Copyright 1996-2001 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 special header file is used to define the FT2 enumeration */ |
| /* constants. It can also be used to generate error message strings */ |
| /* with a small macro trick explained below. */ |
| /* */ |
| /* I - Error Formats */ |
| /* ----------------- */ |
| /* */ |
| /* Since release 2.1, the error constants have changed. The lower */ |
| /* byte of the error value gives the "generic" error code, while the */ |
| /* higher byte indicates in which module the error occured. */ |
| /* */ |
| /* You can use the macro FT_ERROR_BASE(x) macro to extract the generic */ |
| /* error code from an FT_Error value. */ |
| /* */ |
| /* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */ |
| /* undefined in ftoption.h in order to make the higher byte always */ |
| /* zero, in case you need to be compatible with previous versions of */ |
| /* FreeType 2. */ |
| /* */ |
| /* */ |
| /* II - Error Message strings */ |
| /* -------------------------- */ |
| /* */ |
| /* The error definitions below are made through special macros that */ |
| /* allow client applications to build a table of error message strings */ |
| /* if they need it. 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 */ |
| /* (see below). */ |
| /* */ |
| /* FT_ERROR_DEF( e, v, s ) :: */ |
| /* This macro is called to define one single error. */ |
| /* `e' is the error code identifier (e.g. FT_Err_Invalid_Argument). */ |
| /* `v' is the error numerical value. */ |
| /* `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, 0 } }; */ |
| /* */ |
| /* const struct */ |
| /* { */ |
| /* int err_code; */ |
| /* const char* err_msg */ |
| /* } ft_errors[] = */ |
| /* */ |
| /* #include FT_ERRORS_H */ |
| /* } */ |
| /* */ |
| /*************************************************************************/ |
| |
| |
| #ifndef __FTERRORS_H__ |
| #define __FTERRORS_H__ |
| |
| |
| /* include module base error codes */ |
| #include FT_MODULE_ERRORS_H |
| |
| |
| /*******************************************************************/ |
| /*******************************************************************/ |
| /***** *****/ |
| /***** SETUP MACROS *****/ |
| /***** *****/ |
| /*******************************************************************/ |
| /*******************************************************************/ |
| |
| |
| #undef FT_NEED_EXTERN_C |
| #define FT_ERR_XCAT( x, y ) x ## y |
| #define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) |
| |
| |
| /* 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 FT_Err_Ok, which must be 0! */ |
| #define FT_NOERRORDEF_( e, v, s ) \ |
| FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) |
| |
| |
| /*******************************************************************/ |
| /*******************************************************************/ |
| /***** *****/ |
| /***** LIST OF ERROR CODES/MESSAGES *****/ |
| /***** *****/ |
| /*******************************************************************/ |
| /*******************************************************************/ |
| |
| |
| #ifdef FT_ERROR_START_LIST |
| FT_ERROR_START_LIST |
| #endif |
| |
| |
| /* 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" ) |
| |
| /* 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" ) |
| |
| |
| #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_PREFIX |
| #undef FT_ERR_BASE |
| #undef FT_ERR_CONCAT |
| |
| #endif /* __FTERRORS_H__ */ |
| |
| /* END */ |