
from ctypes import *
from libtcodpy import Color

# HACK for return types
c_void = c_int

def setup_protos(lib):
    #_lib.TCOD_line.restype=c_bool 
    #_lib.TCOD_line.argtypes=[c_int, c_int, c_int, c_int, TCOD_line_listener_t]

    #_lib.TCOD_line_mt.restype=c_bool 
    #_lib.TCOD_line_mt.argtypes=[c_int, c_int, c_int, c_int, TCOD_line_listener_t , c_void_p]

    #_lib.c_void_pre_order.restype=c_bool 
    #_lib.c_void_pre_order.argtypes=[c_void_p, TCOD_bsp_callback_t , void_p]

    #_lib.TCOD_bsp_traverse_in_order.restype=c_bool 
    #_lib.TCOD_bsp_traverse_in_order.argtypes=[c_void_p, TCOD_bsp_callback_t , void_p]

    #_lib.c_void_post_order.restype=c_bool 
    #_lib.c_void_post_order.argtypes=[c_void_p, TCOD_bsp_callback_t , void_p]

    #_lib.TCOD_bsp_traverse_level_order.restype=c_bool 
    #_lib.TCOD_bsp_traverse_level_order.argtypes=[c_void_p, TCOD_bsp_callback_t , void_p]

    #_lib.TCOD_bsp_traverse_inverted_level_order.restype=c_bool 
    #_lib.TCOD_bsp_traverse_inverted_level_order.argtypes=[c_void_p, TCOD_bsp_callback_t , void_p]


    lib.TCOD_color_RGB.restype=Color
    lib.TCOD_color_RGB.argtypes=[c_byte , c_byte , c_byte ]

    lib.TCOD_color_HSV.restype=Color
    lib.TCOD_color_HSV.argtypes=[c_float , c_float , c_float ]

#    lib.TCOD_color_lerp .restype=c_int
#    lib.TCOD_color_lerp .argtypes=[c_int , c_int , c_float ]

    lib.TCOD_color_get_hue .restype=c_float
    lib.TCOD_color_get_hue .argtypes=[Color ]

    lib.TCOD_color_set_hue .restype=c_void
    lib.TCOD_color_set_hue .argtypes=[POINTER(Color), c_float ]

    lib.TCOD_color_get_saturation .restype=c_float
    lib.TCOD_color_get_saturation .argtypes=[Color ]

    lib.TCOD_color_set_saturation .restype=c_void
    lib.TCOD_color_set_saturation .argtypes=[POINTER(Color), c_float ]

    lib.TCOD_color_get_value .restype=c_float
    lib.TCOD_color_get_value .argtypes=[Color ]

    lib.TCOD_color_set_value .restype=c_void
    lib.TCOD_color_set_value .argtypes=[POINTER(Color), c_float ]

    lib.TCOD_color_shift_hue .restype=c_void
    lib.TCOD_color_shift_hue .argtypes=[POINTER(Color), c_float ]

#    lib.TCOD_console_print.restype=c_void
#    lib.TCOD_console_print.argtypes=[c_void_p ,c_int, c_int, c_char_p, ...]

#    lib.TCOD_console_print_ex.restype=c_void
#    lib.TCOD_console_print_ex.argtypes=[c_void_p ,c_int, c_int, c_int , c_int , c_char_p, ...]

#    lib.TCOD_console_print_rect.restype=c_int
#    lib.TCOD_console_print_rect.argtypes=[c_void_p ,c_int, c_int, c_int, c_int, c_char_p, ...]

#    lib.TCOD_console_print_rect_ex.restype=c_int
#    lib.TCOD_console_print_rect_ex.argtypes=[c_void_p ,c_int, c_int, c_int, c_int, c_int , c_int , c_char_p, ...]

#    lib.TCOD_console_get_height_rect.restype=c_int
#    lib.TCOD_console_get_height_rect.argtypes=[c_void_p ,c_int, c_int, c_int, c_int, c_char_p, ...]

#    lib.TCOD_console_print_frame.restype=c_void
#    lib.TCOD_console_print_frame.argtypes=[c_void_p ,c_int,c_int,c_int,c_int, c_bool , c_int , c_char_p, ...]

#    lib.TCOD_console_print_utf.restype=c_void
#    lib.TCOD_console_print_utf.argtypes=[c_void_p ,c_int, c_int, wchar_t_p, ...]

#    lib.TCOD_console_print_ex_utf.restype=c_void
#    lib.TCOD_console_print_ex_utf.argtypes=[c_void_p ,c_int, c_int, c_int , c_int , wchar_t_p, ...]

#    lib.TCOD_console_print_rect_utf.restype=c_int
#    lib.TCOD_console_print_rect_utf.argtypes=[c_void_p ,c_int, c_int, c_int, c_int, wchar_t_p, ...]

#    lib.TCOD_console_print_rect_ex_utf.restype=c_int
#    lib.TCOD_console_print_rect_ex_utf.argtypes=[c_void_p ,c_int, c_int, c_int, c_int, c_int , c_int , wchar_t_p, ...]

#    lib.TCOD_console_check_for_keypress.restype=TCOD_key_t
#    lib.TCOD_console_check_for_keypress.argtypes=[c_int]

