/***************************************************************************/
/*                                                                         */
/*  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 file is used to define the FreeType error enumeration constants. */
  /* It can also be used to create an error message table easily with      */
  /* something like                                                        */
  /*                                                                       */
  /*   {                                                                   */
  /*     #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                                              */
  /*   }                                                                   */
  /*                                                                       */
  /* For C++ it might be necessary to use `extern "C" {' and to define     */
  /* FT_NEED_EXTERN_C also.                                                */
  /*                                                                       */
  /*************************************************************************/


#ifndef __FTERRORS_H__
#define __FTERRORS_H__


#undef FT_NEED_EXTERN_C


#ifndef FT_ERRORDEF

#define FT_ERRORDEF( e, v, s )  e = v,
#define FT_ERROR_START_LIST     enum {
#define FT_ERROR_END_LIST       FT_Err_Max };

#ifdef __cplusplus
#define FT_NEED_EXTERN_C
  extern "C" {
#endif

#endif /* !FT_ERRORDEF */


#ifdef FT_ERROR_START_LIST
  FT_ERROR_START_LIST
#endif

  /* generic errors */

  FT_ERRORDEF( FT_Err_Ok,                           0x0000, \
               "no error" )
  FT_ERRORDEF( FT_Err_Cannot_Open_Resource,         0x0001, \
               "cannot open resource" )
  FT_ERRORDEF( FT_Err_Unknown_File_Format,          0x0002, \
               "unknown file format" )
  FT_ERRORDEF( FT_Err_Invalid_File_Format,          0x0003, \
               "broken file" )
  FT_ERRORDEF( FT_Err_Invalid_Version,              0x0004, \
               "invalid FreeType version" )
  FT_ERRORDEF( FT_Err_Lower_Module_Version,         0x0005, \
               "module version is too low" )
  FT_ERRORDEF( FT_Err_Invalid_Argument,             0x0006, \
               "invalid argument" )
  FT_ERRORDEF( FT_Err_Unimplemented_Feature,        0x0007, \
               "unimplemented feature" )

  /* glyph/character errors */

  FT_ERRORDEF( FT_Err_Invalid_Glyph_Index,          0x0010, \
               "invalid glyph index" )
  FT_ERRORDEF( FT_Err_Invalid_Character_Code,       0x0011, \
               "invalid character code" )
  FT_ERRORDEF( FT_Err_Invalid_Glyph_Format,         0x0012, \
               "unsupported glyph image format" )
  FT_ERRORDEF( FT_Err_Cannot_Render_Glyph,          0x0013, \
               "cannot render this glyph format" )
  FT_ERRORDEF( FT_Err_Invalid_Outline,              0x0014, \
               "invalid outline" )
  FT_ERRORDEF( FT_Err_Invalid_Composite,            0x0015, \
               "invalid composite glyph" )
  FT_ERRORDEF( FT_Err_Too_Many_Hints,               0x0016, \
               "too many hints" )
  FT_ERRORDEF( FT_Err_Invalid_Pixel_Size,           0x0017, \
               "invalid pixel size" )

  /* handle errors */

  FT_ERRORDEF( FT_Err_Invalid_Handle,               0x0020, \
               "invalid object handle" )
  FT_ERRORDEF( FT_Err_Invalid_Library_Handle,       0x0021, \
               "invalid library handle" )
  FT_ERRORDEF( FT_Err_Invalid_Driver_Handle,        0x0022, \
               "invalid module handle" )
  FT_ERRORDEF( FT_Err_Invalid_Face_Handle,          0x0023, \
               "invalid face handle" )
  FT_ERRORDEF( FT_Err_Invalid_Size_Handle,          0x0024, \
               "invalid size handle" )
  FT_ERRORDEF( FT_Err_Invalid_Slot_Handle,          0x0025, \
               "invalid glyph slot handle" )
  FT_ERRORDEF( FT_Err_Invalid_CharMap_Handle,       0x0026, \
               "invalid charmap handle" )
  FT_ERRORDEF( FT_Err_Invalid_Cache_Handle,         0x0027, \
               "invalid cache manager handle" )
  FT_ERRORDEF( FT_Err_Invalid_Stream_Handle,        0x0028, \
               "invalid stream handle" )

  /* driver errors */

  FT_ERRORDEF( FT_Err_Too_Many_Drivers,             0x0030, \
               "too many modules" )
  FT_ERRORDEF( FT_Err_Too_Many_Extensions,          0x0031, \
               "too many extensions" )

  /* memory errors */

  FT_ERRORDEF( FT_Err_Out_Of_Memory,                0x0040, \
               "out of memory" )
  FT_ERRORDEF( FT_Err_Unlisted_Object,              0x0041, \
               "unlisted object" )

  /* stream errors */

  FT_ERRORDEF( FT_Err_Cannot_Open_Stream,           0x0051, \
               "cannot open stream" )
  FT_ERRORDEF( FT_Err_Invalid_Stream_Seek,          0x0052, \
               "invalid stream seek" )
  FT_ERRORDEF( FT_Err_Invalid_Stream_Skip,          0x0053, \
               "invalid stream skip" )
  FT_ERRORDEF( FT_Err_Invalid_Stream_Read,          0x0054, \
               "invalid stream read" )
  FT_ERRORDEF( FT_Err_Invalid_Stream_Operation,     0x0055, \
               "invalid stream operation" )
  FT_ERRORDEF( FT_Err_Invalid_Frame_Operation,      0x0056, \
               "invalid frame operation" )
  FT_ERRORDEF( FT_Err_Nested_Frame_Access,          0x0057, \
               "nested frame access" )
  FT_ERRORDEF( FT_Err_Invalid_Frame_Read,           0x0058, \
               "invalid frame read" )

  /* raster errors */

  FT_ERRORDEF( FT_Err_Raster_Uninitialized,         0x0060, \
               "raster uninitialized" )
  FT_ERRORDEF( FT_Err_Raster_Corrupted,             0x0061, \
               "raster corrupted" )
  FT_ERRORDEF( FT_Err_Raster_Overflow,              0x0062, \
               "raster overflow" )
  FT_ERRORDEF( FT_Err_Raster_Negative_Height,       0x0063, \
               "negative height while rastering" )

  /* cache errors */

  FT_ERRORDEF( FT_Err_Too_Many_Caches,              0x0070, \
               "too many registered caches" )

  /* range 0x400 - 0x4FF is reserved for TrueType specific stuff */

  /* range 0x500 - 0x5FF is reserved for CFF specific stuff */

  /* range 0x600 - 0x6FF is reserved for Type1 specific stuff */

#ifdef FT_ERROR_END_LIST
  FT_ERROR_END_LIST
#endif


#undef FT_ERROR_START_LIST
#undef FT_ERROR_END_LIST
#undef FT_ERRORDEF


#ifdef FT_NEED_EXTERN_C
  }
#endif

#endif /* __FTERRORS_H__ */


/* END */
