diff options
Diffstat (limited to 'otherlibs/graph/graphics.mli')
| -rw-r--r-- | otherlibs/graph/graphics.mli | 374 |
1 files changed, 0 insertions, 374 deletions
diff --git a/otherlibs/graph/graphics.mli b/otherlibs/graph/graphics.mli deleted file mode 100644 index ff271ce556..0000000000 --- a/otherlibs/graph/graphics.mli +++ /dev/null @@ -1,374 +0,0 @@ -(***********************************************************************) -(* *) -(* Objective Caml *) -(* *) -(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) -(* *) -(* Copyright 1996 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed *) -(* under the terms of the GNU Library General Public License, with *) -(* the special exception on linking described in file ../../LICENSE. *) -(* *) -(***********************************************************************) - -(* $Id$ *) - -(** Machine-independent graphics primitives. *) - -exception Graphic_failure of string -(** Raised by the functions below when they encounter an error. *) - - -(** {6 Initializations} *) - -val open_graph : string -> unit -(** Show the graphics window or switch the screen to graphic mode. - The graphics window is cleared and the current point is set - to (0, 0). The string argument is used to pass optional - information on the desired graphics mode, the graphics window - size, and so on. Its interpretation is implementation-dependent. - If the empty string is given, a sensible default is selected. *) - -val close_graph : unit -> unit -(** Delete the graphics window or switch the screen back to text mode. *) - -val set_window_title : string -> unit -(** Set the title of the graphics window. *) - -external clear_graph : unit -> unit = "gr_clear_graph" -(** Erase the graphics window. *) - -external size_x : unit -> int = "gr_size_x" -(** See {!Graphics.size_y}. *) - -external size_y : unit -> int = "gr_size_y" -(** Return the size of the graphics window. Coordinates of the screen - pixels range over [0 .. size_x()-1] and [0 .. size_y()-1]. - Drawings outside of this rectangle are clipped, without causing - an error. The origin (0,0) is at the lower left corner. *) - -(** {6 Colors} *) - -type color = int -(** A color is specified by its R, G, B components. Each component - is in the range [0..255]. The three components are packed in - an [int]: [0xRRGGBB], where [RR] are the two hexadecimal digits for - the red component, [GG] for the green component, [BB] for the - blue component. *) - -val rgb : int -> int -> int -> color -(** [rgb r g b] returns the integer encoding the color with red - component [r], green component [g], and blue component [b]. - [r], [g] and [b] are in the range [0..255]. *) - -external set_color : color -> unit = "gr_set_color" -(** Set the current drawing color. *) - -val background : color -(** See {!Graphics.foreground}.*) - -val foreground : color -(** Default background and foreground colors (usually, either black - foreground on a white background or white foreground on a - black background). - {!Graphics.clear_graph} fills the screen with the [background] color. - The initial drawing color is [foreground]. *) - - -(** {7 Some predefined colors} *) - -val black : color -val white : color -val red : color -val green : color -val blue : color -val yellow : color -val cyan : color -val magenta : color - - -(** {6 Point and line drawing} *) - -external plot : int -> int -> unit = "gr_plot" -(** Plot the given point with the current drawing color. *) - -val plots : (int * int) array -> unit -(** Plot the given points with the current drawing color. *) - -external point_color : int -> int -> color = "gr_point_color" -(** Return the color of the given point in the backing store - (see "Double buffering" below). *) - -external moveto : int -> int -> unit = "gr_moveto" -(** Position the current point. *) - -val rmoveto : int -> int -> unit -(** [rmoveto dx dy] translates the current point by the given vector. *) - -external current_x : unit -> int = "gr_current_x" -(** Return the abscissa of the current point. *) - -external current_y : unit -> int = "gr_current_y" -(** Return the ordinate of the current point. *) - -val current_point : unit -> int * int -(** Return the position of the current point. *) - -external lineto : int -> int -> unit = "gr_lineto" -(** Draw a line with endpoints the current point and the given point, - and move the current point to the given point. *) - -val rlineto : int -> int -> unit -(** Draw a line with endpoints the current point and the - current point translated of the given vector, - and move the current point to this point. *) - -val curveto : int * int -> int * int -> int * int -> unit -(** [curveto b c d] draws a cubic Bezier curve starting from - the current point to point [d], with control points [b] and - [c], and moves the current point to [d]. *) - -external draw_rect : int -> int -> int -> int -> unit = "gr_draw_rect" -(** [draw_rect x y w h] draws the rectangle with lower left corner - at [x,y], width [w] and height [h]. - The current point is unchanged. *) - -val draw_poly_line : (int * int) array -> unit -(** [draw_poly_line points] draws the line that joins the - points given by the array argument. - The array contains the coordinates of the vertices of the - polygonal line, which need not be closed. - The current point is unchanged. *) - -val draw_poly : (int * int) array -> unit -(** [draw_poly polygon] draws the given polygon. - The array contains the coordinates of the vertices of the - polygon. - The current point is unchanged. *) - -val draw_segments : (int * int * int * int) array -> unit -(** [draw_segments segments] draws the segments given in the array - argument. Each segment is specified as a quadruple - [(x0, y0, x1, y1)] where [(x0, y0)] and [(x1, y1)] are - the coordinates of the end points of the segment. - The current point is unchanged. *) - -external draw_arc : - int -> int -> int -> int -> int -> int -> - unit = "gr_draw_arc" "gr_draw_arc_nat" -(** [draw_arc x y rx ry a1 a2] draws an elliptical arc with center - [x,y], horizontal radius [rx], vertical radius [ry], from angle - [a1] to angle [a2] (in degrees). The current point is unchanged. *) - -val draw_ellipse : int -> int -> int -> int -> unit -(** [draw_ellipse x y rx ry] draws an ellipse with center - [x,y], horizontal radius [rx] and vertical radius [ry]. - The current point is unchanged. *) - -val draw_circle : int -> int -> int -> unit -(** [draw_circle x y r] draws a circle with center [x,y] and - radius [r]. The current point is unchanged. *) - -external set_line_width : int -> unit = "gr_set_line_width" -(** Set the width of points and lines drawn with the functions above. - Under X Windows, [set_line_width 0] selects a width of 1 pixel - and a faster, but less precise drawing algorithm than the one - used when [set_line_width 1] is specified. *) - -(** {6 Text drawing} *) - -external draw_char : char -> unit = "gr_draw_char" -(** See {!Graphics.draw_string}.*) - -external draw_string : string -> unit = "gr_draw_string" -(** Draw a character or a character string with lower left corner - at current position. After drawing, the current position is set - to the lower right corner of the text drawn. *) - -external set_font : string -> unit = "gr_set_font" -(** Set the font used for drawing text. - The interpretation of the arguments to [set_font] - is implementation-dependent. *) - -val set_text_size : int -> unit -(** Set the character size used for drawing text. - The interpretation of the arguments to [set_text_size] - is implementation-dependent. *) - -external text_size : string -> int * int = "gr_text_size" -(** Return the dimensions of the given text, if it were drawn with - the current font and size. *) - - -(** {6 Filling} *) - -external fill_rect : int -> int -> int -> int -> unit = "gr_fill_rect" -(** [fill_rect x y w h] fills the rectangle with lower left corner - at [x,y], width [w] and height [h], with the current color. *) - -external fill_poly : (int * int) array -> unit = "gr_fill_poly" -(** Fill the given polygon with the current color. The array - contains the coordinates of the vertices of the polygon. *) - -external fill_arc : - int -> int -> int -> int -> int -> int -> - unit = "gr_fill_arc" "gr_fill_arc_nat" -(** Fill an elliptical pie slice with the current color. The - parameters are the same as for {!Graphics.draw_arc}. *) - -val fill_ellipse : int -> int -> int -> int -> unit -(** Fill an ellipse with the current color. The - parameters are the same as for {!Graphics.draw_ellipse}. *) - -val fill_circle : int -> int -> int -> unit -(** Fill a circle with the current color. The - parameters are the same as for {!Graphics.draw_circle}. *) - - -(** {6 Images} *) - -type image -(** The abstract type for images, in internal representation. - Externally, images are represented as matrices of colors. *) - -val transp : color -(** In matrices of colors, this color represent a ``transparent'' - point: when drawing the corresponding image, all pixels on the - screen corresponding to a transparent pixel in the image will - not be modified, while other points will be set to the color - of the corresponding point in the image. This allows superimposing - an image over an existing background. *) - -external make_image : color array array -> image = "gr_make_image" -(** Convert the given color matrix to an image. - Each sub-array represents one horizontal line. All sub-arrays - must have the same length; otherwise, exception [Graphic_failure] - is raised. *) - -external dump_image : image -> color array array = "gr_dump_image" -(** Convert an image to a color matrix. *) - -external draw_image : image -> int -> int -> unit = "gr_draw_image" -(** Draw the given image with lower left corner at the given point. *) - -val get_image : int -> int -> int -> int -> image -(** Capture the contents of a rectangle on the screen as an image. - The parameters are the same as for {!Graphics.fill_rect}. *) - -external create_image : int -> int -> image = "gr_create_image" -(** [create_image w h] returns a new image [w] pixels wide and [h] - pixels tall, to be used in conjunction with [blit_image]. - The initial image contents are random, except that no point - is transparent. *) - -external blit_image : image -> int -> int -> unit = "gr_blit_image" -(** [blit_image img x y] copies screen pixels into the image [img], - modifying [img] in-place. The pixels copied are those inside the - rectangle with lower left corner at [x,y], and width and height - equal to those of the image. Pixels that were transparent in - [img] are left unchanged. *) - - -(** {6 Mouse and keyboard events} *) - -type status = - { mouse_x : int; (** X coordinate of the mouse *) - mouse_y : int; (** Y coordinate of the mouse *) - button : bool; (** true if a mouse button is pressed *) - keypressed : bool; (** true if a key has been pressed *) - key : char; (** the character for the key pressed *) - } -(** To report events. *) - - -type event = - Button_down (** A mouse button is pressed *) - | Button_up (** A mouse button is released *) - | Key_pressed (** A key is pressed *) - | Mouse_motion (** The mouse is moved *) - | Poll (** Don't wait; return immediately *) -(** To specify events to wait for. *) - - -external wait_next_event : event list -> status = "gr_wait_event" -(** Wait until one of the events specified in the given event list - occurs, and return the status of the mouse and keyboard at - that time. If [Poll] is given in the event list, return immediately - with the current status. If the mouse cursor is outside of the - graphics window, the [mouse_x] and [mouse_y] fields of the event are - outside the range [0..size_x()-1, 0..size_y()-1]. Keypresses - are queued, and dequeued one by one when the [Key_pressed] - event is specified. *) - -(** {6 Mouse and keyboard polling} *) - -val mouse_pos : unit -> int * int -(** Return the position of the mouse cursor, relative to the - graphics window. If the mouse cursor is outside of the graphics - window, [mouse_pos()] returns a point outside of the range - [0..size_x()-1, 0..size_y()-1]. *) - -val button_down : unit -> bool -(** Return [true] if the mouse button is pressed, [false] otherwise. *) - -val read_key : unit -> char -(** Wait for a key to be pressed, and return the corresponding - character. Keypresses are queued. *) - -val key_pressed : unit -> bool -(** Return [true] if a keypress is available; that is, if [read_key] - would not block. *) - - -(** {6 Sound} *) - -external sound : int -> int -> unit = "gr_sound" -(** [sound freq dur] plays a sound at frequency [freq] (in hertz) - for a duration [dur] (in milliseconds). *) - -(** {6 Double buffering} *) - -val auto_synchronize : bool -> unit -(** By default, drawing takes place both on the window displayed - on screen, and in a memory area (the ``backing store''). - The backing store image is used to re-paint the on-screen - window when necessary. - - To avoid flicker during animations, it is possible to turn - off on-screen drawing, perform a number of drawing operations - in the backing store only, then refresh the on-screen window - explicitly. - - [auto_synchronize false] turns on-screen drawing off. All - subsequent drawing commands are performed on the backing store - only. - - [auto_synchronize true] refreshes the on-screen window from - the backing store (as per [synchronize]), then turns on-screen - drawing back on. All subsequent drawing commands are performed - both on screen and in the backing store. - - The default drawing mode corresponds to [auto_synchronize true]. *) - -external synchronize : unit -> unit = "gr_synchronize" -(** Synchronize the backing store and the on-screen window, by - copying the contents of the backing store onto the graphics - window. *) - - -external display_mode : bool -> unit = "gr_display_mode" -(** Set display mode on or off. When turned on, drawings are done - in the graphics window; when turned off, drawings do not affect - the graphics window. This occurs independently of - drawing into the backing store (see the function {!Graphics.remember_mode} - below). Default display mode is on. *) - - -external remember_mode : bool -> unit = "gr_remember_mode" -(** Set remember mode on or off. When turned on, drawings are done - in the backing store; when turned off, the backing store is - unaffected by drawings. This occurs independently of drawing - onto the graphics window (see the function {!Graphics.display_mode} above). - Default remember mode is on. *) - - |
