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