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