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

#ifndef CANAL
#define CANAL

#include <stdlib.h>

typedef union
	{
	Octet     * octet;
	Entier    * entier;
	EntierL   * entierL;
	Reel      * reel;
	ReelL     * reelL;
	Complexe  * complexe;
	ComplexeL * complexeL;
	Couleur   * couleur;
   Vecteur2D * vecteur2D;
	} Valeur;

typedef struct
	{
	Valeur *ptr;
	Valeur *ptri;
	Valeur  ptrj;
	size_t orgi;
	size_t orgj;
	size_t dp;
	int imax;
	int jmax;
	int jbroche;
	int i;
	int j;
	Type timage;
	Type tvaleur;
	}  *Canal;

typedef enum
	{
	Z_IMAGE,
	Z_FENETRE
	} Zone;

typedef enum
	{
	B_POINT,
	B_LIGNE
	} Broche;

Canal CreeCanal(Image image,Type type,Broche broche,Zone zone);
void LibereCanal(Canal canal);
int LitCanal(Canal canal,void *valeur);
int EcritCanal(Canal canal,void *valeur);
int PoseCanal(Canal canal,int x,int y);
void RepereCanal(Canal canal,int *x,int *y);

#endif
