1: /*
2: ================================================================================
3: RPL/2 (R) version 4.1.36
4: Copyright (C) 1989-2025 Dr. BERTRAND Joël
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:
23: #include "rpl-conv.h"
24: #include "gnuplot-conv.h"
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:
39: #ifdef OS2
40: static unsigned char *
41: ajout_shell(unsigned char *commande)
42: {
43: unsigned char *tampon;
44:
45: if ((tampon = malloc((strlen(BOURNE_SHELL) + 5 + strlen(commande) + 2) *
46: sizeof(unsigned char))) == NULL)
47: {
48: return(NULL);
49: }
50:
51: sprintf(tampon, "%s -c \"%s\"", BOURNE_SHELL, commande);
52: free(commande);
53: return(tampon);
54: }
55: #endif
56:
57: void
58: appel_gnuplot(struct_processus *s_etat_processus, unsigned char persistance)
59: {
60: file *entree_standard;
61: file *fichier_destination;
62: file *fichier_image;
63: file *fichier_impression;
64: file *fichier_source;
65:
66: int caractere;
67:
68: logical1 adequation_fichier;
69:
70: long compteur_nombre_fichiers;
71:
72: real8 phi;
73: real8 theta;
74:
75: struct_fichier_graphique *l_ancienne_base_liste;
76: struct_fichier_graphique *l_base_liste;
77: struct_fichier_graphique *l_fichier_courant;
78:
79: struct_marque *l_marque;
80:
81: unsigned char *nom_fichier;
82: unsigned char *commande_gnuplot;
83:
84: # ifndef GNUPLOT_SUPPORT
85: if ((*s_etat_processus).langue == 'F')
86: {
87: printf("+++Attention : Support de GnuPlot non compilé !\n");
88: }
89: else
90: {
91: printf("+++Warning : GnuPlot not available !\n");
92: }
93:
94: fflush(stdout);
95:
96: return;
97: # endif
98:
99: /*
100: * Comptage du nombre des fichiers et superposition le cas échéant
101: */
102:
103: l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
104: compteur_nombre_fichiers = 0;
105: nom_fichier = NULL;
106:
107: while(l_fichier_courant != NULL)
108: {
109: compteur_nombre_fichiers++;
110: l_fichier_courant = (*l_fichier_courant).suivant;
111: }
112:
113: if (compteur_nombre_fichiers > ds_gnuplot_nombre_max_fichiers)
114: {
115: if ((*s_etat_processus).langue == 'F')
116: {
117: printf("+++Attention : Réduction du nombre de plans\n");
118: }
119: else
120: {
121: printf("+++Warning : Graphical depth reduction\n");
122: }
123:
124: l_base_liste = (*s_etat_processus).fichiers_graphiques;
125: (*s_etat_processus).fichiers_graphiques = NULL;
126:
127: while(l_base_liste != NULL)
128: {
129: l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
130: adequation_fichier = d_faux;
131:
132: while(l_fichier_courant != NULL)
133: {
134: if ((strcmp((*l_fichier_courant).type, (*l_base_liste).type)
135: == 0) && ((*l_fichier_courant).systeme_axes ==
136: (*l_base_liste).systeme_axes))
137: {
138: adequation_fichier = d_vrai;
139: break;
140: }
141:
142: l_fichier_courant = (*l_fichier_courant).suivant;
143: }
144:
145: if (adequation_fichier == d_vrai)
146: {
147: if ((fichier_source = fopen((*l_base_liste).nom, "r"))
148: == NULL)
149: {
150: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
151: return;
152: }
153:
154: if ((fichier_destination = fopen((*l_fichier_courant).nom,
155: "a")) == NULL)
156: {
157: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
158: return;
159: }
160:
161: if (fprintf(fichier_destination, "\n") < 0)
162: {
163: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
164: return;
165: }
166:
167: while((caractere = getc(fichier_source)) != EOF)
168: {
169: if (putc(caractere, fichier_destination) == EOF)
170: {
171: (*s_etat_processus).erreur_systeme =
172: d_es_erreur_fichier;
173: return;
174: }
175: }
176:
177: if (fclose(fichier_source) != 0)
178: {
179: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
180: return;
181: }
182:
183: if (fclose(fichier_destination) != 0)
184: {
185: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
186: return;
187: }
188:
189: if (((*l_fichier_courant).presence_axes == d_vrai) ||
190: ((*l_base_liste).presence_axes == d_vrai))
191: {
192: (*l_fichier_courant).presence_axes = d_vrai;
193: }
194: else
195: {
196: (*l_fichier_courant).presence_axes = d_faux;
197: }
198:
199: if (destruction_fichier((*l_base_liste).nom) == d_erreur)
200: {
201: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
202: return;
203: }
204:
205: free((*l_base_liste).nom);
206:
207: if ((*l_base_liste).legende != NULL)
208: {
209: free((*l_base_liste).legende);
210: }
211: }
212: else
213: {
214: l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
215:
216: if (l_fichier_courant == NULL)
217: {
218: if (((*s_etat_processus).fichiers_graphiques =
219: (struct_fichier_graphique *) malloc(
220: sizeof(struct_fichier_graphique))) == NULL)
221: {
222: (*s_etat_processus).erreur_systeme =
223: d_es_allocation_memoire;
224: return;
225: }
226:
227: (*(*s_etat_processus).fichiers_graphiques).suivant = NULL;
228: (*(*s_etat_processus).fichiers_graphiques).nom =
229: (*l_base_liste).nom;
230: (*(*s_etat_processus).fichiers_graphiques).legende = NULL;
231: (*(*s_etat_processus).fichiers_graphiques).presence_axes =
232: (*l_base_liste).presence_axes;
233: strcpy((*(*s_etat_processus).fichiers_graphiques).type,
234: (*l_base_liste).type);
235: (*(*s_etat_processus).fichiers_graphiques).dimensions =
236: (*l_base_liste).dimensions;
237: (*(*s_etat_processus).fichiers_graphiques).systeme_axes =
238: (*l_base_liste).systeme_axes;
239: }
240: else
241: {
242: while((*l_fichier_courant).suivant != NULL)
243: {
244: l_fichier_courant = (*l_fichier_courant).suivant;
245: }
246:
247: if (((*l_fichier_courant).suivant =
248: (struct_fichier_graphique *) malloc(
249: sizeof(struct_fichier_graphique))) == NULL)
250: {
251: (*s_etat_processus).erreur_systeme =
252: d_es_allocation_memoire;
253: return;
254: }
255:
256: l_fichier_courant = (*l_fichier_courant).suivant;
257:
258: (*l_fichier_courant).suivant = NULL;
259: (*l_fichier_courant).nom = (*l_base_liste).nom;
260: (*l_fichier_courant).legende = NULL;
261: (*l_fichier_courant).presence_axes = d_faux;
262: strcpy((*l_fichier_courant).type, (*l_base_liste).type);
263: (*l_fichier_courant).dimensions =
264: (*l_base_liste).dimensions;
265: (*l_fichier_courant).systeme_axes =
266: (*l_base_liste).systeme_axes;
267: }
268: }
269:
270: l_ancienne_base_liste = l_base_liste;
271: l_base_liste = (*l_base_liste).suivant;
272: free(l_ancienne_base_liste);
273: }
274: }
275:
276: /*
277: * Traitement du cas où l'afficheur n'est pas persistant
278: */
279:
280: if (persistance == 'N')
281: {
282: entree_standard = NULL;
283:
284: if ((*s_etat_processus).entree_standard == NULL)
285: {
286: #ifdef FORCE_GNUPLOT_PATH
287: if ((*s_etat_processus).rpl_home == NULL)
288: {
289: if ((commande_gnuplot = malloc((strlen(d_exec_path) + 6 +
290: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
291: == NULL)
292: {
293: (*s_etat_processus).erreur_systeme =
294: d_es_allocation_memoire;
295: return;
296: }
297:
298: sprintf(commande_gnuplot, "%s/bin/%s", d_exec_path,
299: ds_gnuplot_commande);
300: }
301: else
302: {
303: if ((commande_gnuplot = malloc((strlen(
304: (*s_etat_processus).rpl_home) + 6 +
305: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
306: == NULL)
307: {
308: (*s_etat_processus).erreur_systeme =
309: d_es_allocation_memoire;
310: return;
311: }
312:
313: sprintf(commande_gnuplot, "%s/bin/%s",
314: (*s_etat_processus).rpl_home, ds_gnuplot_commande);
315: }
316: #else
317: if ((commande_gnuplot = malloc((1 +
318: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
319: == NULL)
320: {
321: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
322: return;
323: }
324:
325: sprintf(commande_gnuplot, "%s", ds_gnuplot_commande);
326: #endif
327:
328: #ifdef OS2
329: if ((commande_gnuplot = ajout_shell(commande_gnuplot)) == NULL)
330: {
331: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
332: return;
333: }
334: #endif
335:
336: if (((*s_etat_processus).entree_standard =
337: popen(commande_gnuplot, "w")) == NULL)
338: {
339: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
340: return;
341: }
342:
343: free(commande_gnuplot);
344:
345: if (fprintf((*s_etat_processus).entree_standard,
346: "%s\n", ds_gnuplot_terminal_defaut) < 0)
347: {
348: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
349: return;
350: }
351: }
352:
353: if (strlen((*s_etat_processus).titre) > 0)
354: {
355: if (fprintf((*s_etat_processus).entree_standard,
356: "set title \"%s\"\n", (*s_etat_processus).titre) < 0)
357: {
358: (*s_etat_processus).erreur_systeme = d_es_processus;
359: return;
360: }
361: }
362: }
363: else if (persistance == 'E') /* Ecran */
364: {
365: entree_standard = (*s_etat_processus).entree_standard;
366:
367: #if FORCE_GNUPLOT_PATH
368: if ((*s_etat_processus).rpl_home == NULL)
369: {
370: if ((commande_gnuplot = malloc((strlen(d_exec_path) + 6 +
371: strlen(ds_gnuplot_commande_persistante)) *
372: sizeof(unsigned char))) == NULL)
373: {
374: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
375: return;
376: }
377:
378: sprintf(commande_gnuplot, "%s/bin/%s", d_exec_path,
379: ds_gnuplot_commande_persistante);
380: }
381: else
382: {
383: if ((commande_gnuplot = malloc((strlen(
384: (*s_etat_processus).rpl_home) + 6 +
385: strlen(ds_gnuplot_commande_persistante)) *
386: sizeof(unsigned char))) == NULL)
387: {
388: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
389: return;
390: }
391:
392: sprintf(commande_gnuplot, "%s/bin/%s", (*s_etat_processus).rpl_home,
393: ds_gnuplot_commande_persistante);
394: }
395: #else
396: if ((commande_gnuplot = malloc((1 +
397: strlen(ds_gnuplot_commande_persistante)) *
398: sizeof(unsigned char))) == NULL)
399: {
400: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
401: return;
402: }
403:
404: sprintf(commande_gnuplot, "%s", ds_gnuplot_commande_persistante);
405: #endif
406:
407: #ifdef OS2
408: if ((commande_gnuplot = ajout_shell(commande_gnuplot)) == NULL)
409: {
410: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
411: return;
412: }
413: #endif
414:
415: if (((*s_etat_processus).entree_standard =
416: popen(commande_gnuplot, "w")) == NULL)
417: {
418: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
419: return;
420: }
421:
422: free(commande_gnuplot);
423:
424: if (fprintf((*s_etat_processus).entree_standard,
425: "%s\n", ds_gnuplot_terminal_defaut) < 0)
426: {
427: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
428: return;
429: }
430:
431: if (strlen((*s_etat_processus).titre) > 0)
432: {
433: if (fprintf((*s_etat_processus).entree_standard,
434: "set title \"%s\"\n", (*s_etat_processus).titre) < 0)
435: {
436: (*s_etat_processus).erreur_systeme = d_es_processus;
437: return;
438: }
439: }
440: }
441: else if (persistance == 'I') /* Imprimante */
442: {
443: entree_standard = (*s_etat_processus).entree_standard;
444:
445: #ifdef FORCE_GNUPLOT_PATH
446: if ((*s_etat_processus).rpl_home == NULL)
447: {
448: if ((commande_gnuplot = malloc((strlen(d_exec_path) + 6 +
449: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
450: == NULL)
451: {
452: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
453: return;
454: }
455:
456: sprintf(commande_gnuplot, "%s/bin/%s", d_exec_path,
457: ds_gnuplot_commande);
458: }
459: else
460: {
461: if ((commande_gnuplot = malloc((strlen((*s_etat_processus).rpl_home)
462: + 6 + strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
463: == NULL)
464: {
465: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
466: return;
467: }
468:
469: sprintf(commande_gnuplot, "%s/bin/%s", (*s_etat_processus).rpl_home,
470: ds_gnuplot_commande);
471: }
472: #else
473: if ((commande_gnuplot = malloc((1 +
474: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
475: == NULL)
476: {
477: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
478: return;
479: }
480:
481: sprintf(commande_gnuplot, "%s", ds_gnuplot_commande);
482: #endif
483:
484: #ifdef OS2
485: if ((commande_gnuplot = ajout_shell(commande_gnuplot)) == NULL)
486: {
487: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
488: return;
489: }
490: #endif
491:
492: if (((*s_etat_processus).entree_standard =
493: popen(commande_gnuplot, "w")) == NULL)
494: {
495: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
496: return;
497: }
498:
499: free(commande_gnuplot);
500:
501: if (fprintf((*s_etat_processus).entree_standard,
502: "%s\n", ds_gnuplot_terminal_defaut) < 0)
503: {
504: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
505: return;
506: }
507:
508: if ((nom_fichier = creation_nom_fichier(s_etat_processus,
509: (*s_etat_processus).chemin_fichiers_temporaires)) == NULL)
510: {
511: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
512: return;
513: }
514:
515: if (fprintf((*s_etat_processus).entree_standard,
516: "set terminal latex\n") < 0)
517: {
518: (*s_etat_processus).erreur_systeme = d_es_processus;
519: return;
520: }
521:
522: if (fprintf((*s_etat_processus).entree_standard, "set output \"%s\"\n",
523: nom_fichier) < 0)
524: {
525: (*s_etat_processus).erreur_systeme = d_es_processus;
526: return;
527: }
528: }
529: else /* persistance == 'F' comme fichier */
530: {
531: entree_standard = (*s_etat_processus).entree_standard;
532:
533: #ifdef FORCE_GNUPLOT_PATH
534: if ((*s_etat_processus).rpl_home == NULL)
535: {
536: if ((commande_gnuplot = malloc((strlen(d_exec_path) + 6 +
537: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
538: == NULL)
539: {
540: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
541: return;
542: }
543:
544: sprintf(commande_gnuplot, "%s/bin/%s", d_exec_path,
545: ds_gnuplot_commande);
546: }
547: else
548: {
549: if ((commande_gnuplot = malloc((strlen((*s_etat_processus).rpl_home)
550: + 6 + strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
551: == NULL)
552: {
553: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
554: return;
555: }
556:
557: sprintf(commande_gnuplot, "%s/bin/%s", (*s_etat_processus).rpl_home,
558: ds_gnuplot_commande);
559: }
560: #else
561: if ((commande_gnuplot = malloc((1 +
562: strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
563: == NULL)
564: {
565: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
566: return;
567: }
568:
569: sprintf(commande_gnuplot, "%s", ds_gnuplot_commande);
570: #endif
571:
572: #ifdef OS2
573: if ((commande_gnuplot = ajout_shell(commande_gnuplot)) == NULL)
574: {
575: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
576: return;
577: }
578: #endif
579:
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:
1837: if (tex_fprintf(s_etat_processus, fichier_impression,
1838: "\\begin{figure}[hp]\n") < 0)
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:
1853: if (fclose(fichier_image) != 0)
1854: {
1855: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
1856: return;
1857: }
1858:
1859: if (strlen((*s_etat_processus).titre) > 0)
1860: {
1861: if (tex_fprintf(s_etat_processus, fichier_impression,
1862: "\\caption{%s}\n", (*s_etat_processus).titre) < 0)
1863: {
1864: (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
1865: return;
1866: }
1867: }
1868:
1869: if (tex_fprintf(s_etat_processus, fichier_impression,
1870: "\\end{figure}\n") < 0)
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
CVSweb interface <joel.bertrand@systella.fr>