#include <HxImageFactory.h>
Public Methods | |
| HxImageRep | fromSignature (const HxImageSignature &signature, HxSizes sizes) |
| Uninitialized image with given signature and sizes. More... | |
| HxImageRep | fromImage (const HxImageSignature &signature, HxImageRep src) |
| New image with given signature. More... | |
| HxImageRep | fromValue (const HxImageSignature &signature, HxSizes sizes, HxValue val) |
| New image with given signature and sizes. More... | |
| HxImageRep | fromByteData (int pixelDimensionality, int dimensions, HxSizes sizes, HxByte *data) |
| New image with given signature and sizes. More... | |
| HxImageRep | fromShortData (int pixelDimensionality, int dimensions, HxSizes sizes, short *data) |
| New image with given signature and sizes. More... | |
| HxImageRep | fromIntData (int pixelDimensionality, int dimensions, HxSizes sizes, int *data) |
| New image with given signature and sizes. More... | |
| HxImageRep | fromFloatData (int pixelDimensionality, int dimensions, HxSizes sizes, float *data) |
| New image with given signature and sizes. More... | |
| HxImageRep | fromDoubleData (int pixelDimensionality, int dimensions, HxSizes sizes, double *data) |
| New image with given signature and sizes. More... | |
| HxImageRep | fromGenerator (const HxImageSignature &signature, const HxImageGenerator *imgGenerator) const |
| New image with given signature. More... | |
| HxImageRep | fromNamedGenerator (const HxImageSignature &signature, HxString generatorName, HxTagList &tags) const |
| New image with given signature. More... | |
| HxImageRep | fromJavaRgb (const HxImageSignature &signature, HxSizes sizes, int *pixels) |
| New image with given signature and sizes. More... | |
| HxImageRep | fromGrayValue (const HxImageSignature &signature, HxSizes sizes, HxByte *pixels) |
| New image with given signature and sizes. More... | |
| HxImageRep | fromMatlab (const HxImageSignature &signature, HxSizes sizes, double *pixels) |
| New image with given signature and sizes. More... | |
| HxImageRep | fromImport (const HxImageSignature &signature, HxSizes sizes, HxString importOp, HxTagList &tags) |
| New image with given signature and sizes. More... | |
| HxImageRep | from2Images (HxImageRep i1, HxImageRep i2) |
| New image with pixel values "stacked" from given arguments. More... | |
| HxImageRep | from3Images (HxImageRep i1, HxImageRep i2, HxImageRep i3) |
| New image with pixel values "stacked" from given arguments. More... | |
| HxImageRep | fromFile (HxString fileName) |
| New image read from file using scil-image. More... | |
| HxImageRep | fromFile (HxString fileName, HxTagList &tags) |
| New image read from file using HxImgFileIo lib. More... | |
| bool | writeFile (HxImageRep img, HxString fileName, HxTagList &tags) const |
| Write image to file using HxImgFileIo lib. More... | |
| bool | imagesToFile (HxImageList imgs, HxString fileName, HxTagList &tags) const |
| Write set of image to file using HxImgFileIo lib. More... | |
| HxImageList | imagesFromFile (HxString fileName, HxTagList &tags) |
| Read set of image from file using HxImgFileIo lib. More... | |
| void | subscribeGenerator (HxString name, HxImageGenerator *) |
| void | unSubscribeGenerator (HxString name, HxImageGenerator *) |
| HxImageGenerator * | getGenerator (HxString name) const |
Static Public Methods | |
| HxImageFactory & | instance () |
| The one and only instance of this class. More... | |
|
|
The one and only instance of this class.
00025 {
00026 static HxImageFactory theFactory;
00027 return theFactory;
00028 }
|
|
||||||||||||
|
Uninitialized image with given signature and sizes.
00033 {
00034 HxImageData* imgData = construct(signature, sizes);
00035 return HxImageRep(imgData);
00036 }
|
|
||||||||||||
|
New image with given signature. Sizes and data are taken from given image.
00040 {
00041 HxImageData* imgData = construct(signature, src.sizes());
00042 if (imgData && src.pointee())
00043 imgData->set(src.pointee());
00044 return HxImageRep(imgData);
00045 }
|
|
||||||||||||||||
|
New image with given signature and sizes. Pixel data is initialized with given value.
00050 {
00051 HxImageData* imgData = construct(signature, sizes);
00052 if (imgData)
00053 imgData->set(val);
00054 return HxImageRep(imgData);
00055 }
|
|
||||||||||||||||||||
|
New image with given signature and sizes. Pixel data is initialized from given values.
00060 {
00061 HxImageSignature signature(
00062 dimensions, pixelDimensionality, INT_VALUE, sizeof(HxByte)<<3);
00063 HxImageData* imgData = construct(signature, sizes);
00064 if (imgData)
00065 imgData->import(data);
00066 return HxImageRep(imgData);
00067 }
|
|
||||||||||||||||||||
|
New image with given signature and sizes. Pixel data is initialized from given values.
00072 {
00073 HxImageSignature signature(
00074 dimensions, pixelDimensionality, INT_VALUE, sizeof(short)<<3);
00075 HxImageData* imgData = construct(signature, sizes);
00076 if (imgData)
00077 imgData->import(data);
00078 return HxImageRep(imgData);
00079 }
|
|
||||||||||||||||||||
|
New image with given signature and sizes. Pixel data is initialized from given values.
00084 {
00085 HxImageSignature signature(
00086 dimensions, pixelDimensionality, INT_VALUE, sizeof(int)<<3);
00087 HxImageData* imgData = construct(signature, sizes);
00088 if (imgData)
00089 imgData->import(data);
00090 return HxImageRep(imgData);
00091 }
|
|
||||||||||||||||||||
|
New image with given signature and sizes. Pixel data is initialized from given values.
00096 {
00097 HxImageSignature signature(
00098 dimensions, pixelDimensionality, REAL_VALUE, sizeof(float)<<3);
00099 HxImageData* imgData = construct(signature, sizes);
00100 if (imgData)
00101 imgData->import(data);
00102 return HxImageRep(imgData);
00103 }
|
|
||||||||||||||||||||
|
New image with given signature and sizes. Pixel data is initialized from given values.
00108 {
00109 HxImageSignature signature(
00110 dimensions, pixelDimensionality, REAL_VALUE, sizeof(double)<<3);
00111 HxImageData* imgData = construct(signature, sizes);
00112 if (imgData)
00113 imgData->import(data);
00114 return HxImageRep(imgData);
00115 }
|
|
||||||||||||
|
New image with given signature. Pixel data and size are determined by image generator.
00121 {
00122 HxImageData* imgData = construct(signature, imgGenerator->domainSize());
00123 HxTagList tags;
00124 HxAddTag(tags, "imageGenerator", imgGenerator);
00125 if (imgData)
00126 {
00127 imgData->inout("generate", tags);
00128 }
00129 return HxImageRep(imgData);
00130 }
|
|
||||||||||||||||
|
New image with given signature. Pixel data and size are determined by image generator.
00136 {
00137 HxImageGenerator* generator = getGenerator(generatorName);
00138
00139 if (!generator)
00140 return HxImageRep();
00141
00142 generator->init(tags);
00143 HxImageData* imgData = construct(signature, generator->domainSize());
00144 HxTagList ttags;
00145 HxAddTag(ttags, "imageGenerator", generator);
00146 if (imgData)
00147 {
00148 imgData->inout("generate", ttags);
00149 }
00150 return HxImageRep(imgData);
00151 }
|
|
||||||||||||||||
|
New image with given signature and sizes. Pixel data is initialized from given values. The given values are stored in Java RGB format.
00156 {
00157 HxImageData* imgData = construct(signature, sizes);
00158 if (imgData)
00159 imgData->set(pixels);
00160 return HxImageRep(imgData);
00161 }
|
|
||||||||||||||||
|
New image with given signature and sizes. Pixel data is initialized from given values.
00166 {
00167 HxImageData* imgData = construct(signature, sizes);
00168 if (imgData)
00169 imgData->set(pixels);
00170 return HxImageRep(imgData);
00171 }
|
|
||||||||||||||||
|
New image with given signature and sizes. Pixel values are initialized from given values. The given values are stored in Matlab format.
00176 {
00177 HxImageData* imgData = construct(signature, sizes);
00178 if (imgData)
00179 imgData->set(pixels);
00180 return HxImageRep(imgData);
00181 }
|
|
||||||||||||||||||||
|
New image with given signature and sizes. Pixel values are initialized by specified import operator.
00187 {
00188 HxImageData* imgData = construct(signature, sizes);
00189 if (imgData)
00190 imgData->inout(importOp, tags);
00191 return HxImageRep(imgData);
00192 }
|
|
||||||||||||
|
New image with pixel values "stacked" from given arguments. For example, if i1 and i2 are scalar images the pixel values in the new image are 2-vectors. Result may need exceed highest pixel dimensionality.
00196 {
00197 STD_OSTREAM& errorStream = HxEnvironment::instance()->errorStream();
00198
00199 if (!(i1 && i2)) {
00200 errorStream << "Source images may not be null" << STD_ENDL;
00201 HxEnvironment::instance()->flush();
00202 return HxImageRep();
00203 }
00204 if (i1.signature() != i2.signature()) {
00205 errorStream << "Source images differ in type" << STD_ENDL;
00206 HxEnvironment::instance()->flush();
00207 return HxImageRep();
00208 }
00209 if (i1.sizes() != i2.sizes()) {
00210 errorStream << "Source images differ in size" << STD_ENDL;
00211 HxEnvironment::instance()->flush();
00212 return HxImageRep();
00213 }
00214 HxImageSignature signature(i1.signature());
00215 HxSizes sizes(i1.sizes());
00216
00217 if (signature.pixelDimensionality() != 1) {
00218 errorStream << "HxImageRep: images must have pixelDimensionality of 1"
00219 << STD_ENDL;
00220 HxEnvironment::instance()->flush();
00221 return HxImageRep();
00222 }
00223 signature.setPixelDimensionality(2);
00224 HxImageData* imgData = construct(signature, sizes);
00225 if (imgData)
00226 {
00227 HxTagList tags;
00228 imgData->binaryPixOp(
00229 i1.pointee(), i2.pointee(), "vector2d", tags);
00230 }
00231 return HxImageRep(imgData);
00232 }
|
|
||||||||||||||||
|
New image with pixel values "stacked" from given arguments. For example, if i1, i2, and i3 are scalar images the pixel values in the new image are 3-vectors. Result may need exceed highest pixel dimensionality.
00236 {
00237 STD_OSTREAM& errorStream = HxEnvironment::instance()->errorStream();
00238 if (!(i1 && i2 && i3)) {
00239 errorStream << "Source images may not be null" << STD_ENDL;
00240 HxEnvironment::instance()->flush();
00241 return HxImageRep();
00242 }
00243 if ((i1.signature() != i2.signature())
00244 || (i2.signature() != i3.signature())) {
00245 errorStream << "Source images differ in type" << STD_ENDL;
00246 HxEnvironment::instance()->flush();
00247 return HxImageRep();
00248 }
00249 if ((i1.sizes() != i2.sizes()) || (i2.sizes() != i3.sizes())) {
00250 errorStream << "Source images differ in size" << STD_ENDL;
00251 HxEnvironment::instance()->flush();
00252 return HxImageRep();
00253 }
00254 HxImageSignature signature(i1.signature());
00255 HxSizes sizes(i1.sizes());
00256 if (signature.pixelDimensionality() != 1) {
00257 errorStream << "HxImageRep: images must have pixelDimensionality of 1"
00258 << STD_ENDL;
00259 HxEnvironment::instance()->flush();
00260 return HxImageRep();
00261 }
00262 signature.setPixelDimensionality(3);
00263 HxImageData* imgData = construct(signature, sizes);
00264 if (imgData)
00265 {
00266 HxTagList tags;
00267 HxImageData *pointees[3] = {i1.pointee(), i2.pointee(), i3.pointee()};
00268 imgData->multiPixOp(pointees, 3, "vector3d", tags);
00269 }
00270 return HxImageRep(imgData);
00271 }
|
|
|
New image read from file using scil-image.
00275 {
00276 HxImageData* imgData
00277 = HxImageSiLib::getHxImageSiLib()->readFile(fileName.data());
00278 return HxImageRep(imgData);
00279 }
|
|
||||||||||||
|
New image read from file using HxImgFileIo lib.
00285 {
00286 HxString extName = HxSystem::instance().extName(fileName);
00287
00288 HxImgFileReader* reader = HxImgFileIoTable::instance().getReader(extName);
00289
00290 int imgNum = HxGetTag(tags, "setImage", 0);
00291
00292 if (!reader)
00293 {
00294 HxEnvironment::instance()->errorStream()
00295 << "Unknown file type \"" << extName << "\"" << STD_ENDL;
00296 HxEnvironment::instance()->flush();
00297 return HxImageRep();
00298 }
00299
00300 if (reader->openFile(fileName))
00301 {
00302 HxImageData* imgData = 0;
00303
00304 bool imgIsSet = reader->setImage(imgNum);
00305 reader->getInfo(tags);
00306 if (imgIsSet)
00307 {
00308 HxPointZ begin(0, 0, 0);
00309 HxTagList tags;
00310 imgData = construct(
00311 reader->getSignature(), reader->getImageSize());
00312 HxString inOutOp =
00313 HxString("importPix<") + reader->getDataTypeString() + ">";
00314 while (reader->moreData())
00315 {
00316 HxBoundingBox boundingBox(reader->getDataSize());
00317 boundingBox = boundingBox.translate(reader->getDataBegin());
00318 HxAddTag(tags, "boundingBox", boundingBox);
00319 void* data = reader->getData();
00320 if (data)
00321 imgData->inout(
00322 data, reader->getDataTypeString(), "importPix", tags);
00323 }
00324 }
00325 else
00326 {
00327 HxEnvironment::instance()->errorStream()
00328 << "" << reader->errorDescription() << STD_ENDL;
00329 HxEnvironment::instance()->flush();
00330 }
00331 reader->closeFile();
00332 return imgData ? HxImageRep(imgData) : HxImageRep();
00333 }
00334 else
00335 {
00336 HxEnvironment::instance()->errorStream()
00337 << "" << reader->errorDescription() << STD_ENDL;
00338 HxEnvironment::instance()->flush();
00339 }
00340
00341 return HxImageRep();
00342 }
|
|
||||||||||||||||
|
Write image to file using HxImgFileIo lib.
00347 {
00348 if (!img) return false;
00349
00350 HxString extName = HxSystem::instance().extName(fileName);
00351
00352 HxImgFileWriter* writer = HxImgFileIoTable::instance().getWriter(extName);
00353
00354 if (!writer)
00355 {
00356 HxEnvironment::instance()->errorStream()
00357 << "Unknown file type \"" << extName << "\"" << STD_ENDL;
00358 HxEnvironment::instance()->flush();
00359 return false;
00360 }
00361
00362 bool asRgb = HxGetTag(tags, "asRgb", true);
00363 HxAddTag(tags, "asRgb", asRgb);
00364
00365 if (!(writer->openFile(fileName) &&
00366 writer->setSignature(img.signature()) &&
00367 writer->setImageSize(img.sizes()) &&
00368 writer->setInfo(tags)))
00369 {
00370 HxEnvironment::instance()->errorStream()
00371 << "" << writer->errorDescription() << STD_ENDL;
00372 HxEnvironment::instance()->flush();
00373 return false;
00374 }
00375
00376 HxPointZ begin(0, 0, 0);
00377 HxTagList opTags;
00378
00379 while (writer->moreData())
00380 {
00381 HxString exportName = "exportPix<" + writer->getDataTypeString() + ">";
00382 HxBoundingBox boundingBox(writer->getDataSize());
00383 boundingBox = boundingBox.translate(writer->getDataBegin());
00384 HxAddTag(opTags, "boundingBox", boundingBox);
00385 void* data = writer->getData();
00386 if (data)
00387 {
00388 HxAddTag(opTags, "dataPtr", data);
00389 img.exportOp(exportName, opTags);
00390 writer->putData(data);
00391 }
00392 }
00393
00394 writer->closeFile();
00395
00396 return true;
00397 }
|
|
||||||||||||||||
|
Write set of image to file using HxImgFileIo lib.
00466 {
00467 if (!imgs.size()) return false;
00468
00469 HxString extName = HxSystem::instance().extName(fileName);
00470
00471 HxImgFileWriter* writer = HxImgFileIoTable::instance().getWriter(extName);
00472
00473 if (!writer)
00474 {
00475 HxEnvironment::instance()->errorStream()
00476 << "Unknown file type \"" << extName << "\"" << STD_ENDL;
00477 HxEnvironment::instance()->flush();
00478 return false;
00479 }
00480
00481 bool asRgb = HxGetTag(tags, "asRgb", true);
00482 HxAddTag(tags, "asRgb", asRgb);
00483
00484 HxImageList::const_iterator img = imgs.begin();
00485
00486 if (!(writer->firstImage() &&
00487 writer->openFile(fileName) &&
00488 writer->setSignature((*img).signature()) &&
00489 writer->setImageSize((*img).sizes()) &&
00490 writer->setInfo(tags)))
00491 {
00492 HxEnvironment::instance()->errorStream()
00493 << "" << writer->errorDescription() << STD_ENDL;
00494 HxEnvironment::instance()->flush();
00495 return false;
00496 }
00497
00498 HxTagList opTags;
00499
00500 while (img != imgs.end()) {
00501 while (writer->moreData())
00502 {
00503 HxString exportName = "exportPix<" + writer->getDataTypeString() + ">";
00504 HxBoundingBox boundingBox(writer->getDataSize());
00505 boundingBox = boundingBox.translate(writer->getDataBegin());
00506 HxAddTag(opTags, "boundingBox", boundingBox);
00507 void* data = writer->getData();
00508 if (data)
00509 {
00510 HxAddTag(opTags, "dataPtr", data);
00511 (*img).exportOp(exportName, opTags);
00512 writer->putData(data);
00513 }
00514 }
00515 img++;
00516 if (img != imgs.end()) {
00517 writer->nextImage();
00518 if (!( writer->setSignature((*img).signature()) &&
00519 writer->setImageSize((*img).sizes()) &&
00520 writer->setInfo(tags)))
00521 {
00522 HxEnvironment::instance()->errorStream()
00523 << "" << writer->errorDescription() << STD_ENDL;
00524 HxEnvironment::instance()->flush();
00525 return false;
00526 }
00527 }
00528 }
00529
00530 writer->closeFile();
00531
00532 return true;
00533 }
|
|
||||||||||||
|
Read set of image from file using HxImgFileIo lib.
00401 {
00402 HxString extName = HxSystem::instance().extName(fileName);
00403
00404 HxImgFileReader* reader = HxImgFileIoTable::instance().getReader(extName);
00405
00406 HxImageList imgs;
00407
00408 if (!reader)
00409 {
00410 HxEnvironment::instance()->errorStream()
00411 << "Unknown file type \"" << extName << "\"" << STD_ENDL;
00412 HxEnvironment::instance()->flush();
00413 return imgs;
00414 }
00415
00416 if (reader->openFile(fileName))
00417 {
00418 int imgNum;
00419 for (imgNum = 0; imgNum < reader->imageCount(); imgNum++) {
00420 bool imgIsSet = reader->setImage(imgNum);
00421 reader->getInfo(tags);
00422
00423 if (imgIsSet)
00424 {
00425 HxImageData* imgData = 0;
00426 HxPointZ begin(0, 0, 0);
00427 HxTagList tags;
00428 imgData = construct(
00429 reader->getSignature(), reader->getImageSize());
00430 HxString inOutOp =
00431 HxString("importPix<") + reader->getDataTypeString() + ">";
00432 while (reader->moreData())
00433 {
00434 HxBoundingBox boundingBox(reader->getDataSize());
00435 boundingBox = boundingBox.translate(reader->getDataBegin());
00436 HxAddTag(tags, "boundingBox", boundingBox);
00437 void* data = reader->getData();
00438 if (data && imgData)
00439 imgData->inout(
00440 data, reader->getDataTypeString(), "importPix", tags);
00441 }
00442 imgs += imgData ? HxImageRep(imgData) : HxImageRep();
00443 }
00444 else
00445 {
00446 HxEnvironment::instance()->errorStream()
00447 << "" << reader->errorDescription() << STD_ENDL;
00448 HxEnvironment::instance()->flush();
00449 }
00450 }
00451 reader->closeFile();
00452 }
00453 else
00454 {
00455 HxEnvironment::instance()->errorStream()
00456 << "" << reader->errorDescription() << STD_ENDL;
00457 HxEnvironment::instance()->flush();
00458 }
00459
00460 return imgs;
00461 }
|
1.2.12 written by Dimitri van Heesch,
© 1997-2001