00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef HxImgDataFactory_h
00012 #define HxImgDataFactory_h
00013
00014 #pragma warning(disable: 4786)
00015
00016 #include "HxValueType.h"
00017 #include "HxImageSignature.h"
00018 #include "HxSizes.h"
00019
00020 #include <map>
00021
00022 class HxImageData;
00023 class HxImageCreator;
00024
00025 class HxImgDataFactory {
00026
00027 public:
00028
00029 ~HxImgDataFactory();
00030 static HxImgDataFactory& instance();
00031
00032 HxImageData* makeImage(
00033 int pixelDimensionality,
00034 HxValueType pixelType,
00035 int pixelPrecision,
00036 int dimensions,
00037 int dimSize1,
00038 int dimSize2 = 1,
00039 int dimSize3 = 1);
00040 HxImageData* makeImage(
00041 HxImageSignature sig,
00042 int dimSize1,
00043 int dimSize2 = 1,
00044 int dimSize3 = 1);
00045 HxImageData* makeImage(
00046 HxImageSignature sig,
00047 const HxSizes& sizes);
00048
00049 void registerCreator(
00050 HxImageSignature sig,
00051 const HxImageCreator* imgCtor);
00052
00053 private:
00054
00055 HxImgDataFactory();
00056 HxImgDataFactory(const HxImgDataFactory&);
00057 HxImgDataFactory& operator=(const HxImgDataFactory&);
00058
00059 typedef const HxImageCreator* ImageCreatorPtr;
00060 typedef std::map<
00061 HxImageSignature, ImageCreatorPtr,
00062 std::less<HxImageSignature> > ImageCreatorTable;
00063
00064 #pragma warning(disable: 4786)
00065 ImageCreatorTable _imgCtorTable;
00066 };
00067
00068 #endif