#include <HxMfMNpo.h>
Public Methods | |
| HxMfMNpo (HxImageData **srcs, int srcCnt, HxString mpoName) | |
| Constructor. More... | |
| ~HxMfMNpo () | |
| Destructor. More... | |
| HxImageData ** | results () const |
| The result images of the frame. More... | |
| HxImageData * | results (int n) const |
| int | resultCnt () const |
| The number of source images of the frame. More... | |
| HxImageData ** | sources () const |
| The source images of the frame. More... | |
| int | sourceCnt () const |
| The number of source images of the frame. More... | |
| bool | preOpIsOk () const |
| Indicates whether initialization was OK. More... | |
|
||||||||||||||||
|
Constructor.
00019 : _preOpIsOk(true)
00020 {
00021 if (srcCnt <= 0) {
00022 _preOpIsOk = false;
00023 return;
00024 }
00025
00026 _srcCnt = srcCnt;
00027 _src = new HxImageData * [srcCnt];
00028 _tmp = new HxImageData * [srcCnt];
00029
00030 int i;
00031 for (i = 0; i < srcCnt; i++) {
00032 if (!srcs[i]) {
00033 _preOpIsOk = false;
00034 return;
00035 }
00036 _src[i] = srcs[i];
00037 _tmp[i] = 0;
00038 }
00039
00040 /* find broadest signature and minimum sizes */
00041 HxImageSignature broadestSig(srcs[0]->signature());
00042 HxSizes sizes = srcs[0]->sizes();
00043 for (i = 1; i < srcCnt; i++) {
00044 HxImageSignature srcnSig(srcs[i]->signature());
00045 broadestSig = broadestSig.broadest(srcnSig);
00046 sizes = sizes.sup(srcs[i]->sizes());
00047 }
00048
00049 static HxRegKey* mpoKey
00050 = HxRegistry::instance().findKey("/imagefunctortable/mpo");
00051 HxRegKey* k = mpoKey ? mpoKey->findKey(mpoName) : 0;
00052 k = k ? k->findKey("resulttype") : 0;
00053 const HxRegValue* v = k ? k->findValue(broadestSig.toString()) : 0;
00054 HxImageSignature resultSig
00055 = v ? HxImageSignature::NameToSignature(v->getData().toString()) :
00056 broadestSig;
00057
00058 for (i = 0; i < srcCnt; i++) {
00059 if (!broadestSig.isEqual(srcs[i]->signature())) {
00060 _tmp[i] = HxImgDataFactory::instance().makeImage(broadestSig, sizes);
00061 _tmp[i]->set(srcs[i]);
00062 _src[i] = _tmp[i];
00063 }
00064 }
00065
00067 HxTagList tags;
00068 HxAddTag(tags, "sourceCnt", _srcCnt);
00069 if (!HxImageData::probeMNpo(resultSig, broadestSig, mpoName, tags)) {
00070 _preOpIsOk = false;
00071 return;
00072 }
00073 _resCnt = HxGetTag(tags, "resultCnt", 1);
00074
00075 _result = new HxImageData * [_resCnt];
00076 for (i = 0; i < _resCnt; i++)
00077 _result[i] = HxImgDataFactory::instance().makeImage(resultSig, sizes);
00078 }
|
|
|
Destructor.
00081 {
00082 for (int i = 0; i < _srcCnt; i++) {
00083 if (_tmp[i])
00084 delete _tmp[i];
00085 }
00086 delete [] _result;
00087 delete [] _tmp;
00088 delete [] _src;
00089 }
|
|
|
The result images of the frame.
00105 {
00106 return _result;
00107 }
|
|
|
The number of source images of the frame.
00111 {
00112 return _resCnt;
00113 }
|
|
|
The source images of the frame.
00093 {
00094 return _src;
00095 }
|
|
|
The number of source images of the frame.
00099 {
00100 return _srcCnt;
00101 }
|
|
|
Indicates whether initialization was OK.
00057 {
00058 return _preOpIsOk;
00059 }
|
1.2.12 written by Dimitri van Heesch,
© 1997-2001