1*37da2899SCharles.Forsyth /***************************************************************************/ 2*37da2899SCharles.Forsyth /* */ 3*37da2899SCharles.Forsyth /* ahangles.h */ 4*37da2899SCharles.Forsyth /* */ 5*37da2899SCharles.Forsyth /* A routine used to compute vector angles with limited accuracy */ 6*37da2899SCharles.Forsyth /* and very high speed (specification). */ 7*37da2899SCharles.Forsyth /* */ 8*37da2899SCharles.Forsyth /* Copyright 2000-2001, 2002 Catharon Productions Inc. */ 9*37da2899SCharles.Forsyth /* Author: David Turner */ 10*37da2899SCharles.Forsyth /* */ 11*37da2899SCharles.Forsyth /* This file is part of the Catharon Typography Project and shall only */ 12*37da2899SCharles.Forsyth /* be used, modified, and distributed under the terms of the Catharon */ 13*37da2899SCharles.Forsyth /* Open Source License that should come with this file under the name */ 14*37da2899SCharles.Forsyth /* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ 15*37da2899SCharles.Forsyth /* this file you indicate that you have read the license and */ 16*37da2899SCharles.Forsyth /* understand and accept it fully. */ 17*37da2899SCharles.Forsyth /* */ 18*37da2899SCharles.Forsyth /* Note that this license is compatible with the FreeType license. */ 19*37da2899SCharles.Forsyth /* */ 20*37da2899SCharles.Forsyth /***************************************************************************/ 21*37da2899SCharles.Forsyth 22*37da2899SCharles.Forsyth 23*37da2899SCharles.Forsyth #ifndef __AHANGLES_H__ 24*37da2899SCharles.Forsyth #define __AHANGLES_H__ 25*37da2899SCharles.Forsyth 26*37da2899SCharles.Forsyth 27*37da2899SCharles.Forsyth #include <ft2build.h> 28*37da2899SCharles.Forsyth #include FT_INTERNAL_OBJECTS_H 29*37da2899SCharles.Forsyth #include "ahtypes.h" 30*37da2899SCharles.Forsyth 31*37da2899SCharles.Forsyth 32*37da2899SCharles.Forsyth FT_BEGIN_HEADER 33*37da2899SCharles.Forsyth 34*37da2899SCharles.Forsyth 35*37da2899SCharles.Forsyth /* PI expressed in ah_angles -- we don't really need an important */ 36*37da2899SCharles.Forsyth /* precision, so 256 should be enough */ 37*37da2899SCharles.Forsyth #define AH_PI 256 38*37da2899SCharles.Forsyth #define AH_2PI ( AH_PI * 2 ) 39*37da2899SCharles.Forsyth #define AH_HALF_PI ( AH_PI / 2 ) 40*37da2899SCharles.Forsyth #define AH_2PIMASK ( AH_2PI - 1 ) 41*37da2899SCharles.Forsyth 42*37da2899SCharles.Forsyth /* the number of bits used to express an arc tangent; */ 43*37da2899SCharles.Forsyth /* see the structure of the lookup table */ 44*37da2899SCharles.Forsyth #define AH_ATAN_BITS 8 45*37da2899SCharles.Forsyth 46*37da2899SCharles.Forsyth extern 47*37da2899SCharles.Forsyth const AH_Angle ah_arctan[1L << AH_ATAN_BITS]; 48*37da2899SCharles.Forsyth 49*37da2899SCharles.Forsyth 50*37da2899SCharles.Forsyth FT_LOCAL( AH_Angle ) 51*37da2899SCharles.Forsyth ah_angle( FT_Vector* v ); 52*37da2899SCharles.Forsyth 53*37da2899SCharles.Forsyth 54*37da2899SCharles.Forsyth FT_LOCAL( AH_Angle ) 55*37da2899SCharles.Forsyth ah_angle_diff( AH_Angle angle1, 56*37da2899SCharles.Forsyth AH_Angle angle2 ); 57*37da2899SCharles.Forsyth 58*37da2899SCharles.Forsyth 59*37da2899SCharles.Forsyth FT_END_HEADER 60*37da2899SCharles.Forsyth 61*37da2899SCharles.Forsyth #endif /* __AHANGLES_H__ */ 62*37da2899SCharles.Forsyth 63*37da2899SCharles.Forsyth 64*37da2899SCharles.Forsyth /* END */ 65