Solving issue 1932: "No EXIF field on TIFF file's thumbnails"

This commit is contained in:
natureh 510 2013-07-24 21:53:06 +02:00
parent 1a6619a035
commit 0c563e6645
3 changed files with 8 additions and 4 deletions

View File

@ -849,7 +849,7 @@ void Tag::toRational (int& num, int& denom, int ofs) {
case RATIONAL: num = (int)sget4 (value+ofs, getOrder()); denom = (int)sget4 (value+ofs+4, getOrder()); break;
case FLOAT: num = 0; denom = 0; break;
case UNDEFINED: num = 0; denom = 0; break;
default: num = 0; denom = 0; // Quick fix for missing cases (INVALID, DOUBLE, OLYUNDEF, SUBDIR)
default: num = 0; denom = 0; break; // Quick fix for missing cases (INVALID, DOUBLE, OLYUNDEF, SUBDIR)
}
}

View File

@ -212,6 +212,7 @@ class ExifManager {
class Interpreter {
public:
Interpreter () {}
virtual ~Interpreter() {};
virtual std::string toString (Tag* t) { return ""; }
virtual void fromString (Tag* t, const std::string& value) {}
};

View File

@ -325,18 +325,21 @@ class UserCommentInterpreter : public Interpreter {
public:
UserCommentInterpreter () {}
virtual std::string toString (Tag* t) {
char buffer[1024];
char *buffer = new char[t->getCount()];
if (!strncmp((char*)t->getValue(), "ASCII\0\0\0",8))
strncpy (buffer, (char*)t->getValue()+8, t->getCount()-8);
else
buffer[0]=0;
return buffer;
std::string retVal(buffer);
delete [] buffer;
return retVal;
}
virtual void fromString (Tag* t, const std::string& value) {
char buffer[1024];
char *buffer = new char[t->getCount()];
memcpy (buffer, "ASCII\0\0\0", 8);
strcpy (buffer+8, value.c_str());
t->fromString (buffer, value.size() + 9);
delete [] buffer;
}
};
UserCommentInterpreter userCommentInterpreter;