 /* ImLib3D
  * Copyright (c) 2001, ULP-IPB Strasbourg.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  * 
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
 
 #ifndef _Display_hpp
 #define _Display_hpp
 
 #include<ImLib3D/Image3D.hpp>
 #include<ImLib3D/ImLib3D.hpp>
 #include<ImLib3D/Image3DSet.hpp>
 class ImLib3DDisplay;
 
 
 
 class ImLib3DDisplay
 {
 protected:
     ImLib3DDisplay(){;}
 public:
     template<class ImageType>
     static  void Show(const ImageType &ima);
 //  template<class ImageType>
     static  void ShowSet(Image3DSet<Image3Df> &images);
     virtual void ShowImage(const Image3Df &ima)=0;  
     virtual void ShowImages(Image3DSet<Image3Df> &ima)=0;   
     static  void Set(ImLib3DDisplay *newDisp);
 };
 
 class TextDisplay : public ImLib3DDisplay
 {
 public:
     virtual void ShowImage(const Image3Df &ima);
     virtual void ShowImages(Image3DSet<Image3Df> &images);  
     TextDisplay(){;}
 };
 
 class ViewerDisplay : public ImLib3DDisplay
 {
     string prgPath;
 public:
     virtual ~ViewerDisplay(){;}
     virtual void ShowImage(const Image3Df &ima);
     virtual void ShowImages(Image3DSet<Image3Df> &images);  
     ViewerDisplay();
 };
 
 template<class ImageType>
 void ImLib3DDisplay::Show(const ImageType &ima)
 {
     Image3Df imaf;imaf=ima;
     imLib3D.display->ShowImage(imaf);
 }
 
 //works only for Image3Df at the moment
 //template <class ImageType>
 inline void 
 ImLib3DDisplay::ShowSet(Image3DSet<Image3Df> & images)
 {
     imLib3D.display->ShowImages(images);
 }
 
 
 #endif // _Display_hpp