WSTester updated to work plus hopefully all the other changes that need to go into...
[jabaws.git] / binaries / src / ViennaRNA / RNAforester / g2-0.70 / doc / g2_main.dox
diff --git a/binaries/src/ViennaRNA/RNAforester/g2-0.70/doc/g2_main.dox b/binaries/src/ViennaRNA/RNAforester/g2-0.70/doc/g2_main.dox
new file mode 100644 (file)
index 0000000..332a248
--- /dev/null
@@ -0,0 +1,356 @@
+
+/* this file is used mainly to hold some general g2 doxygen
+documentation in the doxygen format */
+
+
+/* define some main groups */
+
+/**
+ * \defgroup interface g2 User Interface
+ */
+
+/**
+ * \ingroup interface
+ * \defgroup physdev g2 Physical devices
+ *
+ * g2 physical devices are drivers for different output
+ * formats.
+ *
+ */
+
+
+
+/** \mainpage
+
+
+\section licence License Notice
+
+This library is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of the
+License, or (at your option) any later version.  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 GNU Lesser General Public
+License for more details.  You should have received a copy of the GNU
+Lesser General Public License along with this library; if not, write
+to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA 02111-1307 USA *
+
+Copyright (C) 1998-2004 Ljubomir Milanovic & Horst Wagner.
+
+
+\section introduction Introduction
+
+\subsection what What is g2 ?
+
+\subsubsection short Short version (if you are in hurry)
+
+    - 2D graphic library
+    - Simple to use
+    - Supports several types of output devices (currently X11,
+      PostScript, devices supported by gd http://www.boutell.com/gd/
+      (PNG, JPEG), FIG (http://www.xfig.org) and MS Windows windows)
+    - Concept allows easy implementation of new device types
+    - Virtual devices allow to send output simultaneously to several devices
+    - User definable coordinate system
+    - Written in ANSI-C
+    - Tested under Digital Unix, AIX, Linux, VMS and Windows NT
+    - Perl support
+    - Fortran interface
+
+\subsubsection long Long version
+
+g2 is a simple to use graphics library for 2D graphical applications
+written in Ansi-C. This library provides a comprehensive set of
+functions for simultaneous generation of graphical output on different
+types of devices. Presently, following devices are currently supported
+by g2: X11, gd (PNG and JPEG), PostScript and FIG (xfig).
+One major feature of the g2_library is the concept of virtual devices.
+An arbitrary number of physical devices (such as PostScript, or X11) can
+be grouped to create a so-called virtual device. Commands sent to such a
+virtual devices will automatically issued to all attached physical
+devices. This allows for example simultaneous output to a PNG file and a
+Postscript file. A virtual device in turn can be attached to another
+virtual device, allowing to construct trees of devices.
+Virtual devices can also be useful when using different user-coordinate
+systems. E.g. one X11 window showing an overview of a graphical output,
+and a second window showing a zoom of a more detailed area of the
+graphic. Drawing in both windows is performed by one single command to
+the virtual device.
+
+\code
+                                   /-------> PNG:   g2_attach(id_PNG,..
+            ----------------------- 
+g2_plot---> | Virtual device: id  |--------> X11:   g2_attach(id_X11,...
+            -----------------------
+                                   \-------> PS:    g2_attach(id_PS,...
+\endcode
+
+If you don't need or like the concept of virtual devices, simply ignore it.
+
+
+
+\section getting   Getting Started
+
+\subsection preinstallation Preinstallation tasks:
+
+    * PNG and JPEG support
+
+    g2 uses the gd library by Thomas Boutell to generate PNG files. This
+    package is freeware (however not GPL) and can be downloaded at
+    http://www.boutell.com/gd/.
+    Linux users might prefer to install a pre-compiled gd rpm package
+    which should be available at your local RedHat mirrorsite.
+    NT users should install the gd source package in a subdirectory
+    named "gd" which should be located in the same directory as the g2
+    subdirectory (but not in the g2 directory itself). Otherwise file
+    locations for gd must be modified in the g2 project workspace.
+    Unix and VMS users will have to build and install gd according to
+    the instructions found in the gd distribution.
+
+
+\subsection installation Installation
+
+
+LINUX
+
+    -# Either install RPM packet with binaries, or compile as described
+      in the UNIX section
+
+UNIX
+
+    -# Extract package with gzip -dc g2-xxxx.tar.gz | tar xvf -
+    -# Run './configure'
+    -# Optionally run 'make depend'
+    -# Run 'make'
+    -# Run 'make install' or copy libg2.a and g2.h, g2_X11.h, g2_gd.h,
+      anf g2_PS.h to the default locations for library and include files.
+    -# Optional: cd to demo directory and run 'make demo' to compile demo applications
+
+WINDOWS NT
+
+    -# Extract package using either the .tar.gz or the .zip distribution
+    -# MS Visual C++ users can build both library and demos with the
+      supplied project file: g2.dsw (To obtain an icon and use menu
+      functions you must also build the g2res project in g2.dsw)
+    -# users of gcc or other commandline based compilers with make
+      support continue as in Unix example
+    -# It is also possible to compile g2 on winNT/95 using the free
+      cygwin32 library and a X-windows library for windows.
+      Theoretically it should be possible to support both X-windows and
+      native NT/95 windows at the same time.
+
+PERL (old instructions)
+
+    -# Change to directory g2_perl
+    -# Perform following steps
+          -# perl Makefile.PL
+          -# make
+          -# make test
+          -# make install
+    -# See the \ref perl "Perl interface" section for more information
+    -# swig is also supported, more details are comming ...
+
+VMS
+
+  -# Try to extract either the tar.gz or the zip distribution (whatever
+    is easier for you)
+  -# type mms to compile library (descrip.mms file is suplied)
+  -# run mms in demo directory to compile demo applications
+
+
+\subsection simple A simple example
+
+The following example is a minimal application. It draws a rectangle in
+a postscript file.
+
+\code
+#include <g2.h>
+#include <g2_PS.h>
+
+main()
+{
+    int id;
+    id = g2_open_PS("rect.ps", g2_A4, g2_PS_land); 
+    g2_rectangle(id, 20, 20, 150, 150); 
+    g2_close(id);
+}
+\endcode
+
+- Always include <g2.h>. Additionally include header files for all
+types of devices you want to use.
+- Open devices using g2_open_XY functions. The open function
+returns a device id of type int, which you need to refer to the device.
+- Call g2_close() to close device.
+- Consider turning off auto flush (g2_set_auto_flush()) for improved performance.
+
+You want to draw a PNG file instead of a PostScript file ?
+
+replace the PS header file with
+
+\code
+#include <g2_gd.h>
+\endcode
+
+and replace the g2_open_PS function call with
+
+\code
+id = g2_open_gd("rect.png", 300, 200, g2_gd_png);
+\endcode
+
+You want to draw to a PNG file and a PostScript file with one plot
+command ?
+
+Here we use the concept of virtual devices. Open a PNG and PostScript
+device, then open a virtual device and attach both the PNG and
+PostScript device to the virtual device. Plot commands to the virtual
+device will be issued to both PNG and PostScript device. You can attach
+and detatch further devices at any time.
+
+\code
+#include <g2.h>
+#include <g2_PS.h>
+#include <g2_gd.h>
+
+main()
+{
+    int id_PS,id_PNG,id;
+
+    id_PS  = g2_open_PS("rect.ps", g2_A4, g2_PS_land);
+    id_PNG = g2_open_gd("rect.png", 300, 200, g2_gd_png);
+    id     = g2_open_vd();
+
+    g2_attach(id, id_PS);
+    g2_attach(id, id_PNG);
+
+    g2_rectangle(id, 20, 20, 150, 150);
+    g2_circle(id, 50, 60, 100);
+
+    g2_close(id);
+}
+\endcode
+
+Note: closing a virtual device automatically closes all attached devices.
+
+
+\subsubsection more More examples
+
+More examples showing the usage of different user coordinate systems,
+multiple virtual devices, etc. can be found in the distribution (demo
+directory).
+
+    
+\subsection fortran Fortran interface
+
+The Fortran interface for g2 is currently tested for Linux and Digital
+Unix/OSF. Function names for Fortran are the same as in C, however
+following differences exist:
+
+    * all variables including device IDs are of type REAL
+    * void functions are implemented as subroutines and must be called
+      with CALL
+    * constants defined by #define in C (e.g. g2_A4) do not work. Get
+      corresponding values from the apropriate header files.
+
+A short Fortran example:
+
+\code
+        program demo
+        real d,color
+        d=g2_open_PS('demo_f.ps', 4.0, 1.0)
+        call g2_plot(d, 50.0, 50.0)
+        call g2_string(d, 25.0, 75.0, 'TEST ')
+        color=g2_ink(d, 1.0, 0.0, 0.0)
+        write (6,*) color
+        call g2_pen(d, color)
+        call g2_circle(d, 20.0, 20.0, 10.0)
+        call g2_flush(d)
+        call g2_close(d)
+        stop
+        end
+\endcode
+
+\subsection perl Perl interface (old info)
+
+The perl interface for g2 is currently tested for Linux and Digital
+Unix/OSF. Function names in perl are the same as in C, however the
+device itself is implemented object orientated, i.e. the device argument
+is ommited in all functions.
+E.g., following simple perl script:
+
+\code
+use G2;
+
+$d = newX11 G2::Device(100,100);
+$d->circle(10, 10, 20);
+$d->string(20, 40, "Hello World");
+
+print "\nDone.\n[Enter]\n";
+getc(STDIN);
+
+$d->close()
+\endcode
+
+The creator functions are newX11, newGIF, newPS, etc. and accept the
+same arguments as the open functions in the C version.
+See the perl documentation (perldoc G2) for more details and the test.pl
+script for a more extensive example.
+
+\section Contact
+
+You can contact the authors and contributors by e-mail (/ is @ and - is .):
+
+- Ljubomir Milanovic:                  ljubo/users-sourceforge-net
+- Horst Wagner:                        wagner/users-sourceforge-net
+- Tijs Michels (spline implementation):        tijs/vimec-nl
+
+or visit g2 home page on: http://g2.sourceforge.net/
+
+*/
+
+
+
+/** \page paper  PS paper sizes
+
+
+\subsection paper PostScript paper sizes
+
+\code
+g2 Name                 Name                 Size(Pt)
+--------------------------------------------------------
+g2_A0                   A0                   2384 x 3370
+g2_A1                   A1                   1684 x 2384
+g2_A2                   A2                   1191 x 1684
+g2_A3                   A3                    842 x 1191
+g2_A4                   A4                    595 x 842
+g2_A5                   A5                    420 x 595
+g2_A6                   A6                    297 x 420
+g2_A7                   A7                    210 x 297
+g2_A8                   A8                    148 x 210
+g2_A9                   A9                    105 x 148
+g2_B0                   B0                   2920 x 4127
+g2_B1                   B1                   2064 x 2920
+g2_B2                   B2                   1460 x 2064
+g2_B3                   B3                   1032 x 1460
+g2_B4                   B4                    729 x 1032
+g2_B5                   B5                    516 x 729
+g2_B6                   B6                    363 x 516
+g2_B7                   B7                    258 x 363
+g2_B8                   B8                    181 x 258
+g2_B9                   B9                    127 x 181
+g2_B10                  B10                    91 x 127
+g2_Comm_10_Envelope     Comm #10 Envelope     297 x 684
+g2_C5_Envelope          C5 Envelope           461 x 648
+g2_DL_Envelope          DL Envelope           312 x 624
+g2_Folio                Folio                 595 x 935
+g2_Executive            Executive             522 x 756
+g2_Letter               Letter                612 x 792
+g2_Legal                Legal                 612 x 1008
+g2_Ledger               Ledger               1224 x 792
+g2_Tabloid              Tabloid               792 x 1224
+\endcode
+
+    
+*/