private bool setTag(string ifd, object tag, int value)
{
// If tag name passed translate into hex key
if (tag is string) {
Dictionary<int, string> tmpTags = tags[ifd.ToLower()];
foreach (KeyValuePair<int, string> pair in tmpTags) {
if (pair.Value == (string)tag) {
tag = pair.Key;
break;
}
}
}
long offset;
if (!offsets.TryGetValue(ifd.ToLower() + "IFD", out offset)) {
return false;
}
long length = data.SHORT(offset);
long tagOffset, valueOffset = -1;
for (int i = 0; i < length; i++) {
tagOffset = offset + 12 * i + 2;
if (data.SHORT(tagOffset) == (int)tag) {
valueOffset = tagOffset + 8;
break;
}
}
if (valueOffset < 0)
return false;
data.write((int)valueOffset, value, 4);
return true;
}