00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef HxImageTem_h
00011 #define HxImageTem_h
00012
00013 #include "HxImageData.h"
00014 #include "HxFuncs.h"
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 virtual void convertColor(
00040 HxVec3Double scale1, HxVec3Double gamma1,
00041 HxUpoVec3Double step1,
00042 HxUpoVec3Double step2,
00043 HxUpoVec3Double step3,
00044 HxVec3Double gamma2, HxVec3Double scale2);
00045
00046
00047
00048 virtual void transpose(const HxImageData* src);
00049
00050
00051
00052 virtual void getValues(
00053 HxPointListConstIter first,
00054 HxPointListConstIter last,
00055 HxValueListBackInserter) = 0;
00056
00057
00058
00059 virtual void setAt(int x, int y, int z, const HxValue val);
00060 virtual HxValue getAt(int x, int y, int z) const;
00061
00062
00063
00064 virtual void neighbourhoodOp(
00065 const HxImageData* src, HxString ngbName,
00066 HxTagList& tags);
00067
00068 virtual void neighbourhoodOp(
00069 const HxImageData* src,
00070 const HxImageData* kernel,
00071 HxString ngbName, HxTagList& tags);
00072
00073
00074
00075 virtual void getDoublePixels(double* pixels);
00076
00077
00078
00079 virtual STD_OSTREAM& printInfo(
00080 STD_OSTREAM &os, int doData = 0) const;
00081
00082 typedef TYPENAME ImageSigT::ArithType ArithType;
00083 typedef TYPENAME ImageSigT::ArithTypeDouble ArithTypeDouble;
00084 typedef TYPENAME ImageSigT::DataPtrType DataPtrType;
00085 typedef TYPENAME ImageSigT::ArithImageSigType ArithImageSigType;
00086 typedef TYPENAME ImageSigT::ArithImageSigTypeDouble
00087 ArithImageSigTypeDouble;
00088
00089
00090
00091
00092 virtual HxImageTem<ImageSigT>* makeScratch(HxSizes border) const;
00093
00094 virtual DataPtrType dataPtrClone() const = 0;
00095
00096 protected:
00097
00098 int _dimSizes[3];
00099 };
00100
00101 #ifdef INC_TEMPLATE_SRC
00102 #include "HxImageTem.c"
00103 #endif
00104
00105 #endif