1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
#!/usr/bin/env python
#
#
# autohint math table builder
#
# Copyright 1996-2000 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.
import math
ag_pi = 256
def print_arctan( atan_bits ):
atan_base = 1 << atan_bits
print " static AH_Angle ag_arctan[1L << AG_ATAN_BITS] ="
print " {"
count = 0
line = " "
for n in range( atan_base ):
comma = ","
if ( n == atan_base - 1 ):
comma = ""
angle = math.atan( n * 1.0 / atan_base ) / math.pi * ag_pi
line = line + " " + repr( int( angle + 0.5 ) ) + comma
count = count + 1;
if ( count == 8 ):
count = 0
print line
line = " "
if ( count > 0 ):
print line
print " };"
# This routine is not used currently.
#
def print_sines():
print " static FT_Fixed ah_sines[AG_HALF_PI + 1] ="
print " {"
count = 0
line = " "
for n in range( ag_pi / 2 ):
sinus = math.sin( n * math.pi / ag_pi )
line = line + " " + repr( int( 65536.0 * sinus ) ) + ","
count = count + 1
if ( count == 8 ):
count = 0
print line
line = " "
if ( count > 0 ):
print line
print " 65536"
print " };"
print_arctan( 8 )
print
# END