godot/thirdparty/freetype/src/otvalid/otvcommn.h

/****************************************************************************
 *
 * otvcommn.h
 *
 *   OpenType common tables validation (specification).
 *
 * Copyright (C) 2004-2023 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 OTVCOMMN_H_
#define OTVCOMMN_H_


#include "otvalid.h"
#include <freetype/internal/ftdebug.h>


FT_BEGIN_HEADER


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                         VALIDATION                            *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  OTV_Validator;

  OTV_Validate_Func;

  OTV_ValidatorRec;


#undef  FT_INVALID_
#define FT_INVALID_( _error )

#define OTV_OPTIONAL_TABLE( _table )

#define OTV_OPTIONAL_TABLE32( _table )

#define OTV_OPTIONAL_OFFSET( _offset )

#define OTV_OPTIONAL_OFFSET32( _offset )

#define OTV_LIMIT_CHECK( _count )

#define OTV_SIZE_CHECK( _size )

#define OTV_SIZE_CHECK32( _size )


#define OTV_NAME_(x)
#define OTV_NAME(x)

#define OTV_FUNC_(x)
#define OTV_FUNC(x)

#ifdef FT_DEBUG_LEVEL_TRACE

#define OTV_NEST1

#define OTV_NEST2

#define OTV_NEST3

#define OTV_INIT

#define OTV_ENTER

#define OTV_NAME_ENTER

#define OTV_EXIT

#define OTV_TRACE

#else   /* !FT_DEBUG_LEVEL_TRACE */

#define OTV_NEST1( x )

#define OTV_NEST2( x, y )

#define OTV_NEST3( x, y, z )

#define OTV_INIT
#define OTV_ENTER
#define OTV_NAME_ENTER( name )
#define OTV_EXIT

#define OTV_TRACE( s )

#endif  /* !FT_DEBUG_LEVEL_TRACE */


#define OTV_RUN


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                       COVERAGE TABLE                          *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  FT_LOCAL( void )
  otv_Coverage_validate( FT_Bytes       table,
                         OTV_Validator  otvalid,
                         FT_Int         expected_count );

  /* return first covered glyph */
  FT_LOCAL( FT_UInt )
  otv_Coverage_get_first( FT_Bytes  table );

  /* return last covered glyph */
  FT_LOCAL( FT_UInt )
  otv_Coverage_get_last( FT_Bytes  table );

  /* return number of covered glyphs */
  FT_LOCAL( FT_UInt )
  otv_Coverage_get_count( FT_Bytes  table );


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                  CLASS DEFINITION TABLE                       *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  FT_LOCAL( void )
  otv_ClassDef_validate( FT_Bytes       table,
                         OTV_Validator  otvalid );


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                      DEVICE TABLE                             *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  FT_LOCAL( void )
  otv_Device_validate( FT_Bytes       table,
                       OTV_Validator  otvalid );


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                           LOOKUPS                             *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  FT_LOCAL( void )
  otv_Lookup_validate( FT_Bytes       table,
                       OTV_Validator  otvalid );

  FT_LOCAL( void )
  otv_LookupList_validate( FT_Bytes       table,
                           OTV_Validator  otvalid );


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                        FEATURES                               *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  FT_LOCAL( void )
  otv_Feature_validate( FT_Bytes       table,
                        OTV_Validator  otvalid );

  /* lookups must already be validated */
  FT_LOCAL( void )
  otv_FeatureList_validate( FT_Bytes       table,
                            FT_Bytes       lookups,
                            OTV_Validator  otvalid );


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                       LANGUAGE SYSTEM                         *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  FT_LOCAL( void )
  otv_LangSys_validate( FT_Bytes       table,
                        OTV_Validator  otvalid );


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                           SCRIPTS                             *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  FT_LOCAL( void )
  otv_Script_validate( FT_Bytes       table,
                       OTV_Validator  otvalid );

  /* features must already be validated */
  FT_LOCAL( void )
  otv_ScriptList_validate( FT_Bytes       table,
                           FT_Bytes       features,
                           OTV_Validator  otvalid );


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                      UTILITY FUNCTIONS                        *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

#define ChainPosClassSetFunc
#define ChainPosRuleSetFunc
#define ChainSubClassSetFunc
#define ChainSubRuleSetFunc
#define JstfLangSysFunc
#define JstfMaxFunc
#define LigGlyphFunc
#define LigatureArrayFunc
#define LigatureSetFunc
#define PosClassSetFunc
#define PosRuleSetFunc
#define SubClassSetFunc
#define SubRuleSetFunc

  FT_LOCAL( void )
  otv_x_Ox ( FT_Bytes       table,
             OTV_Validator  otvalid );

#define AlternateSubstFormat1Func
#define ChainContextPosFormat1Func
#define ChainContextSubstFormat1Func
#define ContextPosFormat1Func
#define ContextSubstFormat1Func
#define LigatureSubstFormat1Func
#define MultipleSubstFormat1Func

  FT_LOCAL( void )
  otv_u_C_x_Ox( FT_Bytes       table,
                OTV_Validator  otvalid );

#define AlternateSetFunc
#define AttachPointFunc
#define ExtenderGlyphFunc
#define JstfGPOSModListFunc
#define JstfGSUBModListFunc
#define SequenceFunc

  FT_LOCAL( void )
  otv_x_ux( FT_Bytes       table,
            OTV_Validator  otvalid );

#define PosClassRuleFunc
#define PosRuleFunc
#define SubClassRuleFunc
#define SubRuleFunc

  FT_LOCAL( void )
  otv_x_y_ux_sy( FT_Bytes       table,
                 OTV_Validator  otvalid );

#define ChainPosClassRuleFunc
#define ChainPosRuleFunc
#define ChainSubClassRuleFunc
#define ChainSubRuleFunc

  FT_LOCAL( void )
  otv_x_ux_y_uy_z_uz_p_sp( FT_Bytes       table,
                           OTV_Validator  otvalid );

#define ContextPosFormat2Func
#define ContextSubstFormat2Func

  FT_LOCAL( void )
  otv_u_O_O_x_Onx( FT_Bytes       table,
                   OTV_Validator  otvalid );

#define ContextPosFormat3Func
#define ContextSubstFormat3Func

  FT_LOCAL( void )
  otv_u_x_y_Ox_sy( FT_Bytes       table,
                   OTV_Validator  otvalid );

#define ChainContextPosFormat2Func
#define ChainContextSubstFormat2Func

  FT_LOCAL( void )
  otv_u_O_O_O_O_x_Onx( FT_Bytes       table,
                       OTV_Validator  otvalid );

#define ChainContextPosFormat3Func
#define ChainContextSubstFormat3Func

  FT_LOCAL( void )
  otv_u_x_Ox_y_Oy_z_Oz_p_sp( FT_Bytes       table,
                             OTV_Validator  otvalid );


  FT_LOCAL( FT_UInt )
  otv_GSUBGPOS_get_Lookup_count( FT_Bytes  table );

  FT_LOCAL( FT_UInt )
  otv_GSUBGPOS_have_MarkAttachmentType_flag( FT_Bytes  table );

 /* */

FT_END_HEADER

#endif /* OTVCOMMN_H_ */


/* END */