File:  [local] / rpl / src / instructions_p6.c
Revision 1.65: download - view: text, annotated - select for diffs - revision graph
Fri Jan 10 11:15:47 2020 UTC (4 years, 3 months ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_1_32, HEAD
Modification du copyright.

    1: /*
    2: ================================================================================
    3:   RPL/2 (R) version 4.1.32
    4:   Copyright (C) 1989-2020 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: 
   25: 
   26: /*
   27: ================================================================================
   28:   Fonction 'ppar'
   29: ================================================================================
   30:   Entrées :
   31: --------------------------------------------------------------------------------
   32:   Sorties :
   33: --------------------------------------------------------------------------------
   34:   Effets de bord : néant
   35: ================================================================================
   36: */
   37: 
   38: void
   39: instruction_ppar(struct_processus *s_etat_processus)
   40: {
   41:     struct_liste_chainee            *l_ancienne_base;
   42:     struct_liste_chainee            *l_nouvelle_base;
   43: 
   44:     struct_objet                    *s_objet_resultat;
   45: 
   46:     /*
   47:      * { { Xmin Xmax } { Ymin Ymax } { Zmin Zmax }
   48:      *      INDEP DEPND RES { EYEPT } }
   49:      * { "automatic" { Ymin Ymax } "automatic" INDEP DEPND RES { EYEPT } }
   50:      */
   51: 
   52:     (*s_etat_processus).erreur_execution = d_ex;
   53: 
   54:     if ((*s_etat_processus).affichage_arguments == 'Y')
   55:     {
   56:         printf("\n  PPAR ");
   57: 
   58:         if ((*s_etat_processus).langue == 'F')
   59:         {
   60:             printf("(paramètres graphiques)\n\n");
   61:         }
   62:         else
   63:         {
   64:             printf("(graphical parameters)\n\n");
   65:         }
   66: 
   67:         printf("->  1: %s\n", d_LST);
   68: 
   69:         return;
   70:     }
   71:     else if ((*s_etat_processus).test_instruction == 'Y')
   72:     {
   73:         (*s_etat_processus).nombre_arguments = -1;
   74:         return;
   75:     }
   76: 
   77:     if (test_cfsf(s_etat_processus, 31) == d_vrai)
   78:     {
   79:         if (empilement_pile_last(s_etat_processus, 0) == d_erreur)
   80:         {
   81:             return;
   82:         }
   83:     }
   84: 
   85:     if ((s_objet_resultat = allocation(s_etat_processus, LST)) == NULL)
   86:     {
   87:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
   88:         return;
   89:     }
   90: 
   91:     (*s_objet_resultat).objet = NULL;
   92:     l_ancienne_base = (*s_objet_resultat).objet;
   93: 
   94:     // Paramètres des courbes de niveau
   95: 
   96:     if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
   97:     {
   98:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
   99:         return;
  100:     }
  101: 
  102:     if (((*l_nouvelle_base).donnee = copie_objet(s_etat_processus,
  103:             (*s_etat_processus).parametres_courbes_de_niveau, 'O')) == NULL)
  104:     {
  105:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  106:         return;
  107:     }
  108: 
  109:     (*l_nouvelle_base).suivant = l_ancienne_base;
  110:     (*s_objet_resultat).objet = l_nouvelle_base;
  111:     l_ancienne_base = (*s_objet_resultat).objet;
  112: 
  113:     // Point de vue
  114: 
  115:     if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
  116:     {
  117:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  118:         return;
  119:     }
  120: 
  121:     if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, LST))
  122:             == NULL)
  123:     {
  124:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  125:         return;
  126:     }
  127: 
  128:     (*l_nouvelle_base).suivant = l_ancienne_base;
  129: 
  130:     if (((*(*l_nouvelle_base).donnee).objet =
  131:             allocation_maillon(s_etat_processus)) == NULL)
  132:     {
  133:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  134:         return;
  135:     }
  136: 
  137:     if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet)).donnee
  138:             = allocation(s_etat_processus, REL)) == NULL)
  139:     {
  140:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  141:         return;
  142:     }
  143: 
  144:     (*((real8 *) (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
  145:             .objet)).donnee).objet)) = (*s_etat_processus).point_de_vue_theta;
  146: 
  147:     if (test_cfsf(s_etat_processus, 60) == d_faux)
  148:     {
  149:         conversion_radians_vers_degres((real8 *) (*(*((struct_liste_chainee *)
  150:                 (*(*l_nouvelle_base).donnee).objet)).donnee).objet);
  151:     }
  152: 
  153:     if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  154:             .suivant = allocation_maillon(s_etat_processus)) == NULL)
  155:     {
  156:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  157:         return;
  158:     }
  159: 
  160:     if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  161:             .suivant).donnee = allocation(s_etat_processus, REL)) == NULL)
  162:     {
  163:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  164:         return;
  165:     }
  166: 
  167:     (*((real8 *) (*(*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
  168:             .objet)).suivant).donnee).objet)) =
  169:             (*s_etat_processus).point_de_vue_phi;
  170: 
  171:     if (test_cfsf(s_etat_processus, 60) == d_faux)
  172:     {
  173:         conversion_radians_vers_degres((real8 *) (*(*(*((struct_liste_chainee *)
  174:                 (*(*l_nouvelle_base).donnee).objet)).suivant).donnee).objet);
  175:     }
  176: 
  177:     if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  178:             .suivant).suivant = allocation_maillon(s_etat_processus)) == NULL)
  179:     {
  180:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  181:         return;
  182:     }
  183: 
  184:     if (((*(*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  185:             .suivant).suivant).donnee = allocation(s_etat_processus, REL))
  186:             == NULL)
  187:     {
  188:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  189:         return;
  190:     }
  191: 
  192:     (*((real8 *) (*(*(*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
  193:             .objet)).suivant).suivant).donnee).objet)) =
  194:             (*s_etat_processus).echelle_3D;
  195: 
  196:     (*((*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  197:             .suivant)).suivant)).suivant = NULL;
  198: 
  199:     (*s_objet_resultat).objet = l_nouvelle_base;
  200:     l_ancienne_base = (*s_objet_resultat).objet;
  201: 
  202:     // Type en cours
  203: 
  204:     if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
  205:     {
  206:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  207:         return;
  208:     }
  209: 
  210:     if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, CHN))
  211:             == NULL)
  212:     {
  213:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  214:         return;
  215:     }
  216: 
  217:     (*l_nouvelle_base).suivant = l_ancienne_base;
  218: 
  219:     if (strcmp((*s_etat_processus).type_trace_eq, "FONCTION") == 0)
  220:     {
  221:         if (((*(*l_nouvelle_base).donnee).objet = malloc(9 *
  222:                 sizeof(unsigned char))) == NULL)
  223:         {
  224:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  225:             return;
  226:         }
  227: 
  228:         strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
  229:                 "FUNCTION");
  230:     }
  231:     else if (strcmp((*s_etat_processus).type_trace_eq, "PARAMETRIQUE") == 0)
  232:     {
  233:         if (((*(*l_nouvelle_base).donnee).objet = malloc(11 *
  234:                 sizeof(unsigned char))) == NULL)
  235:         {
  236:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  237:             return;
  238:         }
  239: 
  240:         strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
  241:                 "PARAMETRIC");
  242:     }
  243:     else if (strcmp((*s_etat_processus).type_trace_eq, "POLAIRE") == 0)
  244:     {
  245:         if (((*(*l_nouvelle_base).donnee).objet = malloc(6 *
  246:                 sizeof(unsigned char))) == NULL)
  247:         {
  248:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  249:             return;
  250:         }
  251: 
  252:         strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
  253:                 "POLAR");
  254:     }
  255:     else if (strcmp((*s_etat_processus).type_trace_eq, "COURBES DE NIVEAU")
  256:             == 0)
  257:     {
  258:         if (((*(*l_nouvelle_base).donnee).objet = malloc(6 *
  259:                 sizeof(unsigned char))) == NULL)
  260:         {
  261:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  262:             return;
  263:         }
  264: 
  265:         strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
  266:                 "SLICE");
  267:     }
  268:     else if (strcmp((*s_etat_processus).type_trace_eq, "GRILLE 3D") == 0)
  269:     {
  270:         if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
  271:                 sizeof(unsigned char))) == NULL)
  272:         {
  273:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  274:             return;
  275:         }
  276: 
  277:         strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
  278:                 "WIREFRAME");
  279:     }
  280:     else
  281:     {
  282:         if (((*(*l_nouvelle_base).donnee).objet = malloc(
  283:                 sizeof(unsigned char))) == NULL)
  284:         {
  285:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  286:             return;
  287:         }
  288: 
  289:         strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet, "");
  290:     }
  291: 
  292:     (*s_objet_resultat).objet = l_nouvelle_base;
  293:     l_ancienne_base = (*s_objet_resultat).objet;
  294: 
  295:     // Résolution
  296: 
  297:     if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
  298:     {
  299:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  300:         return;
  301:     }
  302: 
  303:     if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, REL))
  304:             == NULL)
  305:     {
  306:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  307:         return;
  308:     }
  309: 
  310:     (*l_nouvelle_base).suivant = l_ancienne_base;
  311:     (*((real8 *) (*(*l_nouvelle_base).donnee).objet)) =
  312:             (*s_etat_processus).resolution;
  313:     (*s_objet_resultat).objet = l_nouvelle_base;
  314:     l_ancienne_base = (*s_objet_resultat).objet;
  315: 
  316:     // DEPND
  317: 
  318:     if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
  319:     {
  320:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  321:         return;
  322:     }
  323: 
  324:     if (((*l_nouvelle_base).donnee = copie_objet(s_etat_processus,
  325:             (*s_etat_processus).depend, 'O')) == NULL)
  326:     {
  327:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  328:         return;
  329:     }
  330: 
  331:     (*l_nouvelle_base).suivant = l_ancienne_base;
  332:     (*s_objet_resultat).objet = l_nouvelle_base;
  333:     l_ancienne_base = (*s_objet_resultat).objet;
  334: 
  335:     // INDEP
  336:     
  337:     if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
  338:     {
  339:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  340:         return;
  341:     }
  342: 
  343:     if (((*l_nouvelle_base).donnee = copie_objet(s_etat_processus,
  344:             (*s_etat_processus).indep, 'O')) == NULL)
  345:     {
  346:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  347:         return;
  348:     }
  349: 
  350:     (*l_nouvelle_base).suivant = l_ancienne_base;
  351:     (*s_objet_resultat).objet = l_nouvelle_base;
  352:     l_ancienne_base = (*s_objet_resultat).objet;
  353: 
  354:     // Coordonnées Z2
  355: 
  356:     if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
  357:     {
  358:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  359:         return;
  360:     }
  361: 
  362:     if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, NON))
  363:             == NULL)
  364:     {
  365:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  366:         return;
  367:     }
  368: 
  369:     if ((*s_etat_processus).echelle_automatique_z2 == d_vrai)
  370:     {
  371:         if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
  372:                 sizeof(unsigned char))) == NULL)
  373:         {
  374:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  375:             return;
  376:         }
  377: 
  378:         (*(*l_nouvelle_base).donnee).type = CHN;
  379:         strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
  380:                 "AUTOMATIC");
  381:     }
  382:     else
  383:     {
  384:         (*(*l_nouvelle_base).donnee).type = LST;
  385: 
  386:         if (((*(*l_nouvelle_base).donnee).objet =
  387:                 allocation_maillon(s_etat_processus)) == NULL)
  388:         {
  389:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  390:             return;
  391:         }
  392: 
  393:         if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  394:                 .donnee = allocation(s_etat_processus, REL)) == NULL)
  395:         {
  396:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  397:             return;
  398:         }
  399: 
  400:         (*((real8 *) (*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
  401:                 .objet)).donnee)).objet)) = (*s_etat_processus).z2_min;
  402: 
  403:         if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  404:                 .suivant = allocation_maillon(s_etat_processus)) == NULL)
  405:         {
  406:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  407:             return;
  408:         }
  409: 
  410:         (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  411:                 .suivant).suivant = NULL;
  412: 
  413:         if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  414:                 .suivant).donnee = allocation(s_etat_processus, REL))
  415:                 == NULL)
  416:         {
  417:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  418:             return;
  419:         }
  420: 
  421:         (*((real8 *) (*((*(*((struct_liste_chainee *) (*(*l_nouvelle_base)
  422:                 .donnee).objet)).suivant).donnee)).objet)) =
  423:                 (*s_etat_processus).z2_max;
  424:     }
  425: 
  426:     (*l_nouvelle_base).suivant = l_ancienne_base;
  427:     (*s_objet_resultat).objet = l_nouvelle_base;
  428:     l_ancienne_base = (*s_objet_resultat).objet;
  429: 
  430:     // Coordonnées Y2
  431: 
  432:     if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
  433:     {
  434:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  435:         return;
  436:     }
  437: 
  438:     if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, NON))
  439:             == NULL)
  440:     {
  441:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  442:         return;
  443:     }
  444: 
  445:     if ((*s_etat_processus).echelle_automatique_y2 == d_vrai)
  446:     {
  447:         if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
  448:                 sizeof(unsigned char))) == NULL)
  449:         {
  450:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  451:             return;
  452:         }
  453: 
  454:         (*(*l_nouvelle_base).donnee).type = CHN;
  455:         strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
  456:                 "AUTOMATIC");
  457:     }
  458:     else
  459:     {
  460:         (*(*l_nouvelle_base).donnee).type = LST;
  461: 
  462:         if (((*(*l_nouvelle_base).donnee).objet =
  463:                 allocation_maillon(s_etat_processus)) == NULL)
  464:         {
  465:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  466:             return;
  467:         }
  468: 
  469:         if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  470:                 .donnee = allocation(s_etat_processus, REL)) == NULL)
  471:         {
  472:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  473:             return;
  474:         }
  475: 
  476:         (*((real8 *) (*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
  477:                 .objet)).donnee)).objet)) = (*s_etat_processus).y2_min;
  478: 
  479:         if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  480:                 .suivant = allocation_maillon(s_etat_processus)) == NULL)
  481:         {
  482:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  483:             return;
  484:         }
  485: 
  486:         (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  487:                 .suivant).suivant = NULL;
  488: 
  489:         if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  490:                 .suivant).donnee = allocation(s_etat_processus, REL))
  491:                 == NULL)
  492:         {
  493:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  494:             return;
  495:         }
  496: 
  497:         (*((real8 *) (*((*(*((struct_liste_chainee *) (*(*l_nouvelle_base)
  498:                 .donnee).objet)).suivant).donnee)).objet)) =
  499:                 (*s_etat_processus).y2_max;
  500:     }
  501: 
  502:     (*l_nouvelle_base).suivant = l_ancienne_base;
  503:     (*s_objet_resultat).objet = l_nouvelle_base;
  504:     l_ancienne_base = (*s_objet_resultat).objet;
  505: 
  506:     // Coordonnées X2
  507: 
  508:     if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
  509:     {
  510:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  511:         return;
  512:     }
  513: 
  514:     if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, NON))
  515:             == NULL)
  516:     {
  517:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  518:         return;
  519:     }
  520: 
  521:     if ((*s_etat_processus).echelle_automatique_x2 == d_vrai)
  522:     {
  523:         if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
  524:                 sizeof(unsigned char))) == NULL)
  525:         {
  526:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  527:             return;
  528:         }
  529: 
  530:         (*(*l_nouvelle_base).donnee).type = CHN;
  531:         strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
  532:                 "AUTOMATIC");
  533:     }
  534:     else
  535:     {
  536:         (*(*l_nouvelle_base).donnee).type = LST;
  537: 
  538:         if (((*(*l_nouvelle_base).donnee).objet =
  539:                 allocation_maillon(s_etat_processus)) == NULL)
  540:         {
  541:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  542:             return;
  543:         }
  544: 
  545:         if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  546:                 .donnee = allocation(s_etat_processus, REL)) == NULL)
  547:         {
  548:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  549:             return;
  550:         }
  551: 
  552:         (*((real8 *) (*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
  553:                 .objet)).donnee)).objet)) = (*s_etat_processus).x2_min;
  554: 
  555:         if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  556:                 .suivant = allocation_maillon(s_etat_processus)) == NULL)
  557:         {
  558:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  559:             return;
  560:         }
  561: 
  562:         (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  563:                 .suivant).suivant = NULL;
  564: 
  565:         if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  566:                 .suivant).donnee = allocation(s_etat_processus, REL))
  567:                 == NULL)
  568:         {
  569:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  570:             return;
  571:         }
  572: 
  573:         (*((real8 *) (*((*(*((struct_liste_chainee *) (*(*l_nouvelle_base)
  574:                 .donnee).objet)).suivant).donnee)).objet)) =
  575:                 (*s_etat_processus).x2_max;
  576:     }
  577: 
  578:     (*l_nouvelle_base).suivant = l_ancienne_base;
  579:     (*s_objet_resultat).objet = l_nouvelle_base;
  580:     l_ancienne_base = (*s_objet_resultat).objet;
  581: 
  582:     // Coordonnées Z
  583: 
  584:     if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
  585:     {
  586:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  587:         return;
  588:     }
  589: 
  590:     if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, NON))
  591:             == NULL)
  592:     {
  593:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  594:         return;
  595:     }
  596: 
  597:     if ((*s_etat_processus).echelle_automatique_z == d_vrai)
  598:     {
  599:         if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
  600:                 sizeof(unsigned char))) == NULL)
  601:         {
  602:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  603:             return;
  604:         }
  605: 
  606:         (*(*l_nouvelle_base).donnee).type = CHN;
  607:         strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
  608:                 "AUTOMATIC");
  609:     }
  610:     else
  611:     {
  612:         (*(*l_nouvelle_base).donnee).type = LST;
  613: 
  614:         if (((*(*l_nouvelle_base).donnee).objet =
  615:                 allocation_maillon(s_etat_processus)) == NULL)
  616:         {
  617:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  618:             return;
  619:         }
  620: 
  621:         if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  622:                 .donnee = allocation(s_etat_processus, REL)) == NULL)
  623:         {
  624:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  625:             return;
  626:         }
  627: 
  628:         (*((real8 *) (*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
  629:                 .objet)).donnee)).objet)) = (*s_etat_processus).z_min;
  630: 
  631:         if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  632:                 .suivant = allocation_maillon(s_etat_processus)) == NULL)
  633:         {
  634:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  635:             return;
  636:         }
  637: 
  638:         (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  639:                 .suivant).suivant = NULL;
  640: 
  641:         if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  642:                 .suivant).donnee = allocation(s_etat_processus, REL))
  643:                 == NULL)
  644:         {
  645:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  646:             return;
  647:         }
  648: 
  649:         (*((real8 *) (*((*(*((struct_liste_chainee *) (*(*l_nouvelle_base)
  650:                 .donnee).objet)).suivant).donnee)).objet)) =
  651:                 (*s_etat_processus).z_max;
  652:     }
  653: 
  654:     (*l_nouvelle_base).suivant = l_ancienne_base;
  655:     (*s_objet_resultat).objet = l_nouvelle_base;
  656:     l_ancienne_base = (*s_objet_resultat).objet;
  657: 
  658:     // Coordonnées Y
  659: 
  660:     if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
  661:     {
  662:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  663:         return;
  664:     }
  665: 
  666:     if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, NON))
  667:             == NULL)
  668:     {
  669:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  670:         return;
  671:     }
  672: 
  673:     if ((*s_etat_processus).echelle_automatique_y == d_vrai)
  674:     {
  675:         if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
  676:                 sizeof(unsigned char))) == NULL)
  677:         {
  678:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  679:             return;
  680:         }
  681: 
  682:         (*(*l_nouvelle_base).donnee).type = CHN;
  683:         strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
  684:                 "AUTOMATIC");
  685:     }
  686:     else
  687:     {
  688:         (*(*l_nouvelle_base).donnee).type = LST;
  689: 
  690:         if (((*(*l_nouvelle_base).donnee).objet =
  691:                 allocation_maillon(s_etat_processus)) == NULL)
  692:         {
  693:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  694:             return;
  695:         }
  696: 
  697:         if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  698:                 .donnee = allocation(s_etat_processus, REL)) == NULL)
  699:         {
  700:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  701:             return;
  702:         }
  703: 
  704:         (*((real8 *) (*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
  705:                 .objet)).donnee)).objet)) = (*s_etat_processus).y_min;
  706: 
  707:         if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  708:                 .suivant = allocation_maillon(s_etat_processus)) == NULL)
  709:         {
  710:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  711:             return;
  712:         }
  713: 
  714:         (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  715:                 .suivant).suivant = NULL;
  716: 
  717:         if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  718:                 .suivant).donnee = allocation(s_etat_processus, REL))
  719:                 == NULL)
  720:         {
  721:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  722:             return;
  723:         }
  724: 
  725:         (*((real8 *) (*((*(*((struct_liste_chainee *) (*(*l_nouvelle_base)
  726:                 .donnee).objet)).suivant).donnee)).objet)) =
  727:                 (*s_etat_processus).y_max;
  728:     }
  729: 
  730:     (*l_nouvelle_base).suivant = l_ancienne_base;
  731:     (*s_objet_resultat).objet = l_nouvelle_base;
  732:     l_ancienne_base = (*s_objet_resultat).objet;
  733: 
  734:     // Coordonnées X
  735: 
  736:     if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
  737:     {
  738:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  739:         return;
  740:     }
  741: 
  742:     if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, NON))
  743:             == NULL)
  744:     {
  745:         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  746:         return;
  747:     }
  748: 
  749:     if ((*s_etat_processus).echelle_automatique_x == d_vrai)
  750:     {
  751:         if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
  752:                 sizeof(unsigned char))) == NULL)
  753:         {
  754:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  755:             return;
  756:         }
  757: 
  758:         (*(*l_nouvelle_base).donnee).type = CHN;
  759:         strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
  760:                 "AUTOMATIC");
  761:     }
  762:     else
  763:     {
  764:         (*(*l_nouvelle_base).donnee).type = LST;
  765: 
  766:         if (((*(*l_nouvelle_base).donnee).objet =
  767:                 allocation_maillon(s_etat_processus)) == NULL)
  768:         {
  769:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  770:             return;
  771:         }
  772: 
  773:         if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  774:                 .donnee = allocation(s_etat_processus, REL)) == NULL)
  775:         {
  776:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  777:             return;
  778:         }
  779: 
  780:         (*((real8 *) (*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
  781:                 .objet)).donnee)).objet)) = (*s_etat_processus).x_min;
  782: 
  783:         if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  784:                 .suivant = allocation_maillon(s_etat_processus)) == NULL)
  785:         {
  786:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  787:             return;
  788:         }
  789: 
  790:         (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  791:                 .suivant).suivant = NULL;
  792: 
  793:         if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
  794:                 .suivant).donnee = allocation(s_etat_processus, REL))
  795:                 == NULL)
  796:         {
  797:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  798:             return;
  799:         }
  800: 
  801:         (*((real8 *) (*((*(*((struct_liste_chainee *) (*(*l_nouvelle_base)
  802:                 .donnee).objet)).suivant).donnee)).objet)) =
  803:                 (*s_etat_processus).x_max;
  804:     }
  805: 
  806:     (*l_nouvelle_base).suivant = l_ancienne_base;
  807:     (*s_objet_resultat).objet = l_nouvelle_base;
  808: 
  809:     if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  810:             s_objet_resultat) == d_erreur)
  811:     {
  812:         return;
  813:     }
  814: 
  815:     return;
  816: }
  817: 
  818: 
  819: /*
  820: ================================================================================
  821:   Fonction 'plotter' (passe en mode d'affichage relié)
  822: ================================================================================
  823:   Entrées : structure processus
  824: --------------------------------------------------------------------------------
  825:   Sorties :
  826: --------------------------------------------------------------------------------
  827:   Effets de bord : néant
  828: ================================================================================
  829: */
  830: 
  831: void
  832: instruction_plotter(struct_processus *s_etat_processus)
  833: {
  834:     (*s_etat_processus).erreur_execution = d_ex;
  835: 
  836:     if ((*s_etat_processus).affichage_arguments == 'Y')
  837:     {
  838:         printf("\n  PLOTTER ");
  839: 
  840:         if ((*s_etat_processus).langue == 'F')
  841:         {
  842:             printf("(nuage de points reliés entre eux)\n\n");
  843:             printf("  Aucun argument\n");
  844:         }
  845:         else
  846:         {
  847:             printf("(plotter mode)\n\n");
  848:             printf("  No argument\n");
  849:         }
  850: 
  851:         return;
  852:     }
  853:     else if ((*s_etat_processus).test_instruction == 'Y')
  854:     {
  855:         (*s_etat_processus).nombre_arguments = -1;
  856:         return;
  857:     }
  858:     
  859:     strcpy((*s_etat_processus).type_trace_sigma, "TABLE TRACANTE");
  860: 
  861:     return;
  862: }
  863: 
  864: 
  865: /*
  866: ================================================================================
  867:   Fonction 'paper'
  868: ================================================================================
  869:   Entrées :
  870: --------------------------------------------------------------------------------
  871:   Sorties :
  872: --------------------------------------------------------------------------------
  873:   Effets de bord : néant
  874: ================================================================================
  875: */
  876: 
  877: void
  878: instruction_paper(struct_processus *s_etat_processus)
  879: {
  880:     struct_objet                *s_objet_argument;
  881: 
  882:     unsigned char               *tampon;
  883: 
  884:     (*s_etat_processus).erreur_execution = d_ex;
  885: 
  886:     if ((*s_etat_processus).affichage_arguments == 'Y')
  887:     {
  888:         printf("\n  PAPER ");
  889: 
  890:         if ((*s_etat_processus).langue == 'F')
  891:         {
  892:             printf("(format de papier)\n\n");
  893:         }
  894:         else
  895:         {
  896:             printf("(paper format)\n\n");
  897:         }
  898: 
  899:         printf("    1: %s\n\n", d_CHN);
  900: 
  901:         if ((*s_etat_processus).langue == 'F')
  902:         {
  903:             printf("  Formats :\n\n");
  904:         }
  905:         else
  906:         {
  907:             printf("  Format:\n\n");
  908:         }
  909: 
  910:         printf("    A4, A5, B5, EXECUTIVE, LETTER, LEGAL\n");
  911: 
  912:         return;
  913:     }
  914:     else if ((*s_etat_processus).test_instruction == 'Y')
  915:     {
  916:         (*s_etat_processus).nombre_arguments = -1;
  917:         return;
  918:     }
  919:     
  920:     if (test_cfsf(s_etat_processus, 31) == d_vrai)
  921:     {
  922:         if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
  923:         {
  924:             return;
  925:         }
  926:     }
  927: 
  928:     if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  929:             &s_objet_argument) == d_erreur)
  930:     {
  931:         (*s_etat_processus).erreur_execution = d_ex_manque_argument;
  932:         return;
  933:     }
  934: 
  935:     if ((*s_objet_argument).type == CHN)
  936:     {
  937:         if ((tampon = conversion_majuscule(s_etat_processus, (unsigned char *)
  938:                 (*s_objet_argument).objet)) == NULL)
  939: 
  940:         {
  941:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  942:             return;
  943:         }
  944: 
  945:         if (strcmp(tampon, "A4") == 0)
  946:         {
  947:             strcpy((*s_etat_processus).format_papier, "a4paper");
  948:         }
  949:         else if (strcmp(tampon, "A5") == 0)
  950:         {
  951:             strcpy((*s_etat_processus).format_papier, "a5paper");
  952:         }
  953:         else if (strcmp(tampon, "B5") == 0)
  954:         {
  955:             strcpy((*s_etat_processus).format_papier, "b5paper");
  956:         }
  957:         else if (strcmp(tampon, "LETTER") == 0)
  958:         {
  959:             strcpy((*s_etat_processus).format_papier, "letterpaper");
  960:         }
  961:         else if (strcmp(tampon, "LEGAL") == 0)
  962:         {
  963:             strcpy((*s_etat_processus).format_papier, "legalpaper");
  964:         }
  965:         else if (strcmp(tampon, "EXECUTIVE") == 0)
  966:         {
  967:             strcpy((*s_etat_processus).format_papier, "executivepaper");
  968:         }
  969:         else
  970:         {
  971:             (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
  972:         }
  973: 
  974:         free(tampon);
  975:     }
  976:     else
  977:     {
  978:         liberation(s_etat_processus, s_objet_argument);
  979: 
  980:         (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
  981:         return;
  982:     }
  983: 
  984:     liberation(s_etat_processus, s_objet_argument);
  985: 
  986:     return;
  987: }
  988: 
  989: // vim: ts=4

CVSweb interface <joel.bertrand@systella.fr>