/***************************************************************************/
/*                                                                         */
/*  psobjs.h                                                               */
/*                                                                         */
/*    Auxiliary functions for PostScript fonts (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.                                        */
/*                                                                         */
/***************************************************************************/


#ifndef __PSOBJS_H__
#define __PSOBJS_H__


#include <ft2build.h>
#include FT_INTERNAL_POSTSCRIPT_AUX_H


FT_BEGIN_HEADER


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                             T1_TABLE                          *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/


  FT_CALLBACK_TABLE
  const PS_Table_Funcs  ps_table_funcs;

  FT_CALLBACK_TABLE
  const T1_Parser_Funcs  t1_parser_funcs;

  FT_CALLBACK_TABLE
  const T1_Builder_Funcs  t1_builder_funcs;


  FT_LOCAL
  FT_Error  PS_Table_New( PS_Table*  table,
                          FT_Int     count,
                          FT_Memory  memory );

  FT_LOCAL
  FT_Error  PS_Table_Add( PS_Table*  table,
                          FT_Int     index,
                          void*      object,
                          FT_Int     length );

  FT_LOCAL
  void  PS_Table_Done( PS_Table*  table );


  FT_LOCAL
  void  PS_Table_Release( PS_Table*  table );


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                            T1 PARSER                          *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/


  FT_LOCAL
  void  T1_Skip_Spaces( T1_Parser*  parser );

  FT_LOCAL
  void  T1_Skip_Alpha( T1_Parser*  parser );

  FT_LOCAL
  void  T1_ToToken( T1_Parser*  parser,
                    T1_Token*   token );

  FT_LOCAL
  void  T1_ToTokenArray( T1_Parser*  parser,
                         T1_Token*   tokens,
                         FT_UInt     max_tokens,
                         FT_Int*     pnum_tokens );

  FT_LOCAL
  FT_Error  T1_Load_Field( T1_Parser*       parser,
                           const T1_Field*  field,
                           void**           objects,
                           FT_UInt          max_objects,
                           FT_ULong*        pflags );

  FT_LOCAL
  FT_Error  T1_Load_Field_Table( T1_Parser*       parser,
                                 const T1_Field*  field,
                                 void**           objects,
                                 FT_UInt          max_objects,
                                 FT_ULong*        pflags );

  FT_LOCAL
  FT_Long  T1_ToInt( T1_Parser*  parser );


  FT_LOCAL
  FT_Fixed  T1_ToFixed( T1_Parser*  parser,
                        FT_Int      power_ten );


  FT_LOCAL
  FT_Int  T1_ToCoordArray( T1_Parser*  parser,
                           FT_Int      max_coords,
                           FT_Short*   coords );

  FT_LOCAL
  FT_Int  T1_ToFixedArray( T1_Parser*  parser,
                           FT_Int      max_values,
                           FT_Fixed*   values,
                           FT_Int      power_ten );


  FT_LOCAL
  void  T1_Init_Parser( T1_Parser*  parser,
                        FT_Byte*    base,
                        FT_Byte*    limit,
                        FT_Memory   memory );

  FT_LOCAL
  void  T1_Done_Parser( T1_Parser*  parser );


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                            T1 BUILDER                         *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  FT_LOCAL
  void  T1_Builder_Init( T1_Builder*   builder,
                         FT_Face       face,
                         FT_Size       size,
                         FT_GlyphSlot  glyph );

  FT_LOCAL
  void  T1_Builder_Done( T1_Builder*  builder );

  FT_LOCAL
  FT_Error  T1_Builder_Check_Points( T1_Builder*  builder,
                                     FT_Int       count );

  FT_LOCAL
  void  T1_Builder_Add_Point( T1_Builder*  builder,
                              FT_Pos       x,
                              FT_Pos       y,
                              FT_Byte      flag );

  FT_LOCAL
  FT_Error  T1_Builder_Add_Point1( T1_Builder*  builder,
                                   FT_Pos       x,
                                   FT_Pos       y );

  FT_LOCAL
  FT_Error  T1_Builder_Add_Contour( T1_Builder*  builder );


  FT_LOCAL
  FT_Error  T1_Builder_Start_Point( T1_Builder*  builder,
                                    FT_Pos       x,
                                    FT_Pos       y );


  FT_LOCAL
  void  T1_Builder_Close_Contour( T1_Builder*  builder );


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                            OTHER                              *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  FT_LOCAL
  void  T1_Decrypt( FT_Byte*   buffer,
                    FT_Int     length,
                    FT_UShort  seed );


FT_END_HEADER

#endif /* __PSOBJS_H__ */


/* END */
