![]() ![]() | ![]() |
1.1 bertrand 1: /*
2: ================================================================================
1.20 ! bertrand 3: RPL/2 (R) version 4.1.0.prerelease.0
1.18 bertrand 4: Copyright (C) 1989-2011 Dr. BERTRAND Joël
1.1 bertrand 5:
6: This file is part of RPL/2.
7:
8: RPL/2 is free software; you can redistribute it and/or modify it
9: under the terms of the CeCILL V2 License as published by the french
10: CEA, CNRS and INRIA.
11:
12: RPL/2 is distributed in the hope that it will be useful, but WITHOUT
13: ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14: FITNESS FOR A PARTICULAR PURPOSE. See the CeCILL V2 License
15: for more details.
16:
17: You should have received a copy of the CeCILL License
18: along with RPL/2. If not, write to info@cecill.info.
19: ================================================================================
20: */
21:
22:
1.13 bertrand 23: #include "rpl-conv.h"
24: #include "gnuplot-conv.h"
1.1 bertrand 25:
26:
27: /*
28: ================================================================================
29: Fonction 'appel_gnuplot'
30: ================================================================================
31: Entrées : persistance 'E' écran, 'N' normal, 'I' impression, 'F' fichier
32: --------------------------------------------------------------------------------
33: Sorties : néant
34: --------------------------------------------------------------------------------
35: Effets de bord : néant
36: ================================================================================
37: */
38:
1.16 bertrand 39: #ifdef OS2
40:
41: static unsigned char *
42: ajout_shell(unsigned char *commande)
43: {
44: unsigned char *tampon;
45:
46: if ((tampon = malloc((strlen(BOURNE_SHELL) + 5 + strlen(commande) + 2) *
47: sizeof(unsigned char))) == NULL)
48: {
49: return(NULL);
50: }
51:
52: sprintf(tampon, "%s -c \"%s\"", BOURNE_SHELL, commande);
53: free(commande);
54: return(tampon);
55: }
56:
57: #endif
58:
1.1 bertrand 59: void
60: appel_gnuplot(struct_processus *s_etat_processus, unsigned char persistance)
61: {
62: file *entree_standard;
63: file *fichier_destination;
64: file *fichier_image;
65: file *fichier_impression;
66: file *fichier_source;
67:
68: int caractere;
69:
70: logical1 adequation_fichier;
71:
72: long compteur_nombre_fichiers;
73:
74: real8 phi;
75: real8 theta;
76:
77: struct_fichier_graphique *l_ancienne_base_liste;
78: struct_fichier_graphique *l_base_liste;
79: struct_fichier_graphique *l_fichier_courant;
80:
81: struct_marque *l_marque;
82:
83: unsigned char *nom_fichier;
84: unsigned char *commande_gnuplot;
85:
86: # ifndef GNUPLOT_SUPPORT
87: if ((*s_etat_processus).langue == 'F')
88: {
89: printf("+++Attention : Support de GnuPlot non compilé !\n");
90: }
91: else
92: {
93: printf("+++Warning : GnuPlot not available !\n");
94: }
95:
96: fflush(stdout);
97:
98: return;
99: # endif
100:
101: /*
102: * Comptage du nombre des fichiers et superposition le cas échéant
103: */
104:
105: l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
106: compteur_nombre_fichiers = 0;
107: nom_fichier = NULL;
108:
109: while(l_fichier_courant != NULL)
110: {
111: compteur_nombre_fichiers++;
112: l_fichier_courant = (*l_fichier_courant).suivant;
113: }
114:
115: if (compteur_nombre_fichiers > ds_gnuplot_nombre_max_fichiers)
116: {
117: if ((*s_etat_processus).langue == 'F')
118: {
119: printf("+++Attention : Réduction du nombre de plans\n");
120: }
121: else
122: {
123: printf("+++Warning : Graphical depth reduction\n");
124: }
125:
126: l_base_liste = (*s_etat_processus).fichiers_graphiques;
127: (*s_etat_processus).fichiers_graphiques = NULL;
128:
129: while(l_base_liste != NULL)
130: {
131: l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
132: adequation_fichier = d_faux;
133:
134: while(l_fichier_courant != NULL)
135: {
136: if ((strcmp((*l_fichier_courant).type, (*l_base_liste).type)
137: == 0) && ((*l_fichier_courant).systeme_axes ==
138: (*l_base_liste).systeme_axes))
139: {
140: adequation_fichier = d_vrai;
141: break;
142: }
143:
144: l_fichier_courant = (*l_fichier_courant).suivant;
145: }
146:
147: if (adequation_fichier == d_vrai)
148: {
149: if ((fichier_source = fopen((*l_base_liste).nom, "r"))
150: == NULL)
151: {
152: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
153: return;
154: }
155:
156: if ((fichier_destination = fopen((*l_fichier_courant).nom,
157: "a")) == NULL)
158: {
159: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
160: return;
161: }
162:
163: if (fprintf(fichier_destination, "\n") < 0)
164: {
165: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
166: return;
167: }
168:
169: while((caractere = getc(fichier_source)) != EOF)
170: {
171: if (putc(caractere, fichier_destination) == EOF)
172: {
173: (*s_etat_processus).erreur_systeme =
174: d_es_erreur_fichier;
175: return;
176: }
177: }
178:
179: if (fclose(fichier_source) != 0)
180: {
181: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
182: return;
183: }
184:
185: if (fclose(fichier_destination) != 0)
186: {
187: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
188: return;
189: }
190:
191: if (((*l_fichier_courant).presence_axes == d_vrai) ||
192: ((*l_base_liste).presence_axes == d_vrai))
193: {
194: (*l_fichier_courant).presence_axes = d_vrai;
195: }
196: else
197: {
198: (*l_fichier_courant).presence_axes = d_faux;
199: }
200:
201: if (destruction_fichier((*l_base_liste).nom) == d_erreur)
202: {
203: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
204: return;
205: }
206:
207: free((*l_base_liste).nom);
208:
209: if ((*l_base_liste).legende != NULL)
210: {
211: free((*l_base_liste).legende);
212: }
213: }
214: else
215: {
216: l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
217:
218: if (l_fichier_courant == NULL)
219: {
220: if (((*s_etat_processus).fichiers_graphiques =
221: (struct_fichier_graphique *) malloc(
222: sizeof(struct_fichier_graphique))) == NULL)
223: {
224: (*s_etat_processus).erreur_systeme =
225: d_es_allocation_memoire;
226: return;
227: }
228:
229: (*(*s_etat_processus).fichiers_graphiques).suivant = NULL;
230: (*(*s_etat_processus).fichiers_graphiques).nom =
231: (*l_base_liste).nom;
232: (*(*s_etat_processus).fichiers_graphiques).legende = NULL;
233: (*(*s_etat_processus).fichiers_graphiques).presence_axes =
234: (*l_base_liste).presence_axes;
235: strcpy((*(*s_etat_processus).fichiers_graphiques).type,
236: (*l_base_liste).type);
237: (*(*s_etat_processus).fichiers_graphiques).dimensions =
238: (*l_base_liste).dimensions;
1.4 bertrand 239: (*(*s_etat_processus).fichiers_graphiques).systeme_axes =
240: (*l_base_liste).systeme_axes;
1.1 bertrand 241: }
242: else
243: {
244: while((*l_fichier_courant).suivant != NULL)
245: {
246: l_fichier_courant = (*l_fichier_courant).suivant;
247: }
248:
249: if (((*l_fichier_courant).suivant =
250: (struct_fichier_graphique *) malloc(
251: sizeof(struct_fichier_graphique))) == NULL)
252: {
253: (*s_etat_processus).erreur_systeme =
254: d_es_allocation_memoire;
255: return;
256: }
257:
258: l_fichier_courant = (*l_fichier_courant).suivant;
259:
260: (*l_fichier_courant).suivant = NULL;
261: (*l_fichier_courant).nom = (*l_base_liste).nom;
262: (*l_fichier_courant).legende = NULL;
263: (*l_fichier_courant).presence_axes = d_faux;
264: strcpy((*l_fichier_courant).type, (*l_base_liste).type);
1.4 bertrand 265: (*l_fichier_courant).dimensions =
1.1 bertrand 266: (*l_base_liste).dimensions;
1.4 bertrand 267: (*l_fichier_courant).systeme_axes =
268: (*l_base_liste).systeme_axes;
1.1 bertrand 269: }
270: }
271:
272: l_ancienne_base_liste = l_base_liste;
273: l_base_liste = (*l_base_liste).suivant;
274: free(l_ancienne_base_liste);
275: }
276: }
277:
278: /*
279: * Traitement du cas où l'afficheur n'est pas persistant
280: */
281:
282: if (persistance == 'N')
283: {
284: entree_standard = NULL;
285:
286: if ((*s_etat_processus).entree_standard == NULL)
287: {
288: #ifdef FORCE_GNUPLOT_PATH
1.6 bertrand 289: if ((*s_etat_processus).rpl_home == NULL)
1.1 bertrand 290: {
1.6 bertrand 291: if ((commande_gnuplot = malloc((strlen(d_exec_path) + 6 +
292: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
293: == NULL)
294: {
295: (*s_etat_processus).erreur_systeme =
296: d_es_allocation_memoire;
297: return;
298: }
299:
300: sprintf(commande_gnuplot, "%s/bin/%s", d_exec_path,
301: ds_gnuplot_commande);
1.1 bertrand 302: }
1.6 bertrand 303: else
304: {
305: if ((commande_gnuplot = malloc((strlen(
306: (*s_etat_processus).rpl_home) + 6 +
307: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
308: == NULL)
309: {
310: (*s_etat_processus).erreur_systeme =
311: d_es_allocation_memoire;
312: return;
313: }
1.1 bertrand 314:
1.6 bertrand 315: sprintf(commande_gnuplot, "%s/bin/%s",
316: (*s_etat_processus).rpl_home, ds_gnuplot_commande);
317: }
1.1 bertrand 318: #else
319: if ((commande_gnuplot = malloc((1 +
320: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
321: == NULL)
322: {
323: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
324: return;
325: }
326:
327: sprintf(commande_gnuplot, "%s", ds_gnuplot_commande);
328: #endif
329:
1.16 bertrand 330: #ifdef OS2
331: if ((commande_gnuplot = ajout_shell(commande_gnuplot)) == NULL)
332: {
333: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
334: return;
335: }
336: #endif
337:
1.1 bertrand 338: if (((*s_etat_processus).entree_standard =
339: popen(commande_gnuplot, "w")) == NULL)
340: {
341: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
342: return;
343: }
344:
345: free(commande_gnuplot);
346:
347: if (fprintf((*s_etat_processus).entree_standard,
348: "%s\n", ds_gnuplot_terminal_defaut) < 0)
349: {
350: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
351: return;
352: }
353: }
354:
355: if (strlen((*s_etat_processus).titre) > 0)
356: {
357: if (fprintf((*s_etat_processus).entree_standard,
358: "set title \"%s\"\n", (*s_etat_processus).titre) < 0)
359: {
360: (*s_etat_processus).erreur_systeme = d_es_processus;
361: return;
362: }
363: }
364: }
365: else if (persistance == 'E') /* Ecran */
366: {
367: entree_standard = (*s_etat_processus).entree_standard;
368:
369: #if FORCE_GNUPLOT_PATH
1.6 bertrand 370: if ((*s_etat_processus).rpl_home == NULL)
1.1 bertrand 371: {
1.6 bertrand 372: if ((commande_gnuplot = malloc((strlen(d_exec_path) + 6 +
373: strlen(ds_gnuplot_commande_persistante)) *
374: sizeof(unsigned char))) == NULL)
375: {
376: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
377: return;
378: }
379:
380: sprintf(commande_gnuplot, "%s/bin/%s", d_exec_path,
381: ds_gnuplot_commande_persistante);
1.1 bertrand 382: }
1.6 bertrand 383: else
384: {
385: if ((commande_gnuplot = malloc((strlen(
386: (*s_etat_processus).rpl_home) + 6 +
387: strlen(ds_gnuplot_commande_persistante)) *
388: sizeof(unsigned char))) == NULL)
389: {
390: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
391: return;
392: }
1.1 bertrand 393:
1.6 bertrand 394: sprintf(commande_gnuplot, "%s/bin/%s", (*s_etat_processus).rpl_home,
395: ds_gnuplot_commande_persistante);
396: }
1.1 bertrand 397: #else
398: if ((commande_gnuplot = malloc((1 +
399: strlen(ds_gnuplot_commande_persistante)) *
400: sizeof(unsigned char))) == NULL)
401: {
402: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
403: return;
404: }
405:
406: sprintf(commande_gnuplot, "%s", ds_gnuplot_commande_persistante);
407: #endif
408:
1.16 bertrand 409: #ifdef OS2
410: if ((commande_gnuplot = ajout_shell(commande_gnuplot)) == NULL)
411: {
412: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
413: return;
414: }
415: #endif
416:
1.1 bertrand 417: if (((*s_etat_processus).entree_standard =
418: popen(commande_gnuplot, "w")) == NULL)
419: {
420: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
421: return;
422: }
423:
424: free(commande_gnuplot);
425:
426: if (fprintf((*s_etat_processus).entree_standard,
427: "%s\n", ds_gnuplot_terminal_defaut) < 0)
428: {
429: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
430: return;
431: }
432:
433: if (strlen((*s_etat_processus).titre) > 0)
434: {
435: if (fprintf((*s_etat_processus).entree_standard,
436: "set title \"%s\"\n", (*s_etat_processus).titre) < 0)
437: {
438: (*s_etat_processus).erreur_systeme = d_es_processus;
439: return;
440: }
441: }
442: }
443: else if (persistance == 'I') /* Imprimante */
444: {
445: entree_standard = (*s_etat_processus).entree_standard;
446:
447: #ifdef FORCE_GNUPLOT_PATH
1.6 bertrand 448: if ((*s_etat_processus).rpl_home == NULL)
1.1 bertrand 449: {
1.6 bertrand 450: if ((commande_gnuplot = malloc((strlen(d_exec_path) + 6 +
451: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
452: == NULL)
453: {
454: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
455: return;
456: }
457:
458: sprintf(commande_gnuplot, "%s/bin/%s", d_exec_path,
459: ds_gnuplot_commande);
1.1 bertrand 460: }
1.6 bertrand 461: else
462: {
463: if ((commande_gnuplot = malloc((strlen((*s_etat_processus).rpl_home)
464: + 6 + strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
465: == NULL)
466: {
467: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
468: return;
469: }
1.1 bertrand 470:
1.6 bertrand 471: sprintf(commande_gnuplot, "%s/bin/%s", (*s_etat_processus).rpl_home,
472: ds_gnuplot_commande);
473: }
1.1 bertrand 474: #else
475: if ((commande_gnuplot = malloc((1 +
476: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
477: == NULL)
478: {
479: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
480: return;
481: }
482:
483: sprintf(commande_gnuplot, "%s", ds_gnuplot_commande);
484: #endif
485:
1.16 bertrand 486: #ifdef OS2
487: if ((commande_gnuplot = ajout_shell(commande_gnuplot)) == NULL)
488: {
489: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
490: return;
491: }
492: #endif
1.1 bertrand 493: if (((*s_etat_processus).entree_standard =
494: popen(commande_gnuplot, "w")) == NULL)
495: {
496: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
497: return;
498: }
499:
500: free(commande_gnuplot);
501:
502: if (fprintf((*s_etat_processus).entree_standard,
503: "%s\n", ds_gnuplot_terminal_defaut) < 0)
504: {
505: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
506: return;
507: }
508:
509: if ((nom_fichier = creation_nom_fichier(s_etat_processus,
510: (*s_etat_processus).chemin_fichiers_temporaires)) == NULL)
511: {
512: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
513: return;
514: }
515:
516: if (fprintf((*s_etat_processus).entree_standard,
517: "set terminal latex\n") < 0)
518: {
519: (*s_etat_processus).erreur_systeme = d_es_processus;
520: return;
521: }
522:
523: if (fprintf((*s_etat_processus).entree_standard, "set output \"%s\"\n",
524: nom_fichier) < 0)
525: {
526: (*s_etat_processus).erreur_systeme = d_es_processus;
527: return;
528: }
529: }
530: else /* persistance == 'F' comme fichier */
531: {
532: entree_standard = (*s_etat_processus).entree_standard;
533:
534: #ifdef FORCE_GNUPLOT_PATH
1.6 bertrand 535: if ((*s_etat_processus).rpl_home == NULL)
1.1 bertrand 536: {
1.6 bertrand 537: if ((commande_gnuplot = malloc((strlen(d_exec_path) + 6 +
538: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
539: == NULL)
540: {
541: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
542: return;
543: }
544:
545: sprintf(commande_gnuplot, "%s/bin/%s", d_exec_path,
546: ds_gnuplot_commande);
1.1 bertrand 547: }
1.6 bertrand 548: else
549: {
550: if ((commande_gnuplot = malloc((strlen((*s_etat_processus).rpl_home)
551: + 6 + strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
552: == NULL)
553: {
554: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
555: return;
556: }
1.1 bertrand 557:
1.6 bertrand 558: sprintf(commande_gnuplot, "%s/bin/%s", (*s_etat_processus).rpl_home,
559: ds_gnuplot_commande);
560: }
1.1 bertrand 561: #else
562: if ((commande_gnuplot = malloc((1 +
563: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
564: == NULL)
565: {
566: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
567: return;
568: }
569:
570: sprintf(commande_gnuplot, "%s", ds_gnuplot_commande);
571: #endif
572:
1.16 bertrand 573: #ifdef OS2
574: if ((commande_gnuplot = ajout_shell(commande_gnuplot)) == NULL)
575: {
576: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
577: return;
578: }
579: #endif
1.1 bertrand 580: if (((*s_etat_processus).entree_standard =
581: popen(commande_gnuplot, "w")) == NULL)
582: {
583: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
584: return;
585: }
586:
587: free(commande_gnuplot);
588:
589: if (fprintf((*s_etat_processus).entree_standard, "set terminal %s\n",
590: (*s_etat_processus).type_fichier_gnuplot) < 0)
591: {
592: (*s_etat_processus).erreur_systeme = d_es_processus;
593: return;
594: }
595:
596: if (fprintf((*s_etat_processus).entree_standard, "set output \"%s\"\n",
597: (*s_etat_processus).nom_fichier_gnuplot) < 0)
598: {
599: (*s_etat_processus).erreur_systeme = d_es_processus;
600: return;
601: }
602:
603: free((*s_etat_processus).nom_fichier_gnuplot);
604: free((*s_etat_processus).type_fichier_gnuplot);
605:
606: (*s_etat_processus).nom_fichier_gnuplot = NULL;
607: (*s_etat_processus).type_fichier_gnuplot = NULL;
608:
609: if (strlen((*s_etat_processus).titre) > 0)
610: {
611: if (fprintf((*s_etat_processus).entree_standard,
612: "set title \"%s\"\n", (*s_etat_processus).titre) < 0)
613: {
614: (*s_etat_processus).erreur_systeme = d_es_processus;
615: return;
616: }
617: }
618: }
619:
620: /*
621: * Affichace des marques
622: */
623:
624: l_marque = (*s_etat_processus).s_marques;
625:
626: while(l_marque != NULL)
627: {
628: if (fprintf((*s_etat_processus).entree_standard,
629: "set label \"%s\" at %s point front offset 0.2,0.2\n",
630: (*l_marque).label, (*l_marque).position) < 0)
631: {
632: (*s_etat_processus).erreur_systeme = d_es_processus;
633: return;
634: }
635:
636: l_marque = (*l_marque).suivant;
637: }
638:
639: /*
640: * Affichage, le cas échéant, des graduations
641: */
642:
643: if ((*s_etat_processus).x_tics < 0)
644: {
645: if (fprintf((*s_etat_processus).entree_standard, "unset xtics\n") < 0)
646: {
647: (*s_etat_processus).erreur_systeme = d_es_processus;
648: return;
649: }
650: }
651: else if ((*s_etat_processus).x_tics == 0)
652: {
653: if (fprintf((*s_etat_processus).entree_standard,
654: "set xtics autofreq\n") < 0)
655: {
656: (*s_etat_processus).erreur_systeme = d_es_processus;
657: return;
658: }
659: }
660: else
661: {
662: if (fprintf((*s_etat_processus).entree_standard, "set xtics %f\n",
663: (*s_etat_processus).x_tics) < 0)
664: {
665: (*s_etat_processus).erreur_systeme = d_es_processus;
666: return;
667: }
668: }
669:
670: if ((*s_etat_processus).mx_tics < 0)
671: {
672: if (fprintf((*s_etat_processus).entree_standard, "unset mxtics\n") < 0)
673: {
674: (*s_etat_processus).erreur_systeme = d_es_processus;
675: return;
676: }
677: }
678: else if ((*s_etat_processus).mx_tics == 0)
679: {
680: if (fprintf((*s_etat_processus).entree_standard,
681: "set mxtics default\n") < 0)
682: {
683: (*s_etat_processus).erreur_systeme = d_es_processus;
684: return;
685: }
686: }
687: else
688: {
689: if (fprintf((*s_etat_processus).entree_standard, "set mxtics %lld\n",
690: (*s_etat_processus).mx_tics) < 0)
691: {
692: (*s_etat_processus).erreur_systeme = d_es_processus;
693: return;
694: }
695: }
696:
697: if ((*s_etat_processus).y_tics < 0)
698: {
699: if (fprintf((*s_etat_processus).entree_standard, "unset ytics\n") < 0)
700: {
701: (*s_etat_processus).erreur_systeme = d_es_processus;
702: return;
703: }
704: }
705: else if ((*s_etat_processus).y_tics == 0)
706: {
707: if (fprintf((*s_etat_processus).entree_standard,
708: "set ytics autofreq\n") < 0)
709: {
710: (*s_etat_processus).erreur_systeme = d_es_processus;
711: return;
712: }
713: }
714: else
715: {
716: if (fprintf((*s_etat_processus).entree_standard, "set ytics %f\n",
717: (*s_etat_processus).y_tics) < 0)
718: {
719: (*s_etat_processus).erreur_systeme = d_es_processus;
720: return;
721: }
722: }
723:
724: if ((*s_etat_processus).my_tics < 0)
725: {
726: if (fprintf((*s_etat_processus).entree_standard, "unset mytics\n") < 0)
727: {
728: (*s_etat_processus).erreur_systeme = d_es_processus;
729: return;
730: }
731: }
732: else if ((*s_etat_processus).my_tics == 0)
733: {
734: if (fprintf((*s_etat_processus).entree_standard,
735: "set mytics default\n") < 0)
736: {
737: (*s_etat_processus).erreur_systeme = d_es_processus;
738: return;
739: }
740: }
741: else
742: {
743: if (fprintf((*s_etat_processus).entree_standard, "set mytics %lld\n",
744: (*s_etat_processus).my_tics) < 0)
745: {
746: (*s_etat_processus).erreur_systeme = d_es_processus;
747: return;
748: }
749: }
750:
751: if ((*s_etat_processus).z_tics < 0)
752: {
753: if (fprintf((*s_etat_processus).entree_standard, "unset ztics\n") < 0)
754: {
755: (*s_etat_processus).erreur_systeme = d_es_processus;
756: return;
757: }
758: }
759: else if ((*s_etat_processus).z_tics == 0)
760: {
761: if (fprintf((*s_etat_processus).entree_standard,
762: "set ztics autofreq\n") < 0)
763: {
764: (*s_etat_processus).erreur_systeme = d_es_processus;
765: return;
766: }
767: }
768: else
769: {
770: if (fprintf((*s_etat_processus).entree_standard, "set ztics %f\n",
771: (*s_etat_processus).z_tics) < 0)
772: {
773: (*s_etat_processus).erreur_systeme = d_es_processus;
774: return;
775: }
776: }
777:
778: if ((*s_etat_processus).mz_tics < 0)
779: {
780: if (fprintf((*s_etat_processus).entree_standard, "unset mztics\n") < 0)
781: {
782: (*s_etat_processus).erreur_systeme = d_es_processus;
783: return;
784: }
785: }
786: else if ((*s_etat_processus).mz_tics == 0)
787: {
788: if (fprintf((*s_etat_processus).entree_standard,
789: "set mztics default\n") < 0)
790: {
791: (*s_etat_processus).erreur_systeme = d_es_processus;
792: return;
793: }
794: }
795: else
796: {
797: if (fprintf((*s_etat_processus).entree_standard, "set mztics %lld\n",
798: (*s_etat_processus).mz_tics) < 0)
799: {
800: (*s_etat_processus).erreur_systeme = d_es_processus;
801: return;
802: }
803: }
804:
805: if ((*s_etat_processus).x2_tics < 0)
806: {
807: if (fprintf((*s_etat_processus).entree_standard, "unset x2tics\n") < 0)
808: {
809: (*s_etat_processus).erreur_systeme = d_es_processus;
810: return;
811: }
812: }
813: else if ((*s_etat_processus).x2_tics == 0)
814: {
815: if (fprintf((*s_etat_processus).entree_standard,
816: "set x2tics autofreq\n") < 0)
817: {
818: (*s_etat_processus).erreur_systeme = d_es_processus;
819: return;
820: }
821: }
822: else
823: {
824: if (fprintf((*s_etat_processus).entree_standard, "set x2tics %f\n",
825: (*s_etat_processus).x2_tics) < 0)
826: {
827: (*s_etat_processus).erreur_systeme = d_es_processus;
828: return;
829: }
830: }
831:
832: if ((*s_etat_processus).mx2_tics < 0)
833: {
834: if (fprintf((*s_etat_processus).entree_standard, "unset mx2tics\n") < 0)
835: {
836: (*s_etat_processus).erreur_systeme = d_es_processus;
837: return;
838: }
839: }
840: else if ((*s_etat_processus).mx2_tics == 0)
841: {
842: if (fprintf((*s_etat_processus).entree_standard,
843: "set mx2tics default\n") < 0)
844: {
845: (*s_etat_processus).erreur_systeme = d_es_processus;
846: return;
847: }
848: }
849: else
850: {
851: if (fprintf((*s_etat_processus).entree_standard, "set mx2tics %lld\n",
852: (*s_etat_processus).mx2_tics) < 0)
853: {
854: (*s_etat_processus).erreur_systeme = d_es_processus;
855: return;
856: }
857: }
858:
859: if ((*s_etat_processus).y2_tics < 0)
860: {
861: if (fprintf((*s_etat_processus).entree_standard, "unset y2tics\n") < 0)
862: {
863: (*s_etat_processus).erreur_systeme = d_es_processus;
864: return;
865: }
866: }
867: else if ((*s_etat_processus).y2_tics == 0)
868: {
869: if (fprintf((*s_etat_processus).entree_standard,
870: "set y2tics autofreq\n") < 0)
871: {
872: (*s_etat_processus).erreur_systeme = d_es_processus;
873: return;
874: }
875: }
876: else
877: {
878: if (fprintf((*s_etat_processus).entree_standard, "set y2tics %f\n",
879: (*s_etat_processus).y2_tics) < 0)
880: {
881: (*s_etat_processus).erreur_systeme = d_es_processus;
882: return;
883: }
884: }
885:
886: if ((*s_etat_processus).my2_tics < 0)
887: {
888: if (fprintf((*s_etat_processus).entree_standard, "unset my2tics\n") < 0)
889: {
890: (*s_etat_processus).erreur_systeme = d_es_processus;
891: return;
892: }
893: }
894: else if ((*s_etat_processus).my2_tics == 0)
895: {
896: if (fprintf((*s_etat_processus).entree_standard,
897: "set my2tics default\n") < 0)
898: {
899: (*s_etat_processus).erreur_systeme = d_es_processus;
900: return;
901: }
902: }
903: else
904: {
905: if (fprintf((*s_etat_processus).entree_standard, "set my2tics %lld\n",
906: (*s_etat_processus).my2_tics) < 0)
907: {
908: (*s_etat_processus).erreur_systeme = d_es_processus;
909: return;
910: }
911: }
912:
913: if ((*s_etat_processus).z2_tics < 0)
914: {
915: if (fprintf((*s_etat_processus).entree_standard, "unset z2tics\n") < 0)
916: {
917: (*s_etat_processus).erreur_systeme = d_es_processus;
918: return;
919: }
920: }
921: else if ((*s_etat_processus).z2_tics == 0)
922: {
923: if (fprintf((*s_etat_processus).entree_standard,
924: "set z2tics autofreq\n") < 0)
925: {
926: (*s_etat_processus).erreur_systeme = d_es_processus;
927: return;
928: }
929: }
930: else
931: {
932: if (fprintf((*s_etat_processus).entree_standard, "set z2tics %f\n",
933: (*s_etat_processus).z2_tics) < 0)
934: {
935: (*s_etat_processus).erreur_systeme = d_es_processus;
936: return;
937: }
938: }
939:
940: if ((*s_etat_processus).mz2_tics < 0)
941: {
942: if (fprintf((*s_etat_processus).entree_standard, "unset mz2tics\n") < 0)
943: {
944: (*s_etat_processus).erreur_systeme = d_es_processus;
945: return;
946: }
947: }
948: else if ((*s_etat_processus).mz2_tics == 0)
949: {
950: if (fprintf((*s_etat_processus).entree_standard,
951: "set mz2tics default\n") < 0)
952: {
953: (*s_etat_processus).erreur_systeme = d_es_processus;
954: return;
955: }
956: }
957: else
958: {
959: if (fprintf((*s_etat_processus).entree_standard, "set mz2tics %lld\n",
960: (*s_etat_processus).mz2_tics) < 0)
961: {
962: (*s_etat_processus).erreur_systeme = d_es_processus;
963: return;
964: }
965: }
966:
967: l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
968:
969: while(l_fichier_courant != NULL)
970: {
971: if ((*l_fichier_courant).presence_axes == d_vrai)
972: {
973: if ((*s_etat_processus).x_lines == d_vrai)
974: {
975: if (fprintf((*s_etat_processus).entree_standard,
976: "set grid xtics\n") < 0)
977: {
978: (*s_etat_processus).erreur_systeme = d_es_processus;
979: return;
980: }
981: }
982:
983: if ((*s_etat_processus).y_lines == d_vrai)
984: {
985: if (fprintf((*s_etat_processus).entree_standard,
986: "set grid ytics\n") < 0)
987: {
988: (*s_etat_processus).erreur_systeme = d_es_processus;
989: return;
990: }
991: }
992:
993: if ((*s_etat_processus).z_lines == d_vrai)
994: {
995: if (fprintf((*s_etat_processus).entree_standard,
996: "set grid ztics\n") < 0)
997: {
998: (*s_etat_processus).erreur_systeme = d_es_processus;
999: return;
1000: }
1001: }
1002:
1003: if ((*s_etat_processus).x2_lines == d_vrai)
1004: {
1005: if (fprintf((*s_etat_processus).entree_standard,
1006: "set grid x2tics\n") < 0)
1007: {
1008: (*s_etat_processus).erreur_systeme = d_es_processus;
1009: return;
1010: }
1011: }
1012:
1013: if ((*s_etat_processus).y2_lines == d_vrai)
1014: {
1015: if (fprintf((*s_etat_processus).entree_standard,
1016: "set grid y2tics\n") < 0)
1017: {
1018: (*s_etat_processus).erreur_systeme = d_es_processus;
1019: return;
1020: }
1021: }
1022:
1023: if ((*s_etat_processus).z2_lines == d_vrai)
1024: {
1025: if (fprintf((*s_etat_processus).entree_standard,
1026: "set grid z2tics\n") < 0)
1027: {
1028: (*s_etat_processus).erreur_systeme = d_es_processus;
1029: return;
1030: }
1031: }
1032:
1033: if ((*s_etat_processus).mx_lines == d_vrai)
1034: {
1035: if (fprintf((*s_etat_processus).entree_standard,
1036: "set grid mxtics\n") < 0)
1037: {
1038: (*s_etat_processus).erreur_systeme = d_es_processus;
1039: return;
1040: }
1041: }
1042:
1043: if ((*s_etat_processus).my_lines == d_vrai)
1044: {
1045: if (fprintf((*s_etat_processus).entree_standard,
1046: "set grid mytics\n") < 0)
1047: {
1048: (*s_etat_processus).erreur_systeme = d_es_processus;
1049: return;
1050: }
1051: }
1052:
1053: if ((*s_etat_processus).mz_lines == d_vrai)
1054: {
1055: if (fprintf((*s_etat_processus).entree_standard,
1056: "set grid mztics\n") < 0)
1057: {
1058: (*s_etat_processus).erreur_systeme = d_es_processus;
1059: return;
1060: }
1061: }
1062:
1063: if ((*s_etat_processus).mx2_lines == d_vrai)
1064: {
1065: if (fprintf((*s_etat_processus).entree_standard,
1066: "set grid mx2tics\n") < 0)
1067: {
1068: (*s_etat_processus).erreur_systeme = d_es_processus;
1069: return;
1070: }
1071: }
1072:
1073: if ((*s_etat_processus).my2_lines == d_vrai)
1074: {
1075: if (fprintf((*s_etat_processus).entree_standard,
1076: "set grid my2tics\n") < 0)
1077: {
1078: (*s_etat_processus).erreur_systeme = d_es_processus;
1079: return;
1080: }
1081: }
1082:
1083: if ((*s_etat_processus).mz2_lines == d_vrai)
1084: {
1085: if (fprintf((*s_etat_processus).entree_standard,
1086: "set grid mz2tics\n") < 0)
1087: {
1088: (*s_etat_processus).erreur_systeme = d_es_processus;
1089: return;
1090: }
1091: }
1092:
1093: if ((strcmp((*l_fichier_courant).type, "FONCTION") == 0) ||
1094: (strcmp((*l_fichier_courant).type, "PARAMETRIQUE") == 0) ||
1095: (strcmp((*l_fichier_courant).type, "POINTS") == 0) ||
1096: (strcmp((*l_fichier_courant).type, "HISTOGRAMME") == 0) ||
1097: (strcmp((*l_fichier_courant).type, "TABLE TRACANTE") == 0)
1098: || (strcmp((*l_fichier_courant).type, "COURBES DE NIVEAU")
1099: == 0) ||
1100: (strcmp((*l_fichier_courant).type, "GRILLE 3D") == 0))
1101: {
1102: if (fprintf((*s_etat_processus).entree_standard,
1103: "set grid\n") < 0)
1104: {
1105: (*s_etat_processus).erreur_systeme = d_es_processus;
1106: return;
1107: }
1108: }
1109: else if (strcmp((*l_fichier_courant).type, "POLAIRE") == 0)
1110: {
1111: if (fprintf((*s_etat_processus).entree_standard,
1112: "set xtics axis nomirror\n") < 0)
1113: {
1114: (*s_etat_processus).erreur_systeme = d_es_processus;
1115: return;
1116: }
1117:
1118: if (fprintf((*s_etat_processus).entree_standard,
1119: "set ytics axis nomirror\n") < 0)
1120: {
1121: (*s_etat_processus).erreur_systeme = d_es_processus;
1122: return;
1123: }
1124:
1125: if (fprintf((*s_etat_processus).entree_standard,
1126: "set grid polar\n") < 0)
1127: {
1128: (*s_etat_processus).erreur_systeme = d_es_processus;
1129: return;
1130: }
1131:
1132: if (fprintf((*s_etat_processus).entree_standard,
1133: "set size square\n") < 0)
1134: {
1135: (*s_etat_processus).erreur_systeme = d_es_processus;
1136: return;
1137: }
1138:
1139: if (fprintf((*s_etat_processus).entree_standard,
1140: "unset x2tics\n") < 0)
1141: {
1142: (*s_etat_processus).erreur_systeme = d_es_processus;
1143: return;
1144: }
1145:
1146: if (fprintf((*s_etat_processus).entree_standard,
1147: "unset y2tics\n") < 0)
1148: {
1149: (*s_etat_processus).erreur_systeme = d_es_processus;
1150: return;
1151: }
1152:
1153: if (fprintf((*s_etat_processus).entree_standard,
1154: "unset z2tics\n") < 0)
1155: {
1156: (*s_etat_processus).erreur_systeme = d_es_processus;
1157: return;
1158: }
1159:
1160: if (fprintf((*s_etat_processus).entree_standard,
1161: "unset mx2tics\n") < 0)
1162: {
1163: (*s_etat_processus).erreur_systeme = d_es_processus;
1164: return;
1165: }
1166:
1167: if (fprintf((*s_etat_processus).entree_standard,
1168: "unset my2tics\n") < 0)
1169: {
1170: (*s_etat_processus).erreur_systeme = d_es_processus;
1171: return;
1172: }
1173:
1174: if (fprintf((*s_etat_processus).entree_standard,
1175: "unset mz2tics\n") < 0)
1176: {
1177: (*s_etat_processus).erreur_systeme = d_es_processus;
1178: return;
1179: }
1180: }
1181: }
1182:
1183: l_fichier_courant = (*l_fichier_courant).suivant;
1184: }
1185:
1186: /*
1187: * Gestion des noms des axes
1188: */
1189:
1190: if (fprintf((*s_etat_processus).entree_standard,
1191: "set xlabel \"%s\"\n", (*s_etat_processus).label_x) < 0)
1192: {
1193: (*s_etat_processus).erreur_systeme = d_es_processus;
1194: return;
1195: }
1196:
1197: if (fprintf((*s_etat_processus).entree_standard,
1198: "set ylabel \"%s\"\n", (*s_etat_processus).label_y) < 0)
1199: {
1200: (*s_etat_processus).erreur_systeme = d_es_processus;
1201: return;
1202: }
1203:
1204: if (fprintf((*s_etat_processus).entree_standard,
1205: "set zlabel \"%s\"\n", (*s_etat_processus).label_z) < 0)
1206: {
1207: (*s_etat_processus).erreur_systeme = d_es_processus;
1208: return;
1209: }
1210:
1211:
1212: /*
1213: * Gestion des échelles automatiques
1214: */
1215:
1216: if ((*s_etat_processus).echelle_automatique_x == d_vrai)
1217: {
1218: if (fprintf((*s_etat_processus).entree_standard,
1219: "set autoscale x\n") < 0)
1220: {
1221: (*s_etat_processus).erreur_systeme = d_es_processus;
1222: return;
1223: }
1224: }
1225: else
1226: {
1227: if (fprintf((*s_etat_processus).entree_standard,
1228: "unset autoscale x\n") < 0)
1229: {
1230: (*s_etat_processus).erreur_systeme = d_es_processus;
1231: return;
1232: }
1233:
1234: if (fprintf((*s_etat_processus).entree_standard, "set xrange [%f:%f]\n",
1235: (*s_etat_processus).x_min, (*s_etat_processus).x_max) < 0)
1236: {
1237: (*s_etat_processus).erreur_systeme = d_es_processus;
1238: return;
1239: }
1240: }
1241:
1242: if ((*s_etat_processus).echelle_automatique_x2 == d_vrai)
1243: {
1244: if (fprintf((*s_etat_processus).entree_standard,
1245: "set autoscale x2\n") < 0)
1246: {
1247: (*s_etat_processus).erreur_systeme = d_es_processus;
1248: return;
1249: }
1250: }
1251: else
1252: {
1253: if (fprintf((*s_etat_processus).entree_standard,
1254: "unset autoscale x2\n") < 0)
1255: {
1256: (*s_etat_processus).erreur_systeme = d_es_processus;
1257: return;
1258: }
1259:
1260: if (fprintf((*s_etat_processus).entree_standard,
1261: "set x2range [%f:%f]\n",
1262: (*s_etat_processus).x2_min, (*s_etat_processus).x2_max) < 0)
1263: {
1264: (*s_etat_processus).erreur_systeme = d_es_processus;
1265: return;
1266: }
1267: }
1268:
1269: if ((*s_etat_processus).echelle_automatique_y == d_vrai)
1270: {
1271: if (fprintf((*s_etat_processus).entree_standard,
1272: "set autoscale y\n") < 0)
1273: {
1274: (*s_etat_processus).erreur_systeme = d_es_processus;
1275: return;
1276: }
1277: }
1278: else
1279: {
1280: if (fprintf((*s_etat_processus).entree_standard,
1281: "unset autoscale y\n") < 0)
1282: {
1283: (*s_etat_processus).erreur_systeme = d_es_processus;
1284: return;
1285: }
1286:
1287: if (fprintf((*s_etat_processus).entree_standard, "set yrange [%f:%f]\n",
1288: (*s_etat_processus).y_min, (*s_etat_processus).y_max) < 0)
1289: {
1290: (*s_etat_processus).erreur_systeme = d_es_processus;
1291: return;
1292: }
1293: }
1294:
1295: if ((*s_etat_processus).echelle_automatique_y2 == d_vrai)
1296: {
1297: if (fprintf((*s_etat_processus).entree_standard,
1298: "set autoscale y2\n") < 0)
1299: {
1300: (*s_etat_processus).erreur_systeme = d_es_processus;
1301: return;
1302: }
1303: }
1304: else
1305: {
1306: if (fprintf((*s_etat_processus).entree_standard,
1307: "unset autoscale y2\n") < 0)
1308: {
1309: (*s_etat_processus).erreur_systeme = d_es_processus;
1310: return;
1311: }
1312:
1313: if (fprintf((*s_etat_processus).entree_standard,
1314: "set y2range [%f:%f]\n",
1315: (*s_etat_processus).y2_min, (*s_etat_processus).y2_max) < 0)
1316: {
1317: (*s_etat_processus).erreur_systeme = d_es_processus;
1318: return;
1319: }
1320: }
1321:
1322: if ((*s_etat_processus).echelle_automatique_z == d_vrai)
1323: {
1324: if (fprintf((*s_etat_processus).entree_standard,
1325: "set autoscale z\n") < 0)
1326: {
1327: (*s_etat_processus).erreur_systeme = d_es_processus;
1328: return;
1329: }
1330: }
1331: else
1332: {
1333: if (fprintf((*s_etat_processus).entree_standard,
1334: "unset autoscale z\n") < 0)
1335: {
1336: (*s_etat_processus).erreur_systeme = d_es_processus;
1337: return;
1338: }
1339:
1340: if (fprintf((*s_etat_processus).entree_standard, "set zrange [%f:%f]\n",
1341: (*s_etat_processus).z_min, (*s_etat_processus).z_max) < 0)
1342: {
1343: (*s_etat_processus).erreur_systeme = d_es_processus;
1344: return;
1345: }
1346: }
1347:
1348: if ((*s_etat_processus).echelle_automatique_z2 == d_vrai)
1349: {
1350: if (fprintf((*s_etat_processus).entree_standard,
1351: "set autoscale z2\n") < 0)
1352: {
1353: (*s_etat_processus).erreur_systeme = d_es_processus;
1354: return;
1355: }
1356: }
1357: else
1358: {
1359: if (fprintf((*s_etat_processus).entree_standard,
1360: "unset autoscale z2\n") < 0)
1361: {
1362: (*s_etat_processus).erreur_systeme = d_es_processus;
1363: return;
1364: }
1365:
1366: if (fprintf((*s_etat_processus).entree_standard,
1367: "set z2range [%f:%f]\n",
1368: (*s_etat_processus).z_min, (*s_etat_processus).z_max) < 0)
1369: {
1370: (*s_etat_processus).erreur_systeme = d_es_processus;
1371: return;
1372: }
1373: }
1374:
1375: /*
1376: * Position du point de vue
1377: */
1378:
1379: theta = (*s_etat_processus).point_de_vue_theta;
1380: phi = (*s_etat_processus).point_de_vue_phi;
1381:
1382: conversion_radians_vers_degres(&theta);
1383: conversion_radians_vers_degres(&phi);
1384:
1385: if (theta < 0)
1386: {
1387: theta = 0;
1388: }
1389: else if (theta > 360)
1390: {
1391: theta = 360;
1392: }
1393:
1394: if (phi < 0)
1395: {
1396: phi = 0;
1397: }
1398: else if (phi > 180)
1399: {
1400: phi = 180;
1401: }
1402:
1403: if (fprintf((*s_etat_processus).entree_standard,
1404: "set view %f,%f,1,%f\n", phi, theta,
1405: (*s_etat_processus).echelle_3D) < 0)
1406: {
1407: (*s_etat_processus).erreur_systeme = d_es_processus;
1408: return;
1409: }
1410:
1411: /*
1412: * Gestion des échelles logarithmiques
1413: */
1414:
1415: if ((*s_etat_processus).echelle_log_x == d_vrai)
1416: {
1417: if (fprintf((*s_etat_processus).entree_standard,
1418: "set logscale x\n") < 0)
1419: {
1420: (*s_etat_processus).erreur_systeme = d_es_processus;
1421: return;
1422: }
1423: }
1424: else
1425: {
1426: if (fprintf((*s_etat_processus).entree_standard,
1427: "unset logscale x\n") < 0)
1428: {
1429: (*s_etat_processus).erreur_systeme = d_es_processus;
1430: return;
1431: }
1432: }
1433:
1434: if ((*s_etat_processus).echelle_log_y == d_vrai)
1435: {
1436: if (fprintf((*s_etat_processus).entree_standard,
1437: "set logscale y\n") < 0)
1438: {
1439: (*s_etat_processus).erreur_systeme = d_es_processus;
1440: return;
1441: }
1442: }
1443: else
1444: {
1445: if (fprintf((*s_etat_processus).entree_standard,
1446: "unset logscale y\n") < 0)
1447: {
1448: (*s_etat_processus).erreur_systeme = d_es_processus;
1449: return;
1450: }
1451: }
1452:
1453: if ((*s_etat_processus).echelle_log_z == d_vrai)
1454: {
1455: if (fprintf((*s_etat_processus).entree_standard,
1456: "set logscale z\n") < 0)
1457: {
1458: (*s_etat_processus).erreur_systeme = d_es_processus;
1459: return;
1460: }
1461: }
1462: else
1463: {
1464: if (fprintf((*s_etat_processus).entree_standard,
1465: "unset logscale z\n") < 0)
1466: {
1467: (*s_etat_processus).erreur_systeme = d_es_processus;
1468: return;
1469: }
1470: }
1471:
1472: if ((*s_etat_processus).echelle_log_x2 == d_vrai)
1473: {
1474: if (fprintf((*s_etat_processus).entree_standard,
1475: "set logscale x2\n") < 0)
1476: {
1477: (*s_etat_processus).erreur_systeme = d_es_processus;
1478: return;
1479: }
1480: }
1481: else
1482: {
1483: if (fprintf((*s_etat_processus).entree_standard,
1484: "unset logscale x2\n") < 0)
1485: {
1486: (*s_etat_processus).erreur_systeme = d_es_processus;
1487: return;
1488: }
1489: }
1490:
1491: if ((*s_etat_processus).echelle_log_y2 == d_vrai)
1492: {
1493: if (fprintf((*s_etat_processus).entree_standard,
1494: "set logscale y2\n") < 0)
1495: {
1496: (*s_etat_processus).erreur_systeme = d_es_processus;
1497: return;
1498: }
1499: }
1500: else
1501: {
1502: if (fprintf((*s_etat_processus).entree_standard,
1503: "unset logscale y2\n") < 0)
1504: {
1505: (*s_etat_processus).erreur_systeme = d_es_processus;
1506: return;
1507: }
1508: }
1509:
1510: if ((*s_etat_processus).echelle_log_z2 == d_vrai)
1511: {
1512: if (fprintf((*s_etat_processus).entree_standard,
1513: "set logscale z2\n") < 0)
1514: {
1515: (*s_etat_processus).erreur_systeme = d_es_processus;
1516: return;
1517: }
1518: }
1519: else
1520: {
1521: if (fprintf((*s_etat_processus).entree_standard,
1522: "unset logscale z2\n") < 0)
1523: {
1524: (*s_etat_processus).erreur_systeme = d_es_processus;
1525: return;
1526: }
1527: }
1528:
1529: /*
1530: * Gestion de la souris
1531: */
1532:
1533: if ((*s_etat_processus).souris_active == d_vrai)
1534: {
1535: if (fprintf((*s_etat_processus).entree_standard,
1536: "set mouse\n") < 0)
1537: {
1538: (*s_etat_processus).erreur_systeme = d_es_processus;
1539: return;
1540: }
1541: }
1542: else
1543: {
1544: if (fprintf((*s_etat_processus).entree_standard,
1545: "unset mouse\n") < 0)
1546: {
1547: (*s_etat_processus).erreur_systeme = d_es_processus;
1548: return;
1549: }
1550: }
1551:
1552: /*
1553: * Affichage des tracés
1554: */
1555:
1556: l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
1557:
1558: if (strlen((*s_etat_processus).legende) > 0)
1559: {
1560: if (fprintf((*s_etat_processus).entree_standard,
1561: "set key outside autotitle title \"%s\"\n",
1562: (*s_etat_processus).legende) < 0)
1563: {
1564: (*s_etat_processus).erreur_systeme = d_es_processus;
1565: return;
1566: }
1567: }
1568: else
1569: {
1570: l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
1571:
1572: while(l_fichier_courant != NULL)
1573: {
1574: if ((*l_fichier_courant).legende != NULL)
1575: {
1576: break;
1577: }
1578:
1579: l_fichier_courant = (*l_fichier_courant).suivant;
1580: }
1581:
1582: if (l_fichier_courant == NULL)
1583: {
1584: if (fprintf((*s_etat_processus).entree_standard, "unset key\n") < 0)
1585: {
1586: (*s_etat_processus).erreur_systeme = d_es_processus;
1587: return;
1588: }
1589: }
1590: else
1591: {
1592: if (fprintf((*s_etat_processus).entree_standard,
1593: "set key outside autotitle\n") < 0)
1594: {
1595: (*s_etat_processus).erreur_systeme = d_es_processus;
1596: return;
1597: }
1598: }
1599: }
1600:
1601: l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
1602:
1603: if (l_fichier_courant != NULL)
1604: {
1605: if ((*l_fichier_courant).dimensions == 2)
1606: {
1607: if (strcmp((*l_fichier_courant).type, "HISTOGRAMME") == 0)
1608: {
1609: if (fprintf((*s_etat_processus).entree_standard,
1610: "set boxwidth %d\n",
1611: ds_gnuplot_option_largeur_histogramme) < 0)
1612: {
1613: (*s_etat_processus).erreur_systeme = d_es_processus;
1614: return;
1615: }
1616: }
1617:
1618: if (fprintf((*s_etat_processus).entree_standard, "%s ",
1619: ds_gnuplot_commande_trace_2D) < 0)
1620: {
1621: (*s_etat_processus).erreur_systeme = d_es_processus;
1622: return;
1623: }
1624: }
1625: else
1626: {
1627: if (strcmp((*l_fichier_courant).type, "GRILLE 3D") == 0)
1628: {
1629: if (fprintf((*s_etat_processus).entree_standard,
1630: "set hidden3d\n") < 0)
1631: {
1632: (*s_etat_processus).erreur_systeme = d_es_processus;
1633: return;
1634: }
1635: }
1636: else
1637: {
1638: if (fprintf((*s_etat_processus).entree_standard,
1639: "unset hidden3d\n") < 0)
1640: {
1641: (*s_etat_processus).erreur_systeme = d_es_processus;
1642: return;
1643: }
1644: }
1645:
1646: if (fprintf((*s_etat_processus).entree_standard, "%s ",
1647: ds_gnuplot_commande_trace_3D) < 0)
1648: {
1649: (*s_etat_processus).erreur_systeme = d_es_processus;
1650: return;
1651: }
1652: }
1653: }
1654:
1655: while(l_fichier_courant != NULL)
1656: {
1657: if ((strcmp((*l_fichier_courant).type, "FONCTION") == 0) ||
1658: (strcmp((*l_fichier_courant).type, "PARAMETRIQUE") == 0) ||
1659: (strcmp((*l_fichier_courant).type, "POLAIRE") == 0) ||
1660: (strcmp((*l_fichier_courant).type, "COURBES DE NIVEAU") == 0))
1661: {
1662: if (fprintf((*s_etat_processus).entree_standard,
1663: "\"%s\" axes %s %s",
1664: (*l_fichier_courant).nom,
1665: ((*l_fichier_courant).systeme_axes == 0) ? "x1y1" : "x2y2",
1666: ds_gnuplot_option_2D) < 0)
1667: {
1668: (*s_etat_processus).erreur_systeme = d_es_processus;
1669: return;
1670: }
1671: }
1672: else if (strcmp((*l_fichier_courant).type, "POINTS") == 0)
1673: {
1674: if (fprintf((*s_etat_processus).entree_standard,
1675: "\"%s\" axes %s %s",
1676: (*l_fichier_courant).nom,
1677: ((*l_fichier_courant).systeme_axes == 0) ? "x1y1" : "x2y2",
1678: ds_gnuplot_option_nuages) < 0)
1679: {
1680: (*s_etat_processus).erreur_systeme = d_es_processus;
1681: return;
1682: }
1683: }
1684: else if (strcmp((*l_fichier_courant).type, "HISTOGRAMME") == 0)
1685: {
1686: if (fprintf((*s_etat_processus).entree_standard,
1687: "\"%s\" axes %s %s",
1688: (*l_fichier_courant).nom,
1689: ((*l_fichier_courant).systeme_axes == 0) ? "x1y1" : "x2y2",
1690: ds_gnuplot_option_histogramme)
1691: < 0)
1692: {
1693: (*s_etat_processus).erreur_systeme = d_es_processus;
1694: return;
1695: }
1696: }
1697: else if (strcmp((*l_fichier_courant).type, "TABLE TRACANTE") == 0)
1698: {
1699: if (fprintf((*s_etat_processus).entree_standard,
1700: "\"%s\" axes %s %s",
1701: (*l_fichier_courant).nom,
1702: ((*l_fichier_courant).systeme_axes == 0) ? "x1y1" : "x2y2",
1703: ds_gnuplot_option_table_tracante)
1704: < 0)
1705: {
1706: (*s_etat_processus).erreur_systeme = d_es_processus;
1707: return;
1708: }
1709: }
1710: else if (strcmp((*l_fichier_courant).type, "DESSIN") == 0)
1711: {
1712: if (fprintf((*s_etat_processus).entree_standard,
1713: "\"%s\" axes %s %s",
1714: (*l_fichier_courant).nom,
1715: ((*l_fichier_courant).systeme_axes == 0) ? "x1y1" : "x2y2",
1716: ds_gnuplot_option_table_tracante)
1717: < 0)
1718: {
1719: (*s_etat_processus).erreur_systeme = d_es_processus;
1720: return;
1721: }
1722: }
1723: else if (strcmp((*l_fichier_courant).type, "GRILLE 3D") == 0)
1724: {
1725: if (fprintf((*s_etat_processus).entree_standard, "\"%s\" %s",
1726: (*l_fichier_courant).nom, ds_gnuplot_option_3D) < 0)
1727: {
1728: (*s_etat_processus).erreur_systeme = d_es_processus;
1729: return;
1730: }
1731: }
1732:
1733: if ((*l_fichier_courant).legende == NULL)
1734: {
1735: if (fprintf((*s_etat_processus).entree_standard, " notitle") < 0)
1736: {
1737: (*s_etat_processus).erreur_systeme = d_es_processus;
1738: return;
1739: }
1740: }
1741: else
1742: {
1743: if (fprintf((*s_etat_processus).entree_standard, " title \"%s\"",
1744: (*l_fichier_courant).legende) < 0)
1745: {
1746: (*s_etat_processus).erreur_systeme = d_es_processus;
1747: return;
1748: }
1749: }
1750:
1751: if (fflush((*s_etat_processus).entree_standard) != 0)
1752: {
1753: (*s_etat_processus).erreur_systeme = d_es_processus;
1754: return;
1755: }
1756:
1757: l_fichier_courant = (*l_fichier_courant).suivant;
1758:
1759: if (l_fichier_courant != NULL)
1760: {
1761: if (fprintf((*s_etat_processus).entree_standard, ", ") < 0)
1762: {
1763: (*s_etat_processus).erreur_systeme = d_es_processus;
1764: return;
1765: }
1766: }
1767: }
1768:
1769: if (fprintf((*s_etat_processus).entree_standard, "\n") < 0)
1770: {
1771: (*s_etat_processus).erreur_systeme = d_es_processus;
1772: return;
1773: }
1774:
1775: if (fflush((*s_etat_processus).entree_standard) != 0)
1776: {
1777: (*s_etat_processus).erreur_systeme = d_es_processus;
1778: return;
1779: }
1780:
1781: if (persistance == 'I')
1782: {
1783: if (fprintf((*s_etat_processus).entree_standard, "quit\n") < 0)
1784: {
1785: (*s_etat_processus).erreur_systeme = d_es_processus;
1786: return;
1787: }
1788:
1789: if (fflush((*s_etat_processus).entree_standard) != 0)
1790: {
1791: (*s_etat_processus).erreur_systeme = d_es_processus;
1792: return;
1793: }
1794:
1795: if (pclose((*s_etat_processus).entree_standard) == -1)
1796: {
1797: (*s_etat_processus).erreur_systeme = d_es_processus;
1798: return;
1799: }
1800:
1801: (*s_etat_processus).entree_standard = entree_standard;
1802:
1803: /*
1804: * Création, le cas échéant, du fichier d'impression
1805: */
1806:
1807: if ((*s_etat_processus).nom_fichier_impression == NULL)
1808: {
1809: if ((fichier_impression =
1810: creation_fichier_tex(s_etat_processus)) == NULL)
1811: {
1812: return;
1813: }
1814: }
1815: else
1816: {
1817: if ((fichier_impression = fopen((*s_etat_processus)
1818: .nom_fichier_impression, "a")) == NULL)
1819: {
1820: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
1821: return;
1822: }
1823: }
1824:
1825: if (fflush(NULL) != 0)
1826: {
1827: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
1828: return;
1829: }
1830:
1831: if ((fichier_image = fopen(nom_fichier, "r")) == NULL)
1832: {
1833: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
1834: return;
1835: }
1836:
1.4 bertrand 1837: if (tex_fprintf(s_etat_processus, fichier_impression,
1838: "\\begin{figure}[hp]\n") < 0)
1.1 bertrand 1839: {
1840: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
1841: return;
1842: }
1843:
1844: while((caractere = getc(fichier_image)) != EOF)
1845: {
1846: if (putc(caractere, fichier_impression) == EOF)
1847: {
1848: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
1849: return;
1850: }
1851: }
1852:
1.4 bertrand 1853: if (fclose(fichier_image) != 0)
1854: {
1855: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
1856: return;
1857: }
1.1 bertrand 1858:
1859: if (strlen((*s_etat_processus).titre) > 0)
1860: {
1.4 bertrand 1861: if (tex_fprintf(s_etat_processus, fichier_impression,
1862: "\\caption{%s}\n", (*s_etat_processus).titre) < 0)
1.1 bertrand 1863: {
1864: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
1865: return;
1866: }
1867: }
1868:
1.4 bertrand 1869: if (tex_fprintf(s_etat_processus, fichier_impression,
1870: "\\end{figure}\n") < 0)
1.1 bertrand 1871: {
1872: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
1873: return;
1874: }
1875:
1876: if (fclose(fichier_impression) != 0)
1877: {
1878: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
1879: return;
1880: }
1881:
1882: if (destruction_fichier(nom_fichier) == d_erreur)
1883: {
1884: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
1885: return;
1886: }
1887:
1888: free(nom_fichier);
1889: }
1890: else if (persistance == 'E')
1891: {
1892: if (fprintf((*s_etat_processus).entree_standard, "quit\n") < 0)
1893: {
1894: (*s_etat_processus).erreur_systeme = d_es_processus;
1895: return;
1896: }
1897:
1898: if (fflush((*s_etat_processus).entree_standard) != 0)
1899: {
1900: (*s_etat_processus).erreur_systeme = d_es_processus;
1901: return;
1902: }
1903:
1904: if (pclose((*s_etat_processus).entree_standard) == -1)
1905: {
1906: (*s_etat_processus).erreur_systeme = d_es_processus;
1907: return;
1908: }
1909:
1910: (*s_etat_processus).entree_standard = entree_standard;
1911: }
1912: else if (entree_standard != NULL)
1913: {
1914: if (fprintf((*s_etat_processus).entree_standard, "quit\n") < 0)
1915: {
1916: (*s_etat_processus).erreur_systeme = d_es_processus;
1917: return;
1918: }
1919:
1920: if (fflush((*s_etat_processus).entree_standard) != 0)
1921: {
1922: (*s_etat_processus).erreur_systeme = d_es_processus;
1923: return;
1924: }
1925:
1926: if (pclose((*s_etat_processus).entree_standard) == -1)
1927: {
1928: (*s_etat_processus).erreur_systeme = d_es_processus;
1929: return;
1930: }
1931:
1932: (*s_etat_processus).entree_standard = entree_standard;
1933: }
1934:
1935: return;
1936: }
1937:
1938: // vim: ts=4