00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef HxImageFactory_h
00010 #define HxImageFactory_h
00011
00012 #include "HxImageRep.h"
00013 #include "HxImageList.h"
00014
00015 #include <map>
00016
00017 class HxImageGenerator;
00018 class HxImageData;
00019
00022 class L_HXIMAGEREP HxImageFactory
00023 {
00024 public:
00026 static HxImageFactory& instance();
00027
00030 HxImageRep fromSignature(
00031 const HxImageSignature& signature, HxSizes sizes);
00032
00036 HxImageRep fromImage(
00037 const HxImageSignature& signature, HxImageRep src);
00038
00042 HxImageRep fromValue(
00043 const HxImageSignature& signature,
00044 HxSizes sizes, HxValue val);
00045
00049 HxImageRep fromByteData(
00050 int pixelDimensionality, int dimensions,
00051 HxSizes sizes, HxByte* data);
00052
00056 HxImageRep fromShortData(
00057 int pixelDimensionality, int dimensions,
00058 HxSizes sizes, short* data);
00059
00063 HxImageRep fromIntData(
00064 int pixelDimensionality, int dimensions,
00065 HxSizes sizes, int* data);
00066
00070 HxImageRep fromFloatData(
00071 int pixelDimensionality, int dimensions,
00072 HxSizes sizes, float* data);
00073
00077 HxImageRep fromDoubleData(
00078 int pixelDimensionality, int dimensions,
00079 HxSizes sizes, double* data);
00080
00084 HxImageRep fromGenerator(
00085 const HxImageSignature& signature,
00086 const HxImageGenerator* imgGenerator) const;
00087
00091 HxImageRep fromNamedGenerator(
00092 const HxImageSignature& signature,
00093 HxString generatorName, HxTagList& tags) const;
00094
00099 HxImageRep fromJavaRgb(
00100 const HxImageSignature& signature,
00101 HxSizes sizes, int* pixels);
00102
00106 HxImageRep fromGrayValue(
00107 const HxImageSignature& signature,
00108 HxSizes sizes, HxByte* pixels);
00109
00114 HxImageRep fromMatlab(
00115 const HxImageSignature& signature,
00116 HxSizes sizes, double* pixels);
00117
00122 HxImageRep fromImport(
00123 const HxImageSignature& signature,
00124 HxSizes sizes, HxString importOp, HxTagList& tags);
00125
00132 HxImageRep from2Images(HxImageRep i1, HxImageRep i2);
00133
00140 HxImageRep from3Images(
00141 HxImageRep i1, HxImageRep i2, HxImageRep i3);
00142
00144 HxImageRep fromFile(HxString fileName);
00145
00147 HxImageRep fromFile(HxString fileName, HxTagList& tags);
00148
00150 bool writeFile(
00151 HxImageRep img, HxString fileName,
00152 HxTagList &tags) const;
00153
00155 bool imagesToFile(
00156 HxImageList imgs, HxString fileName,
00157 HxTagList &tags) const;
00158
00160 HxImageList imagesFromFile(
00161 HxString fileName, HxTagList &tags);
00162
00163 void subscribeGenerator(
00164 HxString name, HxImageGenerator*);
00165 void unSubscribeGenerator(
00166 HxString name, HxImageGenerator*);
00167
00168 HxImageGenerator* getGenerator(HxString name) const;
00169
00170 private:
00171
00172 typedef HxImageGenerator* HxImgGtorPtr;
00173 typedef std::map<
00174 HxString, HxImgGtorPtr,
00175 std::less<HxString> > GeneratorMap;
00176 typedef GeneratorMap::value_type GeneratorEntry;
00177
00178 static HxImageData* construct(
00179 const HxImageSignature& signature,
00180 HxSizes sizes);
00181
00182 #pragma warning (disable : 4251)
00183 GeneratorMap _generatorMap;
00184 #pragma warning (default : 4251)
00185 };
00186
00187 #endif