public override object ReadValue() { if (this.Context.ValueCountLeft == 0) { this.FireEvent(ValueState.ToNextTag); return(null); } this.Context.ValueCountLeft--; return(Helper.Read(this.Context.Reader.BaseStream, TiffDataTypeHelper.Typeof(this.Context.CurrentTag.type))); }
public static Tiff.IfdEntry FromPtr(IntPtr ptr, IntPtr baseAddr) { TiffDirEntry _entry = (TiffDirEntry)Marshal.PtrToStructure(ptr, typeof(TiffDirEntry)); Tiff.IfdEntry _ifdEntry = new Tiff.IfdEntry { Tag = _entry.tag, DataType = _entry.type, _data = Array.CreateInstance(TiffDataTypeHelper.Typeof(_entry.type), _entry.count <= int.MaxValue?_entry.count:0) }; IntPtr _dataPtr = (IntPtr)(((_ifdEntry.DataSize = (int)(TiffDataTypeHelper.Sizeof(_entry.type) * _ifdEntry._data.Length)) > 4)?baseAddr.ToInt64() + _entry.offset:ptr.ToInt64() + 8); _ifdEntry.DataOffset = (int)(_dataPtr.ToInt64() - baseAddr.ToInt64()); for (int i = 0, _size = TiffDataTypeHelper.Sizeof(_entry.type); i < _ifdEntry._data.Length; i++) { _ifdEntry._data.SetValue(Marshal.PtrToStructure((IntPtr)(_dataPtr.ToInt64() + _size * i), TiffDataTypeHelper.Typeof(_entry.type)), i); } return(_ifdEntry); }