/* -*- mode: c++; c-basic-offset: 3 -*-
 *
 * PANTHEON Project
 *
 * GREYC IMAGE
 * 6 Boulevard Maréchal Juin
 * F-14050 Caen Cedex France
 *
 * This file is free software. You can use it, distribute it
 * and/or modify it. However, the entire risk to the quality
 * and performance of this program is with you.
 *
 * Please email any bugs, comments, and/or additions to this file to:
 * pandore@greyc.ensicaen.fr
 * http://www.greyc.ensicaen.fr/EquipeImage/Pandore/
 */

/**
 * Projet 3A : WAVEATOM transform
 * @author Mahmoud Ghoniem 
 * @date 2007-02-08
 *
 */

/*
 * @file complexe.h
 * @brief Définition of Img1dC et Img2dC
 * complex images.
 */

#ifndef _COMPLEXE_H
#define _COMPLEXE_H

#include <complex>
#include <pandore.h>

using namespace std;

namespace pandore {
  typedef complex<double> Complexe;

  typedef Img1d<Complexe> Img1dC;
  typedef Img2d<Complexe> Img2dC;

  template<> struct Po_type<Img1dC> {
    enum {type = object };
  };

  template<> struct TypeName<Img1dC> {
    static std::string Name( ){ return "Img1dC"; }
  };

  template<> struct Po_type<Img2dC> {
    enum {type = object };
  };

  template<> struct TypeName<Img2dC> {
    static std::string Name( ){ return "Img2dC"; }
  };

template<> struct Po_type<Imx2d<Complexe> > {
    enum {type = object };
  };

  template<> struct TypeName<Imx2d<Complexe> > {
    static std::string Name( ){ return "Imc2dC"; }
  };

  template<> struct Po_type<Imx3d<Complexe> > {
    enum {type = object };
  };

  template<> struct TypeName<Imx3d<Complexe> > {
    static std::string Name( ){ return "Imc3dC"; }
  };

  template<> struct Po_type<Imx1d<Complexe> > {
    enum {type = object };
  };

  template<> struct TypeName<Imx1d<Complexe> > {
    static std::string Name( ){ return "Imx1dC"; }
  };

}

#endif
// Imx3dc x = new Imx3dc(1,1,2);
// 
// x.Width();
// x[z][y][x];
