//************************************************************
//	Copyright (c) 1993
// 	Realise par l'equipe d'Analyse d'Images
//	Laboratoire de Traitement du Signal et Instrumentation
//	Universite de Saint-Etienne
//	France
//************************************************************

#ifndef VISU
#define VISU

#include "image.h"


typedef enum
   {
   E_LIN,
   E_LOG,
   E_EXP
   } Echelle;

typedef enum
   {
   C_X,
   C_Y,
   C_R,
   C_T
   } Coord;

typedef enum
   {
   S_LIGNE,
   S_PEIGNE
   } Style;

typedef struct
   {
   Coord   coord;
   ReelL   eMin;
   ReelL   eMax;
	Echelle echelle;
   Style   style;
   } *InfoCourbe;

typedef struct
   {
   Coord   coord;
   ReelL   eMin;
   ReelL   eMax;
   Echelle echelle;
   } *InfoCarte;

typedef struct
   {
   Coord   coord;
   ReelL   eMin;
   ReelL   eMax;
   Echelle echelle;
   } *InfoSurface;

typedef struct
   {
   Coord   coord;
   ReelL eMin;
   ReelL eMax;
   Echelle echelle;
   ReelL   min;
   ReelL   max;
   EntierL n;
	} *InfoHisto;

typedef struct
	{
	int  index;
	} *InfoSequence;

typedef struct
  {
  Point tailleImg;
  float zoomOrg;
  float zoomVect;
  int indiceLut;
  int fleche;
  } *InfoVecteur2D;


InfoCarte CreeInfoCarte(Coord coord,ReelL eMin, ReelL eMax, Echelle echelle);
void      LibereInfoCarte(InfoCarte info);
void      LitInfoCarte(InfoCarte info, Coord *coord, ReelL *eMin, ReelL *eMax, Echelle *echelle);
void      EcritInfoCarte(InfoCarte info, Coord coord, ReelL eMin, ReelL eMax, Echelle echelle);

InfoCourbe CreeInfoCourbe(Coord coord,ReelL eMin, ReelL eMax, Echelle echelle, Style style);
void      LibereInfoCourbe(InfoCourbe info);

InfoHisto CreeInfoHisto(Coord coord,ReelL eMin, ReelL eMax, Echelle echelle, ReelL min, ReelL max, EntierL n);
void      LibereInfoHisto(InfoHisto info);

InfoSequence CreeInfoSequence(int index);
void      LibereInfoSequence(InfoSequence info);

InfoVecteur2D CreeInfoVecteur2D(int tx,int ty,float zOrg,float zVect,int iLut,int fleche);
int LitTailleImgInfoVect2D(void *info,int *tx,int *ty);
int EcritTailleImgInfoVect2D(void *info,int tx,int ty);
void      LibereInfoVecteur2D(InfoVecteur2D info);
#endif
