Exemplo n.º 1
0
        public static string ReadChars(BinaryReader binaryReader, ImageFileEntry imageFileEntry)
        {
            if (imageFileEntry.NumberOfValue <= 4)
            {
                var bytes = new[]
                {
                    (byte)(imageFileEntry.ValuePointer >> 0 & 0xFF),
                    (byte)(imageFileEntry.ValuePointer >> 8 & 0xFF),
                    (byte)(imageFileEntry.ValuePointer >> 16 & 0xFF),
                    (byte)(imageFileEntry.ValuePointer >> 24 & 0xFF),
                };

                return(imageFileEntry.NumberOfValue == 4u && bytes[3] != 0
                    ? Encoding.ASCII.GetString(bytes, 0, (int)imageFileEntry.NumberOfValue)
                    : Encoding.ASCII.GetString(bytes, 0, (int)imageFileEntry.NumberOfValue - 1));
            }

            if (binaryReader.BaseStream.Position != imageFileEntry.ValuePointer)
            {
                binaryReader.BaseStream.Seek(imageFileEntry.ValuePointer, SeekOrigin.Begin);
            }

            //var data = new byte[imageFileEntry.NumberOfValue];
            //for (var i = 0; i < imageFileEntry.NumberOfValue; i++)
            //    data[i] = binaryReader.ReadByte();

            //return data[imageFileEntry.NumberOfValue - 1] != 0
            //    ? Encoding.ASCII.GetString(data, 0, (int)imageFileEntry.NumberOfValue)
            //    : Encoding.ASCII.GetString(data, 0, (int)imageFileEntry.NumberOfValue - 1);

            var builder = new StringBuilder();

            for (var i = 0; i < imageFileEntry.NumberOfValue; i++)
            {
                var us = binaryReader.ReadByte();
                builder.Append((char)us);
            }

            var lastPosition = builder.Length - 1;

            if (builder[lastPosition] == 0)
            {
                builder.Remove(lastPosition, 1);
            }

            return(builder.ToString());
        }
Exemplo n.º 2
0
        public static byte[] ReadBytes(BinaryReader binaryReader, ImageFileEntry imageFileEntry)
        {
            var bytes = new byte[imageFileEntry.NumberOfValue];

            if (binaryReader.BaseStream.Position != imageFileEntry.ValuePointer)
            {
                binaryReader.BaseStream.Seek(imageFileEntry.ValuePointer, SeekOrigin.Begin);
            }

            for (var j = 0; j < imageFileEntry.NumberOfValue; j++)
            {
                var us = binaryReader.ReadByte();
                bytes[j] = us;
            }

            return(bytes);
        }
Exemplo n.º 3
0
        public static UInt32[] ReadUInts(BinaryReader binaryReader, ImageFileEntry imageFileEntry)
        {
            var uints = new UInt32[imageFileEntry.NumberOfValue];

            if (binaryReader.BaseStream.Position != imageFileEntry.ValuePointer)
            {
                binaryReader.BaseStream.Seek(imageFileEntry.ValuePointer, SeekOrigin.Begin);
            }

            for (var j = 0; j < imageFileEntry.NumberOfValue; j++)
            {
                var us = binaryReader.ReadUInt32();
                uints[j] = us;
            }

            return(uints);
        }
Exemplo n.º 4
0
        public WhiteBalance(BinaryReader binaryReader, ImageFileEntry imageFileEntry)
        {
            if (binaryReader.BaseStream.Position != imageFileEntry.ValuePointer)
            {
                binaryReader.BaseStream.Seek(imageFileEntry.ValuePointer, SeekOrigin.Begin);
            }

            var ar     = 0;
            var length = binaryReader.ReadUInt16();

            Console.WriteLine("0x{0:X4} Len = {1} Length", ar, length);
            ar += 2;
            for (var i = 0; i < 6; i++)
            {
                var v1 = binaryReader.ReadUInt16();
                var v2 = binaryReader.ReadUInt16();
                var v3 = binaryReader.ReadUInt16();
                var v4 = binaryReader.ReadUInt16();
                Console.WriteLine("0x{0:X4} {1}: [{2}, {3}, {4}, {5}]", ar, i, v1, v2, v3, v4);
                ar += 8;
            }

            //var eob = binaryReader.ReadUInt16();
            //Console.WriteLine("0x{0:X4} EOB = {1}", ar, eob);
            //ar += 2;
            //for (var i = 0; i < 10; i++)
            //{
            //    var x1 = binaryReader.ReadUInt16();

            //    var v1 = binaryReader.ReadUInt16();
            //    var v2 = binaryReader.ReadUInt16();
            //    var v3 = binaryReader.ReadUInt16();
            //    var v4 = binaryReader.ReadUInt16();

            //    Console.WriteLine("0x{0:X4} {1}: [{2}, {3}, {4}, {5}]", ar, x1, v1, v2, v3, v4);
            //    ar += 10;
            //}

            for (var i = ar; i < imageFileEntry.NumberOfValue; i++)
            {
                Console.WriteLine("0x{0:X4} : {1}, ", ar, binaryReader.ReadUInt16());
                ar += 2;
            }

            Console.WriteLine();
        }
Exemplo n.º 5
0
        public ImageFileDirectory(BinaryReader binaryReader)
        {
            // var dirStart = binaryReader.BaseStream.Position;

            var length = binaryReader.ReadUInt16();

            Entries = new ImageFileEntry[length];
            for (var i = 0; i < length; i++)
            {
                Entries[i] = new ImageFileEntry(binaryReader);
            }
            var next = binaryReader.ReadUInt32();

            NextEntry = next;

            //if (next == 0) next = (uint)(binaryReader.BaseStream.Length + 1);
            //Console.WriteLine($"### Directory {length}, [0x{dirStart:X8} - 0x{next - 1:X8}]");
            //var heapStart = binaryReader.BaseStream.Position;
            //Console.WriteLine($"    Heap [0x{heapStart:X8} - 0x{next - 1:X8}]");
        }
Exemplo n.º 6
0
        // private readonly byte[] heap;

        public ImageFileDirectory(ushort length)
        {
            Entries = new ImageFileEntry[length];
        }