/***************************************************************************/
/*                                                                         */
/*  svlayout.h                                                             */
/*                                                                         */
/*    The FreeType Layout services (specification).                        */
/*                                                                         */
/*  Copyright 2003 by                                                      */
/*  Masatake YAMATO and Redhat K.K.                                        */
/*                                                                         */
/*  This file 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.                                        */
/*                                                                         */
/***************************************************************************/

/***************************************************************************/
/* Development of the code in this file is support of                      */
/* Information-technology Promotion Agency, Japan.                         */
/***************************************************************************/

#ifndef __SVLAYOUT_H__
#define __SVLAYOUT_H__

#include FT_INTERNAL_SERVICE_H
#include FT_LAYOUT_H
#include FT_INTERNAL_FTL_TYPES_H

FT_BEGIN_HEADER

#define FT_SERVICE_ID_LAYOUT  "layout"

  typedef FT_Error
  (*FTL_Get_Font_Func)( FT_Face face,
			FTL_Font* font );

  typedef FTL_EngineType
  (*FTL_Get_EngineType_Func) ( FT_Face face );
			       
  typedef FT_Error
  (*FTL_New_FeaturesRequest_Func)( FT_Face face,
				   FTL_FeaturesRequest* request );
  typedef FT_Error
  (*FTL_Done_FeaturesRequest_Func)( FTL_FeaturesRequest request );

  typedef FT_Error
  (*FTL_Copy_FeaturesRequest_Func)( FTL_FeaturesRequest from,
				    FTL_FeaturesRequest to );

  typedef FT_UShort
  (*FTL_Get_LigatureCaret_Count_Func)  ( FT_Face face, FT_UShort glyphID );
  
  typedef FT_UShort
  (*FTL_Get_LigatureCaret_Division_Func) ( FT_Face face, 
					   FT_UShort glyphID, 
					   FT_UShort nth );
  typedef FT_Error
  (*FTL_Substitute_Glyphs_Func) ( FT_Face face,
				  FTL_FeaturesRequest request,
				  FTL_Glyphs_Array in,
				  FTL_Glyphs_Array out );

  FT_DEFINE_SERVICE( Layout )
  {
    FTL_Get_Font_Func                   get_font;
    FTL_Get_EngineType_Func             get_engine_type;
    FTL_New_FeaturesRequest_Func        new_features_request;
    FTL_Done_FeaturesRequest_Func       done_features_request;
    FTL_Copy_FeaturesRequest_Func       copy_features_request;
    FTL_Get_LigatureCaret_Count_Func    get_ligature_caret_count;
    FTL_Get_LigatureCaret_Division_Func get_ligature_caret_division;
    FTL_Substitute_Glyphs_Func          substitute_glyphs;
  };

  /* */


FT_END_HEADER

#endif /* __SVLAYOUT_H__ */


/* END */
