Improved GUI for FlatField and DarkFrame autoselection

Added serial number in .badpixels file
Added Pentax CameraInfo decoding (contains serial number)
This commit is contained in:
ffsup2
2011-01-30 23:51:55 +01:00
parent 40b2699ccd
commit 860e8037f0
14 changed files with 116 additions and 36 deletions

View File

@@ -25,6 +25,7 @@
#include <sstream>
#include <iostream>
#include <stdio.h>
#include <imagedata.h>
namespace rtengine{
@@ -260,20 +261,25 @@ dfInfo *DFManager::addFileInfo(const Glib::ustring &filename )
RawImage ri(filename);
int res = ri.loadRaw(false); // Read informations about shot
if( !res ){
RawMetaDataLocation rml;
rml.exifBase = ri.get_exifBase();
rml.ciffBase = ri.get_ciffBase();
rml.ciffLength = ri.get_ciffLen();
ImageData idata(filename, &rml);
/* Files are added in the map, divided by same maker/model,ISO and shutter*/
std::string key( dfInfo::key(ri.get_maker(), ri.get_model(),(int)ri.get_ISOspeed(),ri.get_shutter()) );
std::string key( dfInfo::key(idata.getMake(), idata.getModel(),idata.getISOSpeed(),idata.getShutterSpeed()) );
dfList_t::iterator iter = dfList.find( key );
if( iter == dfList.end() ){
dfInfo n(filename, ri.get_maker(), ri.get_model(),(int)ri.get_ISOspeed(),ri.get_shutter(),ri.get_timestamp());
dfInfo n(filename, idata.getMake(), idata.getModel(),idata.getISOSpeed(),idata.getShutterSpeed(), idata.getDateTimeAsTS() );
iter = dfList.insert(std::pair< std::string,dfInfo>( key,n ) );
}else{
while( iter != dfList.end() && iter->second.key() == key && ABS(iter->second.timestamp - ri.get_timestamp()) >60*60*6 ) // 6 hour difference
while( iter != dfList.end() && iter->second.key() == key && ABS(iter->second.timestamp - idata.getDateTimeAsTS()) >60*60*6 ) // 6 hour difference
iter++;
if( iter != dfList.end() )
iter->second.pathNames.push_back( filename );
else{
dfInfo n(filename, ri.get_maker(), ri.get_model(),(int)ri.get_ISOspeed(),ri.get_shutter(),ri.get_timestamp());
dfInfo n(filename, idata.getMake(), idata.getModel(),idata.getISOSpeed(),idata.getShutterSpeed(),idata.getDateTimeAsTS());
iter = dfList.insert(std::pair< std::string,dfInfo>( key,n ) );
}
}
@@ -331,7 +337,7 @@ dfInfo* DFManager::find( const std::string &mak, const std::string &mod, int iso
bestMatch = iter;
}
}
return &(bestMatch->second);
return bestD != INFINITY ? &(bestMatch->second) : 0 ;
}
}
@@ -399,6 +405,7 @@ int DFManager::scanBadPixelsFile( Glib::ustring filename )
int numPixels = bp.size();
if( numPixels >0 )
bpList[ makmodel ] = bp;
fclose(file);
return numPixels;
}