/***************************************************************************/
/*                                                                         */
/*  ftcalc.h                                                               */
/*                                                                         */
/*    Arithmetic computations (specification).                             */
/*                                                                         */
/*  Copyright 1996-1999 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 FTCALC_H
#define FTCALC_H

#include <freetype.h>
#include <ftconfig.h>   /* for LONG64 */

#ifdef __cplusplus
  extern "C" {
#endif


#ifdef LONG64

  typedef INT64  FT_Int64;

#define ADD_64( x, y, z )  z = (x) + (y)
#define MUL_64( x, y, z )  z = (FT_Int64)(x) * (y)

#define DIV_64( x, y )     ( (x) / (y) )

#else /* LONG64 */

  typedef struct  FT_Int64_
  {
    FT_Word32  lo;
    FT_Word32  hi;

  } FT_Int64;

#define ADD_64( x, y, z )  FT_Add64( &x, &y, &z )
#define MUL_64( x, y, z )  FT_MulTo64( x, y, &z )
#define DIV_64( x, y )     FT_Div64by32( &x, y )

  BASE_DEF void      FT_Add64    ( FT_Int64* x, FT_Int64* y, FT_Int64*  z );
  BASE_DEF void      FT_MulTo64  ( FT_Int32  x, FT_Int32  y, FT_Int64*  z );
  BASE_DEF FT_Int32  FT_Div64by32( FT_Int64* x, FT_Int32  y );

#endif /* LONG64 */

#define SQRT_32( x )       FT_Sqrt32( x )

  BASE_DEF FT_Int32  FT_Sqrt32( FT_Int32  l );

  /*************************************************************************/
  /*                                                                       */
  /* FT_MulDiv() and FT_MulFix() are declared in freetype.h.               */
  /*                                                                       */
  /*************************************************************************/


#define INT_TO_F26DOT6( x )    ( (FT_Long)(x) << 6  )
#define INT_TO_F2DOT14( x )    ( (FT_Long)(x) << 14 )
#define INT_TO_FIXED( x )      ( (FT_Long)(x) << 16 )
#define F2DOT14_TO_FIXED( x )  ( (FT_Long)(x) << 2  )
#define FLOAT_TO_FIXED( x )    ( (FT_Long)(x * 65536.0) )

#define ROUND_F26DOT6( x )     ( x >= 0 ? (   ((x) + 32) & -64) \
                                     : ( -((32 - (x)) & -64) ) )

#ifdef __cplusplus
  }
#endif

#endif /* FTCALC_H */


/* END */
