#include <HxMfBroadestSig.h>
Public Methods | |
HxMfBroadestSig (HxImageData *objImg, HxImageData *argImg, int pixDim=0, int makeResult=1) | |
Constructor. More... | |
~HxMfBroadestSig () | |
Destructor. More... | |
HxImageData * | object () const |
The object image of the frame. More... | |
HxImageData * | argument () const |
The argument image of the frame. More... | |
HxImageData * | result () const |
The result image of the frame. More... |
This method frame is used to allow for heterogeneous image data types.
|
Constructor. Object() will point to a copy of objImg with a signature equal to the broadest of objImg and argImg and sizes equal to the maximum of objImg and argImg. However, if (pixDim != 0) it will have the specified pixel dimensionality. In case the signature of argImg is not equal to the signature of object() a temporary image with that signature will be created for argument() with the same pixel values as argImg. if (makeResult == 1) the result will actually be allocated (and used by object()). if (makeResult == 0) there is no result image and a temporary image (with the broadest signature) may have to be allocated for object().
00023 : 00024 _object(objImg), _argument(argImg), _tmpArg(0), _tmpObj(0) 00025 { 00026 if (!_object || !_argument) 00027 return; 00028 00029 HxImageSignature objSig(_object->signature()); 00030 HxImageSignature argSig(_argument->signature()); 00031 HxImageSignature resultSig(objSig.broadest(argSig)); 00032 if (pixDim != 0) 00033 resultSig.setPixelDimensionality(pixDim); 00034 HxSizes sizes = std::max(_object->sizes(), _argument->sizes()); 00035 00036 if (!argSig.isEqual(resultSig)) { 00037 _tmpArg = HxImgDataFactory::instance().makeImage(resultSig, sizes); 00038 _tmpArg->set(_argument); 00039 _argument = _tmpArg; 00040 } 00041 00042 if (makeResult) { 00043 _result = HxImgDataFactory::instance().makeImage(resultSig, sizes); 00044 if (_result) 00045 _result->set(_object); 00046 _object = _result; 00047 } else { // since we did not make the result (and the new object) we 00048 // may have to "adjust" the object sig to match the broadest 00049 if (!objSig.isEqual(resultSig)) { 00050 _tmpObj = HxImgDataFactory::instance().makeImage(resultSig, sizes); 00051 _tmpObj->set(_object); 00052 _object = _tmpObj; 00053 } 00054 } 00055 } |
|
Destructor.
00058 { 00059 if (_tmpArg) 00060 delete _tmpArg; 00061 if (_tmpObj) 00062 delete _tmpObj; 00063 } |
|
The object image of the frame.
00067 { 00068 return _object; 00069 } |
|
The argument image of the frame.
00073 { 00074 return _argument; 00075 } |
|
The result image of the frame.
00079 { 00080 return _result; 00081 } |