File:  [local] / rpl / src / interface_gnuplot.c
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Tue Jan 26 15:22:45 2010 UTC (14 years, 3 months ago) by bertrand
Branches: MAIN
CVS tags: HEAD
Initial revision

    1: /*
    2: ================================================================================
    3:   RPL/2 (R) version 4.0.9
    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

CVSweb interface <joel.bertrand@systella.fr>