Moxiecode.MXI.Image.ExifParser.getIFDOffsets C# (CSharp) Метод

getIFDOffsets() приватный Метод

private getIFDOffsets ( ) : bool
Результат bool
        private bool getIFDOffsets()
        {
            long idx = this.offsets["tiffHeader"];

            // Set read order of multi-byte data
            data.Endian = data.SHORT(idx) == 0x4949 ? BinaryReader.LITTLE_ENDIAN : BinaryReader.BIG_ENDIAN;

            // Check if always present bytes are indeed present
            if (data.SHORT(idx+=2) != 0x002A) {
                return false;
            }

            this.offsets.Add("IFD0", this.offsets["tiffHeader"] + data.LONG(idx += 2));

            Tiff = extractTags(this.offsets["IFD0"], tags["tiff"]);

            //Moxie.log(data.SHORT(idx).ToString("x"));

            object ExifIFDPointer, GPSInfoIFDPointer;
            if (Tiff.TryGetValue("ExifIFDPointer", out ExifIFDPointer)) {
                this.offsets.Add("exifIFD", this.offsets["tiffHeader"] + Convert.ToInt32(ExifIFDPointer));
                Tiff.Remove("ExifIFDPointer");
            }

            if (Tiff.TryGetValue("GPSInfoIFDPointer", out GPSInfoIFDPointer)) {
                this.offsets.Add("gpsIFD", this.offsets["tiffHeader"] + Convert.ToInt32(GPSInfoIFDPointer));
                Tiff.Remove("GPSInfoIFDPointer");
            }

            long ifd1Offset = data.LONG(this.offsets["IFD0"] + data.SHORT(this.offsets["IFD0"]) * 12 + 2);
            if (ifd1Offset > 0) {
                this.offsets.Add("IFD1", this.offsets["tiffHeader"] + ifd1Offset);
            }

            return true;
        }