<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link rel="Up" href="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="ANSITerminal" rel="Chapter" href="ANSITerminal.html"><link title="Colors and style" rel="Section" href="#2_Colorsandstyle"> <link title="Erasing" rel="Section" href="#2_Erasing"> <link title="Cursor" rel="Section" href="#2_Cursor"> <link title="Size" rel="Section" href="#2_Size"> <link title="Scrolling" rel="Section" href="#2_Scrolling"> <title>ANSITerminal</title> </head> <body> <div class="navbar"> <a class="up" href="index.html" title="Index">Up</a> </div> <h1>Module <a href="type_ANSITerminal.html">ANSITerminal</a></h1> <pre><span class="keyword">module</span> ANSITerminal: <code class="code">sig</code> <a href="ANSITerminal.html">..</a> <code class="code">end</code></pre><div class="info module top"> This module offers basic control of ANSI compliant terminals and the windows shell. <p> This library is not thread safe.<br> <b>Author(s):</b> Christophe Troestler (Christophe.Troestler@umons.ac.be), Vincent Hugot (vincent.hugot@gmail.com)<br> </div> <hr width="100%"> <br> <h2 id="2_Colorsandstyle">Colors and style</h2><br> <pre><code><span id="TYPEcolor"><span class="keyword">type</span> <code class="type"></code>color</span> = </code></pre><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTcolor.Black"><span class="constructor">Black</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTcolor.Red"><span class="constructor">Red</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTcolor.Green"><span class="constructor">Green</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTcolor.Yellow"><span class="constructor">Yellow</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTcolor.Blue"><span class="constructor">Blue</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTcolor.Magenta"><span class="constructor">Magenta</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTcolor.Cyan"><span class="constructor">Cyan</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTcolor.White"><span class="constructor">White</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTcolor.Default"><span class="constructor">Default</span></span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Default color of the terminal</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr></table> <div class="info "> Available colors.<br> </div> <pre><code><span id="TYPEstyle"><span class="keyword">type</span> <code class="type"></code>style</span> = </code></pre><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTstyle.Reset"><span class="constructor">Reset</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTstyle.Bold"><span class="constructor">Bold</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTstyle.Underlined"><span class="constructor">Underlined</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTstyle.Blink"><span class="constructor">Blink</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTstyle.Inverse"><span class="constructor">Inverse</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTstyle.Hidden"><span class="constructor">Hidden</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTstyle.Foreground"><span class="constructor">Foreground</span></span> <span class="keyword">of</span> <code class="type"><a href="ANSITerminal.html#TYPEcolor">color</a></code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTstyle.Background"><span class="constructor">Background</span></span> <span class="keyword">of</span> <code class="type"><a href="ANSITerminal.html#TYPEcolor">color</a></code></code></td> </tr></table> <div class="info "> Various styles for the text. <code class="code">Blink</code> and <code class="code">Hidden</code> may not work on every terminal.<br> </div> <pre><span id="VALblack"><span class="keyword">val</span> black</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Foreground Black</code><br> </div> <pre><span id="VALred"><span class="keyword">val</span> red</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Foreground Red</code><br> </div> <pre><span id="VALgreen"><span class="keyword">val</span> green</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Foreground Green</code><br> </div> <pre><span id="VALyellow"><span class="keyword">val</span> yellow</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Foreground Yellow</code><br> </div> <pre><span id="VALblue"><span class="keyword">val</span> blue</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Foreground Blue</code><br> </div> <pre><span id="VALmagenta"><span class="keyword">val</span> magenta</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Foreground Magenta</code><br> </div> <pre><span id="VALcyan"><span class="keyword">val</span> cyan</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Foreground Cyan</code><br> </div> <pre><span id="VALwhite"><span class="keyword">val</span> white</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Foreground White</code><br> </div> <pre><span id="VALdefault"><span class="keyword">val</span> default</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Foreground Default</code><br> </div> <pre><span id="VALon_black"><span class="keyword">val</span> on_black</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Background Black</code><br> </div> <pre><span id="VALon_red"><span class="keyword">val</span> on_red</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Background Red</code><br> </div> <pre><span id="VALon_green"><span class="keyword">val</span> on_green</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Background Green</code><br> </div> <pre><span id="VALon_yellow"><span class="keyword">val</span> on_yellow</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Background Yellow</code><br> </div> <pre><span id="VALon_blue"><span class="keyword">val</span> on_blue</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Background Blue</code><br> </div> <pre><span id="VALon_magenta"><span class="keyword">val</span> on_magenta</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Background Magenta</code><br> </div> <pre><span id="VALon_cyan"><span class="keyword">val</span> on_cyan</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Background Cyan</code><br> </div> <pre><span id="VALon_white"><span class="keyword">val</span> on_white</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Background White</code><br> </div> <pre><span id="VALon_default"><span class="keyword">val</span> on_default</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a></code></pre><div class="info "> Shortcut for <code class="code">Background Default</code><br> </div> <pre><span id="VALset_autoreset"><span class="keyword">val</span> set_autoreset</span> : <code class="type">bool -> unit</code></pre><div class="info "> Turns the autoreset feature on and off. It defaults to on.<br> </div> <pre><span id="VALprint_string"><span class="keyword">val</span> print_string</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a> list -> string -> unit</code></pre><div class="info "> <code class="code">print_string attr txt</code> prints the string <code class="code">txt</code> with the attibutes <code class="code">attr</code>. After printing, the attributes are automatically reseted to the defaults, unless autoreset is turned off.<br> </div> <pre><span id="VALprerr_string"><span class="keyword">val</span> prerr_string</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a> list -> string -> unit</code></pre><div class="info "> Like <code class="code">print_string</code> but prints on the standard error.<br> </div> <pre><span id="VALprintf"><span class="keyword">val</span> printf</span> : <code class="type"><a href="ANSITerminal.html#TYPEstyle">style</a> list -> ('a, unit, string, unit) Pervasives.format4 -> 'a</code></pre><div class="info "> <code class="code">printf attr format arg1 ... argN</code> prints the arguments <code class="code">arg1</code>,...,<code class="code">argN</code> according to <code class="code">format</code> with the attibutes <code class="code">attr</code>. After printing, the attributes are automatically reseted to the defaults, unless autoreset is turned off.<br> </div> <br> <h2 id="2_Erasing">Erasing</h2><br> <pre><code><span id="TYPEloc"><span class="keyword">type</span> <code class="type"></code>loc</span> = </code></pre><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTloc.Eol"><span class="constructor">Eol</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTloc.Above"><span class="constructor">Above</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTloc.Below"><span class="constructor">Below</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTloc.Screen"><span class="constructor">Screen</span></span></code></td> </tr></table> <pre><span id="VALerase"><span class="keyword">val</span> erase</span> : <code class="type"><a href="ANSITerminal.html#TYPEloc">loc</a> -> unit</code></pre><div class="info "> <code class="code">erase Eol</code> clear from the cursor position to the end of the line without moving the cursor. <code class="code">erase Above</code> erases everything before the position of the cursor. <code class="code">erase Below</code> erases everything after the position of the cursor. <code class="code">erase Screen</code> erases the whole screen. <p> This function does not modify the position of the cursor.<br> </div> <br> <h2 id="2_Cursor">Cursor</h2><br> <pre><span id="VALset_cursor"><span class="keyword">val</span> set_cursor</span> : <code class="type">int -> int -> unit</code></pre><div class="info "> <code class="code">set_cursor x y</code> puts the cursor at position <code class="code">(x,y)</code>, <code class="code">x</code> indicating the column (the leftmost one being 1) and <code class="code">y</code> being the line (the topmost one being 1). If <code class="code">x <= 0</code>, the <code class="code">x</code> coordinate is unchanged; if <code class="code">y <= 0</code>, the <code class="code">y</code> coordinate is unchanged.<br> </div> <pre><span id="VALmove_cursor"><span class="keyword">val</span> move_cursor</span> : <code class="type">int -> int -> unit</code></pre><div class="info "> <code class="code">move_cursor x y</code> moves the cursor by <code class="code">x</code> columns (to the right if <code class="code">x > 0</code>, to the left if <code class="code">x < 0</code>) and by <code class="code">y</code> lines (downwards if <code class="code">y > 0</code> and upwards if <code class="code">y < 0</code>).<br> </div> <pre><span id="VALmove_bol"><span class="keyword">val</span> move_bol</span> : <code class="type">unit -> unit</code></pre><div class="info "> <code class="code">move_bol()</code> moves the cursor to the beginning of the current line. This is useful for progress bars for example.<br> </div> <pre><span id="VALpos_cursor"><span class="keyword">val</span> pos_cursor</span> : <code class="type">unit -> int * int</code></pre><div class="info "> <code class="code">pos_cursor()</code> returns a couple <code class="code">(x,y)</code> giving the current position of the cursor, <code class="code">x >= 1</code> being the column and <code class="code">y >= 1</code> the row.<br> </div> <pre><span id="VALsave_cursor"><span class="keyword">val</span> save_cursor</span> : <code class="type">unit -> unit</code></pre><div class="info "> <code class="code">save_cursor()</code> saves the current position of the cursor.<br> </div> <pre><span id="VALrestore_cursor"><span class="keyword">val</span> restore_cursor</span> : <code class="type">unit -> unit</code></pre><div class="info "> <code class="code">restore_cursor()</code> replaces the cursor to the position saved with <code class="code">save_cursor()</code>.<br> </div> <br> <h2 id="2_Size">Size</h2><br> <pre><span id="VALresize"><span class="keyword">val</span> resize</span> : <code class="type">int -> int -> unit</code></pre><div class="info "> <code class="code">resize width height</code> resize the current terminal to the given <code class="code">width</code> and <code class="code">height</code>.<br> </div> <pre><span id="VALsize"><span class="keyword">val</span> size</span> : <code class="type">unit -> int * int</code></pre><div class="info "> <code class="code">size()</code> returns a pair <code class="code">(width, height)</code> giving the size of the terminal in character cells.<br> </div> <br> <h2 id="2_Scrolling">Scrolling</h2><br> <pre><span id="VALscroll"><span class="keyword">val</span> scroll</span> : <code class="type">int -> unit</code></pre><div class="info "> <code class="code">scroll n</code> scrolls the terminal by <code class="code">n</code> lines, up (creating new lines at the bottom) if <code class="code">n > 0</code> and down if <code class="code">n < 0</code>.<br> </div> </body></html>