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