shithub: purgatorio

ref: a8083462e62459b2ae8a243dc4ba88416eba03b1

View raw version
/***************************************************************************/
/*                                                                         */
/*  ahangles.h                                                             */
/*                                                                         */
/*    A routine used to compute vector angles with limited accuracy        */
/*    and very high speed (specification).                                 */
/*                                                                         */
/*  Copyright 2000-2001, 2002 Catharon Productions Inc.                    */
/*  Author: David Turner                                                   */
/*                                                                         */
/*  This file is part of the Catharon Typography Project and shall only    */
/*  be used, modified, and distributed under the terms of the Catharon     */
/*  Open Source License that should come with this file under the name     */
/*  `CatharonLicense.txt'.  By continuing to use, modify, or distribute    */
/*  this file you indicate that you have read the license and              */
/*  understand and accept it fully.                                        */
/*                                                                         */
/*  Note that this license is compatible with the FreeType license.        */
/*                                                                         */
/***************************************************************************/


#ifndef __AHANGLES_H__
#define __AHANGLES_H__


#include <ft2build.h>
#include FT_INTERNAL_OBJECTS_H
#include "ahtypes.h"


FT_BEGIN_HEADER


  /* PI expressed in ah_angles -- we don't really need an important */
  /* precision, so 256 should be enough                             */
#define AH_PI       256
#define AH_2PI      ( AH_PI * 2 )
#define AH_HALF_PI  ( AH_PI / 2 )
#define AH_2PIMASK  ( AH_2PI - 1 )

  /* the number of bits used to express an arc tangent; */
  /* see the structure of the lookup table              */
#define AH_ATAN_BITS  8

  extern
  const AH_Angle  ah_arctan[1L << AH_ATAN_BITS];


  FT_LOCAL( AH_Angle )
  ah_angle( FT_Vector*  v );


  FT_LOCAL( AH_Angle )
  ah_angle_diff( AH_Angle  angle1,
                 AH_Angle  angle2 );


FT_END_HEADER

#endif /* __AHANGLES_H__ */


/* END */