Bigfix (see #4008) :
- CIECam now gets the shot's setting of the selected frame - 'UserComment' metadata now correctly handled - RT prepared to handle XTrans multiframe - SensorType now set in the cache/data files
This commit is contained in:
@@ -25,8 +25,9 @@
|
||||
CacheImageData::CacheImageData ()
|
||||
: md5(""), supported(false), format(FT_Invalid), rankOld(-1), inTrashOld(false), recentlySaved(false),
|
||||
timeValid(false), year(0), month(0), day(0), hour(0), min(0), sec(0), exifValid(false), frameCount(1),
|
||||
fnumber(0.0), shutter(0.0), focalLen(0.0), focalLen35mm(0.0), focusDist(0.f), iso(0), isHDR (false), isPixelShift (false),
|
||||
sampleFormat(rtengine::IIOSF_UNKNOWN), redAWBMul(-1.0), greenAWBMul(-1.0), blueAWBMul(-1.0), rotate(0), thumbImgType(0)
|
||||
fnumber(0.0), shutter(0.0), focalLen(0.0), focalLen35mm(0.0), focusDist(0.f), iso(0), isHDR (false),
|
||||
isPixelShift (false), sensortype(rtengine::ST_NONE), sampleFormat(rtengine::IIOSF_UNKNOWN),
|
||||
redAWBMul(-1.0), greenAWBMul(-1.0), blueAWBMul(-1.0), rotate(0), thumbImgType(0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -180,6 +181,9 @@ int CacheImageData::load (const Glib::ustring& fname)
|
||||
if (keyFile.has_key ("ExtraRawInfo", "ThumbImageType")) {
|
||||
thumbImgType = keyFile.get_integer ("ExtraRawInfo", "ThumbImageType");
|
||||
}
|
||||
if (keyFile.has_key ("ExtraRawInfo", "SensorType")) {
|
||||
sensortype = keyFile.get_integer ("ExtraRawInfo", "SensorType");
|
||||
}
|
||||
} else {
|
||||
rotate = 0;
|
||||
thumbImgType = 0;
|
||||
@@ -263,6 +267,7 @@ int CacheImageData::save (const Glib::ustring& fname)
|
||||
|
||||
if (format == FT_Raw) {
|
||||
keyFile.set_integer ("ExtraRawInfo", "ThumbImageType", thumbImgType);
|
||||
keyFile.set_integer ("ExtraRawInfo", "SensorType", sensortype);
|
||||
}
|
||||
|
||||
keyData = keyFile.to_data ();
|
||||
|
@@ -56,6 +56,7 @@ public:
|
||||
unsigned iso;
|
||||
bool isHDR;
|
||||
bool isPixelShift;
|
||||
int sensortype;
|
||||
rtengine::IIO_Sample_Format sampleFormat;
|
||||
Glib::ustring lens;
|
||||
Glib::ustring camMake;
|
||||
@@ -91,6 +92,7 @@ public:
|
||||
bool hasExif (unsigned int frame = 0) const { return false; }
|
||||
rtexif::TagDirectory* getRootExifData (unsigned int root = 0) const { return nullptr; }
|
||||
rtexif::TagDirectory* getFrameExifData (unsigned int frame = 0) const { return nullptr; }
|
||||
rtexif::TagDirectory* getBestExifData (rtengine::ImageSource *imgSource, rtengine::procparams::RAWParams *rawParams) const { return nullptr; }
|
||||
bool hasIPTC (unsigned int frame = 0) const { return false; }
|
||||
rtengine::procparams::IPTCPairs getIPTCData (unsigned int frame = 0) const { return rtengine::procparams::IPTCPairs(); }
|
||||
tm getDateTime (unsigned int frame = 0) const { return tm{}; }
|
||||
|
@@ -1143,7 +1143,16 @@ void EditorPanel::procParamsChanged (rtengine::procparams::ProcParams* params, r
|
||||
// if (ev!=EvPhotoLoaded)
|
||||
// saveLabel->set_markup (Glib::ustring("<span foreground=\"#AA0000\" weight=\"bold\">") + M("MAIN_BUTTON_SAVE") + "</span>");
|
||||
|
||||
selectedFrame = params->raw.bayersensor.imageNum;
|
||||
rtengine::eSensorType sensorType = isrc->getImageSource()->getSensorType();
|
||||
|
||||
selectedFrame = 0;
|
||||
if (sensorType == rtengine::ST_BAYER) {
|
||||
selectedFrame = params->raw.bayersensor.imageNum;
|
||||
//} else if (sensorType == rtengine::ST_FUJI_XTRANS) {
|
||||
// selectedFrame = params->raw.xtranssensor.imageNum;
|
||||
}
|
||||
selectedFrame = rtengine::LIM<int>(selectedFrame, 0, isrc->getImageSource()->getMetaData()->getFrameCount() - 1);
|
||||
|
||||
info_toggled();
|
||||
}
|
||||
|
||||
|
@@ -132,16 +132,18 @@ void Thumbnail::_generateThumbnailImage ()
|
||||
bool quick = false;
|
||||
rtengine::RawMetaDataLocation ri;
|
||||
|
||||
rtengine::eSensorType sensorType = rtengine::ST_NONE;
|
||||
if ( initial_ && options.internalThumbIfUntouched) {
|
||||
quick = true;
|
||||
tpp = rtengine::Thumbnail::loadQuickFromRaw (fname, ri, tw, th, 1, TRUE);
|
||||
tpp = rtengine::Thumbnail::loadQuickFromRaw (fname, ri, sensorType, tw, th, 1, TRUE);
|
||||
}
|
||||
|
||||
if ( tpp == nullptr ) {
|
||||
quick = false;
|
||||
tpp = rtengine::Thumbnail::loadFromRaw (fname, ri, tw, th, 1, pparams.wb.equal, TRUE, pparams.raw.bayersensor.imageNum);
|
||||
tpp = rtengine::Thumbnail::loadFromRaw (fname, ri, sensorType, tw, th, 1, pparams.wb.equal, TRUE, pparams.raw.bayersensor.imageNum);
|
||||
}
|
||||
|
||||
cfs.sensortype = sensorType;
|
||||
if (tpp) {
|
||||
cfs.format = FT_Raw;
|
||||
cfs.thumbImgType = quick ? CacheImageData::QUICK_THUMBNAIL : CacheImageData::FULL_THUMBNAIL;
|
||||
@@ -614,7 +616,7 @@ rtengine::IImage8* Thumbnail::processThumbImage (const rtengine::procparams::Pro
|
||||
} else {
|
||||
// Full thumbnail: apply profile
|
||||
// image = tpp->processImage (pparams, h, rtengine::TI_Bilinear, cfs.getCamera(), cfs.focalLen, cfs.focalLen35mm, cfs.focusDist, cfs.shutter, cfs.fnumber, cfs.iso, cfs.expcomp, scale );
|
||||
image = tpp->processImage (pparams, h, rtengine::TI_Bilinear, &cfs, scale );
|
||||
image = tpp->processImage (pparams, static_cast<rtengine::eSensorType>(cfs.sensortype), h, rtengine::TI_Bilinear, &cfs, scale );
|
||||
}
|
||||
|
||||
tpp->getDimensions(lastW, lastH, lastScale);
|
||||
@@ -640,7 +642,7 @@ rtengine::IImage8* Thumbnail::upgradeThumbImage (const rtengine::procparams::Pro
|
||||
}
|
||||
|
||||
// rtengine::IImage8* image = tpp->processImage (pparams, h, rtengine::TI_Bilinear, cfs.getCamera(), cfs.focalLen, cfs.focalLen35mm, cfs.focusDist, cfs.shutter, cfs.fnumber, cfs.iso, cfs.expcomp, scale );
|
||||
rtengine::IImage8* image = tpp->processImage (pparams, h, rtengine::TI_Bilinear, &cfs, scale );
|
||||
rtengine::IImage8* image = tpp->processImage (pparams, static_cast<rtengine::eSensorType>(cfs.sensortype), h, rtengine::TI_Bilinear, &cfs, scale );
|
||||
tpp->getDimensions(lastW, lastH, lastScale);
|
||||
|
||||
delete tpp;
|
||||
|
Reference in New Issue
Block a user