ConvertEndian() static private method

Convert big-endian to little-endian or reserve
static private ConvertEndian ( Int16 i ) : Int16
i System.Int16
return System.Int16
コード例 #1
0
        /// <summary>
        /// Gets the frame as PNG FileStream.
        /// </summary>
        public MemoryStream GetStream()
        {
            var ihdrChunk = new IHDRChunk(IHDRChunk);

            if (fcTLChunk != null)
            {
                // Fix frame size with fcTL data.
                ihdrChunk.ModifyChunkData(0, Helper.ConvertEndian(fcTLChunk.Width));
                ihdrChunk.ModifyChunkData(4, Helper.ConvertEndian(fcTLChunk.Height));
            }

            // Write image data
            using (var ms = new MemoryStream())
            {
                ms.WriteBytes(Signature);
                ms.WriteBytes(ihdrChunk.RawData);

                foreach (IDATChunk idatChunk in idatChunks)
                {
                    ms.WriteBytes(idatChunk.RawData);
                }

                foreach (ITextChunk chunk in TextChunks)
                {
                    ms.WriteBytes((chunk as Chunk).RawData);
                }

                ms.WriteBytes(IENDChunk.RawData);

                ms.Position = 0;
                return(ms);
            }
        }
コード例 #2
0
ファイル: Chunk.cs プロジェクト: SteamTools-Team/AvaloniaGif
        internal Chunk(MemoryStream ms)
        {
            Length    = Helper.ConvertEndian(ms.ReadUInt32());
            ChunkType = Encoding.ASCII.GetString(ms.ReadBytes(4));
            ChunkData = ms.ReadBytes((int)Length);
            Crc       = Helper.ConvertEndian(ms.ReadUInt32());

            ParseData(new MemoryStream(ChunkData));
        }
コード例 #3
0
 protected override void ParseData(MemoryStream ms)
 {
     Width             = Helper.ConvertEndian(ms.ReadInt32());
     Height            = Helper.ConvertEndian(ms.ReadInt32());
     BitDepth          = Convert.ToByte(ms.ReadByte());
     ColorType         = Convert.ToByte(ms.ReadByte());
     CompressionMethod = Convert.ToByte(ms.ReadByte());
     FilterMethod      = Convert.ToByte(ms.ReadByte());
     InterlaceMethod   = Convert.ToByte(ms.ReadByte());
 }
コード例 #4
0
ファイル: fcTLChunk.cs プロジェクト: mwheeler/APNG.NET
 protected override void ParseData(MemoryStream ms)
 {
     SequenceNumber = Helper.ConvertEndian(ms.ReadUInt32());
     Width          = Helper.ConvertEndian(ms.ReadUInt32());
     Height         = Helper.ConvertEndian(ms.ReadUInt32());
     XOffset        = Helper.ConvertEndian(ms.ReadUInt32());
     YOffset        = Helper.ConvertEndian(ms.ReadUInt32());
     DelayNum       = Helper.ConvertEndian(ms.ReadUInt16());
     DelayDen       = Helper.ConvertEndian(ms.ReadUInt16());
     DisposeOp      = (DisposeOps)ms.ReadByte();
     BlendOp        = (BlendOps)ms.ReadByte();
 }
コード例 #5
0
ファイル: Chunk.cs プロジェクト: SteamTools-Team/AvaloniaGif
        internal Chunk(byte[] bytes)
        {
            var ms = new MemoryStream(bytes);

            Length    = Helper.ConvertEndian(ms.ReadUInt32());
            ChunkType = Encoding.ASCII.GetString(ms.ReadBytes(4));
            ChunkData = ms.ReadBytes((int)Length);
            Crc       = Helper.ConvertEndian(ms.ReadUInt32());

            if (ms.Position != ms.Length)
            {
                throw new Exception("Chunk length not correct.");
            }
            if (Length != ChunkData.Length)
            {
                throw new Exception("Chunk data length not correct.");
            }

            ParseData(new MemoryStream(ChunkData));
        }
コード例 #6
0
        public IDATChunk ToIDATChunk()
        {
            uint newCrc;

            using (var msCrc = new MemoryStream())
            {
                msCrc.WriteBytes(new[] { (byte)'I', (byte)'D', (byte)'A', (byte)'T' });
                msCrc.WriteBytes(FrameData);

                newCrc = CrcHelper.Calculate(msCrc.ToArray());
            }

            using (var ms = new MemoryStream())
            {
                ms.WriteUInt32(Helper.ConvertEndian(Length - 4));
                ms.WriteBytes(new[] { (byte)'I', (byte)'D', (byte)'A', (byte)'T' });
                ms.WriteBytes(FrameData);
                ms.WriteUInt32(Helper.ConvertEndian(newCrc));
                ms.Position = 0;

                return(new IDATChunk(ms));
            }
        }
コード例 #7
0
ファイル: Frame.cs プロジェクト: sniperykun/APNG.NET
        /// <summary>
        ///     Gets the frame as PNG FileStream.
        /// </summary>
        public MemoryStream GetStream()
        {
            var ihdrChunk = new IHDRChunk(IHDRChunk);

            if (fcTLChunk != null)
            {
                // Fix frame size with fcTL data.
                ihdrChunk.ModifyChunkData(0, Helper.ConvertEndian(fcTLChunk.Width));
                ihdrChunk.ModifyChunkData(4, Helper.ConvertEndian(fcTLChunk.Height));
            }

            // Write image data
            using (var ms = new MemoryStream())
            {
                ms.WriteBytes(Signature);
                ms.WriteBytes(ihdrChunk.RawData);
                otherChunks.ForEach(o => ms.WriteBytes(o.RawData));
                idatChunks.ForEach(i => ms.WriteBytes(i.RawData));
                ms.WriteBytes(IENDChunk.RawData);

                ms.Position = 0;
                return(ms);
            }
        }
コード例 #8
0
ファイル: acTLChunk.cs プロジェクト: mwheeler/APNG.NET
 protected override void ParseData(MemoryStream ms)
 {
     NumFrames = Helper.ConvertEndian(ms.ReadUInt32());
     NumPlays  = Helper.ConvertEndian(ms.ReadUInt32());
 }
コード例 #9
0
 protected override void ParseData(MemoryStream ms)
 {
     SequenceNumber = Helper.ConvertEndian(ms.ReadUInt32());
     FrameData      = ms.ReadBytes((int)Length - 4);
 }