1 /*****************************************************************************
2  *
3  *  Elmer, A Finite Element Software for Multiphysical Problems
4  *
5  *  Copyright 1st April 1995 - , CSC - IT Center for Science Ltd., Finland
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library (in file ../LGPL-2.1); if not, write
19  * to the Free Software Foundation, Inc., 51 Franklin Street,
20  * Fifth Floor, Boston, MA  02110-1301  USA
21  *
22  *****************************************************************************/
23 
24 /*******************************************************************************
25  *
26  *     MATC graphics user routines.
27  *
28  *******************************************************************************
29  *
30  *                     Author:       Juha Ruokolainen
31  *
32  *                    Address: CSC - IT Center for Science Ltd.
33  *                                Keilaranta 14, P.O. BOX 405
34  *                                  02101 Espoo, Finland
35  *                                  Tel. +358 0 457 2723
36  *                                Telefax: +358 0 457 2302
37  *                              EMail: Juha.Ruokolainen@csc.fi
38  *
39  *                       Date: 30 May 1996
40  *
41  *                Modified by:
42  *
43  *       Date of modification:
44  *
45  ******************************************************************************/
46 
47 /*
48  * $Id: gra_com.c,v 1.1.1.1 2005/04/14 13:29:14 vierinen Exp $
49  *
50  * $Log: gra_com.c,v $
51  * Revision 1.1.1.1  2005/04/14 13:29:14  vierinen
52  * initial matc automake package
53  *
54  * Revision 1.2  1998/08/01 12:34:42  jpr
55  *
56  * Added Id, started Log.
57  *
58  *
59  */
60 
61 #include "elmer/matc.h"
62 
gra_gopen(var)63 VARIABLE *gra_gopen(var) VARIABLE *var;
64 {
65   char *name;
66 
67   if (NEXT(var) != NULL)
68   {
69     name = var_to_string(NEXT(var));
70     gra_init_matc((int)*MATR(var), name);
71     FREEMEM(name);
72   }
73   else
74   {
75     gra_init_matc((int)*MATR(var), NULL);
76   }
77   return NULL;
78 }
79 
gra_gclose()80 VARIABLE *gra_gclose()
81 {
82   GRA_CLOSE();
83   return NULL;
84 }
85 
gra_gclear()86 VARIABLE *gra_gclear()
87 {
88   GRA_CLEAR();
89   return NULL;
90 }
91 
gra_gflush()92 VARIABLE *gra_gflush()
93 {
94   GRA_FLUSH();
95   return NULL;
96 }
97 
gra_gdefcolor(var)98 VARIABLE *gra_gdefcolor(var) VARIABLE *var;
99 {
100   double *m = MATR(NEXT(var));
101   double r, g, b;
102   int i;
103 
104   i = *MATR(var);
105   r = *m++;
106   g = *m++;
107   b = *m++;
108   GRA_DEFCOLOR(i, r, g, b);
109 
110   return NULL;
111 }
112 
gra_gcolor(var)113 VARIABLE *gra_gcolor(var) VARIABLE *var;
114 {
115   GRA_COLOR((int)*MATR(var));
116 
117   return NULL;
118 }
119 
gra_gpolyline(var)120 VARIABLE *gra_gpolyline(var) VARIABLE *var;
121 {
122   GRA_POLYLINE((int)*MATR(var), MATR(NEXT(var)));
123 
124   return NULL;
125 }
126 
gra_gdraw(var)127 VARIABLE *gra_gdraw(var) VARIABLE *var;
128 {
129   GRA_DRAW(MATR(var));
130 
131   return NULL;
132 }
133 
gra_gmove(var)134 VARIABLE *gra_gmove(var) VARIABLE *var;
135 {
136   GRA_MOVE(MATR(var));
137 
138   return NULL;
139 }
140 
gra_gpolymarker(var)141 VARIABLE *gra_gpolymarker(var) VARIABLE *var;
142 {
143   GRA_POLYMARKER((int)*MATR(var),(int)*MATR(NEXT(var)),MATR(NEXT(NEXT(var))));
144 
145   return NULL;
146 }
147 
gra_gmarker(var)148 VARIABLE *gra_gmarker(var) VARIABLE *var;
149 {
150   GRA_MARKER((int)*MATR(var),MATR(NEXT(var)));
151 
152   return NULL;
153 }
154 
gra_gareafill(var)155 VARIABLE *gra_gareafill(var) VARIABLE *var;
156 {
157   GRA_AREAFILL((int)*MATR(var),MATR(NEXT(var)));
158 
159   return NULL;
160 }
161 
gra_gtext(var)162 VARIABLE *gra_gtext(var) VARIABLE *var;
163 {
164   double *m = MATR(var);
165   double h, r;
166   char *str;
167 
168   h = *m++;
169   r = *m++;
170   str = var_to_string(NEXT(var));
171   GRA_TEXT(h, r, str);
172   FREEMEM(str);
173 
174   return NULL;
175 }
176 
gra_gimage(var)177 VARIABLE *gra_gimage(var) VARIABLE *var;
178 {
179   int w, h, d;
180   double *m = MATR(var);
181 
182   w = *m++;
183   h = *m++;
184   d = *m++;
185   GRA_IMAGE(w, h, d, MATR(NEXT(var)));
186 
187   return NULL;
188 }
189 
gra_gwindow(var)190 VARIABLE *gra_gwindow(var) VARIABLE *var;
191 {
192   double x1, x2, y1, y2, z1, z2;
193   double *m = MATR(var);
194 
195   x1 = *m++;
196   x2 = *m++;
197   y1 = *m++;
198   y2 = *m++;
199   z1 = *m++;
200   z2 = *m++;
201   GRA_WINDOW(x1,x2,y1,y2,z1,z2);
202 
203   return NULL;
204 }
205 
gra_gviewport(var)206 VARIABLE *gra_gviewport(var) VARIABLE *var;
207 {
208   double x1, x2, y1, y2;
209   double *m = MATR(var);
210 
211   x1 = *m++;
212   x2 = *m++;
213   y1 = *m++;
214   y2 = *m++;
215   GRA_VIEWPORT(x1,x2,y1,y2);
216 
217   return NULL;
218 }
219 
gra_gtranslate(var)220 VARIABLE *gra_gtranslate(var) VARIABLE *var;
221 {
222   double x, y, z;
223   double *m = MATR(var);
224 
225   x = *m++;
226   y = *m++;
227   z = *m++;
228   GRA_TRANSLATE(x,y,z);
229 
230   return NULL;
231 }
232 
gra_grotate(var)233 VARIABLE *gra_grotate(var) VARIABLE *var;
234 {
235   double x, y, z;
236   double *m = MATR(var);
237 
238   x = *m++;
239   y = *m++;
240   z = *m++;
241   GRA_ROTATE(x,y,z);
242 
243   return NULL;
244 }
245 
gra_gscale(var)246 VARIABLE *gra_gscale(var) VARIABLE *var;
247 {
248   double x, y, z;
249   double *m = MATR(var);
250 
251   x = *m++;
252   y = *m++;
253   z = *m++;
254   GRA_SCALE(x,y,z);
255 
256   return NULL;
257 }
258 
gra_gviewpoint(var)259 VARIABLE *gra_gviewpoint(var) VARIABLE *var;
260 {
261   double xf, yf, zf, xt = 0, yt = 0, zt = 0;
262   double *m = MATR(var);
263 
264   xf = *m++;
265   yf = *m++;
266   zf = *m++;
267   if (NEXT(var) != NULL)
268   {
269     m = MATR(NEXT(var));
270     xt = *m++;
271     yt = *m++;
272     zt = *m++;
273   }
274 
275   GRA_VIEWPOINT(xf,yf,zf,xt,yt,zt);
276 
277   return NULL;
278 }
279 
gra_ggetmatrix(var)280 VARIABLE *gra_ggetmatrix(var) VARIABLE *var;
281 {
282   VARIABLE *res;
283 
284   res = var_temp_new(TYPE_DOUBLE, 4, 4);
285   GRA_GETMATRIX(MATR(res));
286 
287   return res;
288 }
289 
gra_gsetmatrix(var)290 VARIABLE *gra_gsetmatrix(var) VARIABLE *var;
291 {
292   GRA_SETMATRIX(MATR(var));
293 
294   return NULL;
295 }
296 
gra_gperspective(var)297 VARIABLE *gra_gperspective(var) VARIABLE *var;
298 {
299   GRA_PERSPECTIVE(*MATR(var));
300 
301   return NULL;
302 }
303 
gra_gdbuffer(var)304 VARIABLE *gra_gdbuffer(var) VARIABLE *var;
305 {
306   GRA_DBUFFER(1);
307 
308   return NULL;
309 }
310 
gra_gsbuffer(var)311 VARIABLE *gra_gsbuffer(var) VARIABLE *var;
312 {
313   GRA_SBUFFER(1);
314 
315   return NULL;
316 }
317 
gra_gswapbuf(var)318 VARIABLE *gra_gswapbuf(var) VARIABLE *var;
319 {
320   GRA_SWAPBUF(1);
321 
322   return NULL;
323 }
324 
gra_com_init()325 void gra_com_init()
326 {
327   com_init( "gopen",        FALSE, FALSE, gra_gopen,        1, 2, "Sorry, no help available!");
328   com_init( "gclose",       FALSE, FALSE, gra_gclose,       0, 0, "Sorry, no help available!");
329   com_init(  "gclear",      FALSE, FALSE, gra_gclear,       0, 0, "Sorry, no help available!");
330   com_init( "gflush",       FALSE, FALSE, gra_gflush,       0, 0, "Sorry, no help available!");
331   com_init( "gdefcolor",    FALSE, FALSE, gra_gdefcolor,    2, 2, "Sorry, no help available!");
332   com_init( "gcolor",       FALSE, FALSE, gra_gcolor,       1, 1, "Sorry, no help available!");
333   com_init( "gpolyline",    FALSE, FALSE, gra_gpolyline,    2, 2, "Sorry, no help available!");
334   com_init( "gdraw",        FALSE, FALSE, gra_gdraw,        1, 1, "Sorry, no help available!");
335   com_init( "gmove",        FALSE, FALSE, gra_gmove,        1, 1, "Sorry, no help available!");
336   com_init( "gpolymarker",  FALSE, FALSE, gra_gpolymarker,  3, 3, "Sorry, no help available!");
337   com_init( "gmarker",      FALSE, FALSE, gra_gmarker,      2, 2, "Sorry, no help available!");
338   com_init( "gareafill",    FALSE, FALSE, gra_gareafill,    2, 2, "Sorry, no help available!");
339   com_init( "gimage",       FALSE, FALSE, gra_gimage,       2, 2, "Sorry, no help available!");
340   com_init( "gtext",        FALSE, FALSE, gra_gtext,        2, 2, "Sorry, no help available!");
341   com_init( "gwindow",      FALSE, FALSE, gra_gwindow,      1, 1, "Sorry, no help available!");
342   com_init( "gviewport",    FALSE, FALSE, gra_gviewport,    1, 1, "Sorry, no help available!");
343   com_init( "gtranslate",   FALSE, FALSE, gra_gtranslate,   1, 1, "Sorry, no help available!");
344   com_init( "grotate",      FALSE, FALSE, gra_grotate,      1, 1, "Sorry, no help available!");
345   com_init( "gscale",       FALSE, FALSE, gra_gscale,       1, 1, "Sorry, no help available!");
346   com_init( "gviewpoint",   FALSE, FALSE, gra_gviewpoint,   1, 2, "Sorry, no help available!");
347   com_init( "gdbuffer",     FALSE, FALSE, gra_gdbuffer,     0, 0, "Sorry, no help available!");
348   com_init( "gsbuffer",     FALSE, FALSE, gra_gsbuffer,     0, 0, "Sorry, no help available!");
349   com_init( "gswapbuf",     FALSE, FALSE, gra_gswapbuf,     0, 0, "Sorry, no help available!");
350   com_init( "ggetmatrix",   FALSE, FALSE, gra_ggetmatrix,   0, 0, "Sorry, no help available!");
351   com_init( "gsetmatrix",   FALSE, FALSE, gra_gsetmatrix,   1, 1, "Sorry, no help available!");
352   com_init( "gperspective", FALSE, FALSE, gra_gperspective, 1, 1, "Sorry, no help available!");
353   com_init( "gc3d",         FALSE, FALSE, c3d_gc3d,         1, 1, "Sorry, no help available!");
354   com_init( "gc3dlevels",   FALSE, FALSE, c3d_gc3dlevels,   1, 1, "Sorry, no help available!");
355 }
356