/***************************************************************************/ /* */ /* fterrors.h */ /* */ /* FreeType error codes (specification). */ /* */ /* Copyright 1996-2000 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 */ /* bytes indicates in which module the error occured. */ /* */ /* You can use the macro FT_ERROR_BASE(x) macro to extract the */ /* generic error code from a FT_Error */ /* */ /* 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'd need to be compatible with previous versions */ /* of FT2. */ /* */ /* */ /* 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 */ /* FT2 to save space (most client apps do not use them) */ /* */ /* To do so, you'll need 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 is used to end the list. */ /* */ /* Additionally, you'll need to undefine __FTERRORS_H__ before */ /* #including this file. */ /* */ /* Here's 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 # define FT_ERR_BASE 0 #endif /* 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 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 CLEANUPP *****/ /***** *****/ /*******************************************************************/ /*******************************************************************/ #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 */