/***************************************************************************/
/*                                                                         */
/*  ttsbit.h                                                               */
/*                                                                         */
/*    TrueType and OpenType embedded bitmap support (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 __TTSBIT_H__
#define __TTSBIT_H__


#include <ft2build.h>
#include FT_SOURCE_FILE(sfnt,ttload.h)


FT_BEGIN_HEADER


  FT_LOCAL
  FT_Error  TT_Load_SBit_Strikes( TT_Face    face,
                                  FT_Stream  stream );

  FT_LOCAL
  void      TT_Free_SBit_Strikes( TT_Face  face );


  FT_LOCAL
  FT_Error  TT_Set_SBit_Strike( TT_Face    face,
                                FT_Int     x_ppem,
                                FT_Int     y_ppem,
                                FT_ULong  *astrike_index );

  FT_LOCAL
  FT_Error  TT_Load_SBit_Image( TT_Face           face,
                                FT_ULong          strike_index,
                                FT_UInt           glyph_index,
                                FT_UInt           load_flags,
                                FT_Stream         stream,
                                FT_Bitmap        *map,
                                TT_SBit_Metrics  *metrics );


FT_END_HEADER

#endif /* __TTSBIT_H__ */


/* END */
