Update copyright statements and change license to LGPL
[alexxy/gromacs.git] / include / writeps.h
1 /*
2  * This file is part of the GROMACS molecular simulation package.
3  *
4  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
5  * Copyright (c) 2001-2004, The GROMACS development team,
6  * check out http://www.gromacs.org for more information.
7  * Copyright (c) 2012, by the GROMACS development team, led by
8  * David van der Spoel, Berk Hess, Erik Lindahl, and including many
9  * others, as listed in the AUTHORS file in the top-level source
10  * directory and at http://www.gromacs.org.
11  *
12  * GROMACS is free software; you can redistribute it and/or
13  * modify it under the terms of the GNU Lesser General Public License
14  * as published by the Free Software Foundation; either version 2.1
15  * of the License, or (at your option) any later version.
16  *
17  * GROMACS is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20  * Lesser General Public License for more details.
21  *
22  * You should have received a copy of the GNU Lesser General Public
23  * License along with GROMACS; if not, see
24  * http://www.gnu.org/licenses, or write to the Free Software Foundation,
25  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
26  *
27  * If you want to redistribute modifications to GROMACS, please
28  * consider that scientific software is very special. Version
29  * control is crucial - bugs must be traceable. We will be happy to
30  * consider code for inclusion in the official distribution, but
31  * derived work must not be called official GROMACS. Details are found
32  * in the README & COPYING files - if they are missing, get the
33  * official version at http://www.gromacs.org.
34  *
35  * To help us fund GROMACS development, we humbly ask that you cite
36  * the research papers on the package. Check out http://www.gromacs.org.
37  */
38
39 #ifndef _writeps_h
40 #define _writeps_h
41
42
43 #include <stdio.h>
44 #include "visibility.h"
45 #include "typedefs.h"
46
47 #ifdef __cplusplus
48 extern "C" {
49 #endif
50
51 typedef enum { 
52   eXCenter, eXLeft, eXRight
53 } eXPos;
54
55 typedef enum { 
56   eYCenter, eYTop,  eYBottom
57 } eYPos; 
58
59 enum { 
60   efontTIMES, efontTIMESITALIC, efontTIMESBOLD, efontTIMESBOLDITALIC,
61   efontHELV,  efontHELVITALIC,  efontHELVBOLD,  efontHELVBOLDITALIC,
62   efontCOUR,  efontCOURITALIC,  efontCOURBOLD,  efontCOURBOLDITALIC,
63   efontNR };
64
65
66 typedef struct t_int_psdata *t_psdata;
67 /* Only use t_psdata - it is a pointer to an abstract datatype
68  * that maintains the state of the postscript currently written.
69  */
70
71 extern const char *fontnm[efontNR];
72
73 GMX_LIBGMX_EXPORT
74 t_psdata ps_open(const char *fn,real x1,real y1,real x2,real y2);
75
76 GMX_LIBGMX_EXPORT
77 void ps_linewidth(t_psdata ps,int lw);
78 GMX_LIBGMX_EXPORT
79 void ps_color(t_psdata ps,real r,real g,real b);
80 GMX_LIBGMX_EXPORT
81 void ps_rgb(t_psdata ps,t_rgb *rgb);
82
83 void ps_rgb_box(t_psdata ps,t_rgb *rgb);
84 GMX_LIBGMX_EXPORT
85 void ps_rgb_nbox(t_psdata ps,t_rgb *rgb,real n);
86 GMX_LIBGMX_EXPORT
87 void ps_init_rgb_box(t_psdata ps,real xbox, real ybox);
88 GMX_LIBGMX_EXPORT
89 void ps_init_rgb_nbox(t_psdata ps,real xbox, real ybox);
90
91 void ps_lineto(t_psdata ps,real x,real y);
92 void ps_linerel(t_psdata ps,real dx,real dy);
93
94 GMX_LIBGMX_EXPORT
95 void ps_moveto(t_psdata ps,real x,real y);
96 GMX_LIBGMX_EXPORT
97 void ps_moverel(t_psdata ps,real dx,real dy);
98
99 GMX_LIBGMX_EXPORT
100 void ps_line(t_psdata ps,real x1,real y1,real x2,real y2);
101
102 GMX_LIBGMX_EXPORT
103 void ps_box(t_psdata ps,real x1,real y1,real x2,real y2);
104 GMX_LIBGMX_EXPORT
105 void ps_fillbox(t_psdata ps,real x1,real y1,real x2,real y2);
106
107 void ps_arc(t_psdata ps,real x1,real y1,real rad,real a0,real a1);
108 void ps_fillarc(t_psdata ps,real x1,real y1,real rad,real a0,real a1);
109 GMX_LIBGMX_EXPORT
110 void ps_arcslice(t_psdata ps,real xc,real yc,
111                         real rad1,real rad2,real a0,real a1);
112 GMX_LIBGMX_EXPORT
113 void ps_fillarcslice(t_psdata ps,real xc,real yc,
114                             real rad1,real rad2,real a0,real a1);
115
116 void ps_circle(t_psdata ps,real x1,real y1,real rad);
117
118 GMX_LIBGMX_EXPORT
119 void ps_font(t_psdata ps,int font,real size);
120 GMX_LIBGMX_EXPORT
121 void ps_strfont(t_psdata ps,char *font,real size);
122
123 void ps_text(t_psdata ps,real x1,real y1,const char *str);
124 GMX_LIBGMX_EXPORT
125 void ps_ctext(t_psdata ps,real x1,real y1,const char *str,int expos);
126
127 GMX_LIBGMX_EXPORT
128 void ps_close(t_psdata ps);
129
130 GMX_LIBGMX_EXPORT
131 void ps_flip(t_psdata ps,gmx_bool bPlus);
132 /* Rotate over 90 (bPlus) or -90 (!bPlus) degrees */
133
134 GMX_LIBGMX_EXPORT
135 void ps_rotate(t_psdata ps,real angle);
136
137 GMX_LIBGMX_EXPORT
138 void ps_translate(t_psdata ps,real x,real y);
139
140 GMX_LIBGMX_EXPORT
141 void ps_setorigin(t_psdata ps);
142 GMX_LIBGMX_EXPORT
143 void ps_unsetorigin(t_psdata ps);
144
145 void viewps(char *fn);
146
147 GMX_LIBGMX_EXPORT
148 void ps_comment(t_psdata ps,const char *s);
149
150 #ifdef __cplusplus
151 }
152 #endif
153
154 #endif  /* _writeps_h */
155