Annotation of rpl/src/interface_gnuplot.c, revision 1.5

1.1       bertrand    1: /*
                      2: ================================================================================
1.5     ! bertrand    3:   RPL/2 (R) version 4.0.12
1.1       bertrand    4:   Copyright (C) 1989-2010 Dr. BERTRAND Joël
                      5: 
                      6:   This file is part of RPL/2.
                      7: 
                      8:   RPL/2 is free software; you can redistribute it and/or modify it
                      9:   under the terms of the CeCILL V2 License as published by the french
                     10:   CEA, CNRS and INRIA.
                     11:  
                     12:   RPL/2 is distributed in the hope that it will be useful, but WITHOUT
                     13:   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
                     14:   FITNESS FOR A PARTICULAR PURPOSE.  See the CeCILL V2 License
                     15:   for more details.
                     16:  
                     17:   You should have received a copy of the CeCILL License
                     18:   along with RPL/2. If not, write to info@cecill.info.
                     19: ================================================================================
                     20: */
                     21: 
                     22: 
                     23: #include "rpl.conv.h"
                     24: #include "gnuplot.conv.h"
                     25: 
                     26: 
                     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;
1.4       bertrand  219:                    (*(*s_etat_processus).fichiers_graphiques).systeme_axes =
                    220:                            (*l_base_liste).systeme_axes;
1.1       bertrand  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);
1.4       bertrand  245:                    (*l_fichier_courant).dimensions =
1.1       bertrand  246:                            (*l_base_liste).dimensions;
1.4       bertrand  247:                    (*l_fichier_courant).systeme_axes =
                    248:                            (*l_base_liste).systeme_axes;
1.1       bertrand  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: 
1.4       bertrand 1719:        if (tex_fprintf(s_etat_processus, fichier_impression,
                   1720:                    "\\begin{figure}[hp]\n") < 0)
1.1       bertrand 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: 
1.4       bertrand 1735:        if (fclose(fichier_image) != 0)
                   1736:        {
                   1737:            (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   1738:            return;
                   1739:        }
1.1       bertrand 1740: 
                   1741:        if (strlen((*s_etat_processus).titre) > 0)
                   1742:        {
1.4       bertrand 1743:            if (tex_fprintf(s_etat_processus, fichier_impression,
                   1744:                    "\\caption{%s}\n", (*s_etat_processus).titre) < 0)
1.1       bertrand 1745:            {
                   1746:                (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   1747:                return;
                   1748:            }
                   1749:        }
                   1750: 
1.4       bertrand 1751:        if (tex_fprintf(s_etat_processus, fichier_impression,
                   1752:                    "\\end{figure}\n") < 0)
1.1       bertrand 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>