File:  [local] / rpl / src / interface_gnuplot.c
Revision 1.4: download - view: text, annotated - select for diffs - revision graph
Sun Feb 28 14:47:14 2010 UTC (14 years, 2 months ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_0_11, HEAD
Ajout de fonctions de débogage des allocations et libérations de mémoire.
Correction de deux fuites de mémoire dans l'analyse des expressions
algébriques (touchent les fonctions).

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

CVSweb interface <joel.bertrand@systella.fr>