107 lines
3.9 KiB
OCaml
107 lines
3.9 KiB
OCaml
(* File: ANSITerminal.mli
|
|
|
|
Copyright 2004 Troestler Christophe
|
|
Christophe.Troestler(at)umh.ac.be
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public License
|
|
version 2.1 as published by the Free Software Foundation, with the
|
|
special exception on linking described in file LICENSE.
|
|
|
|
This library is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file
|
|
LICENSE for more details.
|
|
*)
|
|
(** This module offers basic control of ANSI compliant terminals.
|
|
|
|
@author Christophe Troestler
|
|
@version 0.3
|
|
*)
|
|
|
|
(** {2 Color} *)
|
|
|
|
type color =
|
|
| Black | Red | Green | Yellow | Blue | Magenta | Cyan | White
|
|
| Default (** Default color of the terminal *)
|
|
|
|
(** Various styles for the text. [Blink] and [Hidden] may not work on
|
|
every terminal. *)
|
|
type style =
|
|
| Reset
|
|
| Bold | Underlined | Blink | Inverse | Hidden
|
|
| Foreground of color
|
|
| Background of color
|
|
|
|
val black : style (** Shortcut for [Foreground Black] *)
|
|
val red : style (** Shortcut for [Foreground Red] *)
|
|
val green : style (** Shortcut for [Foreground Green] *)
|
|
val yellow : style (** Shortcut for [Foreground Yellow] *)
|
|
val blue : style (** Shortcut for [Foreground Blue] *)
|
|
val magenta : style (** Shortcut for [Foreground Magenta] *)
|
|
val cyan : style (** Shortcut for [Foreground Cyan] *)
|
|
val white : style (** Shortcut for [Foreground White] *)
|
|
val default : style (** Shortcut for [Foreground Default] *)
|
|
|
|
val on_black : style (** Shortcut for [Background Black] *)
|
|
val on_red : style (** Shortcut for [Background Red] *)
|
|
val on_green : style (** Shortcut for [Background Green] *)
|
|
val on_yellow : style (** Shortcut for [Background Yellow] *)
|
|
val on_blue : style (** Shortcut for [Background Blue] *)
|
|
val on_magenta : style (** Shortcut for [Background Magenta] *)
|
|
val on_cyan : style (** Shortcut for [Background Cyan] *)
|
|
val on_white : style (** Shortcut for [Background White] *)
|
|
val on_default : style (** Shortcut for [Background Default] *)
|
|
|
|
val set_autoreset : bool -> unit
|
|
(** Turns the autoreset feature on and off. It defaults to on. *)
|
|
|
|
val print_string : style list -> string -> unit
|
|
(** [print_string attr txt] prints the string [txt] with the
|
|
attibutes [attr]. After printing, the attributes are
|
|
automatically reseted to the defaults, unless autoreset is turned
|
|
off. *)
|
|
|
|
val printf : style list -> ('a, unit, string, unit) format4 -> 'a
|
|
(** [printf attr format arg1 ... argN] prints the arguments
|
|
[arg1],...,[argN] according to [format] with the attibutes [attr].
|
|
After printing, the attributes are automatically reseted to the
|
|
defaults, unless autoreset is turned off. *)
|
|
|
|
|
|
(** {2 Erasing} *)
|
|
|
|
type loc = Above | Below | Screen
|
|
|
|
val erase : loc -> unit
|
|
(** [erase Above] erases everything before the position of the cursor.
|
|
[erase Below] erases everything after the position of the cursor.
|
|
[erase Screen] erases the whole screen.
|
|
*)
|
|
|
|
|
|
(** {2 Cursor} *)
|
|
|
|
val set_cursor : int -> int -> unit
|
|
(** [set_cursor x y] puts the cursor at position [(x,y)], [x]
|
|
indicating the column (the leftmost one being 1) and [y] being the
|
|
line (the topmost one being 1). If [x <= 0], the [x] coordinate
|
|
is unchanged; if [y <= 0], the [y] coordinate is unchanged. *)
|
|
|
|
val move_cursor : int -> int -> unit
|
|
(** [move_cursor x y] moves the cursor by [x] columns (to the right
|
|
if [x > 0], to the left if [x < 0]) and by [y] lines (downwards if
|
|
[y > 0] and upwards if [y < 0]). *)
|
|
|
|
val save_cursor : unit -> unit
|
|
(** [save_cursor()] saves the current position of the cursor. *)
|
|
val restore_cursor : unit -> unit
|
|
(** [restore_cursor()] replaces the cursor to the position saved
|
|
with [save_cursor()]. *)
|
|
|
|
|
|
(** {2 Scrolling} *)
|
|
|
|
val scroll : int -> unit
|
|
(** [scroll n] scrolls the terminal by [n] lines, up (creating new
|
|
lines at the bottom) if [n > 0] and down if [n < 0]. *)
|