Solving issue 466: "DNG makerNote"
This commit is contained in:
@@ -737,7 +737,7 @@ void EditorPanel::info_toggled () {
|
||||
Glib::ustring(idata->apertureToString(idata->getFNumber())),
|
||||
Glib::ustring(idata->shutterToString(idata->getShutterSpeed())),
|
||||
M("QINFO_ISO"), idata->getISOSpeed(),
|
||||
idata->getFocalLen());
|
||||
Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), idata->getFocalLen()));
|
||||
|
||||
expcomp = Glib::ustring(idata->expcompToString(idata->getExpComp(),true)); // maskZeroexpcomp
|
||||
if (expcomp!=""){
|
||||
|
@@ -24,7 +24,6 @@
|
||||
using namespace rtengine;
|
||||
using namespace rtengine::procparams;
|
||||
using namespace rtexif;
|
||||
extern Glib::ustring argv0;
|
||||
|
||||
ExifPanel::ExifPanel () : idata(NULL) {
|
||||
|
||||
@@ -154,9 +153,9 @@ void ExifPanel::setImageData (const ImageMetaData* id) {
|
||||
const std::vector<Tag*>& defTags = ExifManager::getDefaultTIFFTags (NULL);
|
||||
for (size_t i=0; i<defTags.size(); i++)
|
||||
if (defTags[i]->nameToString() == "ImageWidth" || defTags[i]->nameToString() == "ImageHeight" || defTags[i]->nameToString() == "BitsPerSample")
|
||||
addTag (exifTreeModel->children(), defTags[i]->nameToString(), "?", SYSTEM, false);
|
||||
addTag (exifTreeModel->children(), defTags[i]->nameToString(), "?", AC_SYSTEM, false);
|
||||
else
|
||||
addTag (exifTreeModel->children(), defTags[i]->nameToString(), defTags[i]->valueToString(), SYSTEM, false);
|
||||
addTag (exifTreeModel->children(), defTags[i]->nameToString(), defTags[i]->valueToString(), AC_SYSTEM, false);
|
||||
|
||||
if (id && id->getExifData ()) {
|
||||
// id->getExifData ()->printAll ();
|
||||
@@ -164,7 +163,7 @@ void ExifPanel::setImageData (const ImageMetaData* id) {
|
||||
}
|
||||
}
|
||||
|
||||
Gtk::TreeModel::Children ExifPanel::addTag (const Gtk::TreeModel::Children& root, Glib::ustring field, Glib::ustring value, int action, bool editable) {
|
||||
Gtk::TreeModel::Children ExifPanel::addTag (const Gtk::TreeModel::Children& root, Glib::ustring field, Glib::ustring value, rtexif::ActionCode action, bool editable) {
|
||||
|
||||
Gtk::TreeModel::Row row = *(exifTreeModel->append(root));
|
||||
row[exifColumns.action] = action;
|
||||
@@ -174,22 +173,22 @@ Gtk::TreeModel::Children ExifPanel::addTag (const Gtk::TreeModel::Children& root
|
||||
row[exifColumns.value_nopango] = value;
|
||||
row[exifColumns.orig_value] = value;
|
||||
|
||||
if (action==WRITE)
|
||||
if (action==AC_WRITE)
|
||||
row[exifColumns.icon] = keepicon;
|
||||
else if (action==DONTWRITE)
|
||||
else if (action==AC_DONTWRITE)
|
||||
row[exifColumns.icon] = delicon;
|
||||
|
||||
if (editable) {
|
||||
row[exifColumns.field] = Glib::ustring("<b>") + field + "</b>";
|
||||
row[exifColumns.value] = Glib::ustring("<b>") + value + "</b>";
|
||||
row[exifColumns.field] = Glib::ustring("<b>") + escapeHtmlChars(field) + "</b>";
|
||||
row[exifColumns.value] = Glib::ustring("<b>") + escapeHtmlChars(value) + "</b>";
|
||||
}
|
||||
else if (action==SYSTEM) {
|
||||
row[exifColumns.field] = Glib::ustring("<i>") + field + "</i>";
|
||||
row[exifColumns.value] = Glib::ustring("<i>") + value + "</i>";
|
||||
else if (action==AC_SYSTEM) {
|
||||
row[exifColumns.field] = Glib::ustring("<i>") + escapeHtmlChars(field) + "</i>";
|
||||
row[exifColumns.value] = Glib::ustring("<i>") + escapeHtmlChars(value) + "</i>";
|
||||
}
|
||||
else {
|
||||
row[exifColumns.field] = field;
|
||||
row[exifColumns.value] = value;
|
||||
row[exifColumns.field] = escapeHtmlChars(field);
|
||||
row[exifColumns.value] = escapeHtmlChars(value);
|
||||
}
|
||||
|
||||
return row.children();
|
||||
@@ -199,15 +198,15 @@ void ExifPanel::addDirectory (const TagDirectory* dir, Gtk::TreeModel::Children
|
||||
|
||||
for (int i=0; i<dir->getCount(); i++) {
|
||||
Tag* t = (const_cast<TagDirectory*>(dir))->getTagByIndex (i);
|
||||
if (t->getAttrib() && t->getAttrib()->action==SYSTEM)
|
||||
if (t->getAttrib() && t->getAttrib()->action==AC_SYSTEM)
|
||||
continue;
|
||||
if (t->isDirectory())
|
||||
for (int j=0; t->getDirectory(j); j++) {
|
||||
Gtk::TreeModel::Children ch = addTag (root, t->nameToString (j), M("EXIFPANEL_SUBDIRECTORY"), t->getAttrib() ? t->getAttrib()->action : 0, t->getAttrib() && t->getAttrib()->editable);
|
||||
Gtk::TreeModel::Children ch = addTag (root, t->nameToString (j), M("EXIFPANEL_SUBDIRECTORY"), t->getAttrib() ? t->getAttrib()->action : AC_DONTWRITE, t->getAttrib() && t->getAttrib()->editable);
|
||||
addDirectory (t->getDirectory(j), ch);
|
||||
}
|
||||
else
|
||||
addTag (root, t->nameToString (), t->valueToString (), t->getAttrib() ? (t->getOwnMemory()?t->getAttrib()->action:SYSTEM) : 0, t->getAttrib() && t->getAttrib()->editable);
|
||||
addTag (root, t->nameToString (), t->valueToString (), t->getAttrib() ? (t->getOwnMemory()?t->getAttrib()->action:AC_SYSTEM) : AC_DONTWRITE, t->getAttrib() && t->getAttrib()->editable);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,7 +221,7 @@ void ExifPanel::exifSelectionChanged () {
|
||||
}
|
||||
else if (sel.size()==1) {
|
||||
Gtk::TreeModel::iterator iter = exifTreeModel->get_iter (sel[0]);
|
||||
if (iter->get_value (exifColumns.action)==SYSTEM) {
|
||||
if (iter->get_value (exifColumns.action)==AC_SYSTEM) {
|
||||
remove->set_sensitive (0);
|
||||
keep->set_sensitive (0);
|
||||
reset->set_sensitive (0);
|
||||
@@ -255,7 +254,7 @@ void ExifPanel::delIt (Gtk::TreeModel::iterator iter) {
|
||||
if (!iter)
|
||||
return;
|
||||
|
||||
if (iter->get_value (exifColumns.action) != SYSTEM)
|
||||
if (iter->get_value (exifColumns.action) != AC_SYSTEM)
|
||||
iter->set_value (exifColumns.icon, delicon);
|
||||
if (recursiveOp)
|
||||
for (Gtk::TreeModel::iterator i=iter->children().begin(); i!=iter->children().end(); i++)
|
||||
@@ -278,7 +277,7 @@ void ExifPanel::keepIt (Gtk::TreeModel::iterator iter) {
|
||||
if (!iter)
|
||||
return;
|
||||
|
||||
if (iter->get_value (exifColumns.action) != SYSTEM)
|
||||
if (iter->get_value (exifColumns.action) != AC_SYSTEM)
|
||||
iter->set_value (exifColumns.icon, iter->get_value (exifColumns.edited) ? editicon : keepicon);
|
||||
if (recursiveOp)
|
||||
for (Gtk::TreeModel::iterator i=iter->children().begin(); i!=iter->children().end(); i++)
|
||||
@@ -301,14 +300,14 @@ void ExifPanel::keepPressed () {
|
||||
if (!iter)
|
||||
return;
|
||||
|
||||
if (iter->get_value (exifColumns.action)!=SYSTEM)
|
||||
if (iter->get_value (exifColumns.action)!=AC_SYSTEM)
|
||||
iter->set_value (exifColumns.icon, iter->get_value (exifColumns.action) ? keepicon : delicon);
|
||||
if (iter->get_value (exifColumns.edited)) {
|
||||
iter->set_value (exifColumns.value, Glib::ustring("<b>") + iter->get_value(exifColumns.orig_value) + "</b>");
|
||||
iter->set_value (exifColumns.value_nopango, iter->get_value(exifColumns.orig_value));
|
||||
iter->set_value (exifColumns.edited, false);
|
||||
iter->set_value (exifColumns.edited, false);
|
||||
}
|
||||
if (iter->get_value (exifColumns.action)==100)
|
||||
if (iter->get_value (exifColumns.action)==AC_INVALID)
|
||||
exifTreeModel->erase (iter);
|
||||
else
|
||||
if (recursiveOp)
|
||||
@@ -320,14 +319,14 @@ Gtk::TreeModel::iterator ExifPanel::resetIt (Gtk::TreeModel::iterator iter) {
|
||||
if (!iter)
|
||||
return iter;
|
||||
|
||||
if (iter->get_value (exifColumns.action)!=SYSTEM)
|
||||
if (iter->get_value (exifColumns.action)!=AC_SYSTEM)
|
||||
iter->set_value (exifColumns.icon, iter->get_value (exifColumns.action) ? keepicon : delicon);
|
||||
if (iter->get_value (exifColumns.edited)) {
|
||||
iter->set_value (exifColumns.value, Glib::ustring("<b>") + iter->get_value(exifColumns.orig_value) + "</b>");
|
||||
iter->set_value (exifColumns.value_nopango, iter->get_value(exifColumns.orig_value));
|
||||
iter->set_value (exifColumns.edited, false);
|
||||
iter->set_value (exifColumns.edited, false);
|
||||
}
|
||||
if (iter->get_value (exifColumns.action)==100) {
|
||||
if (iter->get_value (exifColumns.action)==AC_INVALID) {
|
||||
return exifTreeModel->erase (iter);
|
||||
}
|
||||
else
|
||||
@@ -434,7 +433,7 @@ void ExifPanel::editTag (Gtk::TreeModel::Children root, Glib::ustring name, Glib
|
||||
if (iter==root.end() && value!="#keep" && value!="#delete") {
|
||||
iter = exifTreeModel->append(root);
|
||||
iter->set_value (exifColumns.field_nopango, fseg);
|
||||
iter->set_value (exifColumns.action, 100);
|
||||
iter->set_value (exifColumns.action, AC_INVALID);
|
||||
if (dp==Glib::ustring::npos) {
|
||||
iter->set_value (exifColumns.value, Glib::ustring("<b>") + value + "</b>");
|
||||
iter->set_value (exifColumns.value_nopango, value);
|
||||
@@ -454,9 +453,9 @@ void ExifPanel::editTag (Gtk::TreeModel::Children root, Glib::ustring name, Glib
|
||||
}
|
||||
|
||||
if (dp==Glib::ustring::npos) {
|
||||
if (value=="#keep" && iter->get_value (exifColumns.action)!=SYSTEM)
|
||||
if (value=="#keep" && iter->get_value (exifColumns.action)!=AC_SYSTEM)
|
||||
iter->set_value (exifColumns.icon, iter->get_value (exifColumns.edited) ? editicon : keepicon);
|
||||
else if (value=="#delete" && iter->get_value (exifColumns.action)!=SYSTEM)
|
||||
else if (value=="#delete" && iter->get_value (exifColumns.action)!=AC_SYSTEM)
|
||||
iter->set_value (exifColumns.icon, delicon);
|
||||
else {
|
||||
iter->set_value (exifColumns.value, Glib::ustring("<b>") + value + "</b>");
|
||||
@@ -516,9 +515,9 @@ void ExifPanel::updateChangeList (Gtk::TreeModel::Children root, std::string pre
|
||||
for (iter = root.begin(); iter!=root.end(); iter++) {
|
||||
if (iter->get_value (exifColumns.edited) == true)
|
||||
changeList[ prefix+iter->get_value (exifColumns.field_nopango) ] = iter->get_value (exifColumns.value_nopango);
|
||||
else if (iter->get_value (exifColumns.action) == WRITE && iter->get_value (exifColumns.icon) == delicon)
|
||||
else if (iter->get_value (exifColumns.action) == AC_WRITE && iter->get_value (exifColumns.icon) == delicon)
|
||||
changeList[ prefix+iter->get_value (exifColumns.field_nopango) ] = "#delete";
|
||||
else if (iter->get_value (exifColumns.action) == DONTWRITE && iter->get_value (exifColumns.icon) == keepicon)
|
||||
else if (iter->get_value (exifColumns.action) == AC_DONTWRITE && iter->get_value (exifColumns.icon) == keepicon)
|
||||
changeList[ prefix+iter->get_value (exifColumns.field_nopango) ] = "#keep";
|
||||
if (iter->get_value (exifColumns.icon) == keepicon)
|
||||
updateChangeList (iter->children(), prefix + iter->get_value (exifColumns.field_nopango));
|
||||
|
@@ -31,7 +31,7 @@ class ExifPanel : public Gtk::VBox, public ToolPanel {
|
||||
rtengine::procparams::ExifPairs changeList;
|
||||
rtengine::procparams::ExifPairs defChangeList;
|
||||
bool recursiveOp;
|
||||
|
||||
|
||||
class ExifColumns : public Gtk::TreeModelColumnRecord {
|
||||
public:
|
||||
Gtk::TreeModelColumn<Glib::RefPtr<Gdk::Pixbuf> > icon;
|
||||
@@ -40,31 +40,31 @@ class ExifPanel : public Gtk::VBox, public ToolPanel {
|
||||
Gtk::TreeModelColumn<Glib::ustring> value;
|
||||
Gtk::TreeModelColumn<Glib::ustring> value_nopango;
|
||||
Gtk::TreeModelColumn<Glib::ustring> orig_value;
|
||||
Gtk::TreeModelColumn<int> action; // = 0: dont write to output, =1: write to output, =2: chagned by RT (not editable/deletable), =3: new addition
|
||||
Gtk::TreeModelColumn<bool> editable;
|
||||
Gtk::TreeModelColumn<bool> edited;
|
||||
Gtk::TreeModelColumn<rtexif::ActionCode> action;
|
||||
Gtk::TreeModelColumn<bool> editable;
|
||||
Gtk::TreeModelColumn<bool> edited;
|
||||
|
||||
ExifColumns() { add(field); add(value); add(icon); add(action); add(edited); add(field_nopango); add(value_nopango); add(editable); add(orig_value); }
|
||||
};
|
||||
Glib::RefPtr<Gdk::Pixbuf> delicon;
|
||||
Glib::RefPtr<Gdk::Pixbuf> keepicon;
|
||||
Glib::RefPtr<Gdk::Pixbuf> editicon;
|
||||
|
||||
|
||||
ExifColumns exifColumns;
|
||||
Gtk::TreeView* exifTree;
|
||||
Gtk::ScrolledWindow* scrolledWindow;
|
||||
Glib::RefPtr<Gtk::TreeStore> exifTreeModel;
|
||||
|
||||
|
||||
Gtk::Button* remove;
|
||||
Gtk::Button* keep;
|
||||
Gtk::Button* add;
|
||||
Gtk::Button* reset;
|
||||
Gtk::Button* resetAll;
|
||||
|
||||
Gtk::TreeModel::Children addTag (const Gtk::TreeModel::Children& root, Glib::ustring field, Glib::ustring value, int action, bool editable);
|
||||
|
||||
Gtk::TreeModel::Children addTag (const Gtk::TreeModel::Children& root, Glib::ustring field, Glib::ustring value, rtexif::ActionCode action, bool editable);
|
||||
void editTag (Gtk::TreeModel::Children root, Glib::ustring name, Glib::ustring value);
|
||||
void updateChangeList (Gtk::TreeModel::Children root, std::string prefix);
|
||||
void addDirectory (const rtexif::TagDirectory* dir, Gtk::TreeModel::Children root);
|
||||
void addDirectory (const rtexif::TagDirectory* dir, Gtk::TreeModel::Children root);
|
||||
Glib::ustring getSelection (bool onlyifeditable=false);
|
||||
Glib::ustring getSelectedValue ();
|
||||
void updateChangeList ();
|
||||
@@ -75,12 +75,12 @@ class ExifPanel : public Gtk::VBox, public ToolPanel {
|
||||
public:
|
||||
ExifPanel ();
|
||||
virtual ~ExifPanel ();
|
||||
|
||||
void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited=NULL);
|
||||
void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited=NULL);
|
||||
void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL);
|
||||
|
||||
void setImageData (const rtengine::ImageMetaData* id);
|
||||
|
||||
void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited=NULL);
|
||||
void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited=NULL);
|
||||
void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL);
|
||||
|
||||
void setImageData (const rtengine::ImageMetaData* id);
|
||||
|
||||
void exifSelectionChanged ();
|
||||
void removePressed ();
|
||||
@@ -89,9 +89,9 @@ class ExifPanel : public Gtk::VBox, public ToolPanel {
|
||||
void resetAllPressed ();
|
||||
void addPressed ();
|
||||
void row_activated (const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column);
|
||||
|
||||
|
||||
void notifyListener ();
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -515,7 +515,7 @@ void Thumbnail::generateExifDateTimeStrings () {
|
||||
if (!cfs.exifValid)
|
||||
return;
|
||||
|
||||
exifString = Glib::ustring::compose ("f/%1 %2s %3%4 %5mm", Glib::ustring(rtengine::ImageData::apertureToString(cfs.fnumber)), Glib::ustring(rtengine::ImageData::shutterToString(cfs.shutter)), M("QINFO_ISO"), cfs.iso, cfs.focalLen);
|
||||
exifString = Glib::ustring::compose ("f/%1 %2s %3%4 %5mm", Glib::ustring(rtengine::ImageData::apertureToString(cfs.fnumber)), Glib::ustring(rtengine::ImageData::shutterToString(cfs.shutter)), M("QINFO_ISO"), cfs.iso, Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), cfs.focalLen));
|
||||
|
||||
if (options.fbShowExpComp && cfs.expcomp!="0.00" && cfs.expcomp!="") // don't show exposure compensation if it is 0.00EV;old cache iles do not have ExpComp, so value will not be displayed.
|
||||
exifString = Glib::ustring::compose ("%1 %2EV", exifString, cfs.expcomp); // append exposure compensation to exifString
|
||||
|
Reference in New Issue
Block a user