sig   exception Graphic_failure of string   val open_graph : string -> unit   val close_graph : unit -> unit   val set_window_title : string -> unit   val resize_window : int -> int -> unit   external clear_graph : unit -> unit = "caml_gr_clear_graph"   external size_x : unit -> int = "caml_gr_size_x"   external size_y : unit -> int = "caml_gr_size_y"   type color = int   val rgb : int -> int -> int -> Graphics.color   external set_color : Graphics.color -> unit = "caml_gr_set_color"   val background : Graphics.color   val foreground : Graphics.color   val black : Graphics.color   val white : Graphics.color   val red : Graphics.color   val green : Graphics.color   val blue : Graphics.color   val yellow : Graphics.color   val cyan : Graphics.color   val magenta : Graphics.color   external plot : int -> int -> unit = "caml_gr_plot"   val plots : (int * int) array -> unit   external point_color : int -> int -> Graphics.color = "caml_gr_point_color"   external moveto : int -> int -> unit = "caml_gr_moveto"   val rmoveto : int -> int -> unit   external current_x : unit -> int = "caml_gr_current_x"   external current_y : unit -> int = "caml_gr_current_y"   val current_point : unit -> int * int   external lineto : int -> int -> unit = "caml_gr_lineto"   val rlineto : int -> int -> unit   val curveto : int * int -> int * int -> int * int -> unit   val draw_rect : int -> int -> int -> int -> unit   val draw_poly_line : (int * int) array -> unit   val draw_poly : (int * int) array -> unit   val draw_segments : (int * int * int * int) array -> unit   val draw_arc : int -> int -> int -> int -> int -> int -> unit   val draw_ellipse : int -> int -> int -> int -> unit   val draw_circle : int -> int -> int -> unit   val set_line_width : int -> unit   external draw_char : char -> unit = "caml_gr_draw_char"   external draw_string : string -> unit = "caml_gr_draw_string"   external set_font : string -> unit = "caml_gr_set_font"   val set_text_size : int -> unit   external text_size : string -> int * int = "caml_gr_text_size"   val fill_rect : int -> int -> int -> int -> unit   external fill_poly : (int * int) array -> unit = "caml_gr_fill_poly"   val fill_arc : int -> int -> int -> int -> int -> int -> unit   val fill_ellipse : int -> int -> int -> int -> unit   val fill_circle : int -> int -> int -> unit   type image   val transp : Graphics.color   external make_image : Graphics.color array array -> Graphics.image     = "caml_gr_make_image"   external dump_image : Graphics.image -> Graphics.color array array     = "caml_gr_dump_image"   external draw_image : Graphics.image -> int -> int -> unit     = "caml_gr_draw_image"   val get_image : int -> int -> int -> int -> Graphics.image   external create_image : int -> int -> Graphics.image     = "caml_gr_create_image"   external blit_image : Graphics.image -> int -> int -> unit     = "caml_gr_blit_image"   type status = {     mouse_x : int;     mouse_y : int;     button : bool;     keypressed : bool;     key : char;   }   type event = Button_down | Button_up | Key_pressed | Mouse_motion | Poll   external wait_next_event : Graphics.event list -> Graphics.status     = "caml_gr_wait_event"   val loop_at_exit : Graphics.event list -> (Graphics.status -> unit) -> unit   val mouse_pos : unit -> int * int   val button_down : unit -> bool   val read_key : unit -> char   val key_pressed : unit -> bool   external sound : int -> int -> unit = "caml_gr_sound"   val auto_synchronize : bool -> unit   external synchronize : unit -> unit = "caml_gr_synchronize"   external display_mode : bool -> unit = "caml_gr_display_mode"   external remember_mode : bool -> unit = "caml_gr_remember_mode" end