Merge branch 'dev' into dual_demosaic_auto_threshold
This commit is contained in:
@@ -1225,6 +1225,11 @@ Camera constants:
|
||||
}
|
||||
},
|
||||
|
||||
{ // Quality C
|
||||
"make_model": "DJI FC6310",
|
||||
"ranges": { "white": 64886 }
|
||||
},
|
||||
|
||||
{ // Quality B
|
||||
"make_model": "FUJIFILM GFX 50S",
|
||||
"dcraw_matrix": [ 11756,-4754,-874,-3056,11045,2305,-381,1457,6006 ], // DNGv9.9 D65
|
||||
@@ -1338,13 +1343,13 @@ Camera constants:
|
||||
"make_model": "LG mobile LG-H815",
|
||||
"dcraw_matrix": [ 5859,547,-1250,-6484,15547,547,-2422,5625,3906 ], // DNG D65
|
||||
//"dcraw_matrix": [ 11563,-2891,-3203,-5313,15625,625,-781,2813,5625 ], // DNG A
|
||||
"ranges": { "white_max": 1000 }
|
||||
"ranges": { "white": 1000 }
|
||||
},
|
||||
{ // Quality C
|
||||
"make_model": "LG mobile LG-H850",
|
||||
//"dcraw_matrix": [ 10000,-2188,-2813,-5156,15469,625,-703,2734,5078 ], // DNG A
|
||||
"dcraw_matrix": [ 5313,1016,-1172,-6250,15391,547,-2344,5547,3359 ], // DNG D65
|
||||
"ranges": { "white_max": 1000 }
|
||||
"ranges": { "white": 1000 }
|
||||
},
|
||||
|
||||
{ // Quality A
|
||||
|
||||
@@ -6462,7 +6462,9 @@ guess_cfa_pc:
|
||||
unsigned oldOrder = order;
|
||||
order = 0x4d4d; // always big endian per definition in https://www.adobe.com/content/dam/acom/en/products/photoshop/pdfs/dng_spec_1.4.0.0.pdf chapter 7
|
||||
unsigned ntags = get4(); // read the number of opcodes
|
||||
while (ntags--) {
|
||||
|
||||
if (ntags < ifp->size / 12) { // rough check for wrong value (happens for example with DNG files from DJI FC6310)
|
||||
while (ntags-- && !ifp->eof) {
|
||||
unsigned opcode = get4();
|
||||
fseek (ifp, 8, SEEK_CUR); // skip 8 bytes as they don't interest us currently
|
||||
if (opcode == 4) { // FixBadPixelsConstant
|
||||
@@ -6474,6 +6476,7 @@ guess_cfa_pc:
|
||||
fseek (ifp, get4(), SEEK_CUR);
|
||||
}
|
||||
}
|
||||
}
|
||||
order = oldOrder;
|
||||
break;
|
||||
}
|
||||
@@ -10062,6 +10065,10 @@ dng_skip:
|
||||
adobe_coeff (make, model);
|
||||
if((!strncmp(make, "XIAOYI", 6) || !strncmp(make, "YI", 2)) && !strncmp(model, "M1",2))
|
||||
adobe_coeff (make, model);
|
||||
if(!strncmp(make, "DJI", 3) && !strncmp(model, "FC6310", 6)) // DNG files from this camera have wrong (too high) white level
|
||||
adobe_coeff (make, model);
|
||||
if (!strncmp(make, "LG", 2) && (!strncmp(model, "LG-H850",7) || !strncmp(model, "LG-H815",7)))
|
||||
adobe_coeff (make, model);
|
||||
if (raw_color) adobe_coeff (make, model);
|
||||
if (load_raw == &CLASS kodak_radc_load_raw)
|
||||
if (raw_color) adobe_coeff ("Apple","Quicktake");
|
||||
|
||||
@@ -903,7 +903,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
|
||||
// process crop, if needed
|
||||
for (size_t i = 0; i < crops.size(); i++)
|
||||
if (crops[i]->hasListener() && (panningRelatedChange || (todo & (M_MONITOR | M_RGBCURVE | M_LUMACURVE)) || crops[i]->get_skip() == 1)) {
|
||||
if (crops[i]->hasListener() && (panningRelatedChange || (highDetailNeeded && options.prevdemo != PD_Sidecar) || (todo & (M_MONITOR | M_RGBCURVE | M_LUMACURVE)) || crops[i]->get_skip() == 1)) {
|
||||
crops[i]->update(todo); // may call ourselves
|
||||
}
|
||||
|
||||
|
||||
@@ -383,9 +383,8 @@ void BatchToolPanelCoordinator::initSession ()
|
||||
}
|
||||
}
|
||||
|
||||
void BatchToolPanelCoordinator::panelChanged (rtengine::ProcEvent event, const Glib::ustring& descr)
|
||||
void BatchToolPanelCoordinator::panelChanged(const rtengine::ProcEvent& event, const Glib::ustring& descr)
|
||||
{
|
||||
|
||||
if (selected.empty()) {
|
||||
return;
|
||||
}
|
||||
@@ -611,9 +610,14 @@ void BatchToolPanelCoordinator::endBatchPParamsChange()
|
||||
* Using a Profile panel in the batch tool panel editor is actually
|
||||
* not supported by BatchToolPanelCoordinator::profileChange!
|
||||
*/
|
||||
void BatchToolPanelCoordinator::profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited)
|
||||
void BatchToolPanelCoordinator::profileChange(
|
||||
const PartialProfile* nparams,
|
||||
const rtengine::ProcEvent& event,
|
||||
const Glib::ustring& descr,
|
||||
const ParamsEdited* paramsEdited,
|
||||
bool fromLastSave
|
||||
)
|
||||
{
|
||||
|
||||
if (event == rtengine::EvProfileChanged) {
|
||||
// a profile has been selected in a hypothetical Profile panel
|
||||
// -> ACTUALLY NOT SUPPORTED
|
||||
|
||||
@@ -51,30 +51,36 @@ public:
|
||||
explicit BatchToolPanelCoordinator (FilePanel* parent);
|
||||
|
||||
// FileSelectionChangeListener interface
|
||||
void selectionChanged (const std::vector<Thumbnail*>& selected);
|
||||
void selectionChanged (const std::vector<Thumbnail*>& selected) override;
|
||||
|
||||
// toolpanellistener interface
|
||||
void panelChanged (rtengine::ProcEvent event, const Glib::ustring& descr);
|
||||
void panelChanged(const rtengine::ProcEvent& event, const Glib::ustring& descr) override;
|
||||
|
||||
// profilechangelistener interface
|
||||
void profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr);
|
||||
void profileChange(
|
||||
const rtengine::procparams::PartialProfile* nparams,
|
||||
const rtengine::ProcEvent& event,
|
||||
const Glib::ustring& descr,
|
||||
const ParamsEdited* paramsEdited = nullptr,
|
||||
bool fromLastSave = false
|
||||
) override;
|
||||
|
||||
// wbprovider interface
|
||||
void getAutoWB (double& temp, double& green, double equal, double tempBias);
|
||||
void getAutoWB (double& temp, double& green, double equal, double tempBias) override;
|
||||
void getCamWB (double& temp, double& green);
|
||||
|
||||
// thumbnaillistener interface
|
||||
void procParamsChanged (Thumbnail* thm, int whoChangedIt);
|
||||
void procParamsChanged (Thumbnail* thm, int whoChangedIt) override;
|
||||
|
||||
// batchpparamschangelistener interface
|
||||
void beginBatchPParamsChange(int numberOfEntries);
|
||||
void endBatchPParamsChange();
|
||||
void beginBatchPParamsChange(int numberOfEntries) override;
|
||||
void endBatchPParamsChange() override;
|
||||
|
||||
// imageareatoollistener interface
|
||||
void spotWBselected (int x, int y, Thumbnail* thm = nullptr);
|
||||
void cropSelectionReady ();
|
||||
void rotateSelectionReady (double rotate_deg, Thumbnail* thm = nullptr);
|
||||
CropGUIListener* startCropEditing (Thumbnail* thm = nullptr);
|
||||
void spotWBselected (int x, int y, Thumbnail* thm = nullptr) override;
|
||||
void cropSelectionReady () override;
|
||||
void rotateSelectionReady (double rotate_deg, Thumbnail* thm = nullptr) override;
|
||||
CropGUIListener* startCropEditing (Thumbnail* thm = nullptr) override;
|
||||
|
||||
void optionsChanged ();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user