Changeset 1159 in Sophya for trunk/SophyaLib/NTools


Ignore:
Timestamp:
Aug 29, 2000, 6:13:31 PM (25 years ago)
Author:
ansari
Message:

Handler PPersist pour Image<T> (classe FIO_Image<T>) - Reza 29/8/2000

Location:
trunk/SophyaLib/NTools
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/NTools/cimage.cc

    r1104 r1159  
    4747}
    4848
     49
     50// --------------------------------------------------------
     51//   Les objets delegues pour la gestion de persistance
     52// --------------------------------------------------------
     53/*!
     54  \class SOPHYA::FIO_Image
     55  \ingroup Image
     56  Class for persistent management of Image
     57
     58 */
     59///////////////////////////////////////////////////////////
     60
     61//! Default constructor
     62template <class T>
     63FIO_Image<T>::FIO_Image()
     64  : FIO_TArray<T>()
     65{
     66}
     67
     68
     69//! Constructor from the file \b filename
     70template <class T>
     71FIO_Image<T>::FIO_Image(string const & filename)
     72  : FIO_TArray<T>(filename)
     73{
     74}
     75
     76//! Constructor from the Image \b obj
     77template <class T>
     78FIO_Image<T>::FIO_Image(const Image<T> & obj)
     79  : FIO_TArray<T>()
     80{
     81  dobj = new Image<T>(obj, true);
     82  ownobj=true;
     83}
     84
     85//! Connect with a Image \b obj
     86template <class T>
     87FIO_Image<T>::FIO_Image(Image<T> * obj)
     88  : FIO_TArray<T>(obj)
     89{
     90}
     91
     92
     93//! Connect Image \b o
     94template <class T>
     95void FIO_Image<T>::SetDataObj(AnyDataObj & o)
     96{
     97  Image<T> * po = dynamic_cast< Image<T> * >(&o);
     98  if (po == NULL) return;
     99  if (ownobj && dobj) delete dobj;
     100  dobj = po; ownobj = false;
     101}
     102
     103template <class T>
     104void FIO_Image<T>::ReadSelf(PInPersist& is)
     105{
     106  if (dobj == NULL) dobj = new Image<T>;
     107  Image<T> * img = dynamic_cast<Image<T> * > (dobj);
     108// On lit les 3 premiers uint_4
     109//  0: Numero de version,  1 : reserve
     110  uint_4 itab[3];
     111  is.Get(itab,3);
     112
     113// Image<T> part data
     114  r_8 orgx, orgy;
     115  is.Get(orgx);
     116  is.Get(orgy);
     117  img->SetOrg(orgx, orgy);
     118  r_8 szx, szy;
     119  is.Get(szx);
     120  is.Get(szy);
     121  img->SetPixelSize(szx, szy);
     122
     123// Reading the TArray part
     124  FIO_TArray<T>::ReadSelf(is);
     125}
     126
     127template <class T>
     128void FIO_Image<T>::WriteSelf(POutPersist& os) const
     129{
     130  if (dobj == NULL)   return;
     131  Image<T> * img = dynamic_cast<Image<T> * > (dobj);
     132//  On ecrit 3 uint_4 ....
     133  uint_4 itab[3];
     134  itab[0] = 1;  // Numero de version a 1
     135  itab[1] = 0;
     136  itab[2] = 0;
     137  os.Put(itab,3);
     138
     139// Image<T> part data
     140  os.Put(img->XOrg());
     141  os.Put(img->XOrg());
     142  os.Put(img->XPixSize());
     143  os.Put(img->YPixSize());
     144
     145// Writing the TArray part
     146  FIO_TArray<T>::WriteSelf(os);
     147}
     148
    49149///////////////////////////////////////////////////////////////
    50150#ifdef __CXX_PRAGMA_TEMPLATES__
     
    56156//#pragma define_template Image< complex<r_4> >
    57157//#pragma define_template Image< complex<r_8> >
     158
     159#pragma define_template FIO_Image<uint_2>
     160#pragma define_template FIO_Image<int_4>
     161#pragma define_template FIO_Image<int_8>
     162#pragma define_template FIO_Image<r_4>
     163#pragma define_template FIO_Image<r_8>
    58164#endif
    59165
     
    66172//template class Image< complex<r_4> >;
    67173//template class Image< complex<r_8> >;
     174
     175template class FIO_Image<uint_2>;
     176template class FIO_Image<int_4>;
     177template class FIO_Image<int_8>;
     178template class FIO_Image<r_4>;
     179template class FIO_Image<r_8>;
     180
    68181#endif
  • trunk/SophyaLib/NTools/cimage.h

    r1104 r1159  
    88
    99#include "tmatrix.h"
     10#include "fioarr.h"
    1011
    1112
     
    6162}
    6263
     64/////////////////////////////////////////////////////////////////////////
     65//! Class for persistent management of Image
     66template <class T>
     67class FIO_Image : public FIO_TArray<T>   {
     68public:
     69  FIO_Image();
     70  FIO_Image(string const & filename);
     71  FIO_Image(const Image<T> & obj);
     72  FIO_Image(Image<T> * obj);
     73  //  virtual ~FIO_Image(); 
     74  virtual void        SetDataObj(AnyDataObj & o);
     75  inline operator Image<T>() { return(*(dynamic_cast<Image<T> * >dobj)); }
     76protected :
     77  virtual void ReadSelf(PInPersist&);           
     78  virtual void WriteSelf(POutPersist&) const; 
     79};
     80
     81/*! \ingroup Image \fn operator<<(POutPersist&,Image<T>&)
     82  \brief Write Image \b obj into POutPersist stream \b os */
     83template <class T>
     84inline POutPersist& operator << (POutPersist& os, Image<T> & obj)
     85{ FIO_Image<T> fio(&obj);  fio.Write(os);  return(os); }
     86
     87/*! \ingroup Image \fn operator>>(PInPersist&,Image<T>&)
     88  \brief Read Image \b obj from PInPersist stream \b os */
     89template <class T>
     90inline PInPersist& operator >> (PInPersist& is, Image<T> & obj)
     91{ FIO_Image<T> fio(&obj);  fio.Read(is);  return(is); }
     92
     93
    6394
    6495typedef Image<uint_2> ImageU2;
  • trunk/SophyaLib/NTools/ntoolsinit.cc

    r1104 r1159  
    3030  if (FgInit > 1)  return;
    3131
    32 //   Enregistrement des classes PPersist du modules Outils++
    33  
    34   //  PPRegister(OMatrix);
    35   //  PPRegister(OVector);
     32//   Enregistrement des classes PPersist du modules NTools
    3633
     34  //  Objets Poly et Poly2  (pas encore a la norme Sophya::PPersist)
    3735  PPRegister(ObjFileIO<Poly>);
    3836  PPRegister(ObjFileIO<Poly2>);
    3937
     38  // Classe GeneralFitData et son PPersist handler
    4039  PPRegister(ObjFileIO<GeneralFitData>);
    4140  DObjRegister(ObjFileIO<GeneralFitData>, GeneralFitData);
    4241
    43   DObjRegister(FIO_TArray<uint_2>, Image<uint_2>);
    44   DObjRegister(FIO_TArray<int_4>, Image<int_4>);
    45   DObjRegister(FIO_TArray<r_4>, Image<r_4>);
     42  // Classes Image<T> et leurs  PPersist handler
     43  PPRegister(FIO_Image<uint_2>);
     44  DObjRegister(FIO_Image<uint_2>, Image<uint_2>);
     45  PPRegister(FIO_Image<int_4>);
     46  DObjRegister(FIO_Image<int_4>, Image<int_4>);
     47  PPRegister(FIO_Image<int_8>);
     48  DObjRegister(FIO_Image<int_8>, Image<int_8>);
     49  PPRegister(FIO_Image<r_4>);
     50  DObjRegister(FIO_Image<r_4>, Image<r_4>);
     51  PPRegister(FIO_Image<r_8>);
     52  DObjRegister(FIO_Image<r_8>, Image<r_8>);
    4653
    4754
Note: See TracChangeset for help on using the changeset viewer.