Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

virtual void Impala::Core::ImageSet::Thumbnails::HandleNewFile ( ImageSet is,
int  fileId,
Array::Array2dVec3UInt8 im 
) [inline, virtual]

Arrived at given DB_FILE in a "normal" walk.

Reimplemented from Impala::Core::ImageSet::Listener.

Definition at line 72 of file Thumbnails.h.

References Impala::Core::Array::Array2dTem< StorT, elemSize, ArithT >::CH(), Impala::Core::Array::Array2dTem< StorT, elemSize, ArithT >::CW(), Impala::FileNameExt(), Impala::Core::Database::RawDataSet::GetContainerDirOfFile(), Impala::Core::Database::RawDataSet::GetDatabase(), Impala::Core::Database::RawDataSet::GetFile(), Impala::Core::Database::RawDataSet::GetFilePathImageData(), Impala::Core::Database::RawDataSet::GetLocator(), ILOG_ERROR, ILOG_INFO, mArchive, mBuf, mBufSize, mFirstImHeight, mFirstImWidth, mImList, mRkfMask, mScale, mSplitArchive, mThumbSet, Impala::Core::Geometry::NEAREST, Impala::Core::Array::Scale(), Impala::Core::Array::WriteJpg(), Impala::Core::Array::WriteJpgToMemory(), and Impala::Core::Array::WritePngToMemory().

00073     {
00074         ImType* blackIm = 0;
00075         if (!im)
00076         {
00077             ILOG_ERROR("No image");
00078             if (mFirstImWidth == -1)
00079             {
00080                 ILOG_ERROR("No image size yet, so can't generate black image");
00081                 return;
00082             }
00083             blackIm = Array::MakeFromValue<ImType>
00084                 (Array::Element::Vec3Int32(0, 0, 0), mFirstImWidth,
00085                  mFirstImHeight);
00086             im = blackIm;
00087         }
00088         if (mFirstImWidth == -1)
00089         {
00090             mFirstImWidth = im->CW();
00091             mFirstImHeight = im->CH();
00092             ILOG_INFO("First image has sizes : " << mFirstImWidth << " x "
00093                       << mFirstImHeight);
00094         }
00095         if (mRkfMask)
00096         {
00097             String imFile = is->GetFile(fileId);
00098             if (imFile.find("_NRKF_") != String::npos)
00099                 return;
00100         }
00101         ImType* sc = 0;
00102         Array::Scale(sc, im, mScale, mScale, Geometry::NEAREST, true);
00103         if (mArchive || mSplitArchive)
00104         {
00105             size_t nrBytes = 0;
00106             if (FileNameExt(mThumbSet->GetFile(fileId)) == "jpg")
00107                 Array::WriteJpgToMemory(sc, mBuf, mBufSize, &nrBytes);
00108             else
00109                 Array::WritePngToMemory(sc, mBuf, mBufSize, &nrBytes);
00110             Array::Array2dScalarUInt8* bufIm =
00111                 Array::MakeFromData<Array::Array2dScalarUInt8>((UInt8*) mBuf,
00112                                                                nrBytes, 1);
00113             mImList.push_back(bufIm);
00114         }
00115         else
00116         {
00117 #ifndef REPOSITORY_USED // Here comes the deprecated stuff
00118             String resFile = mThumbSet->GetFilePathImageData(fileId, true,
00119                                                              false);
00120             Array::WriteJpg(sc, resFile, mThumbSet->GetDatabase());
00121 #else // REPOSITORY_USED
00122             String container = mThumbSet->GetContainerDirOfFile(fileId);
00123             Persistency::ImageLocator loc(mThumbSet->GetLocator(), container,
00124                                           mThumbSet->GetFile(fileId));
00125             Persistency::ImageRepository().Add(loc, sc);
00126 #endif // REPOSITORY_USED
00127         }
00128         delete sc;
00129         if (blackIm)
00130             delete blackIm;
00131     }

Here is the call graph for this function:


Generated on Fri Mar 19 11:15:27 2010 for ImpalaSrc by  doxygen 1.5.1