00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef HxImageTem_h
00011 #define HxImageTem_h
00012
00013 #include "HxImageData.h"
00014
00015
00016
00019 template<class ImageSigT>
00020 class HxImageTem : public HxImageData {
00021 public:
00022 HxImageTem();
00023 HxImageTem(const HxImageTem &);
00024 virtual ~HxImageTem();
00025
00026 int dimensionality() const;
00027 int dimensionSize(int i) const;
00028 HxSizes sizes() const;
00029 int numberOfPixels() const;
00030 int pixelDimensionality() const;
00031 HxValueType pixelType() const;
00032 int pixelPrecision() const;
00033 HxImageSignature signature() const;
00034
00035
00036
00037 virtual void set(double* pixels);
00038
00039
00040
00041 virtual void getValues(
00042 HxPointListConstIter first,
00043 HxPointListConstIter last,
00044 HxValueListBackInserter) = 0;
00045
00046
00047
00048 virtual void setAt(int x, int y, int z, const HxValue val);
00049 virtual HxValue getAt(int x, int y, int z) const;
00050
00051
00052
00053 virtual void getDoublePixels(double* pixels);
00054
00055
00056
00057 virtual STD_OSTREAM& printInfo(
00058 STD_OSTREAM &os, int doData = 0) const;
00059
00060 typedef TYPENAME ImageSigT::ArithType ArithType;
00061 typedef TYPENAME ImageSigT::ArithTypeDouble ArithTypeDouble;
00062 typedef TYPENAME ImageSigT::DataPtrType DataPtrType;
00063 typedef TYPENAME ImageSigT::ArithImageSigType ArithImageSigType;
00064 typedef TYPENAME ImageSigT::ArithImageSigTypeDouble
00065 ArithImageSigTypeDouble;
00066 virtual HxImageTem<ImageSigT>* makeScratch(HxSizes border) const;
00067
00068 virtual DataPtrType dataPtrClone() const = 0;
00069
00070 protected:
00071
00072 int _dimSizes[3];
00073 };
00074
00075 #ifdef INC_TEMPLATE_SRC
00076 #include "HxImageTem.c"
00077 #endif
00078
00079 #endif