#    lib.TCOD_console_wait_for_keypress.restype=TCOD_key_t
#    lib.TCOD_console_wait_for_keypress.argtypes=[c_bool ]

#    lib.TCOD_random_dice_new .restype=TCOD_dice_t
#    lib.TCOD_random_dice_new .argtypes=[c_char_p ]

#    lib.TCOD_random_dice_roll .restype=c_int
#    lib.TCOD_random_dice_roll .argtypes=[c_void_p , TCOD_dice_t ]

#    lib.TCOD_mouse_get_status.restype=TCOD_mouse_t
#    lib.TCOD_mouse_get_status.argtypes=[]

#    lib.TCOD_parser_new_custom_type.restype=c_int
#    lib.TCOD_parser_new_custom_type.argtypes=[c_void_p ,TCOD_parser_custom_t custom_type_]

    lib.TCOD_parser_error.restype=c_void
#    lib.TCOD_parser_error.argtypes=[c_char_p, ...]

#    lib.TCOD_parser_property.restype=TCOD_dice_t
#    lib.TCOD_parser_property.argtypes=[c_void_p , c_char_p]

#    lib.TCOD_parser_py.restype=c_void
#    lib.TCOD_parser_py.argtypes=[c_void_p , c_char_p, c_void_p]

#    lib.TCOD_parse_c_bool_value.restype=TCOD_value_t
#    lib.TCOD_parse_c_bool_value.argtypes=[]

#    lib.TCOD_parse_char_value.restype=TCOD_value_t
#    lib.TCOD_parse_char_value.argtypes=[]

#    lib.TCOD_parse_integer_value.restype=TCOD_value_t
#    lib.TCOD_parse_integer_value.argtypes=[]

#    lib.TCOD_parse_float_value.restype=TCOD_value_t
#    lib.TCOD_parse_float_value.argtypes=[]

#    lib.TCOD_parse_string_value.restype=TCOD_value_t
#    lib.TCOD_parse_string_value.argtypes=[]

#    lib.TCOD_parse_color_value.restype=TCOD_value_t
#    lib.TCOD_parse_color_value.argtypes=[]

#    lib.TCOD_parse_dice_value.restype=TCOD_value_t
#    lib.TCOD_parse_dice_value.argtypes=[]

#    lib.TCOD_parse_value_list_value.restype=TCOD_value_t
#    lib.TCOD_parse_value_list_value.argtypes=[c_void_p,c_int]

#    lib.TCOD_parse_property_value.restype=TCOD_value_t
#    lib.TCOD_parse_property_value.argtypes=[c_void_p, c_void_p , c_char_p, c_bool ]

#    lib.TCOD_path_new_using_function.restype=c_void_p
#    lib.TCOD_path_new_using_function.argtypes=[c_int, c_int, TCOD_path_func_t ,c_void_p, c_float ]


#    lib.TCOD_dijkstra_new_using_function.restype=c_void_p
#    lib.TCOD_dijkstra_new_using_function.argtypes=[c_int, c_int, TCOD_path_func_t ,c_void_p, c_float ]

    lib.TCOD_sys_clipboard_set.restype=c_void
    lib.TCOD_sys_clipboard_set.argtypes=[c_char_p]

    lib.TCOD_sys_clipboard_get.restype=c_char_p
    lib.TCOD_sys_clipboard_get.argtypes=[]

    #_lib.TCOD_thread_new.restype=TCOD_thread_t
    #_lib.TCOD_thread_new.argtypes=[c_int(*func)(void_p),c_void_p]

    #_lib.TCOD_thread_delete.restype=c_void
    #_lib.TCOD_thread_delete.argtypes=[TCOD_thread_t ]

    #_lib.TCOD_load_library.restype=TCOD_library_t
    #_lib.TCOD_load_library.argtypes=[c_char_p]

    #_lib.TCOD_get_function_address.restype=c_void_p
    #_lib.TCOD_get_function_address.argtypes=[TCOD_library_t , c_char_pfunction_]

    #_lib.TCOD_close_library.restype=c_void
    #_lib.TCOD_close_library.argtypes=[TCOD_library_]

    #_lib.TCOD_sys_register_SDL_renderer.restype=c_void
    #_lib.TCOD_sys_register_SDL_renderer.argtypes=[SDL_renderer_t ]

    lib.TCOD_console_double_hline.restype=c_void
    lib.TCOD_console_double_hline.argtypes=[c_void_p ,c_int,c_int, c_int]

    lib.TCOD_console_double_vline.restype=c_void
    lib.TCOD_console_double_vline.argtypes=[c_void_p ,c_int,c_int]

    lib.TCOD_console_print_double_frame.restype=c_void
    lib.TCOD_console_print_double_frame.argtypes=[c_void_p ,c_int,c_int]

    lib.TCOD_console_print_return_string.restype=c_char_p
    lib.TCOD_console_print_return_string.argtypes=[c_void_p ,c_int]

    lib.TCOD_image_set_key_color_wrapper.restype=c_void
    lib.TCOD_image_set_key_color_wrapper.argtypes=[c_void_p ]
