right up left contents index
Précédent: "Premier exemple"
Suivant: "Description des paramêtres de la configuration de Narcisse"
Haut: "Exemples d'appels"

Deuxième exemple

L'exemple ci-dessous envoit dix courbes dans un fichier et comprime ce dernier en même temps avec gzip. On utilise le PIPE UNIX.

#ifndef lint
static char sccsid[] = "%W% %G% P. Brochard";
#endif

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include "narcisse.h"

/*                      ====>    M A I N     <====              */

int main(int argc,char** argv) 
{

/* exemple de trace de courbes + configuration pour Narcisse */

#define nc 10
#define nt 1000
        float x[nt];
        float y[nt];
        int nx[nc];
        unsigned i = 0,j = 0,k = 0;
        unsigned pas = 2*nt/nc/(nc+1);
        SPXFILE* spx_file = NULL;

    /* declarations et init tableau de configuration */

        SpxArg spx_arg[10];
        unsigned n = 0;

        SpxInitArg(spx_arg,10);

   /* on remplit le tableau de configuration */

        SpxSetArgInt(&spx_arg[n],"option_3d",127);n++;
        SpxSetArgInt(&spx_arg[n],"calcul_socket",0);n++;
        SpxSetArgReel(&spx_arg[n],"courbe_label_x_min",0.91);n++;
        SpxSetArgChar(&spx_arg[n],"titre_valeur_gauche","yyy");n++;
        SpxSetArgTabInt(&spx_arg[n],"texte_couleur",6,2);
        SpxSetArgTabInt(&spx_arg[n],"texte_couleur",3,0);
        SpxSetArgTabInt(&spx_arg[n],"texte_couleur",34,3);n++;

        SpxSetArgTabReel(&spx_arg[n],"texte_pos_x",0.01,2);n++;

        SpxSetArgTabChar(&spx_arg[n],"texte_valeur","essai texte",5);
        SpxSetArgTabChar(&spx_arg[n],"texte_valeur","essai texte2",2);
        n++;

    /* on ouvre un fichier (ici pipe) */

        spx_file = SpxOpen("| gzip > toto.spx.gz");

    /* on envoit la configuration (qui sera sauvegardee sur
           toto.spxrc) */

        SpxSetValues(spx_file,spx_arg,n);

    /* on nettoie le tableau de configuration */

        SpxPurgeArg(spx_arg,10);

    /* on genere nc courbes */

        for(i=0;i<nc;i++)
        {
            nx[i] = pas*i + pas;
        }

        for(i=0,k=0;i<nc;i++)
        {

            for(j=0;j<nx[i];j++,k++)
            {
                x[k] = j*j + 100 * i;
                y[k] = j;
            }

        }

    /* on envoit toutes les courbes dans le fichier ouvert */
    /* (ici socket) */

        SpxMulCourbe(x,y,nx,nc,spx_file);

    /* on ferme le fichier */

        SpxClose(spx_file);

        return 0;
}