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

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

CVSweb interface <joel.bertrand@systella.fr>